欢迎来到天天文库
浏览记录
ID:38984257
大小:165.52 KB
页数:18页
时间:2019-06-23
《VHDL串口通信》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、4.UART模块设计UART异步通信串口协议的VHDL实现包括3个基本模块:时钟分频、接收模块和发送模块,下面逐一介绍其实现方法。4.2.1时钟分频模块由于UART是异步传输,没有传输同步时钟。为了能保证数据传输的正确性,UART采用16倍数据波特率的时钟进行采样。每个数据有16个时钟采样,取中间的采样值,以保证采样不会滑码或误码。一般UART一帧的数据位数为8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。这里采用常用的数据波特率为9600bps,则所需时钟的频率为16*9600。系统时钟为50MHz,则分频系数为50000000/(16*960
2、0)=325.52,取整为325。分频器实现相对简单,这里对其设计流程图不做详细介绍。只是将设计过程和结果简述如下:首先用VHDL语言进行设计输入,并生成模块文件如图4.3所示,其中clk为50M系统时钟输入,clkout为325分频后时钟输出。图4.3分频模块然后建立波形文件,对以上模块进行时序仿真,仿真结果如图4.4所示,方正结果说明,分频输出实现了对输入的325分频,分频模块设计正确。图4.4分频模块仿真结果4.2.2UART发送模块发送过程:空闲状态,线路处于高电平;当受到发送数据指令后,拉低线路一个数据位的时间T,接着数据按地位到高位依次发送,数据发送完
3、毕后,接着发送停止位(停止位为高电平),一帧数据发送结束。(1)模块流程图根据以上发送过程,发送模块算法示意图设计如图4.5所示。开始wrsig=1Nidle=0YN发送数据Y停止位N结束Y图4.5UART发送数据算法示意图(2)生成模块文件新建一原理图文件,将VHDL源文件生成对应的模块文件如图4.6所示,其中clk为时钟输入,datain为需要发送的数据输入,wrsig为发送命令输入,idle为忙闲信号输出,tx为串行数据输出端。图4.6UART发送模块(3)波形仿真要对发送模块进行时序仿真必须设计一测试模块,即在每一个clk来时产生一个八位的数据。测试模块代
4、码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitytestuartisport(clk:instd_logic;dataout:outstd_logic_vector(7downto0);wrsig:outstd_logic);endtestuart;architectureoneoftestuartissignaldataoutreg:std_logic_vector(7downto0);signa
5、lcnt:std_logic_vector(7downto0);begindataout<=dataoutreg;process(clk)beginif(clk'eventandclk='1')thenif(cnt="11111110")thendataoutreg<=dataoutreg+"00000001";wrsig<='1';cnt<="00000000";elsewrsig<='0';cnt<=cnt+"00000001";endif;endif;endprocess;endone;保存文件为testuart.hdl,单击Files→Create/Upd
6、ate→CreateSymbolFilesforCurrentFile命令,为testuart.hdl生成原理图模块。新建一个原理图文件,各个模块的连接如图4.7所示。在原理图的适当位置放置testuart模块和uarttx模块,并添加输入输出端口。图4.7UART发送模块仿真原理图保存原理图为uarttxts.bdf。编译工程文件,编译无误后新建波形仿真文件,加入输入输出信号,设置系统时钟信号clk的周期为20ns,保存波形文件为uarttxts.vwf,进行UART数据发送的波形仿真,波形仿真报告如图4.8所示图4.8UART发送模块仿真结果对上图分析看出,当
7、发送命令wrsig的上升沿有效时,启动发送数据。串行数据的波形与发送数据dataout相一致,UART的发送模块得到正确验证。4.2.3UART接收模块UART接收模块的功能:时时检测线路,当线路产生下降沿时,即认为线路有数据传输,启动接收数据进程进行接收,按从低位到高位接收数据。(1)模块流程图根据以上描述的接收模块的功能,可将接收模块算法示意图设计如图4.9所示。开始rx=0Nidle=0YN接收数据Y停止位N结束Y图4.9接收模块算法示意图(1)生成模块文件新建一原理图文件,将VHDL源文件生成对应的模块文件如图4.10所示,其中clk为时钟输入,rx为需要
8、串行数据输
此文档下载收益归作者所有