1. FPGA TSN开发环境搭建与点灯验证
任务说明
本案例在目标 FPGA 开发板上完成 TSN 开发的最小硬件闭环:安装工具链、创建基础工程、编写 LED 闪烁逻辑、添加引脚约束、生成比特流并下载验证。完成后,后续 TSN 案例即可在同一工程骨架上扩展。
环境与依赖
- Vivado 2020.2 或更高版本(含 Vitis,用于后续 TSN 软核开发)。
- 目标开发板:Xilinx 7 系列(示例以 Artix-7 XC7A35T 为例,其他板卡只需替换约束文件中的引脚号)。
- 板载 50 MHz 时钟与至少一个用户 LED。
- USB-JTAG 下载线及对应驱动。
工程结构与实现
工程包含顶层模块 top_led_blink,用计数器分频 50 MHz 时钟产生约 1 Hz 的 LED 翻转信号。约束文件 led_blink.xdc 绑定时钟与 LED 引脚。以下为完整可综合代码与约束。
// top_led_blink.v
module top_led_blink (
input wire clk, // 50 MHz 板载时钟
input wire rst_n, // 低有效复位
output reg led // 用户 LED
);
// 50 MHz / (2 * 25_000_000) = 1 Hz 翻转
localparam integer CNT_MAX = 25_000_000 - 1;
reg [24:0] cnt;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
cnt <= 25'd0;
led <= 1'b0;
end else if (cnt == CNT_MAX) begin
cnt <= 25'd0;
led <= ~led;
end else begin
cnt <= cnt + 1'b1;
end
end
endmodule
# led_blink.xdc (Artix-7 XC7A35T 示例,按实际板卡修改)
set_property -dict {PACKAGE_PIN E3 IOSTANDARD LVCMOS33} [get_ports clk]
set_property -dict {PACKAGE_PIN J15 IOSTANDARD LVCMOS33} [get_ports rst_n]
set_property -dict {PACKAGE_PIN L15 IOSTANDARD LVCMOS33} [get_ports led]
create_clock -period 20.000 -name sys_clk [get_ports clk]
创建与运行步骤
- Vivado 中新建 RTL 工程,器件选择与开发板一致(如 xc7a35tcsg324-1)。
- 添加
top_led_blink.v为设计源文件,led_blink.xdc为约束文件。 - 将
top_led_blink设为顶层模块。 - 运行 Synthesis → Implementation → Generate Bitstream。
- 连接开发板,打开 Hardware Manager,Program Device 下载比特流。
验证方法与通过条件
- 综合与实现无严重错误(Critical Warning 以下可接受)。
- 时序报告中
sys_clk的 WNS ≥ 0,即建立时间满足。 - 下载后观察 LED:应以约 1 秒为周期均匀闪烁(亮 1 s、灭 1 s)。
- 按下复位(或上电复位)后 LED 从灭状态重新开始计数,说明复位逻辑生效。
满足以上条件即认为硬件平台可用,可进入后续 TSN 案例。
常见问题
- LED 不亮:检查约束引脚号是否与板卡原理图一致,IOSTANDARD 是否匹配。
- 闪烁过快或过慢:核对板载时钟频率,若不是 50 MHz 需调整
CNT_MAX。 - 下载失败:确认 JTAG 驱动与 Hardware Manager 中器件识别正常。