UART FIFO 周期发送 FPGA 设计 Verilog Quartus
名称:UART FIFO 周期发送 FPGA 设计 Verilog Quartus
软件:Quartus
语言:Verilog
开发板/平台:Cyclone IV FPGA开发板
功能介绍
本设计实现了一个基于 FPGA 的 UART FIFO 周期发送系统,使用 Verilog 编写,在 Quartus 环境下完成工程设计与编译。系统作为下位机运行时,可以按照固定 40ms 周期向上位机串口调试助手发送数据包,适合用于串口通信、定时数据上传、FPGA 与 PC 联调等应用场景。 发送数据包长度为 16 字节,帧格式包含双字节帧头 AA、55,帧计数字节、自定义数据区以及校验和字节。帧计数在每发送一帧后自动递增,便于接收端判断是否丢帧;校验和用于对指定数据区进行和校验,提高串口数据接收解析的可靠性。 UART 通信参数为 115200bps,包含 1bit 起始位、8bit 数据位、1bit 停止位以及 1bit 偶校验位。工程将定时控制、数据组帧、FIFO 缓冲和 UART 发送功能拆分为多个模块,结构清晰,便于学习 UART 发送时序、FIFO 数据缓存以及固定帧协议设计。运行环境
开发语言:Verilog 开发软件:Quartus 目标工程:uart_fifo_tx_top 适用方向:FPGA UART 串口发送、FIFO 缓冲、固定帧协议、周期性数据上传 板级验证:Cyclone IV FPGA 开发板设计思路
系统采用定时触发、数据组帧、FIFO 缓冲和 UART 发送的结构。顶层模块以 50MHz 时钟为基础,先通过 timer_40ms 产生固定周期脉冲,每 40ms 触发一次发送流程,使 FPGA 能够按照下位机周期上报数据的需求稳定输出数据包。 数据控制部分由 tx_data_ctrl 负责,根据 40ms 脉冲组织 16 字节数据帧。帧格式包含 AA、55 两个帧头字节,随后放入帧计数字节,帧计数在每发送完一帧后递增,可用于上位机判断数据连续性。中间多个字节作为自定义数据区域,最后一个字节为校验和,校验范围为第 4 到第 15 个字节,便于上位机对一帧数据进行完整性判断。 UART 发送链路通过发送 FIFO 与串口发送模块衔接。数据控制模块将待发送字节写入发送 FIFO,UART 顶层模块从 FIFO 取数并按照串口协议发送,降低了组帧逻辑和串口位时序逻辑之间的耦合。串口协议设置为 115200bps、8 位数据位、1 位起始位、1 位停止位和偶校验位,适合与常用串口调试助手进行通信验证。 顶层 uart_fifo_tx_top 对复位极性进行转换,外部输入为高电平复位,内部模块使用低电平复位 rst_n。接收通道在本设计中不参与功能实现,接收端被固定拉高,发送通道作为核心功能输出 UART_TX。模块结构
顶层模块为 uart_fifo_tx_top,主要连接 40ms 定时器、发送数据控制模块和 UART 顶层模块。 主要模块包括: 1. timer_40ms:基于系统时钟产生 40ms 周期脉冲,作为数据帧发送触发信号。 2. tx_data_ctrl:负责组织 16 字节发送帧,生成 FIFO 写使能和写入数据。 3. my_uart_top:UART 通信顶层,连接发送 FIFO 和串口发送逻辑,本设计中主要使用发送通道。 4. FIFO_8_256:8 位宽、256 深度 FIFO,用于缓存待发送字节。 5. speed_select:波特率相关选择/控制模块,用于配合 UART 时序生成。 6. my_uart_tx:UART 发送模块,完成串口位级发送。 7. my_uart_rx:UART 接收模块,工程中保留接收能力,但顶层发送设计未使用接收 FIFO 读出功能。 8. tb_uart_fifo_tx_top、tb_tx_data_ctrl、tb_timer_40ms:对应测试平台文件,用于功能仿真参考。开发板验证
工程提供了 Cyclone IV FPGA 开发板验证相关内容,包含管脚约束分配文件以及开发板实物图片,可用于对照工程引脚、时钟、复位和 UART_TX 输出信号进行硬件连接检查。设计面向 50MHz 时钟输入,复位信号为高电平有效,UART 发送端口输出到外部串口转换模块或板载串口接口。 上板运行时,FPGA 按 40ms 周期组织发送数据帧,上位机可通过串口调试助手接收数据。串口参数为 115200bps,8 位数据位,1 位起始位,1 位停止位,并带偶校验位。接收端重点观察帧头 AA 55、帧计数字节递增以及 16 字节帧长度是否稳定。
演示视频
配套演示视频展示了工程运行效果,可用于查看 FPGA 周期性发送 UART 数据帧以及上位机串口接收显示的实际表现。仿真图/仿真说明/设计文档图片
设计文档内容包含工程文件、程序文件、程序编译、RTL 图、仿真图以及 40ms 产生模块、数据控制模块、UART 发送模块和三路数据仲裁等说明。文档图中包含 RTL 结构和仿真相关截图,可用于理解各模块连接关系、定时触发过程和串口发送流程。











部分代码
以下展示顶层模块 uart_fifo_tx_top 的部分代码,完整源码请下载压缩包查看。
module uart_fifo_tx_top(
input wire clk, // 50MHz时钟
input wire reset, // 高电平复位信号
output wire uart_tx // UART发送信号
);
// 内部信号定义
wire rst_n; // 低电平复位信号
wire pulse_40ms; // 40ms脉冲信号
wire tx_fifo_wr_en; // FIFO写使能
wire [7:0] tx_fifo_wr_data; // FIFO写数据
// 复位信号转换 (输入为高电平复位,内部使用低电平复位)
assign rst_n = ~reset;
//==============================================================================
// 模块例化
//==============================================================================
// 40ms定时器模块
timer_40ms u_timer_40ms(
.clk (clk),
.rst_n (rst_n),
.pulse_40ms (pulse_40ms)
);
// 发送数据控制模块
tx_data_ctrl u_tx_data_ctrl(
.clk (clk),
.rst_n (rst_n),
.pulse_40ms (pulse_40ms),
.tx_fifo_wr_en (tx_fifo_wr_en),
.tx_fifo_wr_data (tx_fifo_wr_data)
);
// UART顶层模块
my_uart_top u_my_uart_top(
.clk (clk),
.rst_n (rst_n),
.rs232_rx (1'b1), // 接收端悬空(拉高)
.rs232_tx (uart_tx), // UART发送输出
.rx_fifo_rd_en (1'b0), // 不使用接收FIFO
.rx_fifo_rd_data (), // 接收数据未使用
.tx_fifo_wr_en (tx_fifo_wr_en), // 发送FIFO写使能
.tx_fifo_wr_data (tx_fifo_wr_data) // 发送FIFO写数据
);
endmodule
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » UART FIFO 周期发送 FPGA 设计 Verilog Quartus
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » UART FIFO 周期发送 FPGA 设计 Verilog Quartus