集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1239|回复: 2

基于RS232总线收发数据设计

[复制链接]
fpga_feixiang 发表于 2020-7-5 14:24:07 | 显示全部楼层 |阅读模式




基于RS232总线收发数据设计实验

















串口接收+VGA显示设计实验
一、设计需求
需要设计一个通过上位机发送数据,通过RS232总线接收模块进行接收,然后存储到FIFO中,读取FIFO中的数据通过RS232发送模块发送到上位机中,从而实现RS232总线的接收。





















二、方案设计
可以通过三点进行设计:
(一)通过RS232接口,接收上位机发送的图片数据,需要通过UART进行接收部分的控制。
(二)将接收的数据存储到FIFO中。
(三)通过RS232发送模块,对FIFO中的数据进行读取,然后通过串口发送到上位机中
1.UART接收部分设计
接收部分要注意UART的接受波特率为9600it/s,数据的格式为起始位1位,数据位8位,停止位1位,无奇偶校验位,一帧数据共10位。

从图可以看出,每一帧数据的空闲位均为高电平,起始位为低电平,接着是8位数据位。当检测到高电平和低电平的变化沿时,UART模块开始计数,计到起始位结束,开始接收8位数据,然后将接收的串行数据转换成并行数据,并给出一帧接收结束的标志位信号。
在9600bit/s波特率时,串口接收控制模块的工作频率为9.6kHz,但如果使用这个频率,无法检测到串口信号的边沿变化,根据采样定理,最低采样频率必须是信号频率的两倍,本次实验我们使用16倍频信号进行检测,那么串口接收控制模块的工作频率应为9.6*16kHz,即153.6kHz。
为了能够稳定的检测到串口数据的信号变化,我们在每位数据信号的中间位置进行采样。由于每位数据都是经过16个时钟周期的变化。

2.FIFO控制设计
通过上一级给的一个rx_data_flag信号,通过此信号控制数据写入到FIFO当中,当FIFO当中读空信号处于低电平时,表示FIFO当中有数据,UART_tx模块进行读取FIFO当中的数据,并通过RS232发送到上位机当中。


(一)通过上位机发送数据
(二)my_pll
接收开发板的50mhz时钟信号,通过IP核锁相环产生一个时钟信号,uart_clk的时钟信号,时钟为153.6khz
(三)uart_rx
uart_rx接收模块,接收my_pll产生的时钟信号uart_clk,以及上位机给出的数据,然后进行串型数据转并型数据,输出一个位宽为8位的并行数据data_rx[7:0],以及一个数据完成转换的信号。
(四)FIFO
控制数据写入到FIFO中,根据uart_rx模块输出的一个数据转换完成的信号来控制数据写入,输出一个读空信号来控制下一模块UART_tx进行读取FIFO当中的数据。
(五)UART_tx
通过FIFO输出的一个读空信号,来控制FIFO的读数据,以及对数据的转换。

ram_wr_ctrl代码,主要控制数据写入到DPRAM中以及写地址的控制

Vga图片控制模块,主要控制图片数据显示,以及读地址的控制

经过编译,打开RTL Viewer,产生的视图,架构设计图完全一致。

三、仿真分析
(一)uart_rx模块测试

根据波形结果输出输出结果正确,每位占计数器16位数字,每个数据已最中间的数字进行输出,转换完成后输出数据以及rx_data_flag波形。
(二)FIFO模块

根据波形显示,根据波形上升沿输出一个wren写入信号,数据写入成功。
(三)UART_tx模块

(四)通过读空信号控制数据读出,然后完成转换,发送到上位机中


最后显示图像正常。
四、实验总结
完成这个实验首先要思路清晰,构思好每个模块,每个模块与每个模块之间关系,还要特别注意,FIFO输出的空信号,控制UART_tx的状态转换,以及读数据的控制信号。

大鹏 发表于 2020-7-7 17:07:53 | 显示全部楼层
基于RS232总线收发数据设计
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-25 21:54 , Processed in 0.067361 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表