2. Vivado工程创建与硬件设计

好,咱们正式开始动手了。这一章,我带你走一遍Vivado工程创建和Block Design的完整流程。说白了,就是给Zynq这个芯片搭一个“最小系统”——让它能跑起来,能跟DDR内存通信,时钟也安排妥当。

我记得刚接触Zynq那会儿,最头疼的就是Block Design里那一堆IP核。其实没那么复杂,你跟着我一步步来,很快就能上手。

2.1 创建Vivado工程

打开Vivado,第一步就是建工程。我个人习惯把工程名和路径都设成英文,省得后面出些莫名其妙的乱码问题。

  1. 点击 Create Project,Next
  2. 工程名:zynq_cam_display(你随意,但别用中文)
  3. 选择 RTL Project,勾上 Do not specify sources at this time
  4. 选择芯片:xc7z020clg400-1(这是Zynq-7020的型号,咱们课程用的就是这个)
  5. Finish
小提示:如果你用的是其他Zynq型号,比如7010或者7030,配置流程完全一样,只是引脚和资源略有差异。

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。咱们保持默认就行。
注意:我曾经在配置时钟时,不小心把DDR时钟改成了400MHz,结果板子死活起不来。后来查了半天才发现是时钟频率不匹配。所以,除非你很清楚自己在做什么,否则保持默认。

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文件。

核心要点:Block Design的本质是图形化配置,但最终生成的HDL代码才是真正烧录到FPGA里的东西。所以,每次修改Block Design后,都要重新Generate Output Products。

2.6 本章知识体系

为了让你更直观地理解整个流程,我画了一张流程图:

Vivado工程创建与硬件设计流程 创建Vivado工程 选择芯片型号 创建Block Design IP Integrator 添加Zynq PS IP Processing System 配置DDR与时钟 关键参数设置 自动连接与验证 Run Automation 生成HDL Wrapper 顶层文件 综合与实现 Synthesis & Implementation 生成比特流 Generate Bitstream 导出到SDK Export Hardware 本章重点:步骤1-6,后续章节会继续深入

2.7 避坑指南

最后,分享几个我踩过的坑:

  • DDR配置错误:我曾经选错了DDR型号,结果板子一直报错。后来发现是时序参数不匹配。所以,一定要核对板子的原理图。
  • 时钟频率过高:PL时钟默认是100MHz,但如果你要跑高速接口,比如HDMI,可能需要调整。但别超过200MHz,否则时序容易出问题。
  • 忘记Generate Output Products:修改Block Design后,一定要重新生成。不然Vivado用的还是旧版本,你改的东西根本没生效。

嗯,这一章的内容就到这儿。你跟着操作一遍,应该就能把Vivado工程和Block Design跑通了。下一章咱们会深入AXI总线的配置,到时候见。

可可精品资料库