实例分析EDA技术下的通用异步收发器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实例分析EDA技术下的通用异步收发器设计
数据通信系统中,通过串行通信来达到交换信息数据的目的是经常采用的方式。
异步串行通信要求的传输线少,可靠性高,传输距离远,被广泛应用于PC机和外设的数据交换。
通常都由通用异步收发器UART(Universal Asynchronous Receiver/Transmitter)来实现该功能。
同时在电子设计领域中,SOC片上系统技术日趋成熟,设计者可以在单块或极少数的几块芯片中实现整个系统的功能,将UART的功能模块集成到可编程逻辑器件FPGA (Field Programmable Gate Array)中。
利用EDA(Electronic Design Automation)技术优点来设计串行通信接口,不仅可以直观的让同学们了解到数据链路层的工作原理,还可以在分工协作中深刻领会EDA技术在网络通信中的实际应用。
1 UART工作原理和流程
通过对UART工作原理的分析,我们把整个系统模块可划分波特发生器,內核,信号检测器,移位寄存器,奇偶校验器,总线选择器和计数器等。
UART的工作流程可以分为发生和接收两个过程。
1.1 接收过程
当UART信号监测器模块的输入口侦测到数据时,即输入口由高电平变为低电平,UART读取串行数据并且将数据并行输给计算机。
首先UART内核会重置波特率发生器和移位寄存器,并且设置移位寄存器的时钟为波特率时钟,以准备接收串行数据。
接着,移位寄存器模块在波特率时钟的驱动下,不断读取串行总线的输入数据,并将串行数据保存在内部的寄存器中。
接收完毕,UART内核会对已接收的数据进行奇偶校验并输出校验结果。
同时,UART内核会复位信号监测器,以准备进行下一次数据接收。
1.2 发送过程
由加载Load和发送Send两个部分组成,如图3所示。
加载是内核依串行发送的顺序将起始位、数据位和奇偶校验位依次加载到移位寄存器内,这个过程移位寄存器工作在系统时钟下,相对于外部总线传输速度来说非常快。
完成加载后,内核
会复位波特率发生器,并且指示移位寄存器工作在波特率模式下,移位寄存器便在波特率时钟下依次将加载的数据发送到发送口。
2 UART奇偶校验位发生器的设计
奇偶校验位发生器的功能:(1)依据奇偶校验规则(奇校验ODD,偶校验EVEN)的选定和输入的串行二进制数据,计算出校验位并与输入的串行数据的校验位比较来判断数据的正误;(2)根据校验规则为由计算机发来的并行数据,添加校验位。
利用modelsim软件对上述奇偶校验位发生器进行功能仿真,由仿真结果知,此模块设计正确,其功能满足设计要求。
3 UART波特率发生器模块的设计
波特率发生器分别为数据接收和发送过程中的计数器以及串行数据发送过程中的移位寄存器提供时钟。
本文采用9600 bit/s的波特率发送和接收串行数据。
波特率发生器的功能是产生和RS-232通信所采用的波特率同步的时钟,这样才能正确无误地按照RS-232串行通信的时序要求进行数据发送或者接收。
若要得到占空比为50%的波特率时钟,只要让计数器在计数到5208×50%=2604时输出高电平,之后在计数到5208时,输出置低电平并且重新计数,就能实现和9600 bit/s 同步的时钟。
4 UART顶层模块的设计
顶层模块用来实现收发内核和各模块之间的连接,接口定义如表1所示。
在波特率为9600 bit/s下,对UART进行发送功能仿真,得到数据发送的仿真结果如图4所示。
图中表明,TOTAL_BIT表示总数据位数,由计算机发送给UART的等待从TxD口发送的数据send_bus是01010101,由send信号触发后,TxD输出001010101,其中第一位是起始位,中间的八位是send_bus,TxD发送完成后输出指示信号send_over。
RxD上的数据为010*******,其中起始位为0,之后是10101010。
recv_buf最终变为了10101010,接收完成后recv会输出保持一个时钟周期的高电平。
5 结语
本文通过基于FPGA的UART的设计,实现了异步串行通讯的基本功能,并通过modelsim仿真软件进行了功能仿真。
本设计具有较大的灵活性,在实际运用中可根据外部设备的具体要求,调整波特率发生器模块的分频参数、设置不同的数据帧格式和校验方式等。
通过采用自顶向下的设计方法,首先进行立题分析,然后对各个模块进行分解,交给同学们分组完成。
通过这种方法,不仅大大加深了同学们对数据链路层、奇偶校验和波特率设置的概念理解,而且也让同学们对EDA技术在实际通信网络中的应用有了直观的认识,通过这样的教学方法,把EDA技术与信息网络课程的教学更紧密结合起来,在实际教学中起到了良好的效果。
参考文献
[1] William Stallings,著.数据与计算机通信[M].王海,张娟,譯.电子工业出版社,2004.
[2] 潘松,黄继业.EDA技术实用教程[M].北京:科学出版社,2010.
[3] 康华光.电子技术基础数字部分[M].5版.北京:高等教育出版社,2006.
[4] 周荷琴,吴秀清.微型计算机原理与接口技术[M].4版.合肥:中国科学技术大学出版社,2008.。