2 简化UART功能的FPGA实现  本文将详细地讨论简化UART功能在FPGA中的实现方法。简单回顾一下异步串行通信的数据格式。图"> 2 简化UART功能的FPGA实现  本文将详细地讨论简化UART功能在FPGA中的实现方法。简单回顾一下异步串行通信的数据格式。图" />
简化uart功能的fpga实现

简化uart功能的fpga实现

ID:20066772

大小:51.00 KB

页数:3页

时间:2018-10-09

简化uart功能的fpga实现_第1页
简化uart功能的fpga实现_第2页
简化uart功能的fpga实现_第3页
资源描述:

《简化uart功能的fpga实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、简化UART功能的FPGA实现

2、第1内容加载中...500)this.style.ouseg(this)">2 简化UART功能的FPGA实现  本文将详细地讨论简化UART功能在FPGA中的实现方法。简单回顾一下异步串行通信的数据格式。图2表明在异步传送中串行发送一个数据字节的位定时关系(图中没有包括奇偶校验位)。发送一个完整的字节信息,首先是一个作为起始位的逻辑“0”位,接着是8个数据位,然后是1个、1+1/2个或2个停止位逻辑“1”位,数据线空闲时呈现为高或“1”状态。在字符的8位数据部分,先发送数据的最低位,最后发送最高位。每位持续的时间是固定的,由发送器本地时

3、钟控制,每秒发送的数据位个数,即为“波特率”。起始位和停止位起着很重要的作用。显然,他们标志每个字符的开始和结束,但更重要的是他们使接收器能把他的局部时钟与每个新开始接收的字符再同步。异步通信没有可参照的时钟信号,发送器随时都可能发送数据,任何时沿的出现时间,从而正确地采样紧接着的10~11位(包括开始位、数据位和停止位)。接收器的时钟与发送器的时钟不是同一个,因此,接收器采样点的间隔跟由发送器时钟所确定的位间隔时间不同,接收器一定不能让他的相对时钟速度导致采样错误。500)this.style.ouseg(this)">  比较而言,UART发送器部分发送串行数据过程

4、的实现相对容易,只要对发送出去的数据电平做持续时间的定时即可。下面先对UART接收器部分的FPGA实现方法做详细的描述。2.1 UART接收器的FPGA实现  根据以上的叙述,由于串行数据帧与接收时钟是异步的,所以接收器功能实现中的关键是接收器时钟与每个接收字符的同步。一个有效的方法是接收器采用高速率时钟对串行数据进行采样,通常采样频率是位时钟频率的整数倍。理论上倍数越高接收数据各位的分辨率越高,实际中,一般最大选择16倍。  接收器应该尽可能地在靠近位周期的中心处对每位采样。如果接收器能很好地预测起始位的开始,那么他可在起始位的下降沿到来之后,等待半个位周期再采样数据

5、位。此后,接收器每等待一个位周期采样一个数据位,直至收到最后一位为止。倘若接收时钟的频率足够接近发送时钟,使得最后位能在离该位的精确中心位置半个周期内对他采样,以上方案就能正确地工作。这意味着接收时钟相对于发送时钟在10~11个时钟周期内,其增加和减少应小于半个位的时间间隔。因此,要求收发双方2个时钟的误差容限在5%以内。  本文中接收器的实现采取5倍速采样法,也就是接收采样频率是串行数据位频率的5倍。图3是将图2中的起始位和部分数据位放大,又把每个信息位分成5等份,每等份的时间宽度设为Ts。以5倍频对信息位进行采样时,每个信息位都将可能被采样到5次。当处于空闲状态并检

6、测起始位时,最早检测到起始位低电平的时刻必将落在S0阴影区,每次具体的采样点会在S0阴影区随机变化。检测到起始位低电平后,间隔7×Ts时间,正好是第1位数据位的中间1/5处(图3中D2阴影区)。此后的数据位和停止位的采样间隔都是5×Ts,所有采样点均落在码元的中间1/5处,采样数据最可靠。采样时钟的产生由计数器控制,计数器时钟为位时钟5倍频。    500)this.style.ouseg(this)">  为了避免噪声引起的起始位检测错误,要对起始位采样两次。从空闲状态,第1次采样为低电平后,间隔2个Ts再采样一次,如果仍为低电平,才认定为有效的起始位;如果为高电平,

7、再回到空闲状态等待重新同步。  另外,在采样停止位的时候也可以加入保护机制:当停止位采样值为高电平时,认为同步和数据正确,装人数据寄存器,否则认为同步或传输错误,此次采样的字符作废,将其舍弃。简化的UART功能框图如图4所示。EP7312所带的UART控制器16550中,FIFO的深度为16B。实际FPGA实现时根据具体应用的不同,可以用RAM取代FIFO,本文只叙述图4中接收器和发送器的实现方法。500)this.style.ouseg(this)">  在具体使用硬件描述语言VHDL编程实现时,接收器5倍速采样法的关键部分使用了一个状态机,状态转换图如图5所示。50

8、0)this.style.ouseg(this)">2.2 UART发送器的FPGA实现  UART发送器的FPGA实现相对于接收器来说简单了很多。没有数据要发送时,发送数据寄存器为空,发送器处于空闲状态;当检测到发送数据寄存器满信号后,发送器即发送起始位,同时8个数据位被并行装入发送移位寄存器,停止位紧接着数据位指示数据帧结束。只有发送数据寄存器为空时,RAM或FIFO中的待发送数据才能被装入。程序中使用计数器保证各位周期定时正确,仍使用一个状态机描述发送过程,图6是发送器状态机状态转换示意图。500)this.style.ouseg(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。