EDA原理_第12章_通用异步接收发送器的设计和实现.ppt

上传人:marr****208 文档编号:133684739 上传时间:2020-05-29 格式:PPT 页数:39 大小:1.34MB
返回 下载 相关 举报
EDA原理_第12章_通用异步接收发送器的设计和实现.ppt_第1页
第1页 / 共39页
EDA原理_第12章_通用异步接收发送器的设计和实现.ppt_第2页
第2页 / 共39页
EDA原理_第12章_通用异步接收发送器的设计和实现.ppt_第3页
第3页 / 共39页
EDA原理_第12章_通用异步接收发送器的设计和实现.ppt_第4页
第4页 / 共39页
EDA原理_第12章_通用异步接收发送器的设计和实现.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《EDA原理_第12章_通用异步接收发送器的设计和实现.ppt》由会员分享,可在线阅读,更多相关《EDA原理_第12章_通用异步接收发送器的设计和实现.ppt(39页珍藏版)》请在金锄头文库上搜索。

1、通用异步接收发送器的设计和实现 何宾2011 09 UART的设计和实现 本章概要 本章给出了PLD器件在简单通信系统的应用 UART设计 通用异步接收 发送器的设计也是PLD在通信系统的经典应用 该章首先介绍了UART设计原理 其中包括UART原理和设计描述 接收模块设计 随后介绍了UART的VHDL代码描述 最后介绍了URAT的软件仿真验证和硬件验证 UART的设计和实现 设计原理 基于通用异步接收发送器UART的RS 232接口是以前计算机上提供的一个串行数据接口 用来将接收的串行数据转换成并行数据 同时将并行数据转换成串行数据后发送出去 当PLD和其它外设通过串口通信时就非常有用 UA

2、RT发送的数据 经过电平转换后 传送到PLD的外部串行总线接口 然后这些串行数据被送到PLD内部进行处理 被处理的数据然后转换为串行数据经电平转换后传回串口 UART的设计和实现 设计原理 该设计包含下面几个方面 并行 串行和串行 并行数据转换使用用户定义的奇偶校验位 缺省设置为奇校验 数据波特率可修改 缺省9600 包含测试代码和测试向量 UART的设计和实现 符号描述图 UART的设计和实现 原理和设计描述 UART设计主要包括两部分 并行数据转化成串行数据 串行数据转换成并行数据 UART设计的接收端口将接收到的串行数据转换成并行数据 同时UART的发送端口负责并行数据转换成串行数据 测

3、试代码完成对UART设计的验证 该验证已经在Xilinx大学计划提供的开发平台进行了验证 该设计也很容易的移植到其它的EDA平台上 UART的设计和实现 原理和设计描述符号 UART的设计和实现 原理和设计描述 UART设计包含两个主要模块 这两个模块封装在一个UART的设计文件中 这两个模块一个处理接收的串行数据 另一个处理发送的串行数据 接收模块的端口接收一个字节的有效数据 并将其转换成8位的并行数据 转换的并行数据放在DBOUT端口 发送模块将发送的数据送到DBIN端口 并且将其转换成一个字节的串行发送数据 转换完的数据TXD端口上 UART的设计和实现 接收模块的设计 接收模块接收串行

4、数据并将其转换为并行数据 该设计包括下面几个部分 串行数据控制器用于同步的两个计数器移位寄存器 移位寄存器保存来自RXD的数据 错误比特控制器 来自RXD串口的数据以一定的波特率被接收 所以需要有个控制器同步接收数据的采集相位 串行同步控制器的设计采用了一个状态机和两个同步计数器 在设计中 在每个接收比特数据的中间采集数据 UART的设计和实现 接收模块状态机 UART的设计和实现 接收模块状态机原理 当处于idle状态时 串行数据管脚RXD处于高电平状态 在该状态一直等待直到检测到RXD为低电平时 进入到EightDelay状态 在该状态 主要是进行同步 使得在每个比特位的中间采样数据 计数

5、器ctr比波特率快16倍 在该状态下 ctr计数到8 然后进入到WaitFor0状态 waitfor1状态跟在其后 这两个状态的转移由ctr的最高两位确定 进入到GetData状态时 开始对RXD数据进行移位 UART的设计和实现 接收模块状态机原理 这两个状态保证有足够的延迟保证读取采样数据的正中间 当计数器计数到10 8个数据位 一个奇偶位和一个停止位 然后进入到CheckStop状态 这个状态进行奇偶校验 当该状态结束后 进入到idle状态 对接收数据进行采样的时序的描述 UART的设计和实现 差错控制的实现 差错控制寄存器分析接收到的数据 并对三种错误进行判断 奇偶错 帧错误和溢出错误

6、 奇偶错误指接收数据的得到的校验和与接收到的Par不一样 当进行偶校验的时候 D0到D7的和应该是偶数 否则是奇校验 该设计中缺省设置为偶校验 当奇偶校验错误时 PE端口为高 帧错误是指UART在给定的时序没有正确的读到数据 当停止位不为1时 表示帧错误 此时FE端口为1 溢出错误是指 当前帧接收完 但还没有读时下一帧数据就到了的情况 当单字节的串行数据可读时RDA为高 移位后的并行数据放在DBOUT端口 一旦RDA端口为高 且此时数据仍在DBOUT端口时 OE溢出错误标志为高 UART的设计和实现 接收模块内各个子模块的连接关系 UART的设计和实现 发送模块的设计 发送模块接收来自DBIN

7、模块的数据 并以串行数据的发送发送到TxD端口上 发送端口的波特率和接收数据的波特率一样 接收和发送波特率的修改方式一样 为了发送存储在DBIN端口的数据 发送模块必须有一个发送控制器 两个控制数据的波特率的同步计数器和发送移位寄存器 两个计数器中的一个计数器用于延迟发送控制器 另一个计数器用来计算发送的串行数据位的个数 TXD端口和发送移位寄存器的最低位连接 UART的设计和实现 发送模块的状态机 UART的设计和实现 发送模块的状态机 UART在idel状态 当WR为高时状态发生变化 然后 发送模块加载DBIN端口的数据 下一个状态发送数据 Transfer状态准备发送移位寄存器发送数据

8、设置load 1 移位寄存器开始加载数据 其顺序是一个起始位 一个字节的DBIN数据 一个奇偶校验位和一个停止位 下一个状态进入到shift状态 在该状态下 移位信号置 1 表示移位寄存器移1 Tfincr信号也置1表示递增数据计数器 如果数据计数器不等于9 表示发送移位寄存器没有进行移位操作 此时进入delay状态 如果移位完成 此时进入WaitWrite状态 UART的设计和实现 发送模块的状态机 在delay状态下 发送数据按照正确的波特率发送数据 当tdelayctr与波特率常数一样时 结束该状态 进入到Shift状态 一旦进入到waitwrite状态 结束发送过程 在这个状态需要确认

9、WR信号为高 才能开始发送过程 UART的设计和实现 发送模块的状态机内部结构 UART的设计和实现 UART的VHDL设计代码 entityUARTcomponentisPort TXD outstd logic 1 RXD instd logic CLK instd logic DBIN instd logic vector 7downto0 DBOUT outstd logic vector 7downto0 RDA inoutstd logic TBE outstd logic 1 RD instd logic WR instd logic PE outstd logic FE out

10、std logic OE outstd logic RST instd logic 0 endUARTcomponent UART的设计和实现 UART的VHDL设计代码 architectureBehavioralofUARTcomponentistyperstateis strIdle strEightDelay strGetData strWaitFor0 strWaitFor1 strCheckStop typetstateis sttIdle sttTransfer sttShift sttDelay sttWaitWrite constantbaudRate std logic v

11、ector 12downto0 1010001011000 constantbaudDivide std logic vector 8downto0 101000110 signalrdReg std logic vector 7downto0 00000000 signalrdSReg std logic vector 9downto0 1111111111 signaltfReg std logic vector 7downto0 signaltfSReg std logic vector 10downto0 11111111111 signalclkDiv std logic vecto

12、r 9downto0 0000000000 signalctr std logic vector 3downto0 0000 signaltfCtr std logic vector 3downto0 0000 signaldataCtr std logic vector 3downto0 0000 UART的设计和实现 UART的VHDL设计代码 signalparError std logic signalframeError std logic signalCE std logic signalctRst std logic 0 signalload std logic 0 signal

13、shift std logic 0 signalpar std logic signaltClkRST std logic 0 signalrShift std logic 0 signaldataRST std logic 0 signaldataIncr std logic 0 signaltfIncr std logic 0 signaltDelayCtr std logic vector 12downto0 signaltDelayRst std logic 0 signalstrCur rstate strIdle signalstrNext rstate signalsttCur

14、tstate sttIdle signalsttNext tstate UART的设计和实现 UART的VHDL设计代码 begin Title 初始信号定义 frameError notrdSReg 9 parError not rdSReg 8 xor rdSReg 0 xorrdSReg 1 xor rdSReg 2 xorrdSReg 3 xor rdSReg 4 xorrdSReg 5 xor rdSReg 6 xorrdSReg 7 DBOUT rdReg tfReg DBIN TXD tfsReg 0 par not tfReg 0 xortfReg 1 xor tfReg 2

15、xortfReg 3 xor tfReg 4 xortfReg 5 xor tfReg 6 xortfReg 7 UART的设计和实现 UART的VHDL设计代码 Title 时钟分频计数器 process CLK clkDiv beginif CLK 1 andCLK event thenif clkDiv baudDivideorctRst 1 thenclkDiv 0000000000 elseclkDiv clkDiv 1 endif endif endprocess Title 传输延迟计数器 process CLK tDelayCtr beginif CLK 1 andCLK ev

16、ent thenif tDelayCtr baudRateortDelayRst 1 thentDelayCtr 0000000000000 elsetDelayCtr tDelayCtr 1 endif endif endprocess UART的设计和实现 UART的VHDL设计代码 Title ctr设置 process CLK beginifCLK 1 andCLK EventthenifctRst 1 thenctr 0000 elsifclkDiv baudDividethenctr ctr 1 elsectr ctr endif endif endprocess UART的设计和实现 UART的VHDL设计代码 Title 传输计数器 process CLK tClkRST beginif CLK 1 andCLK event theniftClkRST 1 thentfCtr 0000 elsiftfIncr 1 thentfCtr tfCtr 1 endif endif endprocess UART的设计和实现 UART的VHDL设计代码 Title 错误和RDA标

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号