基于Verilog_HDL的UART串行通讯模块设计及仿真.pdf
《基于Verilog_HDL的UART串行通讯模块设计及仿真.pdf》由会员分享,可在线阅读,更多相关《基于Verilog_HDL的UART串行通讯模块设计及仿真.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机与现代化2008年第8期J ISUANJ I YU XI ANDA IHUA总第156期文章编号:100622475(2008)0820011205收稿日期:2007206220基金项目:山西省留学人员科研资助项目(2004226)作者简介:扈华(19812),男,内蒙古巴彦淖尔人,太原理工大学计算机与软件学院硕士研究生,研究方向:计算机监控系统;白凤娥(19662),女,山西临县人,教授,研究方向:计算机监控系统,嵌入式系统。基于Verilog2HDL的UART串行通讯模块设计及仿真扈 华,白凤娥(太原理工大学计算机与软件学院,山西 太原030024)摘要:UART协议是数据通信及控制
2、系统中广泛使用的一种全双工串行数据传输协议,在实际工业生产中有时并不使用UART的全部功能,只需将其核心功能集成即可。波特率发生器、接收器和发送器是UART的三个核心功能模块,利用Verilog2HDL语言对这三个功能模块进行描述并加以整合,通过Modelsim仿真,其结果完全符合UART协议的要求。关键词:UART;串行通讯;Verilog2HDL;Modelsim;仿真中图分类号:TP311 文献标识码:ADesign and Simulation of UART Serial Commun ication M odule Based on Verilog2HDLHU Hua,BA I F
3、eng2e(Computer and Software College,Taiyuan University of Technology,Taiyuan 030024,China)Abstract:The protocol of the UART,a full2duplex data trans mission protocol,iswidely used in data communication and controlsystems.In the industry,it dose not use all the functionsof theUART but the core.There
4、are three kernel functionalmodules inUARTwhich consists of baud rate generator,receiver and transmitter.By using the Verilog2HDL to describe the three kernelfunctionalmodules of the UART,making them as a whole and si mulating them with the Modelsim,the results of the simulationare completely consist
5、entwith the UART protocol.Key words:UART;serial communication;Verilog2HDL;Modelsim;simulation0 引 言UART(UniversalAsynchronous Receiver Transmit2ter)协议是一种串行数据传输协议。UART允许在串行链路上进行全双工通信,在数据通信及控制系统中得到了广泛运用。8250、NS16450等芯片都是常见的UART器件,这类芯片具有多种功能,还有许多辅助模块(如FIFO),但在实际应用中有时只需要使用UART的部分功能,因而会造成一定的资源浪费1。使用Verilo
6、g2HDL将所需要的UART的核心功能集成到FPGA/CPLD内部,就可以实现紧凑、稳定且可靠的UART数据传输。基本的UART通信只需要两条信号线(RxD,TxD)就可以完成数据的全双工通信任务。TxD是UART发送端,为输出;RxD是UART接收端,为输入2。UART的基本特点是:在信号线上共有两种状态,分别用逻辑1(高电平)和逻辑0(低电平)来区分。例如,在发送器空闲时,数据线保持在逻辑高电平状态,发送器是通过发送起始位来开始一个数据帧的传送,起始位使数据线处于逻辑0状态,提示接收器数据传输即将开始。接着发送数据位,数据位一般为8位一个字节的数据(也有5位、6位或7位的情况),低位(LS
7、B)在前,高位(MSB)在后。然后发送校验位,校验位一般用来判断传输的数据位有无错误,一般是奇偶校验。在使用中,该位常取消。停止位在最后,用以标识数据传送的结束,它对应于逻辑1状态。UART的帧格式包括起始位(start bit,低电平)、58位数据位(data bits)、校验位(parity bit,可选)和停止位(stop bit,位数可为1、1.5、2位)。这种格式是由起始位和停止位来实现字符的同步3,如图1所示。12计 算 机 与 现 代 化2008年第8期图1UART的帧格式1UART的实现比较复杂的数字电子系统的设计往往采用自顶向下(Top2Down)的方法,即首先把设计任务划分
8、成几个模块,然后分模块进行设计4。本文所介绍的UART串行通讯模块由3个子模块组成:波特率发生器、接收模块和发送模块,如图2所示。所以对UART通讯模块的实现就是对组成UART的三个子模块(即:波特率发生器、接收模块及发送模块)的实现。波特率发生器专门产生一个本地时钟信号来控制UART的接收与发送;UART接收模块的用途是接收RxD端的串行信号,并将其转化为并行数据;UART发送模块的用途是将准备输出的并行数据按照基本UART帧格式转为串行数据从TxD端串行输出。图2UART的三个子模块1.1波特率发生器模块的实现1.波特率发生器模块的实现原理。波特率发生器实际上就是分频器,可以根据给定的系统
9、时钟频率(晶振时钟)和要求的波特率算出波特率分频因子,把算出的波特率分频因子作为分频器的分频系数。假设系统的时钟频率为10MHz,而要求的波特率为9600bps,因此要设计分频模块,把10MHz的时钟脉冲变为9600Hz的时钟脉冲。故设要求的波特率因子为M,则M=10MHz9600Hz=10422.波特率发生器模块实现的流程。波特率发生器模块实现的流程如图3所示。3.波特率发生器模块实现的源代码。Module CNT(CLK,D I V_CLK,reset);input CLK,reset;/输入信号:时钟信号CLK与复位信号resetreg 10:0H;/计数器H,用来记录输入时钟信号的跳变
10、数reg num;/寄存器num,用来存放将要输出的电平信号outputD I V_CLK;/输出信号always (posedge CLK or posedge reset)beginif(reset)/复位信号到来,进行模块初始化beginH =0;图3 波特率发生器模块实现的流程图num =0;endelseif(H=1041)/当计数器计数值为1041时,计数器清0,准备进行新一次的计数H =0;elsebeginif(H 521)/当计数器的值小于521时,输出为低电平num =0;else/当计数器的值大于521时,输出为高电平num =1;H =H+1;endendassign
11、D I V_CLK=num;endmodule4.波特率发生器模块实现的仿真结果。波特率发生器模块实现的仿真结果如图4所示。图4 波特率发生器模块实现的仿真图2008年第8期扈华等:基于Verilog2HDL的UART串行通讯模块设计及仿真131.2接收模块的实现1.接收模块的实现原理。UART通讯模块是从RxD端接收数据的,RxD端由逻辑1跳变为逻辑0可视为一个数据帧的开始,所以接收模块首先要判断起始位。当UART接收模块复位后,接收模块一直在等待RxD的电平跳转。当RxD电平从逻辑1变为逻辑0,即起始位到来,意味着新的UART数据帧的开始,一旦检测到起始位,就从起始位的下一位开始对UART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Verilog_HDL UART 串行 通讯 模块 设计 仿真
限制150内