欢迎来到天天文库
浏览记录
ID:5250322
大小:26.00 KB
页数:4页
时间:2017-12-07
《基于verilog hdluart模块设计和仿真》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于VerilogHDLUART模块设计和仿真 摘要:针对专用UART芯片兼容性和可移植性差的缺点,设计了一种用VerilogHDL语言描述,FPGA实现的UART模块,可有效实现微处理器和FPGA设备之间的串行数据通信,增强系统稳定性,节省开发成本。关键词:UARTFPGA串行通信VerilogHDL中图分类号:TN919.7文献标识码:A文章编号:1007-9416(2013)10-0175-01UART即通用异步收发器,是一种短距离串行传输接口,被广泛应用于微处理器和外设之间的串行通信。
2、随着FPGA芯片的广泛应用,大量数字系统中需要处理微处理器和FPGA之间的数据通信。采用专用UART集成电路芯片,可移植性和兼容性不强,会降低系统稳定性和可靠性。如果把UART集成到FPGA器件内部,利用VerilogHDL语言描述其核心功能,制作成IP核,可增强系统稳定性。另外由于FPGA设计的灵活性和可移植性,能方便地对系统进行升级。1UART的工作原理4在发送端,将并行的数字信号转化成串行信号传输给另外一台设备;在接收端,将串行信号恢复成并行信号进行数据处理。UART只需两条信号线RXD接
3、收数据、TXD发送数据和一条地线就可以完成全双工传输。由于UART是异步通讯,所以需要对数据进行同步,UART传输一帧数据时,首先发起始位低电平,接着发送D0~D78位数据和校验位,最后发送停止位的高电平。串行数据发送时,由系统时钟分频得到波特率发生时钟,在其控制下将数据总线上的内容,加上起始位和停止位进行移位发送。接收时,需要一个远高于波特率的时钟信号对RXD不断取样,以保持接收器和发送器同步。在设计中,由系统时钟分频产生一个16倍于波特率的频率,即把一个位的数据分成16份。当检测到起始位的下
4、降沿时,开始进行数据采样。采样的数据为一个位的第6,7,8三个状态,三个中取两个以上相同的值作为采样的结果,以避免干扰。当起始位的采样结果不是0时就判定为接收为错,把串行数据接收控制器的位计数器复位。当接收完数据后进行数据的输出,并把串行数据接收控制器的位计数器复位,等待下一数据的到来。2UART的实现2.1发送模块的实现发送模块用于将并行数据转换成串行数据发送。用Verilog4HDL语言编程时,分三个进程设计:波特率产生进程、读数据缓存进程和发送进程。波特率产生进程将系统时钟分频得到波特率时
5、钟;读数据缓存进程读入并行数据,加上起始位和停止位组成一帧数据;发送进程将数据移位输出,并设定中断标志。本模块输入端口有:写使能信号WR,并行八位数据Datain,系统时钟clk。输出端口有:串行数据控制时钟clkout,串行数据输出TXD,中断标志位TI。2.2接收模块的实现接收模块接收来自外部的串行数据,进行数据采集,根据配置去除数据的起始位、停止位和奇偶校验位,将其转换成并行的八位数据输出,并输出中断标志位。程序设计时,用两个进程实现。16倍波特率发生进程将系统时钟分频,产生一个16倍于波
6、特率的时钟频率,用于数据采样;接收进程进行数据采集、数据接收和产生中断标志。本模块输入端口有:输入串行数据信号RXD,系统时钟clk。输出端口有:中断标志位RI,数据控制时钟输出clk_out,并行数据输出Dataout。3UART模块仿真仿真采用Altera公司的QuartusII软件,设定波特率时钟为系统时钟5000次分频得到。发送模块仿真时,设置并行八位输入数据Datain为为:“01010101”。WR写使能信号高电平有效后,将数据加上起始位0和停止位1串行输出。数据传输完毕,TI中断标
7、志置1。4接收模块仿真结果如图3.1所示。在输入一个低电平起始位后,串行输入八位数据“10100000”。输出clkout为系统时钟的312分频,即波特率时钟频率的16倍。RI为中断信号,在经过十个数据,即160个clkout之后,输出为1,表示1帧数据转换结束。Dataout为并行输出,输出结果从低位到高位为:“10100000”,与串行数据一致,转换结果正确。4结语作为一种异步串行通信接口,UART因其传输线少,可靠性高,被广泛使用于系统设备之间的数据通信。本文采用VerilogHDL语言实
8、现了UART的发送和接收功能,将此IP核集成到FPGA上,可解决传统UART芯片兼容性差的缺点,使系统更加紧凑可靠。参考文献[1]谭月杰.在CPLD中用UART逻辑实现高速异步串行通信[J].电气应用,2006(2):55~56.[2]马游春,王文杰,李锦明.基于FPGA和UART接口的多路数据采集系统的实现[J].火力与指挥控制,2010(9):134~136.[3]李海平,孔祥成.FPGA的UART设计和实现[J].中国科学院研究生院学报,2010(2):199~203.4
此文档下载收益归作者所有