查看: 802|回复: 0

uart是如何确保数据传输的正确性的呢?

[复制链接]

该用户从未签到

发表于 2016-1-27 08:57:27 | 显示全部楼层 |阅读模式
分享到:

        UART:设计架构
        1、bus_interface中定义一些寄存器,如控制寄存器(control_reg),包括波特率的设置、奇偶校验位设置,bits数目的设置,停止位的设置等;状态寄存器(status_reg)包括奇偶校验错误状态,中断状态,发送接收fifo空满状态,CRC错误状态等;数据寄存器(data_reg)包括发送数据和接收数据。
        2、uart_tx_fifo用于缓存待发送的数据,关于它的大小,要根据发送端的吞吐率和uart的速率进行计算,然后给出一个比较合理的值;例如fifo深度为Depth*Width,那么你可以设计成当fifo不满的状态反馈到状态寄存器,接口那边检测到不满就可以继续往里面写,uart_tx_rsm检测到fifo不空时就可以继续发送数据;但是这样需要接口那边频繁来检测状态(如果接口那边是cpu的话,则会使cpu频繁访问uart寄存器,使其不能够很好的做其他工作),所以可以设计成将fifo填满(或者达到某个阈值),然后uart_tx_rsm发送数据,当fifo中的数据发送完毕后产生中断,通知接口那边继续填满fifo,这种采用中断的方式可以使接口另一端的设备不至于频繁访问寄存器。
        3、uart_divxy用于根据波特率寄存器及系统时钟产生uart_clk;
        4、uart_rx_fifo用于缓存uart_rx接收的的数据,关于它的大小,要根据接收端的吞吐率和uart的速率进行计算,然后给出一个比较合理的值;例如fifo深度为Depth*Width,那么你可以设计成当fifo不空的状态反馈到状态寄存器,接口那边检测到不空就可以继续从里面读取,uart_rx_rsm检测到fifo不满时就可以继续接收数据;但是这样需要接口那边频繁来检测状态(如果接口那边是cpu的话,则会使cpu频繁访问uart寄存器,使其不能够很好的做其他工作),所以可以设计成将fifo填满(或者达到某个阈值),然后产生中断,通知接口来读取,这种采用中断的方式可以使接口另一端的设备不至于频繁访问寄存器。
        5、uart_tx_rsm用于从uart_tx_fifo中取一个字节,然后按照格式{开始位,数据位(位数可变),奇偶校验位,停止位}(有些位可以选择),在uart_baud的控制下一个一个bit的发送出去。
        6、uart_baud用于控制uart_tx_rsm和uart_rx_rsm。
        7、uart_rx_rsm接收一个一个bit(关于uart_rx_rsm采样bit采用16倍波特率的速率,然后取中间值),然后剥去起始位,奇偶校验位停止位,组成一个字节,然后存入uart_rx_fifo。
        8、uart_interruput产生中断,通知接口,然后接口接收到中断后,读取相应的中断寄存器,查看是何种类型的中断。
        9、uart_modem产生流控制信号,大致是表明uart当前是否可以用于传输。
        10、关于接口部分,由于uart的速率较低,可以采用APB总线协议实现,方面后面的系统集成和IP复用。

        Cpu通过总线发送一组数据到uart_dut,同时将这组数据送到scoreboard,数据经过总线及uart_dut后被uart_driver接收至数组(或者其它存储结构)中,然后这组数据被送到scoreboard于cpu送出的数进行比对;同理,uart_dut通过uart_dut发送一组数据到cpu(也可以理解为cpu读取数据,因为cpu相当于master,uart是slave),同时将这组数据送到scoreboard,数据经过总线后被cpu接收至数组(或者其它存储结构)中,然后这组数据被送到scoreboard与uart_dut送出的数进行比对。其中上图中的中断信号输入到cpu的中断控制器中,cpu根据中断的情况进行相应的处理。
        注意:uart是如何确保数据传输的正确性的呢?
        1)在数据位的两端添加了起始位,奇偶校验位,停止位等用于进行数据的同步和纠错;
        2)接收端用16倍波特率对数据进行采样,取采样中间点的值,这样可以很大程度上确保采样数据的正确性。
        3)通过流控制信号(如上面的uart_rts,uart_cts信号)确保数据传输的正确性,不会发生underrun和overrun。
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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

手机版|小黑屋|与非网

GMT+8, 2024-4-25 11:31 , Processed in 0.120784 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.