Aurora8b10b(1)IP核介绍并基于IP核进行设计

文章目录

  • 前言
  • 一、IP核设置
  • 二、基于IP核进行设计
    • 2.1、设计框图
    • 2.2、aurora_8b10b_0模块
    • 2.3、aurora_8b10b_0_CLOCK_MODULE
    • 2.4、aurora_8b10b_0_SUPPORT_RESET_LOGIC
    • 2.5、aurora8b10b_channel模块
    • 2.6、IBUFDS_GTE2模块
    • 2.7、aurora_8b10b_0_gt_common_wrapper模块
    • 2.8、aurora8b10b_module模块
  • 总结

前言

参考xilinx文档pg046
Aurora 是一个用于在点对点串行链路间移动数据的可扩展轻量级链路层协议。这为物理层提供透明接口,让专有协议或业界标准协议上层能方便地使用高速收发器。虽然使用的逻辑资源非常少,但 Aurora 能提供低延迟高带宽和高度可配置的特性集。在 Xilinx FPGA 上使用是免费的,而且在 ASIC 上能以名义成本通过单独的许可证协议得到支持。
主要特性:

  • 高带宽,仅受限于收发器的数据速率
  • 支持大量键合线路,实现较高的总带宽
  • 支持全双工和单工通道
  • 无限帧尺寸/灵活组帧
  • 小型逻辑封装,采用标准的 AXI-ST 接口。
  • 内置流程控制和热插拔支持

Aurora 广泛用于需要背板、电路板间和芯片间连接的应用。细分市场包括有线通信、存储、服务器、测试测量、工业、消费和医疗等。此外,Aurora 也可用作嵌入式处理器应用中的调试端口。
在这里插入图片描述

一、IP核设置

IP核配置很简单,相当于只有第一页。
Lane WIDTH:用户侧数据位宽
Line Rate:线速率
GT Refclk :Aurora IP核是基于GT作为物理层实现的,所以时钟GT Refclk就是GT的参考时钟。GT的时钟参考只能使用外部的差分时钟,所以具体的值取决你板卡的硬件设计。
INIT CLK :初始化阶段的时钟 ,在上电初始化阶段,可以使用该时钟来驱动一些逻辑。
DRP CLK : DRP时钟,动态重配置,一般不用。(通常一个内部模块需要进行配置,使用两种方法:端口控制和配置参数控制。一个常见的应用就是线速率切换。这时候就需要利用DRP端口来调整部分参数的值,然后复位GTX,使GTX工作在不同的线速率下。)。
​ 上面这三个时钟,是IP核工作所需要的时钟,也是我们需要提供给IP核的。此外,还有一个时钟是IP核提供给我们的:user_clk。这个时钟,是IP核根据设置的线速率及Lane的位宽计算出来的用户时钟,用户需要传输的数据必须是该时钟域下的数据,否则会存在亚稳态风险。
Link Layer:选择工作模式(一般为全双工)、数据帧接口或者是流接口(一般使用帧接口,也就是AXIS),流控
在这里插入图片描述
第二页则是选择通道Lane数目以及位置,第三页选择共享逻辑位置。根据自己需求进行选择。

二、基于IP核进行设计

基于example design进行设计,许多模块也是从其中获取,然后进行简单的修改以方便我们使用。

2.1、设计框图

在这里插入图片描述

2.2、aurora_8b10b_0模块

该模块即为例化aurora8b10b IP核。如果看过之前的基于GTX IP核的设计,这些接口应该比较熟悉了。具体含义查看xilinx手册pg046

aurora_8b10b_0 aurora_8b10b_0_u0 (.s_axi_tx_tdata               (s_axi_tx_tdata       ),.s_axi_tx_tkeep               (s_axi_tx_tkeep       ),.s_axi_tx_tlast               (s_axi_tx_tlast       ),.s_axi_tx_tvalid              (s_axi_tx_tvalid      ),.s_axi_tx_tready              (s_axi_tx_tready      ),.m_axi_rx_tdata               (m_axi_rx_tdata       ),.m_axi_rx_tkeep               (m_axi_rx_tkeep       ),.m_axi_rx_tlast               (m_axi_rx_tlast       ),.m_axi_rx_tvalid              (m_axi_rx_tvalid      ),.hard_err                     (o_hard_err           ),.soft_err                     (o_soft_err           ),.frame_err                    (o_frame_err          ),.channel_up                   (o_channel_up         ),.lane_up                      (o_lane_up            ),.txp                          (gt_txp               ),.txn                          (gt_txn               ),.reset                        (w_system_rst         ),.gt_reset                     (w_gt_reset           ),.loopback                     (i_loopback           ),.rxp                          (gt_rxp               ),.rxn                          (gt_rxn               ),.drpclk_in                    (i_clk_100M           ),.drpaddr_in                   (0                    ),.drpen_in                     (0                    ),.drpdi_in                     (0                    ),.drprdy_out                   (                     ),.drpdo_out                    (                     ),.drpwe_in                     (0                    ),.power_down                   (0                    ),.tx_lock                      (w_gt_clk_locked      ),.tx_resetdone_out             (),.rx_resetdone_out             (),.link_reset_out               (),.gt0_qplllock_in              (gt0_qplllock_in        ),.gt0_qpllrefclklost_in        (gt0_qpllrefclklost_in  ),.gt0_qpllreset_out            (gt0_qpllreset_out      ),.gt_qpllclk_quad3_in          (gt_qpllclk_quad3_in    ),.gt_qpllrefclk_quad3_in       (gt_qpllrefclk_quad3_in ),.init_clk_in                  (i_clk_100M             ),.pll_not_locked               (w_pll_not_locked       ),.tx_out_clk                   (w_tx_out_clk           ),.sys_reset_out                (w_sys_reset_out        ),.user_clk                     (w_user_clk             ),.sync_clk                     (w_sycn_clk             ),.gt_refclk1                   (i_gtref_clk            ) 
);

2.3、aurora_8b10b_0_CLOCK_MODULE

该模块主要作用是根据GT的TXOUTCLK(此处为tx_out_clk)产生w_user_clkw_sync_clkw_user_clk是提供给用户逻辑的,也就是TXUSRCLK2w_sync_clk 则是作为TXUSRCLK 。以下是手册当中的介绍,很清楚了已经(前提是要看GT的介绍):

user_clk和sync_clk是由tx_out_clk驱动的PLL或BUFG的输出。这些时钟生成在_clock_module文件中可用。user_clk作为txusrclk2输入信号传递给收发器。sync_clk作为txusrclk输入信号传递给收发器

此处对于该模块进行了简单的修改,将INIT_CLK的差分转单端的过程放到了外部顶层模块。(忘了在哪里看到的一句话,说过最好在顶层模块使用clock_wizard)

module aurora_8b10b_0_CLOCK_MODULE
(// INIT_CLK_P,// INIT_CLK_N,// INIT_CLK_O,GT_CLK,GT_CLK_LOCKED,USER_CLK,SYNC_CLK,PLL_NOT_LOCKED
);//***********************************Port Declarations*******************************// input              INIT_CLK_P;// input              INIT_CLK_N;// output             INIT_CLK_O;input       GT_CLK;input       GT_CLK_LOCKED;output      USER_CLK;output      SYNC_CLK;output      PLL_NOT_LOCKED;//wire INIT_CLK_I;//*********************************Main Body of Code**********************************// Input buffering//------------------------------------BUFG user_clk_buf_i(.I(GT_CLK),.O(USER_CLK));assign SYNC_CLK = USER_CLK;  assign PLL_NOT_LOCKED  =   !GT_CLK_LOCKED;// Assign an IBUFDS to INIT_CLK
//   IBUFDS init_clk_ibufg_i
//   (
//    .I(INIT_CLK_P),
//    .IB(INIT_CLK_N),
//    .O(INIT_CLK_I)
//   );BUFG init_clk_buf_i(.I(INIT_CLK_I),.O(INIT_CLK_O));endmodule

2.4、aurora_8b10b_0_SUPPORT_RESET_LOGIC

该模块用于产生复位信号resetgt_reset。根据手册内容,我们可以看到,reset是针对于user_clk时钟域的,gt_reset是针对于init_clk时钟域的。那么代码内容就很好理解了,就是简单的跨时钟处理,将异步复位信号同步到相应的时钟域下。
具体的复位过程有兴趣可以看看手册里面的介绍,我们使用IP核的时候直接关注channel_up信号就可以了。
在这里插入图片描述

module aurora_8b10b_0_SUPPORT_RESET_LOGIC
(// User IORESET,USER_CLK, INIT_CLK_IN,GT_RESET_IN,SYSTEM_RESET,GT_RESET_OUT
);`define DLY #1
//***********************************Port Declarations*******************************// User I/O
input              RESET;
input              USER_CLK;
input              INIT_CLK_IN;
input              GT_RESET_IN;
output             SYSTEM_RESET;
output             GT_RESET_OUT;//**************************Internal Register Declarations****************************
(* ASYNC_REG = "true" *) (* shift_extract = "{no}" *) reg     [0:3]      debounce_gt_rst_r = 4'd0;
reg     [0:3]      reset_debounce_r = 4'd0;
reg                reset_debounce_r2 = 1'b1;
reg                gt_rst_r; //********************************Wire Declarations**********************************
wire    gt_rst_sync;      wire               SYSTEM_RESET;//*********************************Main Body of Code**********************************//Reset sync from INIT_CLK to USER_CLKaurora_8b10b_0_cdc_sync_exdes#(.c_cdc_type      (1             ),   .c_flop_input    (1             ),  .c_reset_state   (0             ),  .c_single_bit    (1             ),  .c_vector_width  (2             ),  .c_mtbf_stages   (5              )  )gt_rst_r_cdc_sync (.prmry_aclk      (INIT_CLK_IN         ),.prmry_rst_n     (1'b1                ),.prmry_in        (gt_rst_r            ),.prmry_vect_in   (2'd0                ),.scndry_aclk     (USER_CLK            ),.scndry_rst_n    (1'b1                ),.prmry_ack       (                    ),.scndry_out      (gt_rst_sync         ),.scndry_vect_out (                    ) );//_________________Debounce the Reset and PMA init signal___________________________
// Simple Debouncer for Reset button. The debouncer has an
// asynchronous reset tied to GT_RESET_IN. This is primarily for simulation, to ensure
// that unknown values are not driven into the reset linealways @(posedge USER_CLK or posedge gt_rst_sync)if(gt_rst_sync)reset_debounce_r    <=  4'b1111;   elsereset_debounce_r    <=  {RESET,reset_debounce_r[0:2]};always @ (posedge USER_CLK)reset_debounce_r2 <= &reset_debounce_r;assign SYSTEM_RESET = reset_debounce_r2;// Debounce the GT_RESET_IN signal using the INIT_CLKalways @(posedge INIT_CLK_IN)debounce_gt_rst_r <=  {GT_RESET_IN,debounce_gt_rst_r[0:2]};always @(posedge INIT_CLK_IN)gt_rst_r        <=   &debounce_gt_rst_r;assign  GT_RESET_OUT    =   gt_rst_r;endmodule

2.5、aurora8b10b_channel模块

该模块就是例化上述三个模块,讲一下关键接口给到上层。看一看接口信号即可:

module aurora8b10b_channel(input               i_clk_100M              ,input               i_rst                   ,input               i_gtref_clk             ,output              gt_txp                  ,output              gt_txn                  ,input               gt_rxp                  ,input               gt_rxn                  ,input  [31:0]       s_axi_tx_tdata          ,input  [3 :0]       s_axi_tx_tkeep          ,input               s_axi_tx_tlast          ,input               s_axi_tx_tvalid         ,output              s_axi_tx_tready         ,output [31:0]       m_axi_rx_tdata          ,output [3 :0]       m_axi_rx_tkeep          ,output              m_axi_rx_tlast          ,output              m_axi_rx_tvalid         ,output              o_hard_err              ,output              o_soft_err              ,output              o_frame_err             ,output              o_channel_up            ,output              o_lane_up               ,input  [2 :0]       i_loopback              ,output              o_user_clk              ,output              o_user_rst              ,input               gt0_qplllock_in         ,input               gt0_qpllrefclklost_in   ,output              gt0_qpllreset_out       ,input               gt_qpllclk_quad3_in     ,input               gt_qpllrefclk_quad3_in  
);

2.6、IBUFDS_GTE2模块

这已经是老朋友了,GT的外部输入参考时钟原语。

IBUFDS_GTE2 #(.CLKCM_CFG                  ("TRUE"                 ),.CLKRCV_TRST                ("TRUE"                 ),.CLKSWING_CFG               (2'b11                  )  
)                   
IBUFDS_GTE2_inst (                  .O                          (gt_ref_clk             ),         .ODIV2                      (                       ), .CEB                        (0                      ),     .I                          (i_gtref_clk_p          ),         .IB                         (i_gtref_clk_n          )        
);

2.7、aurora_8b10b_0_gt_common_wrapper模块

一样是老朋友了,里面包含了QPLL原语GTXE2_COMMON。不过我们选择的线速率只有6.25Gbps,CPLL就可以处理了,QPLL其实压根没用到,走完整流程吧。这里的i_clk_100M时钟就是当时在配IP时候的INIT_CLK,我选择的是100M。

:将该模块放到这里是因为方便我们在aurora8b10b_module当中可以例化多个aurora8b10b_channel,老生常谈了,因为一个QUAD只有一个QPLL。同样注意一个问题,那就是gt_qpllreset_out信号选择一个aurora8b10b_channel的复位信号就行。

aurora_8b10b_0_gt_common_wrapper gt_common_support_u0
(.gt_qpllclk_quad3_i         (gt_qpllclk_quad3_in    ),.gt_qpllrefclk_quad3_i      (gt_qpllrefclk_quad3_in ),.gt0_gtrefclk0_common_in    (gt_ref_clk             ),.gt0_qplllock_out           (gt_qplllock_in         ),.gt0_qplllockdetclk_in      (i_clk_100M             ),.gt0_qpllrefclklost_out     (gt_qpllrefclklost_in   ),.gt0_qpllreset_in           (gt_qpllreset_out       )
);

2.8、aurora8b10b_module模块

在该模块当中我们可以例化多个aurora8b10b_channel模块,就和之前使用GT是一样一样的。以下为例化俩个通道的代码。

module aurora8b10b_module(input           i_gtref_clk_p               ,input           i_gtref_clk_n               ,input           i_clk_100M                  ,input           i_rst                       ,output [1 :0]   gt_txp                      ,output [1 :0]   gt_txn                      ,input  [1 :0]   gt_rxp                      ,input  [1 :0]   gt_rxn                      ,input  [31:0]   s_axi_c0_tx_tdata           ,input  [3 :0]   s_axi_c0_tx_tkeep           ,input           s_axi_c0_tx_tlast           ,input           s_axi_c0_tx_tvalid          ,output          s_axi_c0_tx_tready          ,output [31:0]   m_axi_c0_rx_tdata           ,output [3 :0]   m_axi_c0_rx_tkeep           ,output          m_axi_c0_rx_tlast           ,output          m_axi_c0_rx_tvalid          ,input  [31:0]   s_axi_c1_tx_tdata           ,input  [3 :0]   s_axi_c1_tx_tkeep           ,input           s_axi_c1_tx_tlast           ,input           s_axi_c1_tx_tvalid          ,output          s_axi_c1_tx_tready          ,output [31:0]   m_axi_c1_rx_tdata           ,output [3 :0]   m_axi_c1_rx_tkeep           ,output          m_axi_c1_rx_tlast           ,output          m_axi_c1_rx_tvalid          ,output          o_c0_hard_err               ,output          o_c0_soft_err               ,output          o_c0_frame_err              ,output          o_c0_channel_up             ,output          o_c0_lane_up                ,input  [2 :0]   i_c0_loopback               ,output          o_c1_hard_err               ,output          o_c1_soft_err               ,output          o_c1_frame_err              ,output          o_c1_channel_up             ,output          o_c1_lane_up                ,input  [2 :0]   i_c1_loopback               ,output          o_c0_user_clk               ,output          o_c0_user_rst               ,output          o_c1_user_clk               ,output          o_c1_user_rst               
);wire                gt_ref_clk                  ;
wire                gt_qplllock_in              ;
wire                gt_qpllrefclklost_in        ;
wire                gt_qpllreset_out            ;
wire                gt_qpllclk_quad3_in         ;
wire                gt_qpllrefclk_quad3_in      ; IBUFDS_GTE2 #(.CLKCM_CFG                  ("TRUE"                 ),.CLKRCV_TRST                ("TRUE"                 ),.CLKSWING_CFG               (2'b11                  )  
)                   
IBUFDS_GTE2_inst (                  .O                          (gt_ref_clk             ),         .ODIV2                      (                       ), .CEB                        (0                      ),     .I                          (i_gtref_clk_p          ),         .IB                         (i_gtref_clk_n          )        
);aurora_8b10b_0_gt_common_wrapper gt_common_support_u0
(.gt_qpllclk_quad3_i         (gt_qpllclk_quad3_in    ),.gt_qpllrefclk_quad3_i      (gt_qpllrefclk_quad3_in ),.gt0_gtrefclk0_common_in    (gt_ref_clk             ),.gt0_qplllock_out           (gt_qplllock_in         ),.gt0_qplllockdetclk_in      (i_clk_100M             ),.gt0_qpllrefclklost_out     (gt_qpllrefclklost_in   ),.gt0_qpllreset_in           (gt_qpllreset_out       )
);aurora8b10b_channel aurora_channel_u0(.i_clk_100M                 (i_clk_100M             ),.i_rst                      (i_rst                  ),.i_gtref_clk                (gt_ref_clk             ),         .gt_txp                     (gt_txp[0]              ),.gt_txn                     (gt_txn[0]              ),.gt_rxp                     (gt_rxp[0]              ),.gt_rxn                     (gt_rxn[0]              ),.s_axi_tx_tdata             (s_axi_c0_tx_tdata      ),.s_axi_tx_tkeep             (s_axi_c0_tx_tkeep      ),.s_axi_tx_tlast             (s_axi_c0_tx_tlast      ),.s_axi_tx_tvalid            (s_axi_c0_tx_tvalid     ),.s_axi_tx_tready            (s_axi_c0_tx_tready     ),.m_axi_rx_tdata             (m_axi_c0_rx_tdata      ),.m_axi_rx_tkeep             (m_axi_c0_rx_tkeep      ),.m_axi_rx_tlast             (m_axi_c0_rx_tlast      ),.m_axi_rx_tvalid            (m_axi_c0_rx_tvalid     ),.o_hard_err                 (o_c0_hard_err          ),.o_soft_err                 (o_c0_soft_err          ),.o_frame_err                (o_c0_frame_err         ),.o_channel_up               (o_c0_channel_up        ),.o_lane_up                  (o_c0_lane_up           ),.i_loopback                 (i_c0_loopback          ),.o_user_clk                 (o_c0_user_clk          ),.o_user_rst                 (o_c0_user_rst          ),.gt0_qplllock_in            (gt_qplllock_in         ),.gt0_qpllrefclklost_in      (gt_qpllrefclklost_in   ),.gt0_qpllreset_out          (gt_qpllreset_out       ),.gt_qpllclk_quad3_in        (gt_qpllclk_quad3_in    ),.gt_qpllrefclk_quad3_in     (gt_qpllrefclk_quad3_in )
);aurora8b10b_channel aurora_channel_u1(.i_clk_100M                 (i_clk_100M             ),.i_rst                      (i_rst                  ),.i_gtref_clk                (gt_ref_clk             ),.gt_txp                     (gt_txp[1]              ),.gt_txn                     (gt_txn[1]              ),.gt_rxp                     (gt_rxp[1]              ),.gt_rxn                     (gt_rxn[1]              ),.s_axi_tx_tdata             (s_axi_c1_tx_tdata      ),.s_axi_tx_tkeep             (s_axi_c1_tx_tkeep      ),.s_axi_tx_tlast             (s_axi_c1_tx_tlast      ),.s_axi_tx_tvalid            (s_axi_c1_tx_tvalid     ),.s_axi_tx_tready            (s_axi_c1_tx_tready     ),.m_axi_rx_tdata             (m_axi_c1_rx_tdata      ),.m_axi_rx_tkeep             (m_axi_c1_rx_tkeep      ),.m_axi_rx_tlast             (m_axi_c1_rx_tlast      ),.m_axi_rx_tvalid            (m_axi_c1_rx_tvalid     ),.o_hard_err                 (o_c1_hard_err          ),.o_soft_err                 (o_c1_soft_err          ),.o_frame_err                (o_c1_frame_err         ),.o_channel_up               (o_c1_channel_up        ),.o_lane_up                  (o_c1_lane_up           ),.i_loopback                 (i_c1_loopback          ),.o_user_clk                 (o_c1_user_clk          ),.o_user_rst                 (o_c1_user_rst          ),.gt0_qplllock_in            (gt_qplllock_in         ),.gt0_qpllrefclklost_in      (gt_qpllrefclklost_in   ),.gt0_qpllreset_out          (                       ),.gt_qpllclk_quad3_in        (gt_qpllclk_quad3_in    ),.gt_qpllrefclk_quad3_in     (gt_qpllrefclk_quad3_in )
);endmodule

总结

至此工作就已经准备差不多了,编写相应的用户数据产生模块,我们已经可以直接使用aurora了。下文进行介绍。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GIS水文分析填充伪洼地学习

1 基本操作 洼地是指流域内被较高高程所包围的局部区域&#xff1b; 分为自然洼地和伪洼地&#xff1b; 自然洼地是自然界实际存在的洼地&#xff1b; 在 DEM 数据中&#xff0c;由于数据处理的误差和不合适的插值方法所产生的洼地&#xff0c;称为伪洼地&#xff1b; DEM 数据…

文件服务器之二:SAMBA服务器

文章目录 什么是SAMBASAMBA的发展历史与名称的由来SAMBA常见的应用 SAMBA服务器基础配置配置共享资源Windows挂载共享Linux挂载共享 什么是SAMBA 下图来自百度百科 SAMBA的发展历史与名称的由来 Samba是一款开源的文件共享软件&#xff0c;它基于SMB&#xff08;Server Messa…

Python环境搭建—安装PyCharm开发工具

&#x1f947;作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1 &#x1f525;本文已收录于Python系列专栏&#xff1a; 零基础学Python &#x1f4ac;订阅专栏后可私信博主进入Python学习交流群&#xff0c;进群可领取Python视频教程以及Python相关电子书合…

基于SpringBoot的“网上书城管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“网上书城管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统首页界面图 用户注册界面…

传输层 --- TCP (上篇)

目录 1. TCP 1.1. TCP协议段格式 1.2. TCP的两个问题 1.3. 如何理解可靠性 1.4. 理解确认应答机制 2. TCP 报头中字段的分析 2.1. 序号和确认序号 2.1.1. 序号和确认序号的初步认识 2.1.2. 如何正确理解序号和确认序号 2.2. TCP是如何做到全双工的 2.3. 16位窗口大小…

[C++初阶]初识C++(二)

建议先看完上篇&#xff1a;[C初阶]初识C(一)—————命名空间和缺省函数-CSDN博客 本篇部分代码和文案来源&#xff1a;百度文库&#xff0c;知乎&#xff0c;比特就业课 1.函数重载 自然语言中&#xff0c;一个词可以有多重含义&#xff0c;人们可以通过上下文来判断该词真…

低代码革新:软件开发的未来潜力与创新路径探索

过去的一年&#xff0c;挑战与机遇并存。人们一边忧虑市场经济下行所带来的新的增长难题、裁员危机&#xff0c;一边惊叹于AIGC、量子技术等领域不断涌现新的创新成果。 时代发生了改变&#xff0c;传统“互联网”的模式已走入尾声&#xff0c;新一轮的科技革命与产业变革正在到…

当我入职了电商数据Python程序员时……

当年刚入职电商数据爬虫程序员这个岗位的时候&#xff0c;真的是慷慨激昂&#xff0c;富有激情和执着&#xff0c;每天开开心心投入到新工作中。然而&#xff0c;刚开始面对的第一个挑战是爬取电商网站的商品详情数据时遇到了滑块验证码。尝试了各种方法&#xff0c;但都无济于…

不妨借一步说话,你想知道的关于设计模式的种种

可以点击关于我联系我获取完整PDF (VX&#xff1a;mm14525201314) 1. 请列举出在 JDK 中几个常用的设计模式&#xff1f; 单例模式&#xff08;Singleton pattern&#xff09;用于 Runtime&#xff0c;Calendar 和其他的一些类中。 工厂模式&#xff08;Factory pattern&…

java Web 辅助学习管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 java Web 辅助学习管理系统是一套完善的信息管理系统&#xff0c;结合java 开发技术和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 前段主要技术 bootstr…

代码随想录-算法训练营day02【滑动窗口、螺旋矩阵】

专栏笔记&#xff1a;https://blog.csdn.net/weixin_44949135/category_10335122.html https://docs.qq.com/doc/DUGRwWXNOVEpyaVpG?uc71ed002e4554fee8c262b2a4a4935d8977.有序数组的平方 &#xff0c;209.长度最小的子数组 &#xff0c;59.螺旋矩阵II &#xff0c;总结 建议…

@RequstBody,IOC,DI,@Autowired,@Resource,lombok,

要使用Jason数据格式必须用post方法&#xff0c;因为是通过请求体传送的&#xff0c;get没有请求体 Data不包括有参构造和无参构造方法

AI绘图cuda与stable diffusion安装部署始末与避坑

stable diffusion的安装说起来很讽刺&#xff0c;最难的不是stable diffusion&#xff0c;而是下载安装cuda。下来我就来分享一下我的安装过程&#xff0c;失败了好几次&#xff0c;几近放弃。 一、安装cuda 我们都知道cuda是显卡CPU工作的驱动&#xff08;或者安装官网的解释…

揭示GPU上的批处理策略

本文深入探讨了批处理在现代GPU上的工作原理&#xff0c;以及它是如何影响深度学习模型的推理速度&#xff0c;基于此&#xff0c;作者为模型优化提供了实用指导。通过优化批处理策略&#xff0c;研究人员和工程师可以更有效地利用计算资源&#xff0c;提高模型的推理效率。 &a…

攻防世界:mfw[WriteUP]

根据题目提示考虑是git库泄露 这里在地址栏后加.git也可以验证是git库泄露 使用GitHack工具对git库进行恢复重建 在templates目录下存在flag.php文件&#xff0c;但里面并没有flag 有内容的只有主目录下的index.php index.php源码&#xff1a; <?phpif (isset($_GET[page…

Scaling Law解析

文章目录 scaling law一个token的计算量幂律关系幂律规律实际指导 scaling law 幂律法则&#xff1a;对大模型数据量、参数量、算力之间的最优分配 不仅仅是对语言大模型&#xff0c;对主要基于tranformer的多模态大模型基本都有效 对于Decoder-only结构模型(GPT架构)&#…

解决Vue中仓库持久化的问题,不借助插件用原生JS实现仓库持久化。了解仓库的插件机制、监听的时机

1、演示 前言&#xff1a;目前Vue有两种仓库&#xff0c;一种是Vuex&#xff0c;一种是Pinia&#xff0c;懂得都懂&#xff0c;这里就不详细介绍这两者的区别了 2、什么是持久化 仓库里面的数据是需要跨越页面周期的&#xff0c;当页面刷新之后数据还在&#xff0c;在默认情况下…

【网站项目】平面设计课程在线学习平台系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

定风波:苏轼

定风波&#xff1a;苏轼 该片围绕诗文、书画、美食、旅游、民生等主题&#xff0c;多维度描绘苏东坡的为官之道、志趣审美和精神世界&#xff0c;深入解读苏东坡在21世纪的价值。 生平 1.出生于眉山 2.进京参加会考 3.母亲去世&#xff0c;回乡奔丧 4.开始担任官职 5.恰逢王…

《债务与国家的崛起》西方民主制度的金融起源 - 三余书屋 3ysw.net

债务与国家的崛起&#xff1a;西方民主制度的金融起源 你好&#xff0c;今天我们来聊聊由英国知名经济与金融历史学家詹姆斯麦克唐纳所著的《债务与国家的崛起》这本书。19世纪世界历史上发生了一次巨变&#xff0c;即“大分流”。当时西方通过工业革命实现了科技和经济的飞速…