小梅哥12——串口接收模块设计与验证

本文详细介绍了在FPGA中设计UART接收模块的过程,包括UART通信协议在工业环境下的数据接收策略,如何处理异步时钟同步,以及如何利用ISSP探针进行数据监测。同时,阐述了时序图分析和模块设计的关键点,强调了在数据采样和状态检测中的注意事项。
摘要由CSDN通过智能技术生成

一、FPGA接收其他设备通过uart协议发送的数据

         使用ISSP查看uart接收模块接收到的数据,串口接收到的数据由PC机发出

1. uart通信协议工业环境下数据接收实现(干扰状态,进行一些处理保证稳定性)

        工业应用中,往往有较强的电磁干扰,因此只采集一次作为该数据的电平判定不保险,需要多次采样求概率

         将每一位数据平均分成 16 小段,在刚发生变化和即将发生变化时期,数据极可能不稳定,因此灰色这段忽略。考虑中间6次采样,选取出现次数较多的电平。各占一半时判定当前通信线路环境非常恶劣,数据不具有可靠性,不进行处理。

         将中间6次结果加起来(3位),>3(最高位为1)为1,<3为0,最高位数即为统计结果

         reg [2:0] r_data_byte [7:0]8个3位寄存器,r_data_byte[0][2]:第0个寄存器的第2位

2. 异步时钟同步处理

           Rs232_tx是外部输入信号,是异步信号,对其采样可能采集到不定态,D触发器会发生振荡,振荡后在下一个时钟信号到来前稳定下来,其稳定结果不确定,因此经过两级寄存器同步处理(与系统时钟变化一致)。

           第一个D触发器采集异步信号,q有振荡,但在下一个时钟信号前稳定,因此第二级D触发器(延迟一个时钟周期)采集到的是稳定态

3. ISSP探针probe使用

          

外部输入Rs232_rx,使用探针(8位)探测 data_rx_r(只有在rx_done高电平时将data_rx赋值给data_rx_r)

二、时序图

uart发送端发送一个字节Byte(8bit)数据时序图 

       每个bps_clk上升沿发送数据 

串口接收时序图 

      对数据线 Rs232_tx 上的每一位进行采样:开始和结束段数据变化,一般认为每一位数据的中间点最稳定,因此一般采集中间时刻时的电平即认为是此位数据的电平

      bps_clk上升沿对齐中点,在每个上升沿读取数据

三、模块设计

 起始位检测进程:起始位低电平,检测到下降沿,表面可能数据传输,开启波特率时钟(异步转   同步(两个同步寄存器s0_)、边沿检测(两个暂存寄存器tem0_,比较前后状态))。起始位可能检测错误,第12位起始位不为0(>=3)可判断为检测错误

波特率产生模块:每位采集16次,频率:Bps*16

数据接收进程

串口接收模块框图

        先有顶层设计思路,再分块实现 

注意 

 1. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值