难点:
多时钟的切换
相位偏移的数据同步
原语的使用


RTL结构视图与时钟网络

工程文件的路径:

其中RGMII_tx_ctrl模块为FPGA测试发送数据模块,依赖于仿真
RGMII_tx_ctrl的原语调用:

module RGMII_tx_ctrl(input wire sclk,//125Minput wire rst_n,//input wire [7:0] tx_d,//仿真提供的数据输入data_ininput wire tx_en,//使能信号input wire tx_c,//相移时钟//output [3:0]tx_data,output tx_dv,//enoutput tx_clk//PHY采集数据时钟);//tx_clkODDR2 #(.DDR_ALIGNMENT("C0"), // Sets output alignment to "NONE", "C0" or "C1".INIT(1'b0), // Sets initial state of the Q output to 1’b0 or 1’b1.SRTYPE("ASYNC") // Specifies "SYNC" or "ASYNC" set/reset) ODDR2_TXC(.Q(tx_clk), // 1-bit DDR output data.C0(tx_c), // 1-bit clock input.C1(~tx_c), // 1-bit clock input.CE(1'b1), // 1-bit clock enable input.D0(1'b1), // 1-bit data input (associated with C0).D1(1'b0), // 1-bit data input (associated with C1).R(1'b0), // 1-bit reset input.S(~rst_n) // 1-bit set input);  //tx_datagenvar i;generatefor(i=0;i<4;i=i+1)beginODDR2 #(.DDR_ALIGNMENT("C0"), // Sets output alignment to "NONE", "C0" or "C1".INIT(1'b0), // Sets initial state of the Q output to 1’b0 or 1’b1.SRTYPE("ASYNC") // Specifies "SYNC" or "ASYNC" set/reset) ODDR2_TDATA(//tx_data是和sclk同步的.Q(tx_data[i]), // 1-bit DDR output data.C0(sclk), // 1-bit clock input.C1(~sclk), // 1-bit clock input//.CE(1'b1), // 1-bit clock enable input.D0(tx_d[i]), // 1-bit data input (associated with C0).D1(tx_d[i+4]), // 1-bit data input (associated with C1).R(1'b0), // 1-bit reset input.S(~rst_n) // 1-bit set input);endendgenerate//tx_dvODDR2 #(.DDR_ALIGNMENT("C0"), // Sets output alignment to "NONE", "C0" or "C1".INIT(1'b0), // Sets initial state of the Q output to 1’b0 or 1’b1.SRTYPE("ASYNC") // Specifies "SYNC" or "ASYNC" set/reset) ODDR2_TXEN(.Q(tx_dv), // 1-bit DDR output data.C0(sclk), // 1-bit clock input.C1(~sclk), // 1-bit clock input.CE(1'b1), // 1-bit clock enable input.D0(tx_en), // 1-bit data input (associated with C0).D1(tx_en), // 1-bit data input (associated with C1).R(1'b0), // 1-bit reset input.S(~rst_n) // 1-bit set input);endmodule
module top_RGMII(input wire sclk,input wire rst_n,//input wire rx_clk,input wire rx_dv,input wire [3:0]rx_data,output wire phy_rst_n//output wire tout);reg [21:0]rst_cnt;wire [7:0]o_data,rd_data;wire rx_en;wire clk_50M,clk_125M,clk_125M_90;wire rd_flag_r;//assign tout = rx_en|(&o_data);//for test//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAGgen_clk gen_clk_inst(// Clock in ports.clkin(sclk),      // IN// Clock out ports.clk_125M(clk_125M),     // OUT.clk_125M_90(clk_125M_90),     // OUT.clk_50M(clk_50M));    // OUT// INST_TAG_END ------ End INSTANTIATION Template ---------always @(posedge clk_125M)//clk_50Mif(!rst_n)rst_cnt <= 'd0;else if(rst_cnt[21]== 'd0)//rst_cnt <= rst_cnt + 'd1;assign phy_rst_n = rst_cnt[21];//上电复位延时大于4msRGMII_rx_ctrl RGMII_rx_ctrl_inst(//from phy.rx_clk(rx_clk),   //125M .rst_n(rst_n),.rx_dv(rx_dv),//千兆网同步有效信号,双沿采样  上升沿=dv 下降沿=deer.rx_data(rx_data),.rx_en(rx_en),.o_data(o_data)//单沿采样数据);SYNC_ctrl SYNC_ctrl_inst(.rx_clk(rx_clk),.ddr_clk(clk_125M),.rst_n(rst_n),//.rx_en(rx_en),.data_in(o_data),//o_d=ata//.rd_data(rd_data),.rd_flag_r(rd_flag_r));endmodule

测试模块

module tb_RGMII();reg     sclk,rst_n;wire        rx_clk;wire        rx_dv;wire    [3:0]   rx_data;wire        phy_rst_n;reg     clk;reg     tx_c;reg [7:0]   tx_d;reg     tx_en;wire [3:0]tx_data;initial beginsclk =0;rst_n =0;#1000 rst_n=1;endalways #10 sclk = ~sclk;initial beginforce clk = top_RGMII_inst.clk_125M;force tx_c = top_RGMII_inst.clk_125M_90;endinitial begintx_d=0;tx_en =0;gen_frame();endRGMII_tx_ctrl RGMII_tx_ctrl_inst(.sclk(clk),.rst_n(rst_n),.tx_d(tx_d),//仿真提供的数据输入data_in.tx_en(tx_en),//使能信号.tx_c(tx_c),//相移时钟.tx_data(tx_data),.tx_dv(tx_dv),//en.tx_clk(tx_clk)//PHY采集数据时钟);top_RGMII top_RGMII_inst(.sclk(sclk),.rst_n(rst_n),.rx_clk(tx_clk),.rx_dv(tx_dv),.rx_data(tx_data),.phy_rst_n(phy_rst_n),.tout(tout));task gen_frame();integer i;begin@(posedge phy_rst_n);for(i =0 ; i<128 ;i=i+1)begin@(posedge clk);tx_en <= 1'b1;if(i<7)tx_d <= 8'h55;else if(i==7)tx_d <= 8'hd5;else tx_d <= i-8;end@(posedge clk)tx_en <= 1'b0;tx_d <= 'd0; endendtaskendmodule

千兆网(2):数据的发送与接收测试相关推荐

  1. Verilog 实现千兆网UDP协议 基于88E1111--数据接收

    注:此版本没有添加ARP PING 等,未完待续. 注:项目采用Verilog开发,基于Vivado编译器. 注:本版本没有计算校验 与上一篇相同开发环境,采用三段式状态机. 同样,接收后将数据写入F ...

  2. 一个udp用户数据报的数据字段为8192_基于FPGA的千兆网UDP通信分析

    千兆网UDP通信 以太网帧格式 图8‑12 以太网帧格式 表8‑5 以太网帧格式说明 UDP协议分析 为什么UDP协议在FPGA实现时很受欢迎,最主要一个原因就是简单,简答到什么地步呢?UDP协议只是 ...

  3. Verilog 实现千兆网UDP协议 基于88E1111--数据发送

    Verilog 实现千兆网UDP协议 基于88E1111–数据发送 注:此版本没有添加ARP PING 等,未完待续. 注:项目采用Verilog开发,基于Vivado编译器. UDP(User Da ...

  4. linux libpcap 效率,Linux ubuntu PF_RING+libpcap 极速捕获千兆网数据包,不丢包

    本文转自:http://blog.chinaunix.net/uid-23225855-id-3228867.html 上一篇文章讲到了,尤其在千兆网的条件下,大量的丢包,网上搜索好久,大概都是PF_ ...

  5. 飞凌嵌入式丨千兆网之RGMII SGMII解析

    一般来说,底板的千兆网大多选用RGMII和SGMII两种接口,也有可以拓展出更多网口的QSGMII接口. 这篇文章主要是对前两种常用的千兆网接口的介绍,以直观的方式对比这两种接口在引脚方面的不同,比较 ...

  6. ZYNQ 图像处理之千兆网传(一)【寄存器级操作】

    最近在做图像处理和加速,芯片是xilinx 的 zynq xc7z020.需要用到千兆网,由于网上很多都是直接移植lwip,但是个人感觉用着不爽(个人感觉),不能实现随心所欲的控制,代码量又多,所以自 ...

  7. 基于zynq的千兆网udp项目_基于FPGA的千兆网UDP通信分析

    千兆网UDP通信 以太网帧格式 图8‑12 以太网帧格式 表8‑5 以太网帧格式说明 UDP协议分析 为什么UDP协议在FPGA实现时很受欢迎,最主要一个原因就是简单,简答到什么地步呢?UDP协议只是 ...

  8. 百兆网和千兆网怎么接线

    一.认识网线 网线:橙色和白橙交织在一起,绿色和白绿交织在一起,棕色和白棕交织在一起,蓝色和白蓝交织在一起.在传输电信号时,相互之间辐射出的电磁波会相互抵消,可以消除相互之间的干扰,所以网线也叫双绞线 ...

  9. 分享丨千兆网之RGMII SGMII解析

    一般来说,底板的千兆网大多选用RGMII和SGMII两种接口,也有可以拓展出更多网口的QSGMII接口. 本篇文章主要是对前两种常用的千兆网接口的介绍,以直观的方式对比这两种接口在引脚方面的不同,比较 ...

最新文章

  1. ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
  2. 塔式、机架式、刀片式服务器的区别和特点
  3. XP下如何引导Vista
  4. 【OSS 最佳实践】JS SDK使用STS方式实现断点续传
  5. linux shell 中的idd,shell脚本入门教程.pdf
  6. NEW:5.9.4/Foxit PDF SDKfor ActiveX
  7. Qt Designer位置
  8. jmeter性能测试2-模拟多用户登录
  9. 国产麒麟操作系统kylin V10 sp2操作系统安装openldap和kerberos
  10. 怎么设置计算机 图标显示桌面快捷方式,如何设置显示桌面快捷键 设置显示桌面快捷键方法【图文】...
  11. 愿守内心宁静,砥砺此生修行
  12. wireshark提示未启动npf服务The NPF driver isn’t running You may have trouble capturing or listing interfaces
  13. Jetpack 架构组件:LiveData
  14. MAC系统连接Windows共享文件的方法
  15. HTML5+CSS大作业——汽车自驾游(10页) 自驾游主题HTM5网页设计作业成品
  16. matlab中光敏电阻,51单片机光敏电阻寻光程序
  17. Linux 如何在 vi 里搜索关键字
  18. 渠道SDK接入的各种坑
  19. 告别福禄克DTX系列,欢迎dsx2-5000网线测试
  20. Unity 材质球贴图寻找

热门文章

  1. AD9680之JESD204B接口2路、4路、8路的14bit 500MSPS/1GSPS/1.25GSPS采样率子卡的中文版本设计及调试经验资料分享
  2. 【LLYD】The surprising connection between single women and gentrification
  3. POJ_1200 Crazy Search ( Hash映射 )
  4. [转]国内计算机牛校评点
  5. 零基础编程——块语言编程游戏攻略之迷宫篇
  6. 如何用R语言进行云计算
  7. vue前端接收后端传过来的带list集合的数据
  8. macOS查看文件路径
  9. 获取微信数据,从此轻松可得!
  10. atomikos实现分布式事务