Xilinx FPGA设计与实践教程 教学课件 作者 赵吉成 第6 10章 第8章.pptVIP

Xilinx FPGA设计与实践教程 教学课件 作者 赵吉成 第6 10章 第8章.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 UART串口通信控制器 8.1 UART传输系统 UART整个系统包含两个部分:发送器和接收器。发送器主要是使用移位寄存器将并行的数据一位一位地按照某特定速率发送出去,而接收器恰好相反,它将数据使用移位寄存器一位一位地接收回来,然后再进行打包。   整个UART数据传输在单线上进行,发送和接收信号线分别标记为TXD和RXD。具体传输过程如下:首先在不进行数据传输时,处于空状态(即idle状态),串行线RXD或者TXD上面信号置1(高电平)。在数据发送过程中,开始时发送0(Start状态,意味着发送数据开始),然后依次发送数据位(可选择6位、7位和8位的数据位宽)、奇偶校验位(位数可选)、停止位。在这里,奇偶校验是为了检验传输中是否有误码。对于偶校验来说,当传输数据中有偶数个1时,校验位为0。对于奇校验,当传输数据中有奇数个1时,校验位为0;停止位置1(高电平),可以是1位、1.5位或者2位。如图8-1所示为8位数据传输位,无校验位,1位停止位的UART传输数据格式。在这里要注意,数据传输为LSB方式,即低位在前,高位在后;另外,还有MSB方式,即高位在前,低位在后。所以数据处理时一定要注意数据的传输方式。 图8-1 8位UART数据传输协议   另外,要注意串口传输过程中物理连线仅仅有三根信号线:TXD、RXD和GND信号。所以UART传输过程当中,没有时钟信息包含在里面。那么发送端与接收端需要协商一个数据传输的速率才能进行传输,通常称为传输波特率,即每秒钟传输多少位数据。波特率的计算包括了数据位数、停止位、校验位。通常所用的波特率包括以下几种:2400,9600,19 200 Bps(即B/s,波特每秒)等。本节举例以如下的通信方式为标准:波特率为19 200,8位数据宽,1位停止位且没有校验位。 8.2 UART接收模块设计 8.2.1 设计方案   通常选用16倍于波特率的时钟进行采样,也就是说串行通信线上的每个数据位都采样16次。假设在数据传输中有N位的数据和M位的停止位,那么过采样的具体步骤如下:   (1) 等待接收信号为0,按照UART协议,数据传输以0(低电平)为起始位,开启采样时钟计数器。   (2) 当计数器计数到7,也就是已经计数到起始位数据的中间时刻时,开始清零计数器,然后重新开始。   (3) 当计数器计到15时,从时间上分析已经到第一位数据的中间,这时开始采集数据,并移位到寄存器中,然后重新启动计数器。   (4) 重复N-1次步骤(3),接收剩余的数据。   (5) 如果使用了校验位,那么再重复一次步骤(3)来获取校验位值。   (6) 重复M次步骤(3),获取停止位。   采用上述方法有如下优点:使用采样时钟来估计数据到达的中间时刻,然后采样,即使在数据起始位采集不准时,估计的误差也仅仅在1/16,也就是后续采集数据时刻会有距数据到达中间时刻有1/16的数据偏差,其实是不会影响数据的正确采集的。但是也有缺点:数据波特率不可以太高。如果波特率太高,要求的采样时钟就会太高,这样会引起系统的不稳定。   整个UART接收模块包括如下几个部分(如图8-2所示):   (1) ?UART接收器:用来接收串行传输数据;   (2) 波特率产生器:产生采样时钟;   (3) 接口电路:包括提供数据缓冲,UART和其它系统之间的握手状态信号等。 图8-2 UART接收器模块框图 8.2.2 波特率产生器   根据过采样采集原理,波特率产生器需要产生一个采样信号,其频率为UART 传输波特率的16倍。为了不在FPGA 系统中产生别的时钟域,从而违背FPGA 同步设计的原则,应采用系统时钟的使能时钟脉冲来产生采样信号,而不是采用直接送到UART接收器的时钟信号。   对于19?200 Bps波特率来说,采样频率应该为307 200(19?200?×?16)。由于系统时钟为50 MHz,波特率产生 器需要一个模163计数器 ,也就是每163个时钟产生一个时钟脉宽的脉冲信号作为接收采样信号。 8.2.3 UART接收器   为了能够清晰地了解过采样数据采集方法,设计了如图8-3所示的UART接收模块流程图。为了增强程序的规范性并方便以后的修改,设置了两个常数D_BIT和SB_TICK。D_BIT表示数据的位宽,包括16、32、24位;SB_TICK表示针对不同的停止位需要的采样时钟脉冲个数,对应停止位为1、1.5和2位,所选择的采样脉冲数为16、24和32。选择D_BIT为8位,即停止位为1位,SB_TICK为16位。   按照上述过采样原理,所设计流程图包括三个状态:开始、数据传输和停止状态,对应于U

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档