VHDL串口通信Word格式.docx

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

VHDL串口通信Word格式.docx

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

VHDL串口通信Word格式.docx

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

 

图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所示。

图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);

00010"

clkout<

00001"

elsif(cnt="

00100"

00000"

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);

01110000"

=datain(6);

10000000"

=datain(7);

10010000"

whenothers=>

endcase;

UART接收模块代码:

entityuartrxis

rx:

outstd_logic_vector(7downto0);

rdsig:

enduartrx;

architectureoneofuartrxis

signalrdsigreg:

std_logic;

signalrxbuf:

signalrxfall:

signalreceive:

signalidle:

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

rxbuf<

=rx;

if(rxbuf='

andrx='

rxfall<

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

if(rxfall='

andidle='

)then

receive<

elsif(cnt="

10011000"

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

process(clk)

if(receive='

casecntis

=>

rdsig<

00011000"

dataout(0)<

00101000"

dataout

(1)<

00111000"

dataout

(2)<

01001000"

dataout(3)<

01011000"

dataout(4)<

01101000"

dataout(5)<

01111000"

dataout(6)<

10001000"

dataout(7)<

--when"

--idle<

--cnt<

--rdsig<

whenothers=>

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

UART测试模块代码:

---signalwrsig:

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

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

当前位置:首页 > 工程科技 > 兵器核科学

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

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