1、课程导学与环境搭建:收发器与卷积加速概述、Vivado与Vitis开发环境安装、开发板准备与上电测试
1.1 这门课到底要干什么?
说实话,每次开新课前,我都会问自己一个问题:学员学完能做什么?
这门课的目标很明确——让你亲手把卷积神经网络的加速器,跑在真实的FPGA开发板上,并且通过高速收发器把数据传进去、把结果拿出来。
不是仿真,不是跑波形,是实实在在的上板联调。
我当年第一次做收发器项目时,被眼图、误码率、参考时钟这些概念搞得晕头转向。后来发现,其实只要把几个关键点搞明白,收发器就是个高速串行管道。卷积加速呢?说白了就是乘加运算的流水线。两者一结合,就是一套完整的数据采集→处理→输出系统。
嗯,这里要注意:收发器不是万能的。它擅长的是点对点高速传输,不是片内互联。我们用它来模拟真实场景下的数据搬运,这才是工程实战的意义。
课程核心逻辑:
- 收发器负责高速数据搬运(Gbps级别)
- 卷积加速器负责计算密集型任务(乘加运算)
- 两者通过AXI-Stream接口无缝衔接
下面这张图,是我自己画的课程知识体系。你看一眼,心里就有数了。
1.2 收发器到底是什么?
收发器,英文叫Transceiver,是FPGA里专门处理高速串行信号的硬核模块。
你想想看,传统的并行总线(比如GPIO)跑个几百兆就信号变形了。收发器不一样,它内部有PLL、串化器/解串器、时钟恢复电路,能轻松跑到10Gbps以上。
我习惯把收发器比作FPGA的“高速公路收费站”:
- 发送端:把并行数据打包成串行比特流,加上时钟信息,发出去
- 接收端:从串行信号里恢复时钟,解出并行数据
- 中间:靠差分信号(P/N对)传输,抗干扰能力强
个人经验:我第一次调收发器时,发现眼图总是不开。折腾了两天,最后发现是参考时钟的抖动太大。换了个低抖动的晶振,眼图立马就漂亮了。所以,时钟是收发器的命根子,千万别省这个钱。
1.3 卷积加速器在FPGA上怎么玩?
卷积运算,说白了就是滑动窗口乘加。一个3×3的卷积核,在特征图上滑一遍,每个位置做9次乘法和8次加法。
FPGA做这个事有天然优势:
- 并行性:DSP48可以同时做多个乘加
- 流水线:数据可以像工厂流水线一样流过去
- 低延迟:没有CPU的取指、译码开销
但要注意,FPGA不是GPU。它不适合超大矩阵运算,而是擅长小批量、低延迟、定制化的场景。比如工业检测、边缘计算、实时视频处理。
课程中我们会实现的卷积加速器规格:
| 参数 | 数值 | 说明 |
|---|---|---|
| 输入通道 | 3(RGB) | 彩色图像输入 |
| 输出通道 | 16 | 特征图数量 |
| 卷积核大小 | 3×3 | 标准卷积 |
| 数据位宽 | 8-bit | 量化后定点数 |
| 加速比 | ~10x | 相比ARM Cortex-A9 |
1.4 开发环境安装——别踩我踩过的坑
环境安装是很多人放弃的第一步。其实没那么可怕,就是版本要选对。
Vivado和Vitis的关系:
- Vivado:负责硬件设计(RTL综合、布局布线、生成比特流)
- Vitis:负责软件开发(驱动编写、应用层代码、调试)
从2020.1版本开始,Vitis已经集成到Vivado安装包中了。你装一个Vivado,就同时有了Vitis。
避坑指南:我曾经装过2019.2版本,结果发现和Windows 11不兼容,安装到一半就报错。后来换了2021.1版本,一次成功。建议你用2021.1或2022.1,这两个版本比较稳定。
安装步骤(以Vivado 2021.1为例):
- 去Xilinx官网下载Vivado HLx 2021.1(约40GB,建议用下载工具)
- 运行安装程序,选择Vivado HL System Edition(包含Vitis)
- 勾选7 Series、Zynq-7000、Kintex-7等器件支持
- 安装路径不要有中文和空格(我习惯用
C:\Xilinx\Vivado2021.1) - 安装时间约1-2小时,取决于你的硬盘速度
小技巧:安装时把杀毒软件关了,不然会慢很多。另外,SSD硬盘能省一半时间,别问我怎么知道的。
1.5 开发板准备与上电测试
我们课程用的是Xilinx KC705开发板(Kintex-7系列)。如果你手头有其他板子,只要带GTX收发器就行。
上电前检查清单:
- ✅ 12V电源适配器(原装的最好,别用杂牌)
- ✅ Micro USB线(用于JTAG调试)
- ✅ 以太网线(可选,用于网络调试)
- ✅ 参考时钟(板载156.25MHz晶振,够用)
上电后,你会看到板子上的LED灯依次闪烁,这是板载的出厂测试程序在跑。如果没反应,先检查电源指示灯(D5)亮不亮。
上电测试步骤:
- 连接电源,按下SW1(电源开关)
- 观察D5(绿色)是否常亮——电源正常
- 观察D6-D9是否闪烁——FPGA已配置
- 用USB线连接PC,打开设备管理器,确认出现Xilinx USB Cable
如果设备管理器里没出现Xilinx USB Cable,别慌。大概率是驱动没装。去Xilinx官网下载Vivado Lab Solutions,里面包含驱动。或者直接装Vivado时勾选Install Cable Drivers。
注意:有些山寨USB线质量很差,会导致JTAG连接不稳定。我建议用带磁环的USB线,或者直接用Xilinx原装线。别在这种小配件上省钱,不然调试时掉线会让人崩溃。
1.6 第一个实验:点亮LED
环境搭好了,板子也亮了,我们来写个最简单的程序——点亮LED。这就像学编程时的"Hello World"。
打开Vivado,创建一个新工程:
1. File → New Project → Next
2. Project name: led_test
3. 选择 RTL Project
4. 选择器件:xc7k325tffg900-2(KC705的芯片型号)
5. Finish
然后添加一个Verilog文件:
module led_test(
input clk_156m25, // 板载156.25MHz时钟
output reg [3:0] led // 4个LED
);
reg [31:0] counter;
always @(posedge clk_156m25) begin
counter <= counter + 1;
if (counter == 156_250_000) begin // 约1秒
counter <= 0;
led <= ~led; // 翻转LED
end
end
endmodule
综合、实现、生成比特流,然后下载到板子上。你会看到4个LED以大约1秒的频率闪烁。
嗯,这一步成功了,说明你的开发环境、下载线、板子都没问题。接下来就可以放心地进入收发器和卷积加速的正题了。
我的习惯:每次拿到新板子,我都会先跑这个LED程序。不是为了炫技,而是为了验证整个工具链是否通畅。如果这一步卡住了,后面所有实验都做不了。所以,别嫌它简单,老老实实跑一遍。
好了,环境搭好了,板子也亮了。下一章我们开始真正接触收发器的配置与调试。到时候我会教你如何用IBERT工具看眼图,以及如何让数据在Gbps级别跑起来。
记住一句话:硬件调试,慢就是快。每一步都验证清楚了再往下走,反而最省时间。
可可精品资料库