微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于FPGA的UART接口模块设计

基于FPGA的UART接口模块设计

时间:09-21 来源:互联网 点击:

结束后EMPTY变为有效。

图3 发送数据的仿真波形

2.2 接收模块设计

UART接口模块由接收控制进程、读数据进程、接收数据串/并转换进程、状态操作进程等进程构成。

在接收控制进程中同样声明了一个6比特的变量scir_v,由它的取值(状态机)状态来控制整个接收过程。其控制过程同发送模块相似,这里不再赘述。下面给出的是接收数据进程的源代码:

----接收行数据的串/转换进程---

PROCESS(clk,reset)

BEGIN

IF(reset=0')'THEN

d_fb=00000000;

ELSIF(clkE'VENTANDclk=0')'THEN

IF((sh_r>=1000)AND(sh_r=

1111)AND(sl_r=01))THEN

d_fb(7)=rxd;

FORiIN0TO6LOOP

d_fb(i)=d_fb(i+1);--d_fb(0)被移

出;d_fb(7)被移空

ENDLOOP;

ENDIF;

ENDIF;

ENDPROCESS;

图4给出的是接收数据的仿真图。当rxd出现低电平后便启动一次接收过程,当8比特的数据接收完毕后,rxd变为高电平,同时将RDFULL信号置为高电平有效,RDFULL有效表示接收寄存器已经存储了一个刚刚接收到的数据,当CS和RD有效时将数据(实际接收到的数据是2AH)读出,同时RDFULL被置成无效状态。

图4 接收数据的仿真波形

2.3 波特率发生器模块

波特率发生器实际是一个分频器,分频器的输出连接到SCI的CLK输入端,且应为实际波特率的4倍频。因为在发送和接收控制进程中,状态机由一个6比特的寄存器(cit_v、cir_v)的高4位(sh_r、sh_t)进行控制,而高4位的状态改变需要4个CLK时钟(低2位向高4位进位)。当SCI与SCI进行通信时,通信双方波特率选择一致即可,当SCI同MCU通信时,SCI的波特率选择同MCU定时器的溢出率即可,当SCI需要同PC通信时,才将SCI的波特率定制成:1.2Kbps,2.4Kbps,4.8Kbps直到115.2Kbps,这时要求SCI的晶体振荡频率要足够高来满足波特率的匹配,或采用(11.0592或22.1184MHz)的特殊晶体来满足特率的匹配要求。

3 结论

将SCI下载到EPF10K10芯片中,40MHz有源晶振没有进行分频直接驱动SCI模块,用ICL57176进行RS485转换,用100m的网线进行了SCI与SCI之间全双工通信。测试结果表明波特率达到10Mbps时通信是正确的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top