UART 串口收发控制 Verilog Quartus
名称:UART 串口收发控制 Verilog Quartus
软件:Quartus
语言:Verilog
开发板/平台:Cyclone IV FPGA开发板
功能介绍
该设计实现了基于 Verilog 的 UART 串行收发顶层,包含波特率节拍生成、串口接收、串口发送和按键消抖。接口提供 RS232 接收输入 `rs232_rx`、发送输出 `rs232_tx`、8 位接收数据 `rx_data`,以及时钟、复位和按键输入。 接收通路由 `my_uart_rx` 完成串行数据接收,并将结果送至 `rx_data`。发送通路由 `my_uart_tx` 完成串行输出,发送使能来自消抖按键的下降沿;顶层发送数据固定连接为 `8'h45`。工程适合用于了解 UART 收发模块的顶层集成,以及波特率节拍和按键控制信号之间的连接关系。运行环境
硬件描述语言:Verilog 开发软件:Quartus 目标平台:Cyclone IV FPGA 开发板设计思路
顶层以 50 MHz 时钟和低电平复位为基础,围绕 RS232 串行收发组织数据通路。接收端将 `rs232_rx` 输入交给 `my_uart_rx`,并由 `clk_bps` 提供位中间采样节拍,接收结果输出到 8 位 `rx_data`;发送端由 `my_uart_tx` 驱动 `rs232_tx`,同样使用该波特率节拍完成串行发送。 `speed_select` 负责产生波特率时钟,顶层将其启动输入保持有效。按键输入先经过 `key_jitter` 消抖,消抖后的下降沿连接到发送使能 `tx_vld`,用于触发发送过程。顶层当前将固定数据 `8'h45` 接入发送模块,因此该设计展示了按键触发、串口接收和串口发送模块的组合方式。模块结构
顶层模块为 `my_uart_top`,主要由以下子模块组成: - `speed_select`:根据时钟、复位和启动信号生成 `clk_bps` 波特率节拍。 - `my_uart_rx`:接收 `rs232_rx` 串行信号,并输出 8 位 `rx_data` 与接收状态信号。 - `my_uart_tx`:根据发送使能和波特率节拍输出 `rs232_tx`,顶层发送数据连接为 `8'h45`。 - `key_jitter`:对按键输入进行消抖,下降沿信号用于触发发送。开发板验证
工程包含 Cyclone IV FPGA 开发板的管脚分配约束,可用于对应开发板的引脚配置与硬件验证。部分代码
以下展示顶层模块 my_uart_top 的部分代码,完整源码请下载压缩包查看。
module my_uart_top(clk,rst_n,rs232_rx,rs232_tx,rx_data,tx_data,key_in);
input clk; // 50MHz主时钟
input rst_n; //低电平复位信号
input rs232_rx; // RS232接收数据信号
output rs232_tx; // RS232发送数据信号
output [7:0] rx_data; //接收数据寄存器
input [7:0] tx_data; //发送数据寄存器
input key_in;//按键输入
wire tx_vld;//发送使能
wire bps_start; //接收到数据后,波特率时钟启动信号置位
wire clk_bps; // clk_bps的高电平为接收或者发送数据位的中间采样点
wire rx_int; //接收数据中断信号,接收到数据期间始终为高电平
//----------------------------------------------------
key_jitter i_key_jitter(
. clkin(clk),
. key_in(key_in),//输入
. key_posedge(),//消抖后按键上升沿
. key_negedge(tx_vld),//消抖后按键下降沿
. key_value() //消抖后按键
);
//波特率模块
speed_select speed_select( .clk(clk),
.rst_n(rst_n),
.bps_start(1),
.clk_bps(clk_bps)
);
//接收数据模块
my_uart_rx my_uart_rx( .clk(clk), //接收数据模块
.rst_n(rst_n),
.rs232_rx(rs232_rx),
.clk_bps(clk_bps),
.rx_data(rx_data),
.rx_int(rx_int)
);
//发送数据模块
my_uart_tx my_uart_tx( .clk(clk), //发送数据模块
.rst_n(rst_n),
.clk_bps(clk_bps),
.rx_data(8'h45),
.tx_vld(tx_vld),
.rs232_tx(rs232_tx)
);
endmodule
代码文件(付费下载)
📥
付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » UART 串口收发控制 Verilog Quartus
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » UART 串口收发控制 Verilog Quartus