4. 开发环境搭建:Vivado/Quartus安装配置、IP核授权管理、仿真工具设置、版本控制最佳实践
说实话,做SDI接口开发,环境搭建这一步看着简单,但坑是真不少。我见过太多人卡在工具链上,一卡就是好几天。今天咱们就把这事彻底捋清楚。
4.1 Vivado与Quartus的安装配置
先说说选型。我个人习惯是:Xilinx的片子用Vivado,Intel的用Quartus。别混着用,容易出幺蛾子。
Vivado安装要点
- 版本选择:SDI接口开发,我建议用2020.1以上版本。为什么?因为低版本对GTY收发器的支持不够完善。我曾经在2018.3上折腾了三天,最后发现是工具链的bug。
- 安装组件:记得勾选"Vivado HL System Edition",里面包含了SDI IP核需要的所有库。别图省空间只装最小化,后面你会后悔的。
- License配置:如果你用的是Node-Locked License,记得绑定网卡MAC地址。我遇到过有人换了网卡,结果License失效,排查了半天。
重要提醒:Vivado安装路径不要有中文,不要有空格。这是老生常谈,但每次培训都有人踩坑。
Quartus安装注意事项
- Quartus Prime Pro Edition对SDI支持更好,但需要单独安装SDI IP包
- 安装时记得勾选"Arria 10"和"Stratix 10"器件支持,这是SDI常用的平台
- ModelSim Starter版本够用,但如果你要做眼图分析,建议装Pro版
4.2 IP核授权管理
IP核授权这块,说白了就是花钱买省心。但怎么花得值,有讲究。
| IP核类型 | 授权方式 | 我的建议 |
|---|---|---|
| SDI RX/TX | 付费License | 买永久授权,别租用 |
| 视频处理 | 部分免费 | 先用免费版验证 |
| 时钟管理 | 免费 | 直接使用 |
我的经验:Xilinx的SDI IP核有评估模式,可以跑30分钟。我一般先用评估模式做功能验证,确认没问题了再买License。别一上来就买,万一不兼容呢?
授权管理还有个坑——IP核版本要和工具链匹配。我曾经在Vivado 2020.2上用了2021.1的SDI IP核,结果编译报错,查了半天才发现是版本不匹配。嗯,这事说起来都丢人。
4.3 仿真工具设置
仿真工具的选择,其实看团队。我个人偏爱ModelSim,但VCS也有它的优势。
ModelSim配置
- 设置好库路径:
vlib work和vmap work work - 编译SDI IP核的仿真库:
vlog -sv xilinx_sdi_v3_0.v - 别忘了加
-L unisims_ver和-L xpm,不然会报一堆未定义
# 我的常用仿真脚本
vlib work
vlog -sv *.sv
vlog -sv xilinx_sdi_v3_0.v
vsim -L unisims_ver -L xpm work.tb_sdi_top
run -all
避坑指南:我曾经在仿真SDI的时钟恢复模块时,发现波形一直不对。折腾了两天,最后发现是仿真时间步长设得太大了。SDI的时钟频率是148.5MHz,步长至少要到1ps级别。
VCS设置要点
- 用
vcs -sverilog -full64启动 - 加
-debug_access+all方便调试 - SDI IP核的仿真模型需要单独编译:
vlogan -sverilog xilinx_sdi_v3_0.v
4.4 版本控制最佳实践
Git这东西,用好了是神器,用不好是灾难。我见过有人把整个Vivado工程都提交上去,结果每次pull都要等半小时。
我的.gitignore配置
# Vivado生成文件
*.jou
*.log
*.str
*.xpr.bak
*.rpt
*.dcp
*.bit
*.mcs
# 仿真文件
*.vcd
*.vpd
*.wlf
*.vstf
# 临时文件
*.swp
*.swo
*~
分支管理策略
- master:只放经过验证的代码,别直接在上面开发
- develop:日常开发分支,所有feature都往这合
- feature/sdi_rx:每个功能模块一个分支,比如SDI接收、发送、时钟恢复
- release/v1.0:发布分支,打tag用
我的习惯:每次提交前,先跑一遍仿真。如果仿真没过,坚决不提交。这习惯救了我好几次,有一次差点把有bug的代码合到master上。
还有个细节——IP核的License文件要不要提交?我个人建议不要。每个开发者的License都不一样,提交了反而容易冲突。在README里写清楚怎么获取License就行。
好了,环境搭建这块就这些。你想想看,把这些都配好了,后面开发SDI接口就顺畅多了。下一章咱们开始讲SDI协议的基础知识,到时候见。