整理GTX收发器示例工程(高速收发器十一)

  前文分析了xilinx官方提供的GTX IP示例工程,该代码的结构比较混乱,本文将该代码进行梳理,形成一个便于使用的模块,后续如果要使用多通道的收发器,多次例化某个模块就行了。

  下图是官方例程中GTX IP相关模块的RTL视图,根据前文时钟资源的讲解,同一bank的四个通道共用一个QPLL,因此需要将GT_COMMON放到上层模块,同时IBUFGDS_GTE2也应该放到上层模块中。

  之后如果需要使用多个通道,只需要将剩余的部分多次例化即可,多个通道共用一个QPLL。

在这里插入图片描述

图1 原始RTL视图

1、整理gt_channel模块

  首先整理每个通道相关模块,包含复位同步模块、MMCM模块、GTX IP,需要把GTX IP一些不常用的输入端口置为固定电平,输出端口悬空,其余端口引出到上层模块中。

  首先把GTX IP输出的复位信号和复位同步模块输出的复位信号合成为GT_COMMON的复位信号输出,将发送通道和接收通道的用户时钟输出,对应代码如下所示。

    assign o_qpllreset = w_commonreset || w_gt_qpll_reset;//生成QPLL复位信号;

    assign o_rx_clk = gt_rxusrclk2;//将用户时钟信号引出;
    assign o_tx_clk = gt_txusrclk2;//将用户时钟信号引出;

  之后整理时钟生成模块,GTX IP输出的时钟信号TXOUTCLK经过内部的MMCM生成TXUSRCLK等四个时钟信号。由于IBUFGDS_GTE2放到上层模块中,因此可以去除对应的端口和内部信号。

    //例化生成用户时钟的MMCM模块。
    gtwizard_0_GT_USRCLK_SOURCE u_gt_usrclk_source (
        .GT0_TXUSRCLK_OUT           ( gt_txusrclk       ),//;
        .GT0_TXUSRCLK2_OUT          ( gt_txusrclk2      ),//;
        .GT0_TXOUTCLK_IN            ( gt_txoutclk       ),//;
        .GT0_TXCLK_LOCK_OUT         ( gt_txmmcm_lock    ),//;
        .GT0_TX_MMCM_RESET_IN       ( gt_txmmcm_reset   ),//;
        .GT0_RXUSRCLK_OUT           ( gt_rxusrclk       ),//;
        .GT0_RXUSRCLK2_OUT          ( gt_rxusrclk2      ),//;
        .GT0_RXCLK_LOCK_OUT         ( gt_rxmmcm_lock    ),//;
        .GT0_RX_MMCM_RESET_IN       ( gt_rxmmcm_reset   ) //;
    );

  然后例化复位同步模块,该模块将外部的异步复位信号同步到系统时钟域下,进而可以作为QPLL复位信号之一。

    //例化GT_COMMON复位模块。
    gtwizard_0_common_reset u_common_reset (    
        .STABLE_CLOCK       ( sys_clk       ),//Stable Clock, either a stable clock from the PCB
        .SOFT_RESET         ( i_tx_rst      ),//User Reset, can be pulled any time
        .COMMON_RESET       ( w_commonreset ) //Reset QPLL
    );

  之后例化GTX IP模块,该模块信号比较多,将DRP、复位完成指示信号、回环模式控制、加重、极性控制、字节对齐指示信号、QPLL和MMCM相关信号引出。眼图测试、txoutclkpcs这些不常用引脚直接置为固定电平或者悬空即可,整理后的代码如下所示。

    //例化GTX IP。
    gtwizard_0  u_gtwizard_0 (
        .sysclk_in                      ( sys_clk           ),//系统时钟输入,与DRP时钟频率保持一致。
        .soft_reset_tx_in               ( i_tx_rst          ),//发送端口的软复位信号。
        .soft_reset_rx_in               ( i_rx_rst          ),//接收端口的软复位信号。
        .dont_reset_on_data_error_in    ( 0                 ),//输入数据错误指示信号,高电平有效。
        .gt0_tx_fsm_reset_done_out      ( o_tx_done         ),//发送数据的状态机复位完成指示信号,高电平有效;
        .gt0_rx_fsm_reset_done_out      (                   ),//接收数据的状态机复位完成指示信号,高电平有效;
        .gt0_data_valid_in              ( 1                 ),//输入GT数据有效指示信号。
        .gt0_tx_mmcm_lock_in            ( gt_txmmcm_lock    ),//用户输出数据时钟信号锁定指示信号。
        .gt0_tx_mmcm_reset_out          ( gt_txmmcm_reset   ),//用户输出数据时钟信号复位信号。
        .gt0_rx_mmcm_lock_in            ( gt_rxmmcm_lock    ),//用户输入数据时钟信号锁定指示信号。
        .gt0_rx_mmcm_reset_out          ( gt_rxmmcm_reset   ),//用户输入数据时钟信号复位信号。
        .gt0_drpaddr_in                 ( i_drpaddr         ),//input wire [8:0] gt0_drpaddr_in
        .gt0_drpclk_in                  ( i_drpclk          ),//input wire gt0_drpclk_in
        .gt0_drpdi_in                   ( i_drpdi           ),//input wire [15:0] gt0_drpdi_in
        .gt0_drpdo_out                  ( o_drpdo           ),//output wire [15:0] gt0_drpdo_out
        .gt0_drpen_in                   ( i_drpen           ),//input wire gt0_drpen_in
        .gt0_drprdy_out                 ( o_drprdy          ),//output wire gt0_drprdy_out
        .gt0_drpwe_in                   ( i_drpwe           ),//input wire gt0_drpwe_in

        .gt0_dmonitorout_out            (                   ),//监测端口输出。
        .gt0_loopback_in                ( i_loopback        ),//回环模式输入端口。
        .gt0_eyescanreset_in            ( 0                 ),//眼图复位输入。
        .gt0_rxuserrdy_in               ( 1                 ),//接收数据准备接口,使用IP接收数据时输入高电平。
        .gt0_eyescandataerror_out       (                   ),//眼图扫描相关信号。
        .gt0_eyescantrigger_in          ( 0                 ),//眼图扫描相关信号。
        .gt0_rxclkcorcnt_out            (                   ),//时钟状态监测。
        .gt0_rxusrclk_in                ( gt_rxusrclk       ),//接收端用户时钟信号。
        .gt0_rxusrclk2_in               ( gt_rxusrclk2      ),//接收端用户时钟信号。
        .gt0_rxdata_out                 ( o_rx_data         ),//接收数据信号,位宽与IP配置用户数据位宽保持一致。
        .gt0_rxdisperr_out              (                   ),//接收数据极性错误指示信号。
        .gt0_rxnotintable_out           (                   ),//output wire [3:0] gt0_rxnotintable_out
        .gt0_gtxrxp_in                  ( i_gt_rx_p         ),//接收数据的差分引脚。
        .gt0_gtxrxn_in                  ( i_gt_rx_n         ),//接收数据的差分引脚。
        .gt0_rxbyteisaligned_out        ( o_rx_bytealign    ),//接收数据的字节对齐指示信号。
        .gt0_rxdfelpmreset_in           ( 0                 ),//LPM复位引脚。
        .gt0_rxmonitorout_out           (                   ),//output wire [6:0] gt0_rxmonitorout_out
        .gt0_rxmonitorsel_in            ( 0                 ),//input wire [1:0] gt0_rxmonitorsel_in
        .gt0_rxoutclkfabric_out         (                   ),//output wire gt0_rxoutclkfabric_out
        .gt0_gtrxreset_in               ( i_rx_rst          ),//RX端复位信号。
        .gt0_rxpmareset_in              ( i_rx_rst          ),//PMA复位信号。
        .gt0_rxpolarity_in              ( i_rx_polarity     ),//极性控制。

        .gt0_rxcharisk_out              ( o_rx_char         ),//接收数据的K码指示信号,高电平表示K码。
        .gt0_rxresetdone_out            ( o_rx_done         ),//接收器的复位完成指示信号。
        .gt0_txpostcursor_in            ( i_txpostcursor    ),//发送端的预加重。
        .gt0_txprecursor_in             ( i_txpercursor     ),//发送端的后加重。
        
        .gt0_gttxreset_in               ( i_tx_rst          ),//发送端的复位信号。
        .gt0_txuserrdy_in               ( 1                 ),//input wire gt0_txuserrdy_in
        .gt0_txusrclk_in                ( gt_txusrclk       ),//input wire gt0_txusrclk_in
        .gt0_txusrclk2_in               ( gt_txusrclk2      ),//input wire gt0_txusrclk2_in
        .gt0_txdiffctrl_in              ( i_tx_diffctrl     ),//差分的幅值控制引脚。
        .gt0_txdata_in                  ( i_tx_data         ),//用户发送数据输入端口。
        .gt0_gtxtxn_out                 ( o_gt_tx_n         ),//接收数据的差分引脚。
        .gt0_gtxtxp_out                 ( o_gt_tx_p         ),//接收数据的差分引脚。
        .gt0_txoutclk_out               ( gt_txoutclk       ),//output wire gt0_txoutclk_out
        .gt0_txoutclkfabric_out         (                   ),//output wire gt0_txoutclkfabric_out
        .gt0_txoutclkpcs_out            (                   ),//PCS时钟输出。
        .gt0_txcharisk_in               ( i_tx_char         ),//发送数据的K码指示信号。
        .gt0_txresetdone_out            (                   ),//发送端的复位完成指示信号。
        .gt0_txpolarity_in              ( i_tx_polarity     ),//发送端的极性控制。

        .gt0_qplllock_in                ( i_qplllock        ),//input wire gt0_qplllock_in
        .gt0_qpllrefclklost_in          ( i_qpllrefclklost  ),//input wire gt0_qpllrefclklost_in
        .gt0_qpllreset_out              ( w_gt_qpll_reset   ),//output wire gt0_qpllreset_out
        .gt0_qplloutclk_in              ( i_qplloutclk      ),//input wire gt0_qplloutclk_in
        .gt0_qplloutrefclk_in           ( i_qplloutrefclk   ) //input wire gt0_qplloutrefclk_in
    );

  最终gt_channel模块的RTL视图如下所示。

在这里插入图片描述

图2 gt_channel的RTL视图

2、整理gt_module模块

  本次需要使用两个高速收发器,则只需要在该模块内,将gt_channel例化两次,两个模块共用同一个QPLL输出时钟即可。

  首先整理IBUFGDS_GTE2和GT_COMMON,如下所示,差分时钟先经过IBUFGDS_GTE2转化为单端时钟,之后通过GT_COMMON生成GTX IP需要的时钟信号,注意QPLL的复位信号只能通过一个gt_channel模块提供。

    //例化IBUFDS,将差分时钟输入转换为单端时钟。
    IBUFDS_GTE2 u_IBUFDS_GTE2(
        .O      ( gtrefclk          ),//输出单端时钟信号;
        .ODIV2  (                   ),//输出二分频单端时钟信号;
        .CEB    ( 0                 ),//输出时钟使能信号,低电平有效;
        .I      ( i_gtrefclk_p      ),//输入的差分时钟对;
        .IB     ( i_gtrefclk_n      ) //输入的差分时钟对;
    );

    //例化QPLL
    gtwizard_0_common #(
        .SIM_QPLLREFCLK_SEL     ( 3'b001            ) //时钟选择。
    )
    u_common (
        .QPLLREFCLKSEL_IN       ( 3'b001            ),//选择BANK的时钟0作为QPLL时钟输入。
        .GTREFCLK0_IN           ( gtrefclk          ),//BANK的时钟0;
        .GTREFCLK1_IN           ( 1'b0              ),//BANK的时钟1;
        .QPLLLOCKDETCLK_IN      ( sys_clk           ),

        .QPLLLOCK_OUT           ( w_qplllock        ),//QPLL时钟锁定端口;
        .QPLLOUTCLK_OUT         ( w_qplloutclk      ),//QPLL时钟输出端口;
        .QPLLOUTREFCLK_OUT      ( w_qplloutrefclk   ),//QPLL参考时钟端口;
        .QPLLREFCLKLOST_OUT     ( w_qpllrefclklost  ),//QPLL时钟;
        .QPLLRESET_IN           ( w_qpllreset       ) //QPLL时钟复位端口;
    );

之后只需要例化两个gt_channel模块,就可以使用两通道的高速收发器,整个模块的例化如下所示。

    //例化通道0的GT收发器模块;
    gt_channel u_gt_channel_0(
        .sys_clk            ( sys_clk           ),//系统时钟输入,与DRP时钟频率保持一致。
        .i_rx_rst           ( i_0_rx_rst        ),//接收数据端复位信号;
        .i_tx_rst           ( i_0_tx_rst        ),//发送数据端复位信号;
        .o_tx_done          ( o_0_tx_done       ),//发送端口复位完成指示信号;
        .o_rx_done          ( o_0_rx_done       ),//接收数据端口复位完成指示信号;
        .i_tx_polarity      ( i_0_tx_polarity   ),//发送数据极性控制引脚;
        .i_tx_diffctrl      ( i_0_tx_diffctrl   ),//差分幅值控制引脚;
        .i_txpostcursor     ( i_0_txpostcursor  ),//发送数据前加重调节信号;
        .i_txpercursor      ( i_0_txpercursor   ),//发送数据后加重信号;     
        .i_rx_polarity      ( i_0_rx_polarity   ),//接收数据极性控制引脚;
        .i_loopback         ( i_0_loopback      ),//回环模式信号;
        .i_drpaddr          ( i_0_drpaddr       ),//动态设置参数端口;
        .i_drpclk           ( i_0_drpclk        ),//动态设置参数端口;
        .i_drpdi            ( i_0_drpdi         ),//动态设置参数端口; 
        .o_drpdo            ( o_0_drpdo         ),//动态设置参数端口; 
        .i_drpen            ( i_0_drpen         ),//动态设置参数端口;
        .o_drprdy           ( o_0_drprdy        ),//动态设置参数端口; 
        .i_drpwe            ( i_0_drpwe         ),//动态设置参数端口;
        .i_qplllock         ( w_qplllock        ),//QPLL时钟锁定端口; 
        .i_qpllrefclklost   ( w_qpllrefclklost  ),//QPLL时钟端口信号; 
        .o_qpllreset        ( w_qpllreset       ),//QPLL时钟复位端口;
        .i_qplloutclk       ( w_qplloutclk      ),//QPLL时钟输出端口; 
        .i_qplloutrefclk    ( w_qplloutrefclk   ),//QPLL参考时钟端口; 
        .o_rx_bytealign     ( o_0_rx_bytealign  ),//接收数据字节对齐指示信号;
        .o_rx_clk           ( o_0_rx_clk        ),//接收数据时钟信号;
        .o_rx_data          ( o_0_rx_data       ),//接收数据,位宽与IP设置保持一致;
        .o_rx_char          ( o_0_rx_char       ),//接收数据K码指示信号,高点破表示对应字节数据时K码;
        .o_tx_clk           ( o_0_tx_clk        ),//发送数据时钟信号;
        .i_tx_data          ( i_0_tx_data       ),//发送数据,位宽与IP设置保持一致;
        .i_tx_char          ( i_0_tx_char       ),//发送数据K码指示信号,高点破表示对应字节数据时K码;
        .o_gt_tx_p          ( o_0_gt_tx_p       ),//GT发送数据的差分信号对;
        .o_gt_tx_n          ( o_0_gt_tx_n       ),//GT发送数据的差分信号对;
        .i_gt_rx_p          ( i_0_gt_rx_p       ),//GT接收数据的差分信号对;
        .i_gt_rx_n          ( i_0_gt_rx_n       ) //GT接收数据的差分信号对;    
    );

    //例化通道1的GT收发器模块;
    gt_channel u_gt_channel_1(
        .sys_clk            ( sys_clk           ),//系统时钟输入,与DRP时钟频率保持一致;
        .i_rx_rst           ( i_1_rx_rst        ),//接收数据端复位信号;
        .i_tx_rst           ( i_1_tx_rst        ),//发送数据端复位信号;
        .o_tx_done          ( o_1_tx_done       ),//发送端口复位完成指示信号;
        .o_rx_done          ( o_1_rx_done       ),//接收数据端口复位完成指示信号;
        .i_tx_polarity      ( i_1_tx_polarity   ),//发送数据极性控制引脚;
        .i_tx_diffctrl      ( i_1_tx_diffctrl   ),//差分幅值控制引脚;
        .i_txpostcursor     ( i_1_txpostcursor  ),//发送数据前加重调节信号;
        .i_txpercursor      ( i_1_txpercursor   ),//发送数据后加重信号;     
        .i_rx_polarity      ( i_1_rx_polarity   ),//接收数据极性控制引脚;
        .i_loopback         ( i_1_loopback      ),//回环模式信号;
        .i_drpaddr          ( i_1_drpaddr       ),//动态设置参数端口;
        .i_drpclk           ( i_1_drpclk        ),//动态设置参数端口;
        .i_drpdi            ( i_1_drpdi         ),//动态设置参数端口; 
        .o_drpdo            ( o_1_drpdo         ),//动态设置参数端口; 
        .i_drpen            ( i_1_drpen         ),//动态设置参数端口;
        .o_drprdy           ( o_1_drprdy        ),//动态设置参数端口; 
        .i_drpwe            ( i_1_drpwe         ),//动态设置参数端口;
        .i_qplllock         ( w_qplllock        ),//QPLL时钟锁定端口; 
        .i_qpllrefclklost   ( w_qpllrefclklost  ),//QPLL时钟端口信号; 
        .o_qpllreset        (                   ),//QPLL时钟复位端口,一个bank只需要一个通道输出QPLL复位即可。
        .i_qplloutclk       ( w_qplloutclk      ),//QPLL时钟输出端口; 
        .i_qplloutrefclk    ( w_qplloutrefclk   ),//QPLL参考时钟端口; 
        .o_rx_bytealign     ( o_1_rx_bytealign  ),//接收数据字节对齐指示信号;
        .o_rx_clk           ( o_1_rx_clk        ),//接收数据时钟信号;
        .o_rx_data          ( o_1_rx_data       ),//接收数据,位宽与IP设置保持一致;
        .o_rx_char          ( o_1_rx_char       ),//接收数据K码指示信号,高点破表示对应字节数据时K码;
        .o_tx_clk           ( o_1_tx_clk        ),//发送数据时钟信号;
        .i_tx_data          ( i_1_tx_data       ),//发送数据,位宽与IP设置保持一致;
        .i_tx_char          ( i_1_tx_char       ),//发送数据K码指示信号,高点破表示对应字节数据时K码;
        .o_gt_tx_p          ( o_1_gt_tx_p       ),//GT发送数据的差分信号对;
        .o_gt_tx_n          ( o_1_gt_tx_n       ),//GT发送数据的差分信号对;
        .i_gt_rx_p          ( i_1_gt_rx_p       ),//GT接收数据的差分信号对;
        .i_gt_rx_n          ( i_1_gt_rx_n       ) //GT接收数据的差分信号对;    
    );

  后续如果要使用多通道的收发器,只需要在该模块下,多次例化gt_channel模块即可。

gt_module的RTL视图如下所示。

在这里插入图片描述

图3 gt_module的TRL视图

  本文对模块的整理到此结束,后文将使用该模块实现一个自定义收发格式的PHY设计。


  如果对文章内容理解有疑惑或者对代码不理解,可以在评论区或者后台留言,看到后均会回复!

  如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!您的支持是我更新的最大动力!将持续更新工程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/663840.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis用GEO实现附近的人功能

文章目录 ☃️概述☃️命令演示☃️API将数据库表中的数据导入到redis中去☃️实现附近功能 ☃️概述 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。…

万界星空科技MES系统功能介绍

制造执行系统或MES 是一个全面的动态软件系统,用于监视、跟踪、记录和控制从原材料到成品的制造过程。MES在企业资源规划(ERP) 和过程控制系统之间提供了一个功能层,为决策者提供了提高车间效率和优化生产所需的数据。 万界星空科技MES 系统基础功能&am…

美国心理协会(APA)文献去哪里查找下载

今天讲一个关于心理学的数据库——美国心理协会(APA)数据库 PsycARTICLES(心理学全文数据库,简称PA),收录美国心理学协会(American Psychological Association,简称APA)…

Android 图表开发开源库 MPAndroidChart 使用总结

1. 引言 电视项目中需要一个折线图表示节电数据变化情况,类比 H5 来说,Android 中也应该有比较成熟的控件,经过调研后,发现 MPAndroidChart 功能比较强大,网上也有人说可能是目前 Android 开发最好用的一个三方库了&a…

玩机进阶教程------修改gpt.bin分区表地址段 完全屏蔽系统更新 fast刷写分区表 操作步骤解析【二】

上期博文简单说明了分区表的基本常识。我们在有些环境中需要屏蔽手机的系统更新选项。除了以前博文中说明的修改系统更新下载文件夹的方法。还可以通过修改分区表类达到目的。在一些辅助维修工具上面带修改分区表功能。修改后效果为屏蔽系统更新和可以恢复出厂。原则上不深刷都…

kafka学习笔记06

Kafka数据存储流程和log日志讲解 讲解分布式应用核心CAP知识 Kafka数据可靠性保证原理之副本机制Replica介绍《上》 Kafka数据可靠性保证原理之副本机制Replica介绍《下》 Kafka数据可靠性保证原理之ISR机制讲解 Kafka的HighWatermark的作用你知道多少

安装flask:后端框架的学习之旅

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、创建虚拟环境 1. 引入虚拟环境的概念 2. 创建Flask虚拟环境 三、安装Flask…

web 前端开发技术---网页的制作

这是一个网页代码 上年包含了电子邮件&#xff0c;选项建 等等 分享给大家 <!-- prj_7_1.html --> <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><title>留言板设计</title><style type&…

Android Studio启动第一个项目的报错——笔记

零基础第一次使用Android Studio开发遇到的问题 1 新建项目下载gradle慢的问题 直接叉掉打开gradle官网手动下载自己想要的版本 gradle官网 然后在刚刚建好的项目里找到gradle-wrapper.properties&#xff0c;修改distributionUrl&#xff0c;并把自己从官网下载的包放到和gr…

【Python】解决Python报错:IndexError: queue index out of range

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

基于Pytorch框架的深度学习EfficientNetV2神经网络中草药识别分类系统源码

第一步&#xff1a;准备数据 5种中草药数据&#xff1a;self.class_indict ["百合", "党参", "山魈", "枸杞", "槐花", "金银花"] &#xff0c;总共有900张图片&#xff0c;每个文件夹单独放一种数据 第二步&a…

初识Spring Boot:构建项目结构与组件解析

目录 前言 第一点&#xff1a;项目的结构 第二点&#xff1a;controller类的创建与使用&#xff08;构造器&#xff09; 第二点&#xff1a;service类的创建与使用&#xff08;逻辑层&#xff09; 第三点&#xff1a;Mapper类的创建与使用(数据操作) 总结 前言 在进行Sp…

HQChart使用教程100-uniapp如何在vue3运行微信小程序

HQChart使用教程100-uniapp如何在vue3运行微信小程序 症状原因分析解决思路解决步骤1. 修改vender.js2. 修改HQChartControl.js 完整实例HQChart代码地址 症状 HQChart插件在uniappvue3的项目编译成小程序以后&#xff0c; 运行会报错&#xff0c;见下图。 原因分析 查了下…

抖音太可怕了,我卸载了

这两天刷短视频&#xff0c;上瘾了&#xff0c;太可怕了。 自己最近一直在研究短视频制作&#xff0c;所以下载了抖音&#xff0c;说实话&#xff0c;我之前手机上并没有抖音&#xff0c;一直在用B站。 用了两天抖音&#xff0c;我发现&#xff0c;这玩意比刷B站还容易上瘾啊…

【深度学习-第6篇】使用python快速实现CNN多变量回归预测(使用pytorch框架)

上一篇我们讲了使用CNN进行分类的python代码&#xff1a; Mr.看海&#xff1a;【深度学习-第5篇】使用Python快速实现CNN分类&#xff08;模式识别&#xff09;任务&#xff0c;含一维、二维、三维数据演示案例&#xff08;使用pytorch框架&#xff09; 这一篇我们讲CNN的多变…

对网工的误解,早就不是一点半点了

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 上午好&#xff0c;我的网工朋友 很多人对网工是有误解的&#xff0c;同为网工的我深有感受。 虽然我的阅历不如老杨总多&#xff0c;但也在这行…

开源与闭源 AI 模型:发展路径的比较与前瞻

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

解决 iOS 端小程序「saveVideoToPhotosAlbum:fail invalid video」问题

场景复现&#xff1a; const url https://mobvoi-digitalhuman-video-public.weta365.com/1788148372310446080.mp4uni.downloadFile({url,success: (res) > {uni.saveVideoToPhotosAlbum({filePath: res.tempFilePath,success: (res) > {console.log("res > &…

chap4 simple neural network

全连接神经网络 问题描述 利用numpy和pytorch搭建全连接神经网络。使用numpy实现此练习需要自己手动求导&#xff0c;而pytorch具有自动求导机制。 我们首先先手动算一下反向传播的过程&#xff0c;使用的模型和初始化权重、偏差和训练用的输入和输出值如下&#xff1a; 我…

R语言绘图 --- 折线图(Biorplot 开发日志 --- 1)

「写在前面」 在科研数据分析中我们会重复地绘制一些图形&#xff0c;如果代码管理不当经常就会忘记之前绘图的代码。于是我计划开发一个 R 包&#xff08;Biorplot&#xff09;&#xff0c;用来管理自己 R 语言绘图的代码。本系列文章用于记录 Biorplot 包开发日志。 相关链接…