1 / 20
文档名称:

vhdl串口通信.doc

格式:doc   大小:1,503KB   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

vhdl串口通信.doc

上传人:916581885 2021/4/17 文件大小:1.47 MB

下载得到文件列表

vhdl串口通信.doc

文档介绍

文档介绍:VHDL串口通信
4 .UART 模块设计
UART 异步通信串口协议的VHDL实现包括3个基本模块:时钟分频、接收模块和发送模块,下面逐一介绍其实现方法。
时钟分频模块
由于UART是异步传输,没有传输同步时钟。为了能保证数据传输的正确性,UART采用16倍数据波特率的时钟进行采样。每个数据有16个时钟采样,取中间的采样值,以保证采样不会滑码或误码。一般UART一帧的数据位数为8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。
这里采用常用的数据波特率为9600bps,则所需时钟的频率为16*9600。系统时钟为50MHz,则分频系数为50000000/(16*9600) =,取整为325。
分频器实现相对简单,这里对其设计流程图不做详细介绍。只是将设计过程和结果简述如下:
首先用VHDL语言进行设计输入,,其中clk为50M系统时钟输入,clkout为325分频后时钟输出。




分频模块
然后建立波形文件,对以上模块进行时序仿真,,方正结果说明,分频输出实现了对输入的325分频,分频模块设计正确。
分频模块仿真结果
UART发送模块
发送过程:空闲状态,线路处于高电平;当受到发送数据指令后,拉低线路一个数据位的时间T,接着数据按地位到高位依次发送,数据发送完毕后,接着发送停止位(停止位为高电平),一帧数据发送结束。
模块流程图
根据以上发送过程,。
开始
wrsig=1
N
idle=0
Y
N
发送数据
Y
停止位
N
结束
Y
UART发送数据算法示意图
(2)生成模块文件
新建一原理图文件,,其中clk为时钟输入,datain为需要发送的数据输入,wrsig为发送命令输入,idle为忙闲信号输出,tx为串行数据输出端。
cnt<="00000000";
else
wrsig<='0';
cnt<=cnt+"00000001";
end if;
end if;
end process;
end one;
,单击Files → Create/Update → Create Symbol Files for Current File命令,。新建一个原理图文件,。在原理图的适当位置放置testuart模块和uarttx模块,并添加输入输出端口。
UART发送模块仿真原理图
。编译工程文件,编译无误后新建波形仿真文件,加入输入输出信号,设置系统时钟信号clk的周期为20ns,,进行UART数据发送的波形仿真,
UART发送模块仿真结果
对上图分析看出,当发送命令wrsig的上升沿有效时,启动发送数据。串行数据的波形与发送数据dataout相一致,UART的发送模块得到正确验证。
UART接收模块
UART接收模块的功能:时时检测线路,当线路产生下降沿时,即认为线路有数据传输,启动接收数据进程进行接收,按从低位到高位接收数据。
模块流程图
根据以上描述的接收模块的功能,。
开始
rx=0
N
idle=0
Y
N
接收数据
Y
停止位
N
结束
Y
接收模块算法示意图
生成模块文件
新建一原理图文件,,