欢迎光临散文网 会员登陆 & 注册

FPGA实现UART(RS232)串口通信

2023-03-29 17:07 作者:莫奈印象中的睡莲  | 我要投稿

参考:正点原子ZYNQ,野火升腾FPGA

UART_RX接收端

UART_RX波形图

uart_rx作为接收端,输入信号uart_xd先延迟两个时钟同步到系统时钟clk域中,组合逻辑检测uart_tx的下降沿作为数据接受起始信号。设置本次传输波特率为9600bps,则对于50MHZ的时钟而言,每个波特率周期计数次数为50M/9600=5208次。每当计数器记到5208次中间时,此时数据相对稳定便于提取当前传输的数据,把bit_flag提取一位数据标志信号拉高,bit_cnt计数一次。通过case语句,当bit_flag拉高时,把对应的数据寄存到rxd_data_t临时寄存器内,最后uart_en传输有效信号拉低时把rxd_data_t赋值给rxd_data并发出去。

UART_RX起始阶段
UART_RX一次传输结束
RX接收8bit数据

UART_TX发送端

UART_TX发送端

TX端输入有uart_din数据接口和uart_data_en数据有效接口,当检测到uart_data_en为高电平时,把uart_din输入数据寄存。计数器开始计数(0~5207),每当计数器为1时,bit_flag拉高,且bit_cnt累加。通过case语句,当bit_flag拉高,根据此时bit_cnt给uart_txd赋值,从而把数据发送出去。

tx起始阶段
uart_tx赋值发送数据
uart_tx结束一次发送

UART(RS232)环回

uart_rx和uart_tx与电脑串口助手连接

串口助手测试

FPGA按键控制发送字符数据给电脑

uart_send模块波形图

通过按键按下开始把char_send模块里写入的字符数据传给uart_tx模块发送给电脑串口助手

按下按键,FPGA自动发送字符数据给电脑串口(按键模块没写好,触发了两次)

FPGA实现UART(RS232)串口通信的评论 (共 条)

分享到微博请遵守国家法律