UART原理

UART原理

       通用异步收发传输器(Universal Asynchronous Receiver / Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。将资料由串行通信与并行通信间作传输转换,作为并行输入成为串行输出的芯片,通常集成于其他通讯接口的连结上。

1、UART发送

       数据的发送实际上就是按照帧格式将寄存器中的并行数据转为串行数据,为其加上起始位和停止位,以一定的波特率进行传输。波特率可以有多种选择,如9600bits/s,14400bits/s,19200bits/s,38400bits/s等
在这里插入图片描述

2、UART接收

       由于传输中有可能会产生毛刺,接收端极有可能将毛刺误认为是起始位,所以要对检测到的下降沿进行判别。一般采用如下的方法:取接收端的时钟频率是发送频率的16倍频,当检测到一个下降沿后,在接下来的16个周期内检测数据线上“0”的个数,若“0”的个数超过8个或者10(根据具体情况设置),则认为是起始位到来,否则认为起始位没有到来,继续检测传输线,等待起始位。
在这里插入图片描述

3、发送主要代码

//============================================================================== 
//开始发送使能
//==============================================================================
reg   start_trig_reg1 ;//延迟一拍触发信号
reg   start_en        ;//开始发送使能信号
always @ (posedge i_100m_clk or negedge i_rst_n)
 if(!i_rst_n)
      start_trig_reg1 <=1'b0;
 else
      start_trig_reg1 <= i_start_trig ;

always @ (posedge i_100m_clk or negedge i_rst_n)
 if(!i_rst_n)
       start_en <= 1'b0 ;
 else if(!start_trig_reg1&&i_start_trig)//检测触发信号上升沿
       start_en <= 1'b1 ;
 else
       start_en <= 1'b0 ;
    

//==============================================================================
//波特率计算
//==============================================================================

always @ (posedge i_100m_clk or negedge i_rst_n)
 if(!i_rst_n)
    time_cnt <= 10'h0 ;
 else if(crt_state==IDLE)
    time_cnt <= 10'b0 ;
 else if(time_cnt=
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

justonemi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值