28.FPGA实验报告模板(串口为例)

📅 发布时间:2026/7/7 7:44:06 👁️ 浏览次数:
28.FPGA实验报告模板(串口为例)
一、实验概述1. 实验目的实现常用模块串口模块可以用来打印调试信息可以通过上位机输入指令。2. 实验环境开发板型号、EDA工具版本等开发板型号MLK-F20-CM02-4EVEDA版本 Vivado v2021.1 (64-bit)3. 实验内容与预期目标编写串口输入输出实现指令解析模块实现调试输出模块二、功能分析1. 项目功能需求拆解基础通信功能支持 115200 波特率、8 位数据位、1 位停止位、无校验的串口收发。调试信息发送能从 FPGA 向上位机发送字符串如 “初始化完成”“按键按下” 等调试信息。上位机指令接收能解析上位机发来的指令如 “#LED_ON\n”“#READ_TEMP\n”。指令响应收到指令后触发 FPGA 执行对应操作如点亮 LED、读取传感器数据。2. 核心功能逻辑梳理发送逻辑输入待发送的 8 位数据、发送使能信号。处理波特率分频→生成起始位→逐位发送数据→生成停止位。输出串行的 UART_TX 信号、发送完成标志。接收逻辑输入串行的 UART_RX 信号。处理检测起始位→逐位采样数据→校验停止位→解析指令帧头 / 帧尾。输出并行的 8 位数据、接收完成标志、指令有效标志。指令响应逻辑输入指令有效标志、完整指令帧。处理解析指令内容→映射到对应的硬件操作如控制 LED、读取传感器。输出硬件控制信号、调试信息发送请求。3. 性能指标与约束说明性能指标波特率固定为 115200bps支持最高 115200bps 的收发速率。指令响应时间收到指令后1ms 内触发对应硬件操作。调试信息发送延迟单字节发送延迟≤8.68μs对应 115200 波特率。约束说明硬件资源占用 LUT≤500 个触发器≤300 个不占用 BRAM/DSP 资源。兼容性支持 Windows/Linux 上位机串口助手兼容 3.3V 电平的 UART 接口。稳定性连续收发 1000 帧数据无丢包误码率≤0.1%。三、硬件介绍1. FPGA开发板核心资源芯片型号、时钟、IO等芯片型号 xczu4ev-slv784-2-i前缀 xc含义代表 Xilinx Company是 Xilinx 公司产品的通用前缀。系列标识 z含义代表 Zynq UltraScale MPSoC 系列这类芯片是集成了 ARM 多核处理器的异构计算平台。子系列标识 u含义代表 UltraScale 架构是 Xilinx 新一代的 FPGA 架构在性能、功耗和资源密度上有显著提升。器件等级 4含义代表器件的规模等级数字越大表示芯片的逻辑资源、I/O 数量等配置越丰富。4 属于中小规模适合对资源需求中等的嵌入式应用。功能后缀 ev含义代表该器件的功能类型。e代表具备硬核 PCIe Gen4 接口。v代表支持 HBM高带宽内存接口适合高带宽数据处理场景。对比cg 则代表具备硬核 Crypto 加密引擎和高速收发器侧重安全与高速通信。封装类型 slv含义代表封装形式与引脚数。slv代表 Stacked Silicon Via (SSV) 封装是一种先进的 2.5D 封装技术通过硅通孔实现芯片间的高速互联。sfv代表标准球栅阵列BGA封装。引脚数 784含义代表该封装下的引脚总数为 784。速度等级 2含义代表芯片的速度等级数字从 -1 到 -3数字越大表示最高运行频率越高、性能越强。-2 是主流速度等级兼顾性能与成本。温度等级 i含义代表工作温度范围。i代表工业级温度范围-40°C ~ 100°C。c代表商业级0°C ~ 85°C。e代表扩展级-40°C ~ 125°C。2. 外围电路与接口说明3. 硬件资源分配规划set_property PACKAGE_PIN A15 [get_ports uart_tx_o] set_property PACKAGE_PIN B15 [get_ports uart_rx_i] set_property IOSTANDARD LVCMOS18 [get_ports uart_tx_o] set_property IOSTANDARD LVCMOS18 [get_ports uart_rx_i]四、系统设计1. 系统整体架构框图2. 模块划分与接口定义模块划分按照功能独立性拆分比如串口模块可以拆成uart_tx_module串口发送子模块uart_rx_module串口接收子模块cmd_parse_module指令解析子模块baud_gen_module波特率时钟生成子模块接口定义为每个模块写清楚输入输出信号// 串口发送模块接口 module uart_tx_module( input sys_clk, // 系统时钟 input sys_rst_n, // 复位信号 input tx_en, // 发送使能 input [7:0] tx_data, // 待发送数据 output uart_tx, // 串口发送引脚 output tx_done // 发送完成标志 );模块间信号说明模块之间怎么连接比如uart_rx_module的输出rx_data接到cmd_parse_module的输入。3. 时钟与复位方案设计时钟方案主时钟直接使用 FPGA 开发板上的晶振时钟如 50MHz/100MHz作为系统主时钟。分频时钟通过波特率生成模块将主时钟分频为串口需要的波特率时钟如 115200bps 对应约 434 分频。时钟域说明整个串口模块都在主时钟域下工作不需要跨时钟域处理简化设计。复位方案复位类型使用低电平复位sys_rst_n这是 FPGA 设计中最常见的方式。复位触发开发板上电时或复位按键按下时sys_rst_n 拉低所有模块回到初始状态。复位释放复位信号拉高后系统开始正常工作确保所有模块状态一致。五、模块设计1. 各子模块功能描述波特率生成模块输入系统时钟、复位信号处理根据系统时钟和目标波特率分频生成 1 倍波特率的采样时钟输出波特率同步时钟串口发送模块输入系统时钟、复位信号、发送使能、待发送 8 位数据处理在波特率时钟驱动下依次发送起始位、8 位数据位、停止位输出串行 UART_TX 信号、发送完成标志串口接收模块输入系统时钟、复位信号、串行 UART_RX 信号处理检测起始位在波特率时钟驱动下逐位采样数据校验停止位输出并行 8 位数据、接收完成标志指令解析模块输入系统时钟、复位信号、接收完成标志、接收到的 8 位数据处理识别以#开头、\n结尾的指令帧拼接完整指令输出指令有效标志、完整指令帧2. 关键算法与状态机设计找出需要按顺序执行的逻辑然后把每个步骤定义为一个状态再画出状态跳转图。以串口发送模块的状态机为例a. 状态定义TX_IDLE空闲状态等待发送使能TX_START发送起始位低电平TX_DATA逐位发送 8 位数据低位先行TX_STOP发送停止位高电平TX_FINISH发送完成置位完成标志状态跳转逻辑TX_IDLE→检测到tx_en为高→TX_START→TX_DATA→发送完 8 位数据→TX_STOP→TX_FINISH→TX_IDLE关键算法波特率分频算法分频系数 系统时钟频率 / 波特率通过计数器生成波特率时钟。指令帧解析算法检测帧头#后开始缓存数据直到检测到帧尾\n输出完整指令。3. 模块间信号交互逻辑用 “模块 A 的输出→模块 B 的输入” 的方式梳理信号的连接关系。以串口模块为例波特率生成模块→baud_clk→ 串口发送模块、串口接收模块提供同步时钟串口接收模块→rx_done、rx_data→ 指令解析模块传递接收完成标志和数据指令解析模块→cmd_valid、cmd_frame→ 外设驱动模块触发硬件操作外设驱动模块→tx_en、tx_data→ 串口发送模块触发调试信息发送串口发送模块→tx_done→ 调试信息生成模块触发下一个字符发送六、绘制波形图1. 主要信号时序波形2. 关键场景时序验证3. 时序约束依据说明七、编写RTL代码1. 核心模块代码实现2. 代码规范与注释说明3. 关键逻辑代码解释八、Modelsim手动仿真新建仿真工程设计输入与测试文件编写仿真结果分析与波形验证九、分析与综合1. 逻辑综合结果报告2. 资源占用情况分析3. 时序收敛性检查十、设计实现1. 布局布线策略选择2. 实现后时序与资源报告3. 关键路径优化说明十一、下载验证1. 比特流文件生成与下载2. 硬件功能测试方案3. 实际运行结果与问题排查十二、实验总结1. 实验结果总结2. 遇到的问题与解决方案3. 实验收获与改进建议