VHDL串口通信文档格式.docx

上传人:b****5 文档编号:16083268 上传时间:2022-11-18 格式:DOCX 页数:16 大小:94.31KB
下载 相关 举报
VHDL串口通信文档格式.docx_第1页
第1页 / 共16页
VHDL串口通信文档格式.docx_第2页
第2页 / 共16页
VHDL串口通信文档格式.docx_第3页
第3页 / 共16页
VHDL串口通信文档格式.docx_第4页
第4页 / 共16页
VHDL串口通信文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

VHDL串口通信文档格式.docx

《VHDL串口通信文档格式.docx》由会员分享,可在线阅读,更多相关《VHDL串口通信文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

VHDL串口通信文档格式.docx

4.2.2UART发送模块

发送过程:

空闲状态,线路处于高电平;

当受到发送数据指令后,拉低线路一个数据位的时间T,接着数据按地位到高位依次发送,数据发送完毕后,接着发送停止位〔停止位为高电平〕,一帧数据发送结束。

(1)模块流程图

根据以上发送过程,发送模块算法示意图设计如图4.5所示。

开始

wrsig=1

N

idle=0

Y

发送数据

停止位

结束

 

图4.5UART发送数据算法示意图

〔2〕生成模块文件

新建一原理图文件,将VHDL源文件生成对应的模块文件如图4.6所示,其中clk为时钟输入,datain为需要发送的数据输入,wrsig为发送命令输入,idle为忙闲信号输出,tx为串行数据输出端。

图4.6UART发送模块

〔3〕波形仿真

要对发送模块进行时序仿真必须设计一测试模块,即在每一个clk来时产生一个八位的数据。

测试模块代码如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_arith.all;

useieee.std_logic_unsigned.all;

entitytestuartis

port(clk:

instd_logic;

dataout:

outstd_logic_vector(7downto0);

wrsig:

outstd_logic

);

endtestuart;

architectureoneoftestuartis

signaldataoutreg:

std_logic_vector(7downto0);

signalcnt:

std_logic_vector(7downto0);

begin

dataout<

=dataoutreg;

process(clk)

begin

if(clk'

eventandclk='

1'

)then

if(cnt="

11111110"

)then

dataoutreg<

=dataoutreg+"

00000001"

;

wrsig<

='

cnt<

="

00000000"

else

0'

=cnt+"

endif;

endprocess;

endone;

保存文件为testuart.hdl,单击Files→Create/Update→CreateSymbolFilesforCurrentFile命令,为testuart.hdl生成原理图模块。

新建一个原理图文件,各个模块的连接如图4.7所示。

在原理图的适当位置放置testuart模块和uarttx模块,并添加输入输出端口。

图4.7UART发送模块仿真原理图

保存原理图为uarttxts.bdf。

编译工程文件,编译无误后新建波形仿真文件,加入输入输出信号,设置系统时钟信号clk的周期为20ns,保存波形文件为uarttxts.vwf,进行UART数据发送的波形仿真,波形仿真报告如图4.8所示

图4.8UART发送模块仿真结果

对上图分析看出,当发送命令wrsig的上升沿有效时,启动发送数据。

串行数据的波形与发送数据dataout相一致,UART的发送模块得到正确验证。

4.2.3UART接收模块

UART接收模块的功能:

时时检测线路,当线路产生下降沿时,即认为线路有数据传输,启动接收数据进程进行接收,按从低位到高位接收数据。

根据以上描述的接收模块的功能,可将接收模块算法示意图设计如图4.9所示。

rx=0

接收数据

图4.9接收模块算法示意图

(2)生成模块文件

新建一原理图文件,将VHDL源文件生成对应的模块文件如图4.10所示,其中clk为时钟输入,rx为需要串行数据输入,dataout为并行输出,rdsig为忙闲信号输出。

图4.10UART接收模块

〔3〕波形仿真

新建一个原理图文件,加入各功能模块,并添加输入输出端口,各个模块的连接如图4.11所示。

图4.11UART接收模块仿真原理图

保存原理图为uartrxts.bdf。

编译工程文件,编译无误后新建波形仿真文件,加入输入输出信号,设置系统时钟clk为50MHz,保存为uartrxts.vwf,进行UART数据接收的波形仿真,波形仿真报告如图4.12所示。

图4.12UART接收模块仿真结果

对上图分析看出,UART接收模块接收到的数据与UART发送模块发送的数据相一至,每接收到一个数据都有一个读取数据指示rdisg,UART接收模块得到正确验证。

4.2.3硬件测试

按照下列图连接个模块,在PC机上安装一个串口调试工具,通过串口调试工具向FPGA发送一个数据,看在PC机上能否接受到发送的数据。

测试结果如下

附录:

程序代码

UART分频模块代码:

entityclkdivis

port(

clk:

clkout:

outstd_logic

endclkdiv;

architectureoneofclkdivis

signalcnt:

std_logic_vector(15downto0);

0000000010100010"

clkout<

0000000000000001"

elsif(cnt="

0000000101000100"

0000000000000000"

UART发送模块代码:

entityuarttxis

clk:

instd_logic;

datain:

instd_logic_vector(7downto0);

idle:

outstd_logic;

tx:

enduarttx;

architectureoneofuarttxis

signalsend:

std_logic;

signalwrsigbuf:

signalidlereg:

signalwrsigrise:

idle<

=idlereg;

------------------------------------------------------

wrsigbuf<

=wrsig;

wrsigrise<

=(notwrsigbuf)andwrsig;

----------------------------------------------------------

if(wrsigrise='

and(notidlereg='

))then

send<

10100000"

--------------------------------------------------------

if(send='

casecntis

when"

=>

tx<

idlereg<

00010000"

=datain(0);

00100000"

=datain

(1);

00110000"

=datain

(2);

01000000"

=datain(3);

01010000"

=datain(4);

01100000"

=datain(5);

0111000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1