当前位置: 首页 > news >正文

SerDes介绍以及原语使用介绍(2)OSERDESE2原语仿真

文章目录

  • 前言
  • 一、SDR模式
    • 1.1、设计代码
    • 1.2、testbench代码
    • 1.3、仿真分析
  • 二、DDR模式下
    • 2.1、设计代码
    • 2.2、testbench代码
    • 2.3、仿真分析
  • 三、OSERDES2级联
    • 3.1、设计代码
    • 3.2、testbench代码
    • 3.3、代码分析

前言

上文通过xilinx ug471手册对OSERDESE有了简单的了解,接下来通过仿真进一步深化印象。

一、SDR模式

1.1、设计代码

以下代码表示在SDR模式下对输入的4位宽并行数据进行并串转换。

module serdes_top(input          i_clk       ,input          i_div_clk   ,input          i_rst       ,input  [3 :0]  i_par_data  ,output         o_ser_data  
);wire OFB;OSERDESE2 #(.DATA_RATE_OQ     ("SDR"         ), // DDR, SDR.DATA_RATE_TQ     ("DDR"         ), // DDR, BUF, SDR.DATA_WIDTH       (4             ), // Parallel data width (2-8,10,14).INIT_OQ          (1'b0          ), // Initial value of OQ output (1'b0,1'b1).INIT_TQ          (1'b0          ), // Initial value of TQ output (1'b0,1'b1).SERDES_MODE      ("MASTER"      ), // MASTER, SLAVE.SRVAL_OQ         (1'b0          ), // OQ output value when SR is used (1'b0,1'b1).SRVAL_TQ         (1'b0          ), // TQ output value when SR is used (1'b0,1'b1).TBYTE_CTL        ("FALSE"       ), // Enable tristate byte operation (FALSE, TRUE).TBYTE_SRC        ("FALSE"       ), // Tristate byte source (FALSE, TRUE).TRISTATE_WIDTH   (1             )  // 3-state converter width (1,4))OSERDESE2_inst (.OFB              (OFB           ), // 1-bit output: Feedback path for data.OQ               (o_ser_data    ), // 1-bit output: Data path output// SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each).SHIFTOUT1        (              ),.SHIFTOUT2        (              ),.TBYTEOUT         (              ), // 1-bit output: Byte group tristate.TFB              (              ), // 1-bit output: 3-state control.TQ               (              ), // 1-bit output: 3-state control.CLK              (i_clk         ), // 1-bit input: High speed clock.CLKDIV           (i_div_clk     ), // 1-bit input: Divided clock// D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each).D1               (i_par_data[0] ),.D2               (i_par_data[1] ),.D3               (i_par_data[2] ),.D4               (i_par_data[3] ),.D5               (),.D6               (),.D7               (),.D8               (),// .D5               (i_par_data[4] ),// .D6               (i_par_data[5] ),// .D7               (i_par_data[6] ),// .D8               (i_par_data[7] ),.OCE              (1'b1          ), // 1-bit input: Output data clock enable.RST              (i_rst         ), // 1-bit input: Reset// SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each).SHIFTIN1         (),.SHIFTIN2         (),// T1 - T4: 1-bit (each) input: Parallel 3-state inputs.T1               (1'b0          ),.T2               (1'b0          ),.T3               (1'b0          ),.T4               (1'b0          ),.TBYTEIN          (1'b0          ), // 1-bit input: Byte group tristate.TCE              (1'b0          )  // 1-bit input: 3-state clock enable);

1.2、testbench代码

以下为TB文件:

module serdes_sim();localparam P_CLK_PERIOD = 40;reg clk, div_clk , rst;
reg [3 :0] r_din;wire w_ser_dout;always begindiv_clk = 0;#(P_CLK_PERIOD); div_clk = 1;#(P_CLK_PERIOD); 
endalways beginclk = 1;#(P_CLK_PERIOD/4); clk = 0;#(P_CLK_PERIOD/4); 
endinitial beginrst = 1;#100;@(posedge clk);rst = 0;repeat(200) @(posedge clk);$stop;
endinitial beginr_din = 'd0;data_gen();
endserdes_top serdes_top_u0(.i_clk           (clk        ),.i_div_clk       (div_clk    ),.i_rst           (rst        ),.i_par_data      (r_din      ),.o_ser_data      (w_ser_dout ) 
);task data_gen();
beginr_din <= 'd0;wait(!rst);repeat(10) @(posedge div_clk);r_din <= ({$random} % 16);forever begin@(posedge div_clk);r_din <= ({$random} % 16);end
end
endtaskendmodule

1.3、仿真分析

在这里插入图片描述
第一个并行数据为4’b0100,在蓝色刻度线处被采样,黄色刻度线开始输出,但是按照表中输出时延应该是3个CLK后开始输出,这是因为CLK和CLKDIV相位对齐,输出时延可以变化一个CLK,仿真结果显示是4个CLK,相比于表中描述多了一个CLK.

二、DDR模式下

2.1、设计代码

只需要修改位宽,输入D5-D8、以及并串转换模式即可。

module serdes_top(input          i_clk       ,input          i_div_clk   ,input          i_rst       ,input  [7 :0]  i_par_data  ,output         o_ser_data  
);wire OFB;OSERDESE2 #(.DATA_RATE_OQ     ("DDR"         ), // DDR, SDR.DATA_RATE_TQ     ("DDR"         ), // DDR, BUF, SDR.DATA_WIDTH       (8             ), // Parallel data width (2-8,10,14).INIT_OQ          (1'b0          ), // Initial value of OQ output (1'b0,1'b1).INIT_TQ          (1'b0          ), // Initial value of TQ output (1'b0,1'b1).SERDES_MODE      ("MASTER"      ), // MASTER, SLAVE.SRVAL_OQ         (1'b0          ), // OQ output value when SR is used (1'b0,1'b1).SRVAL_TQ         (1'b0          ), // TQ output value when SR is used (1'b0,1'b1).TBYTE_CTL        ("FALSE"       ), // Enable tristate byte operation (FALSE, TRUE).TBYTE_SRC        ("FALSE"       ), // Tristate byte source (FALSE, TRUE).TRISTATE_WIDTH   (1             )  // 3-state converter width (1,4))OSERDESE2_inst (.OFB              (OFB           ), // 1-bit output: Feedback path for data.OQ               (o_ser_data    ), // 1-bit output: Data path output// SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each).SHIFTOUT1        (              ),.SHIFTOUT2        (              ),.TBYTEOUT         (              ), // 1-bit output: Byte group tristate.TFB              (              ), // 1-bit output: 3-state control.TQ               (              ), // 1-bit output: 3-state control.CLK              (i_clk         ), // 1-bit input: High speed clock.CLKDIV           (i_div_clk     ), // 1-bit input: Divided clock// D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each).D1               (i_par_data[0] ),.D2               (i_par_data[1] ),.D3               (i_par_data[2] ),.D4               (i_par_data[3] ),// .D5               (),// .D6               (),// .D7               (),// .D8               (),.D5               (i_par_data[4] ),.D6               (i_par_data[5] ),.D7               (i_par_data[6] ),.D8               (i_par_data[7] ),.OCE              (1'b1          ), // 1-bit input: Output data clock enable.RST              (i_rst         ), // 1-bit input: Reset// SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each).SHIFTIN1         (),.SHIFTIN2         (),// T1 - T4: 1-bit (each) input: Parallel 3-state inputs.T1               (1'b0          ),.T2               (1'b0          ),.T3               (1'b0          ),.T4               (1'b0          ),.TBYTEIN          (1'b0          ), // 1-bit input: Byte group tristate.TCE              (1'b0          )  // 1-bit input: 3-state clock enable);endmodule

2.2、testbench代码

修改位宽以及产生随机数的大小即可。

module serdes_sim();localparam P_CLK_PERIOD = 40;reg clk, div_clk , rst;
reg [7 :0] r_din;wire w_ser_dout;always begindiv_clk = 0;#(P_CLK_PERIOD); div_clk = 1;#(P_CLK_PERIOD); 
endalways beginclk = 1;#(P_CLK_PERIOD/4); clk = 0;#(P_CLK_PERIOD/4); 
endinitial beginrst = 1;#100;@(posedge clk);rst = 0;repeat(200) @(posedge clk);$stop;
endinitial beginr_din = 'd0;data_gen();
endserdes_top serdes_top_u0(.i_clk           (clk        ),.i_div_clk       (div_clk    ),.i_rst           (rst        ),.i_par_data      (r_din      ),.o_ser_data      (w_ser_dout ) 
);task data_gen();
beginr_din <= 'd0;wait(!rst);repeat(10) @(posedge div_clk);r_din <= ({$random} % 256);forever begin@(posedge div_clk);r_din <= ({$random} % 256);end
end
endtaskendmodule

2.3、仿真分析

在这里插入图片描述
蓝色刻度线处采样到并行输入数据,黄色刻度线开始输出,延时为4个CLK,与表中描述是一致的。

三、OSERDES2级联

当我们需要对10位或14位并行数据进行并串转换时,需要对OSERDSES2进行级联。本实验以10位输入数据并串转换为例进行说明。

3.1、设计代码

俩个OSERDESE2级联,修改位宽,添加从OSERDESE2,连接SHIFT引脚,修改位宽即可。

module serdes_top(input          i_clk       ,input          i_div_clk   ,input          i_rst       ,input  [9 :0]  i_par_data  ,output         o_ser_data  
);wire OFB          ;
wire w_shiftout1  ;
wire w_shiftout2  ;OSERDESE2 #(.DATA_RATE_OQ     ("DDR"         ), // DDR, SDR.DATA_RATE_TQ     ("DDR"         ), // DDR, BUF, SDR.DATA_WIDTH       (10            ), // Parallel data width (2-8,10,14).INIT_OQ          (1'b0          ), // Initial value of OQ output (1'b0,1'b1).INIT_TQ          (1'b0          ), // Initial value of TQ output (1'b0,1'b1).SERDES_MODE      ("MASTER"      ), // MASTER, SLAVE.SRVAL_OQ         (1'b0          ), // OQ output value when SR is used (1'b0,1'b1).SRVAL_TQ         (1'b0          ), // TQ output value when SR is used (1'b0,1'b1).TBYTE_CTL        ("FALSE"       ), // Enable tristate byte operation (FALSE, TRUE).TBYTE_SRC        ("FALSE"       ), // Tristate byte source (FALSE, TRUE).TRISTATE_WIDTH   (1             )  // 3-state converter width (1,4))OSERDESE2_inst (.OFB              (OFB           ), // 1-bit output: Feedback path for data.OQ               (o_ser_data    ), // 1-bit output: Data path output// SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each).SHIFTOUT1        (              ),.SHIFTOUT2        (              ),.TBYTEOUT         (              ), // 1-bit output: Byte group tristate.TFB              (              ), // 1-bit output: 3-state control.TQ               (              ), // 1-bit output: 3-state control.CLK              (i_clk         ), // 1-bit input: High speed clock.CLKDIV           (i_div_clk     ), // 1-bit input: Divided clock// D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each).D1               (i_par_data[0] ),.D2               (i_par_data[1] ),.D3               (i_par_data[2] ),.D4               (i_par_data[3] ),.D5               (i_par_data[4] ),.D6               (i_par_data[5] ),.D7               (i_par_data[6] ),.D8               (i_par_data[7] ),.OCE              (1'b1          ), // 1-bit input: Output data clock enable.RST              (i_rst         ), // 1-bit input: Reset// SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each).SHIFTIN1         (w_shiftout1   ),.SHIFTIN2         (w_shiftout2   ),// T1 - T4: 1-bit (each) input: Parallel 3-state inputs.T1               (1'b0          ),.T2               (1'b0          ),.T3               (1'b0          ),.T4               (1'b0          ),.TBYTEIN          (1'b0          ), // 1-bit input: Byte group tristate.TCE              (1'b0          )  // 1-bit input: 3-state clock enable);OSERDESE2 #(.DATA_RATE_OQ     ("DDR"         ), // DDR, SDR.DATA_RATE_TQ     ("DDR"         ), // DDR, BUF, SDR.DATA_WIDTH       (10            ), // Parallel data width (2-8,10,14).INIT_OQ          (1'b0          ), // Initial value of OQ output (1'b0,1'b1).INIT_TQ          (1'b0          ), // Initial value of TQ output (1'b0,1'b1).SERDES_MODE      ("SLAVE"      ), // MASTER, SLAVE.SRVAL_OQ         (1'b0          ), // OQ output value when SR is used (1'b0,1'b1).SRVAL_TQ         (1'b0          ), // TQ output value when SR is used (1'b0,1'b1).TBYTE_CTL        ("FALSE"       ), // Enable tristate byte operation (FALSE, TRUE).TBYTE_SRC        ("FALSE"       ), // Tristate byte source (FALSE, TRUE).TRISTATE_WIDTH   (1             )  // 3-state converter width (1,4))OSERDESE2_inst1 (.OFB              (           ), // 1-bit output: Feedback path for data.OQ               (    ), // 1-bit output: Data path output// SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each).SHIFTOUT1        (w_shiftout1   ),.SHIFTOUT2        (w_shiftout2   ),.TBYTEOUT         (              ), // 1-bit output: Byte group tristate.TFB              (              ), // 1-bit output: 3-state control.TQ               (              ), // 1-bit output: 3-state control.CLK              (i_clk         ), // 1-bit input: High speed clock.CLKDIV           (i_div_clk     ), // 1-bit input: Divided clock// D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each).D1               (),.D2               (),.D3               (i_par_data[8] ),.D4               (i_par_data[9] ),// .D5               (),// .D6               (),// .D7               (),// .D8               (),.D5               (),.D6               (),.D7               (),.D8               (),.OCE              (1'b1          ), // 1-bit input: Output data clock enable.RST              (i_rst         ), // 1-bit input: Reset// SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each).SHIFTIN1         (),.SHIFTIN2         (),// T1 - T4: 1-bit (each) input: Parallel 3-state inputs.T1               (1'b0          ),.T2               (1'b0          ),.T3               (1'b0          ),.T4               (1'b0          ),.TBYTEIN          (1'b0          ), // 1-bit input: Byte group tristate.TCE              (1'b0          )  // 1-bit input: 3-state clock enable);endmodule

3.2、testbench代码

首先需要修改时钟信号,因为输入输出位宽10:1,在DDR模式下,时钟比为5:1,其次修改位宽以及随机数产生即可。

3.3、代码分析

在这里插入图片描述
蓝色刻度线处采样到并行输入数据,黄色刻度线开始输出,延时为4个CLK,表中描述延时应当为5个CLK,但此处CLK和DIVCLK是对齐的,所有导致了一个CLK的变化。

相关文章:

SerDes介绍以及原语使用介绍(2)OSERDESE2原语仿真

文章目录 前言一、SDR模式1.1、设计代码1.2、testbench代码1.3、仿真分析 二、DDR模式下2.1、设计代码2.2、testbench代码2.3、仿真分析 三、OSERDES2级联3.1、设计代码3.2、testbench代码3.3、代码分析 前言 上文通过xilinx ug471手册对OSERDESE有了简单的了解&#xff0c;接…...

【稳定检索/投稿优惠】2024年教育、人文发展与艺术国际会议(EHDA 2024)

2024 International Conference on Education, Humanities Development and Arts 2024年教育、人文发展与艺术国际会议 【会议信息】 会议简称&#xff1a;EHDA 2024 大会时间&#xff1a;点击查看 截稿时间&#xff1a;点击查看 大会地点&#xff1a;中国北京 会议官网&#…...

Docker拉取失败,利用 Git将 Docker镜像重新打 Tag 推送到阿里云等其他公有云镜像仓库里

目录 一、开通阿里云容器镜像服务 二、Git配置 三、去DockerHub找镜像 四、编写images.txt文件 ​五、演示 六、其他注意事项 最近一段时间 Docker 镜像一直是 Pull 不下来的状态&#xff0c;想直连 DockerHub 是几乎不可能的。更糟糕的是&#xff0c;很多原本可靠的国内…...

【区分vue2和vue3下的element UI Breadcrumb 面包屑组件,分别详细介绍属性,事件,方法如何使用,并举例】

在 Vue 2 中&#xff0c;Element UI 提供了 el-breadcrumb 面包屑组件&#xff0c;而在 Vue 3 中&#xff0c;Element UI 的官方版本并没有直接更新以支持 Vue 3&#xff0c;但有一个类似的库叫做 Element Plus&#xff0c;它是为 Vue 3 设计的。 Vue 2 Element UI 在 Vue 2…...

gdb调试命令大全

基本命令 #gdb test test是要调试的程序&#xff0c;由gcc test.c -g -o test生成。进入后提示符变为(gdb) 。 start &#xff1a; 指令会执行程序至main() 主函数的起始位置&#xff0c;即在main() 函数的第一行语句处停止执行&#xff08;该行代码尚未执行&#xff09; cont…...

ESP32之arduino环境安装及点灯

目录 前言 前两天安装了VS&#xff43;&#xff4f;&#xff44;&#xff45;&#xff0c;奈何资源找的困难&#xff0c;于是咨询淘宝客服&#xff0c;他说&#xff41;&#xff52;&#xff44;&#xff55;&#xff49;&#xff4e;&#xff4f;用的多,资源多.然后就安装了a…...

查看VUE中安装包依赖的版本号

查看VUE中安装包依赖的版本号 全部依赖包版本查看某个依赖的例&#xff1a;查看stompjs 应用命令npm ls stompjs 全部依赖包版本 使用npm命令 使用 npm ls 命令可以列出项目中所有已安装的依赖包及其版本。 使用 npm list --depth1 命令可以列出项目中直接依赖的包及其版本&a…...

博途通讯笔记1:1200与1200之间S7通讯

目录 一、添加子网连接二、创建PUT GET三、各个参数的意义 一、添加子网连接 二、创建PUT GET 三、各个参数的意义...

Kafka搭建(集群版)

Kafka单机版 部署前提 VMware环境 : 两台centos系统 Jdk包:jdk-8u202-linux-x64.tar.gz Kafka包:kafka_2.12-3.5.0.tgz Zookeeper包:apache-zookeeper-3.7.2-bin.tar.gz 百度网盘自取: 链接: https://pan.baidu.com/s/11EWuhBoSmH3musd_3Rgodw?pwde32t 提取码: e32t Kafka搭建…...

【康复学习--LeetCode每日一题】3115. 质数的最大距离

题目&#xff1a; 给你一个整数数组 nums。 返回两个&#xff08;不一定不同的&#xff09;质数在 nums 中 下标 的 最大距离。 示例 1&#xff1a; 输入&#xff1a; nums [4,2,9,5,3] 输出&#xff1a; 3 解释&#xff1a; nums[1]、nums[3] 和 nums[4] 是质数。因此答案是…...

【yolov8系列】ubuntu上yolov8的开启训练的简单记录

前言 yolov8的广泛使用&#xff0c;拉取yolov8源码工程&#xff0c;然后配置环境后直接运行&#xff0c;初步验证自己数据的检测效果&#xff0c;在数据集准备OK的情况下 需要信手拈来&#xff0c;以保证开发过程的高效进行。 本篇博客更注意为了方便自己使用时参考。顺便也记录…...

Scala学习笔记15: 文件和正则表达式

目录 第十五章 文件和正则表达式1- 读取行2- 从URL或者其它源读取3- 写入文本文件4- 序列化5- 正则表达式6- 正则表达式验证输入数据格式end 第十五章 文件和正则表达式 1- 读取行 在Scala中读取文件中的行可以通过不同的方法实现 ; 一种常见的方法是使用 scala.io.Source 对…...

外卖员面试现状

说明&#xff1a; 以下身份角色用符号代替 # 面试官 $ 求职者 # 看了您的简历你有两年半的送外卖经验&#xff0c;可以简单说一下您平时是怎么送外卖的吗? $ 我首先在平台接单然后到店里取餐&#xff0c;取到餐后到顾客留下的地址&#xff0c;再通知顾客取餐 # 你们也用电动…...

异步加载与动态加载

异步加载和动态加载在概念上有相似之处&#xff0c;但并不完全等同。 异步加载&#xff08;Asynchronous Loading&#xff09;通常指的是不阻塞后续代码执行或页面渲染的数据或资源加载方式。在Web开发中&#xff0c;异步加载常用于从服务器获取数据&#xff0c;而不需要用户等…...

MUNIK解读ISO26262--什么是DFA

我们在学习功能安全过程中&#xff0c;经常会听到很多安全分析方法&#xff0c;有我们熟知的FMEA(Failure Modes Effects Analysis)和FTA(Fault Tree Analysis)还有功能安全产品设计中几乎绕不开的FMEDA(Failure Modes Effects and Diagnostic Analysis)&#xff0c;相比于它们…...

启动spring boot项目停止 提示80端口已经被占用

可能的情况: 检查并结束占用进程: 首先,你需要确定哪个进程正在使用80端口。在Windows上,可以通过命令行输入netstat -ano | findstr LISTENING | findstr :80来查看80端口的PID,然后在任务管理器中结束该进程。在...

SOLIDWORKS分期许可(订阅形式),降低前期的投入成本!

SOLIDWORKS 分期许可使您能够降低前期软件成本&#xff0c;同时提供对 SOLIDWORKS 新版本和升级程序的即时访问&#xff0c;以及在每个期限结束时调整产品的灵活性&#xff0c;帮助您跟上市场需求和竞争压力的步伐。 目 录&#xff1a; ★ 1 什么是SOLIDWORKS分期许可 ★ 2 …...

详细分析Spring Boot 数据源配置的基本知识(附配置)

目录 前言1. 基本知识2. 模版3. 实战经验前言 对于Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目】实战CRUD的功能整理(持续更新)1. 基本知识 包括数据源的概念、连接池的作用、多数据源的实现与管理、Druid 连接池…...

海思SD3403/SS928V100开发(15)9轴IMU ICM-20948模块SPI接口调试

1.前言 芯片平台: 海思SD3403/SS928V100 操作系统平台: Ubuntu20.04.05【自己移植】 9轴IMU模块:ICM-20948 通讯接口: SPI 模块datasheet手册: https://download.csdn.net/download/jzwjzw19900922/89517096 2. 调试记录 2.1 pinmux配置 #spi0 bspmm 0x0102F01D8 …...

大力出奇迹:大语言模型的崛起与挑战

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现与应用&#xff0c;彻底改变了我们与机器互动的方式。本文将探讨ChatGPT等大语言模型的定义、…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...