2. Vivado工程创建与硬件设计
好,咱们正式开始动手了。这一章,我带你走一遍Vivado工程创建和Block Design的完整流程。说白了,就是给Zynq这个芯片搭一个“最小系统”——让它能跑起来,能跟DDR内存通信,时钟也安排妥当。
我记得刚接触Zynq那会儿,最头疼的就是Block Design里那一堆IP核。其实没那么复杂,你跟着我一步步来,很快就能上手。
2.1 创建Vivado工程
打开Vivado,第一步就是建工程。我个人习惯把工程名和路径都设成英文,省得后面出些莫名其妙的乱码问题。
- 点击 Create Project,Next
- 工程名:
zynq_cam_display(你随意,但别用中文) - 选择 RTL Project,勾上 Do not specify sources at this time
- 选择芯片:
xc7z020clg400-1(这是Zynq-7020的型号,咱们课程用的就是这个) - Finish
2.2 Block Design设计流程
工程建好后,咱们进入核心环节——Block Design。这是Vivado里最强大的功能之一,说白了就是图形化搭硬件。
点击左侧 IP Integrator → Create Block Design,名字就叫 system 吧。
你会看到一个空白的画布。嗯,这就是咱们的“战场”。
2.3 添加Zynq Processing System IP
在画布上右键,选择 Add IP,搜索 Zynq,双击 Zynq7 Processing System。
这时候你会看到一个灰色的方块出现在画布上,上面标着 processing_system7_0。别急着连线,先双击它,进入配置界面。
配置界面里选项很多,但咱们只需要关注几个关键点:
- PS-PL Configuration:这里可以开启或关闭Zynq的PL(可编程逻辑)接口。咱们后面要用到AXI总线,所以把 AXI HP0 和 AXI HP1 勾上。
- Peripheral I/O Pins:选择 UART1(串口调试用),USB(如果板子上有USB转串口),ENET0(以太网,可选)。
- Clock Configuration:这里设置时钟。默认的CPU主频是666.667MHz,DDR时钟是533.333MHz。咱们保持默认就行。
2.4 配置DDR与时钟
DDR配置是Zynq硬件设计里最关键的一步。配置错了,系统根本跑不起来。
在 DDR Configuration 选项卡里,选择你板子上的DDR型号。咱们用的是 MT41K256M16 RE-125(DDR3,256MB,16位宽)。
如果你用的是其他型号,比如镁光或者三星的,记得选对应的。我建议你直接查板子的原理图,上面会标清楚DDR的型号和配置。
时钟方面,咱们需要关注几个关键频率:
| 时钟名称 | 默认频率 | 说明 |
|---|---|---|
| CPU时钟 | 666.667 MHz | Zynq PS内核主频 |
| DDR时钟 | 533.333 MHz | DDR内存控制器时钟 |
| PL时钟 | 100 MHz | 可编程逻辑时钟(可自定义) |
配置完成后,点击 OK。你会看到画布上的Zynq IP自动生成了很多端口和连线。这就是Vivado的自动化布线功能,省了不少事。
2.5 自动连接与验证
在画布上方的工具栏里,有一个 Run Block Automation 按钮。点击它,Vivado会自动帮你完成一些基础连接,比如DDR引脚、时钟、复位等。
然后点击 Run Connection Automation,它会自动把AXI总线连好。你想想看,要是手动连这些线,得花多少时间?
最后,在 Sources 面板里,右键点击 system.bd,选择 Generate Output Products。等它跑完,再选择 Create HDL Wrapper,让Vivado自动生成顶层Verilog文件。
2.6 本章知识体系
为了让你更直观地理解整个流程,我画了一张流程图:
2.7 避坑指南
最后,分享几个我踩过的坑:
- DDR配置错误:我曾经选错了DDR型号,结果板子一直报错。后来发现是时序参数不匹配。所以,一定要核对板子的原理图。
- 时钟频率过高:PL时钟默认是100MHz,但如果你要跑高速接口,比如HDMI,可能需要调整。但别超过200MHz,否则时序容易出问题。
- 忘记Generate Output Products:修改Block Design后,一定要重新生成。不然Vivado用的还是旧版本,你改的东西根本没生效。
嗯,这一章的内容就到这儿。你跟着操作一遍,应该就能把Vivado工程和Block Design跑通了。下一章咱们会深入AXI总线的配置,到时候见。