3、Vivado IP Catalog与收发器IP:如何打开IP Catalog,搜索并例化Transceiver IP核,IP核配置向导概览
好,咱们今天聊聊Vivado里怎么找到并配置收发器IP。说实话,很多新手第一次打开Vivado,面对满屏的菜单和选项,第一反应就是——我该点哪里?
别急,我带你走一遍。这个流程我走了不下上百次了,闭着眼睛都能找到。
3.1 打开IP Catalog的两种方式
IP Catalog,说白了就是Vivado的IP超市。所有官方IP核都摆在这里,任你挑选。
方式一:从Flow Navigator进入
打开Vivado工程后,左侧的Flow Navigator面板里,找到PROJECT MANAGER区域,点击IP Catalog。这是最直接的方式,我个人习惯用这个。
方式二:从菜单栏进入
点击顶部菜单栏的Tools → IP Catalog。效果一样,看个人喜好。
打开后,你会看到一个类似资源管理器的窗口。里面按功能分类,比如Communication & Networking、Digital Signal Processing等等。
3.2 搜索并找到收发器IP核
收发器IP核的名字,不同系列略有不同。我整理了一个表格,方便你对照:
| 器件系列 | IP核名称 | 搜索关键词 |
|---|---|---|
| 7系列(Artix-7, Kintex-7等) | 7 Series FPGAs Transceivers Wizard | transceiver wizard |
| UltraScale/UltraScale+ | UltraScale FPGAs Transceivers Wizard | ultrascale transceiver |
| Versal | Versal Transceivers Wizard | versal transceiver |
在搜索框里输入transceiver,结果列表里就会出现对应的IP核。双击它,就开始配置了。
3.3 IP核配置向导概览
双击IP核后,会弹出配置向导。这个向导通常有4-5个步骤,我带你快速过一遍。
3.3.1 第一页:基本配置
这里设置最核心的参数:
- Protocol Template:协议模板。如果你做的是PCIe、SATA、Ethernet等标准协议,可以直接选模板,省去手动配置的麻烦。
- Line Rate:线速率。单位是Gbps。比如10.3125 Gbps就是10G Ethernet常用的速率。
- Reference Clock:参考时钟频率。这个要和板上的晶振匹配。
- TX/RX通道数:你需要几对收发器。
嗯,这里要注意:线速率和参考时钟是联动的。你改了线速率,参考时钟的可选范围也会变。Vivado会自动计算PLL的分频比,你不用操心。
3.3.2 第二页:TX和RX设置
这一页主要配置发送和接收的物理层参数:
- TX Swing:发送摆幅。决定了信号幅度,影响功耗和信号质量。
- TX Pre-emphasis / Post-emphasis:预加重/去加重。用于补偿高频损耗。
- RX Equalization:接收均衡。包括CTLE和DFE,用于补偿信道损耗。
- RX Termination:接收端接电阻。通常选50欧姆。
这些参数,说白了就是调信号质量的。我在项目中遇到过,板子跑不起来,最后发现是预加重没开够。调大两档,眼图立马就睁开了。
3.3.3 第三页:时钟和复位
这里配置:
- CPLL/QPLL选择:CPLL用于单通道或低速率,QPLL用于多通道或高速率。
- 复位模式:建议选Shared Logic,这样多个通道共用复位逻辑,节省资源。
- 时钟源:可以选择内部PLL生成,也可以从外部输入。
3.3.4 第四页:高级选项
这一页通常不用动。除非你有特殊需求,比如:
- PRBS Generator/Checker:内置伪随机码生成和检测,调试时很有用。
- Loopback Mode:环回模式,用于自检。
- Polarity Inversion:极性反转。如果PCB上差分线接反了,不用改板,在这里勾一下就行。
3.3.5 第五页:总结
最后一页会列出你配置的所有参数。建议截图保存,或者点击Generate前,仔细核对一遍。
我曾经有一次,线速率配错了,10G配成了12.5G。板子跑起来后,误码率居高不下。查了两天才发现是这里的问题。所以,别嫌麻烦,多看一眼。
3.4 生成IP核并例化
配置完成后,点击OK,Vivado会生成IP核文件。你会看到:
- .xci文件:IP核的配置文件,记录了所有参数。
- .v/.vhd文件:IP核的HDL封装。
- example design:一个完整的测试工程,可以直接仿真或上板。
在顶层模块里例化IP核,就像例化一个普通模块一样。Vivado会自动帮你把端口列出来,你只需要连上时钟、复位和数据线即可。
// 例化示例
transceiver_wizard_0 u_transceiver (
.gtrefclk0_in (refclk_156m25), // 参考时钟
.txusrclk_out (txusrclk), // 用户时钟输出
.txusrclk2_out (txusrclk2), // 用户时钟2输出
.txdata_in (tx_data), // 发送数据
.txcharisk_in (tx_charisk), // 发送控制位
.rxdata_out (rx_data), // 接收数据
.rxcharisk_out (rx_charisk), // 接收控制位
.gt0_txdata_out (tx_p), // 差分正极
.gt0_txdata_n_out (tx_n), // 差分负极
.gt0_rxdata_in (rx_p), // 差分正极
.gt0_rxdata_n_in (rx_n), // 差分负极
.gt0_txresetdone_out(tx_resetdone), // 复位完成
.gt0_rxresetdone_out(rx_resetdone), // 复位完成
.userclk_tx_reset_in(tx_rst), // 复位输入
.userclk_rx_reset_in(rx_rst) // 复位输入
);
你看,端口名字虽然长,但命名很规范。gt开头的是高速串行信号,user开头的是用户逻辑接口。一一对应连上就行。
3.5 本章知识体系
为了让你更直观地理解整个流程,我画了一张图:
这张图把整个流程串起来了。从打开IP Catalog,到搜索IP,再到配置向导的五个步骤,最后生成IP核。你照着这个流程走,不会迷路。
- IP Catalog是入口,搜索关键词要准确。
- 配置向导分五步,核心是基本配置和TX/RX设置。
- 时钟和复位选Shared Logic,省心省力。
- 生成后,例化就像例化普通模块一样。
好了,这一章就到这里。下一章我们聊聊怎么用example design快速验证你的配置是否正确。到时候我会分享一个我踩过的坑,保证让你少走弯路。