您的位置 首页 被动

使用FPGA完成外设通讯接口之: 典型实例-RS-232C(UART)接口的规划与完成

本节旨在通过分析UART控制器,设计实现了FPGA通过RS-232C接口与PC机的通信。设计过程中用Modelsim对UART控制器进行仿真,帮助读者进一步了解UART协议的具体时序。

10.6典型实例16:RS-232C(UART)接口的规划与完结

10.6.1实例内容及方针

1.实例的首要内容

本节旨在经过剖析UART操控器,规划完结了FPGA经过RS-232C接口与PC机的通讯。规划进程顶用Modelsim对UART操控器进行仿真,协助读者进一步了解UART协议的具体时序。

2.实例方针

经过本实例,读者应到达以下方针。

·了解UART作业原理和时序。

·了解Modelsim仿真的流程。

·熟练把握状况机的运用。

·完结FPGA与PC机之间的RS-232C接口通讯。

10.6.2实例详解

体系上电复位后,先将20个数写入FPGA内部资源BlockRam(可以用IP核来完结),然后依据设定的协议(该协议可自己设定)来树立PC机与FPGA的通讯,此处设定的协议如下。

PC机要从串口读取数据时,先从串口发送E4H、00H。E4H代表FPGA的地址(可以随意设定一个数),00H表明要读取数据。FPGA收到这两个数据后,经过串口给PC机反应信号。发送E4H、E1H,表明FPGA现已收到了PC机的指令,要开端向PC机发送数据。PC端预备接纳数据,树立了此衔接后,PC机可从FPGA读出开端写入BlockRam中的值了。

10.6.3BlockRAM的完结办法

关于BlockRam,可以直接使用IP核来完结,具体完结进程如下。

首先为工程增加新的规划文件,挑选“NewSource…”,如图10.23所示。

图10.23新建IP核规划文件

在弹出的对话框里边挑选创立IP(CoreGenArchitectureWizard)类型文件,并为该文件设置文件名及途径,单击“Next”按钮,如图10.24所示。

图10.24挑选IP核类型

在挑选IP核类型对话框中挑选“DualPortBlockMemory6-1”,即可生成一个双口RAM。单击“Next”按钮进入双口RAM设置导游,如图10.25所示。

在该导游中,要对该双口RAM的特点进行设置。

图10.25双口BlockMemory设置导游

如图10.25所示,WidthA、WidthB分别为写入两个口的数据的位数,Depth为容量,在这儿设为100,实践中只用到20个。对A口,上电复位后,就将20个数据写入A口,因而A口设为WriteOnly,关于B口,FPGA向PC机发送数据时从B口读取数据,因而B口设为ReadOnly,设置结束后单击“Generate”按钮即可。

10.6.4FPGA代码的规划完结

整个代码选用了4个状况机来完结,其间两个状况机用于从串口读取数据,别的两个用于向串口写入数据。下面以从串口读取数据为例来阐明状况机的作业进程。

从串口读取数据的两个状况机首要完结如下功用:从串口接纳到字符,并判别是不是E4H、00H(自定协议规则的内容),假如是,就给出Response(应对)信号,告诉发送数据状况机开端向PC机发送数据。

这两个状况机,一个为主状况机,用于接连从串口读取数据;一个为辅状况机,用于从串口读取一个字节的数据。因为串口接纳数据是一位一位地接纳,该状况机就操控从串口接纳一切位,并将成果存入一个8位的寄存器。

当辅状况机接纳到一个字符后,就给主状况机一个Received_char信号。主状况机判别是不是E4H信号,假如是,就跳到下一个状况,等候辅状况机接纳下一个字符;假如下一个接纳到的字符是00H,那么就给出Response信号。

体系状况图如图10.26所示。

图10.26体系状况图

状况机描绘是一种非常好的办法,用户可在此基础上加以修正,用于自己的实践规划傍边。单个字符接纳的状况机如图10.27所示。

图10.27单字符接纳状况机

关于发送数据的两个状况机,其作业机理与上面相同,不再赘述。具体规划参阅实例代码。

10.6.5波特率的设定

串口通讯必需要设定波特率。本规划中选用的波特率为9600kbit/s,选用的时钟为50MHz,相当于传送一位数据需要约5028个时钟周期。这儿选用减法计数器来操控,即计数器计到5028个时钟周期后,就开端传输下一位数据(也可以经过对时钟分频来完结)。

10.6.6ModelSim仿真验证

FPGA从串口接纳数据仿真成果,如图10.28所示。

图10.28从串口接纳数据仿真成果

rxd为模仿PC机宣布的E4H、00H信号。从图中可以看到,当FPGA收到这两个信号后,给出了Response脉冲。发送状况机收到该信号后,给出txd的低电平信号,告诉PC机要开端发送数据了。

如图10.29所示,txd为FPGA向PC机发送的数据。发送状况机收到Response信号后,给出txd低电平信号,开端发送数据。先发送应对信号E4H、E1H,之后开端发送开端写入BlockRam的20个数,从0~19。图中raddr为BlockRam的地址,rdata为从BlockRam中读取的数据。

图10.29SDRAM操控器仿真成果

在仿真时,为了显现便利,没有依照5028个时钟传输一位,而是4个时钟就传输一位。

10.6.7小结

本节对数字体系中常用的UART操控器做了开始的介绍,并在Modelsim中完结了对SDRAM操控器的仿真,最终经过编译下载在赤色飓风的开发板上完结了预订功用。

经过这个实例,读者可以把握UART操控器以及RS-232C接口的规划完结办法,并学会将这个操控器集成到更为杂乱的规划中去。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/194167.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部