前 言
本文主要介绍基于Vivado的FPGA案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4。其中案例包括led_flash案例、key_test案例、ibert_eyescan案例、udp_10g_echo案例、fmc_ad9706_ad9613案例、bram_srio_target案例。
本次测试板卡为TMS320C6678+Kintex-7 的FPGA高端异核开发板,它采用TI KeyStone架构C6000系列TMS320C6678八核C66x定点/浮点DSP以及Xilinx Kintex-7 FPGA处理器设计。
核心板内部DSP与FPGA通过SRIO、EMIF16、I2C通信总线连接,并通过工业级高速B2B连接器引出千兆网口、PCIe、HyperLink、EMIF16、GTX等高速通信接口。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
FPGA案例位于产品资料“4-软件资料DemoFPGA_Demo”的FPGA-HDL-demos和FPGA-BlockDesign-demos目录中。案例包含project和bin两个目录,其中project目录下包含案例工程文件,bin目录下含有案例.bit和.bin格式可执行文件。.bit格式文件用于在线加载,.bin格式文件用于固化至SPI FLASH。
表 1
FPGA-HDL-demos目录下的案例使用Verilog语言进行开发,FPGA-BlockDesign-demos目录下的案例使用Block Design Verilog语言方式进行开发。FPGA-HDL-demos目录下的i2c_slave、bram_emifa案例,以及FPGA-BlockDesign-demos目录下的fmc_ad9613_srio、fmc_cameralink_mono_srio案例,请查看DSP FPGA通信案例开发手册。
可在Vivado界面点击"IP INTEGRATOR -> Open Block Design"打开BLOCK DESIGN开发界面。
图 1
在进行本文如下操作前,请先按照开发环境搭建文档安装Xilinx Vivado开发工具包。本文默认使用创龙科技的TL-DLC10下载器进行操作演示。
将BOOTSET拨码开关拨至XXXX0(1~5),ON为1,相反为0,X代表任意值,此档位为FPGA的SPI FLASH启动模式(此模式可进行程序在线加载、固化并离线启动),并将评估板通过下载器正确连接至PC机。
图 1
led_flash案例
案例功能
案例功能:控制评估底板LED3、LED4每隔0.5s将状态翻转一次。
图 2
操作说明
请运行程序,此时可看到评估底板的LED3、LED4进行闪烁。
关键代码
顶层文件为"projectled_flash.srcssources_1importshdlled_flash.v",关键代码说明如下。
- 使用STARTUPE2原语提供的CFGMCLK(65MHz)作为LED的参考时钟。
- 使用CFGMCLK进行计数,使LED以0.5s的周期进行状态转换。
图 3
RTL原理图如下所示:
图 4
key_test案例
案例功能
案例功能:通过按键SW3(FPGA USER1)控制评估底板的LED5状态。
图 5
图 6
操作说明
请运行程序,此时每按下SW3一次,LED5状态改变一次。
关键代码
顶层文件为"projectkey_test.srcssources_1importshdlkey_test.v",关键代码说明如下。
- 使用STARTUPE2原语提供的CFGMCLK(65MHz)作为系统时钟。
- 对按键进行消抖处理。
- 通过按下按键产生对应标志,对LED状态进行控制。
图 7
图 8
RTL原理图如下所示:
图 9
ibert_eyescan案例
案例功能
案例功能:基于SFP 光口测试高速串行总线GTX的通信速率与误码率,并通过眼图查看信号传输质量。
操作说明
将两个SFP 多模双纤光模块分别接入SFP1、SFP2光口,使用光纤线缆将两个光模块各自的RX与TX相连接,形成外部回环。
图 10
SFP1光口使用GTX Quad 116的MGTXRX_0、MGTXTX_0引脚,SFP2光口使用GTX Quad 116的MGTXRX_1、MGTXTX_1引脚。
核心板板载时钟芯片输出的100MHz时钟被用作GTX参考时钟,与GTX Quad 116的MGTX_REFCLK1引脚相连接。
图 11
图 12 GTX参考时钟
请运行程序,此时将会在Vivado的Hardware界面扫描到GTX设备。其中MGT_X0Y4、MGT_X0Y5为SFP 光口,速率均为10Gbps,请点击"Auto-detect links"。
图 13
可在Serial I/O Links窗口查看GTX通信速率与误码率。由下图可见在10Gbps速率下,SFP 光口的误码率为0。
图 14
图 15
点击Serial I/O Scans窗口,并点击"Create scan"创建眼图扫描。
图 16
在弹出的界面中设置眼图扫描参数。点击Link选择待扫描的GTX,分别设置Horizontal increment(水平增量)和Vertical increment(垂直增量),数值越小则眼图越精细,但扫描时间也越长,参数详细说明请查看下表。
图 17
将Horizontal increment和Vertical increment均设置为8时,测得MGT_X0Y4眼图如下图所示。眼图的两个关键指标为Open area(眼图张开区域点数)和Open UI %(眼图张开百分比),此两个数值越大,表示信号传输质量越好。
图 18
图 19
将Horizontal increment和Vertical increment均设置为2时,测得MGT_X0Y4眼图如下图所示。
图 20
图 21
关键代码
顶层文件为"projectibert_eyescan.srcssources_1importshdlibert_eyescan.v",关键代码说明如下。
定义GTX Quad 116端口。
图 22
例化2个GTX专用差分时钟Buffer,用于将差分时钟转换为单端时钟。
图 23
使能SFP 接口。
图 24
调用IBERT IP核。
图 25
RTL原理图如下所示:
图 26
IP核配置
本案例使用IBERT IP核测试GTX信号传输质量。
IBERT IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg132-ibert-7series-gtx.pdf》和《ug908-vivado-programming-debugging.pdf》,具体配置说明如下。
设置协议数量为1,设置通信速率为10Gbps,选择参考时钟为100MHz(需与实际参考时钟一致)。
图 27
使用QUAD_116的GTX,参考时钟设置为MGTREFCLK1 116。
图 28
系统时钟设置为QUAD116 1,即MGTREFCLK1 116。
图 29
udp_10g_echo案例
案例功能
案例功能:评估板通过SFP 光口接收上位机数据后,将数据重新发送至上位机(PC),以验证基于SFP 光口的10G UDP网络通信功能。评估板作为UDP Server,上位机作为UDP Client。
图 30 程序功能框图
操作说明
请将ZBNET的万兆网卡MCX311插入PC机的PCIe插槽中,并将一个SFP 多模双纤光模块接入万兆网卡,将另一个SFP 多模双纤光模块接入评估板SFP1光口。使用两根光纤线缆分别将SFP1的RX与万兆网卡的TX相连接,SFP1的TX与万兆网卡的RX相连接。SFP1光口使用GTX Quad 116的MGTXRX_0、MGTXTX_0引脚。
图 31
图 32
评估板IP地址已通过udp_ip_10g模块配置为192.168.0.25。请设置PC机IP地址与评估板IP地址处于同一网段。此处将PC机IP地址设置为192.168.0.88,子网掩码设为255.255.254.0。
图 33
请运行程序,此时PC机将会识别网络连接状态为10Gbps。
图 34
由于udp_ip_10g模块不支持ARP(Address Resolution Protocol)地址解析协议,因此需通过添加评估板IP地址和MAC地址的静态映射关系。请以管理员身份打开Windows PowerShell,并执行如下命令。
Windows# arp -s 192.168.0.25 00-23-20-21-22-23 //添加评估板IP地址和MAC地址的静态映射关系
Windows# arp -a //查看添加状态
图 35
双击打开产品资料“4-软件资料ToolsWindows”目录下的网络调试工具SocketTool_NoAD.exe,在弹出的界面中点击“UDP Client -> 创建”,在“对方IP”中输入评估板IP地址,再点击确定。
图 36
在“数据发送窗口”中输入需发送至评估板的数据,再点击“发送数据”。“数据接收及提示窗口”中将打印由PC机发送至评估板,以及由评估板发送至PC机的数据。
图 37
模块/IP核配置
cdcm61002_cfg模块
本案例使用cdcm61002_cfg模块配置CDCM61002输出156.25MHz时钟,作为GTX Quad 116的参考时钟。
时钟芯片具体配置方式请查阅“6-开发参考资料数据手册核心板元器件CLOCK”目录下的《cdcm61002.pdf》。cdcm61002_cfg模块源码为"projectudp_10g_echo.srcssources_1importshdlcdcm61002_cfg.v",具体配置说明如下。
配置cdcm61002_cfg模块的OD为"011",PR为"10",即配置GTX参考时钟为156.25MHz。
图 38
图 39
图 40
图 41
10G Ethernet PCS/PMA IP核
本案例使用10G Ethernet PCS/PMA IP核实现物理层(PCS与PMA)功能。
10G Ethernet PCS/PMA IP核开发文档为产品资料“6-开发参考资料Xilinx官方参考文档”目录下的《pg068-ten-gig-eth-pcs-pma.pdf》,具体配置说明如下。
勾选Shared Logic的"Include Shared Logic in core",配置10G Ethernet PCS/PMA IP核包含共享逻辑。
图 42
udp_ip_10g模块
本案例使用udp_ip_10g模块实现10G UDP协议栈与MAC层。
udp_ip_10g模块开发文档为产品资料“6-开发参考资料其他参考文档”目录下的《udp_ip_10g.pdf》。udp_ip_10g模块源码为"projectudp_10g_echo.srcssources_1importsudp_ip_10g_stack"。
图 43 udp_ip_10g模块主要特性
图 44 udp_ip_10g模块逻辑框架
udp_ip_10g模块具体配置说明如下。
图 45
设置链路速率为10Gbps。
图 46
图 47
设置评估板MAC地址为00-23-20-21-22-23,IP地址为192.168.0.25,子网掩码为255.255.254.0。
图 48
图 49
图 50
由于篇幅问题,文章分为上下两篇,感兴趣的可以查阅观看,本文为上。