一种基于FPGA的异步串行通信接口的制作方法

文档序号:12965297阅读:687来源:国知局
一种基于FPGA的异步串行通信接口的制作方法与工艺

本实用新型涉及一种通信接口,具体是一种基于FPGA的异步串行通信接口。



背景技术:

设计的集成电路的功能越来越强大,其设计难度和复杂程度也随之提高。现代化的集成电路是指集成了模拟和数字电路、存储器、工接口、信号采集和转换等功能与单一芯片上,同时完成信号的输入输出、采集、转换、处理、存储等功能。通过节约系统的空间和减少多个芯片之间的通信延时来提高整个系统的性能。

通用异步收发器(Universal Asynchronous Receiver Transmitter,UART)是一种广泛应用于短距离、低速、低成本通信的串行传输接口。其主要功能是接收外设传送的穿行数据转换为并行数据同时校验该数据,然后将并行数据提供给处理器处理,或者将处理器发送来的并行数据转换成串行数据同时根据串行通信协议附加上起始位、奇偶校验位以及停止位,然后从串行数据输出端发送出去。

目前大部分处理器芯片中都集成了UART功能,但是在FPGA芯片中一般没有集成UART,这增加了FPGA芯片与其他处理器间数据交换的复杂性。为提高FPGA设计的灵活性,我们可以用Verilog HDL语言编写一个具有UART功能的模块,然后把这个模块配置到FPGA芯片中,并在QuartusⅡ软件的环境下进行编译和仿真。由于FPGA的功能日益强大,开发周期短,现场可编程等一系列优点也越来越明显,将需要的UART的功能集成到FPGA内部,利用Verilog HDL语言将UART的核心功能集成,去掉一些不必要的管脚,这样即可简化电路又能提高系统可靠性以及稳定性并可以方便地对芯片进行升级或内签到各种不同的FPGA芯片中,方便快捷,使整个设计更加紧凑、稳定、可靠。因此利用自身的优点来设计设备间的串行通信接口,具有较高的使用价值和重大意义。



技术实现要素:

本实用新型的目的在于提供一种基于FPGA的异步串行通信接口以解决上述背景技术中提出的问题。

为实现上述目的,本实用新型提供如下技术方案:

一种基于FPGA的异步串行通信接口,包括波特率发生器、测试模块、发送模块和接收模块,所述波特率发生器分别连接测试模块、发送模块和接收模块,所述测试模块还连接发送模块。

作为本实用新型再进一步的方案:所述发送模块还连接接收模块。

与现有技术相比,本实用新型的有益效果是:本实用新型采用一种自顶向下的Top-Down的设计方法,在Top-Down的设计中,将设计分成几个不同层次:系统级、功能级、门级和开关级等,按照自上而下的顺序,在不同层次上,对系统进行设计预仿真。本次设计的示意图如图1。首先在系统级划分,将整个UART划分为几个模块,如波特率发生器、接收、发送模块等,对每个模块再分别进行设计与描述,然后通过EDA工具将整个设计综合为门级网表,并实现它。

附图说明

图1为本实用新型的整体结构示意图。

图2为波特率发生器原理图。

图3为波特率仿真图。

图4为发送模块原理图。

图5为发送模块仿真图。

图6为接收模块原理图。

图7为接收模块仿真图。

图8为本实用新型的电路图。

图8中:1-波特率发生器、2-测试模块、3-发送模块、4-接收模块。

具体实施方式

下面将结合本实用新型实施例中的附图,对本实用新型实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本实用新型一部分实施例,而不是全部的实施例。基于本实用新型中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本实用新型保护的范围。

请参阅图1-8,本实用新型实施例中,一种基于FPGA的异步串行通信接口,包括波特率发生器、测试模块、发送模块和接收模块,所述波特率发生器分别连接测试模块、发送模块和接收模块,所述测试模块还连接发送模块。

发送模块还连接接收模块。

本实用新型的工作原理是:波特率发生器:在异步通信的数据流中,收发双方则以预先固定的时钟速率传送各位。要有效进行异步通信,在CUP与外设通信之前,必须统一字符格式和波特率。以系统时钟50MHZ,所需要的波特率115200为例,则分频系数为27。以clk定义时钟信号的输入,经过比特率发生器,产生所需要的分频时钟,以clkout定义为输出。原理图如图2,仿真图如图3。

发送模块:异步通信的发送方和接收方之间允许没有共同的时钟,所以在异步通信中,收发双方取得同步的方法是采用在字符格式中设置起始位和停止位的办法。每一个字符传输开始总是以一个起始位为准,然后接收方和发送方保持同步。其实际的发送数据的过程是:当线路不发送数据即空闲状态状态时,线路处于高电位;当接收发送数据指令后,拉低线路一个数据的时间T,接着数据由低位到高位按照异步串行通信协议依次发送,数据发送完毕后,接着发送奇偶校验为和停止位(停止位为高电位),一帧资料发送结束。

在基于FPGA的本次设计中,我们需要先编写一个测试模块,在测试模块中,把分频器产生的分频时钟定义为输入信号,通过定义输出端口dataout,wrsig来完成发送模块的数据的输入。在发送模块,我们则必须在clk时钟的条件下,利用代码wrsigbuf<=wrsig;wrsigrise<=(~wrsigbuf)&wrsig来检测发送命令是否有效;如果发送命令有效,并且wrsigrise&&(~idle)为逻辑1,则利用if语句,来启动新的数据发送进程;并产生起始位。定义clk:UART时钟;dataout[7…0]:需要发送的数据;wrsig:发送命令,上升沿有效;idle:线路状态指示,高为线路忙,低为线路空闲;tx:发送数据信号。

其发送模块原理图如图4,仿真图如图5。

接收模块:接收数据过程是:空闲状态,线路处于高电位;当检测到线路的下降沿(线路点位有高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入数据。当检测到数据的下降沿时,表明线路上有数据进行传输,这时的计数器cnt开始计数,当计数器为8时,采样的值为第0位数据;当计数器的值为8时,采样的值为第1位数据,以此类推,进行后面6个数据的采样。如果需要进行奇偶校验,则当计数器的值为72时,采样的值即奇偶位;当计数器的值为80时,采样的值为“1”表示停止位,一帧数据接收完成。

其接收模块原理图如图6,仿真图如图7。

在波特率发生器功能实现的前提下进行数据的发送,按照数据的采样频率,在发送代码中给要发送的数据赋予正确参数。通过测试模块产生数据和发送命令,来作为发送模块的数据输入,当Wrsig的上升沿有效时并且线路为空闲时,启动数据发送命令进行数据的发送。在接收模块,当检测到线路下降沿并且原先线路为空闲,启动接收数据进程并进行接收,通过对接收到的奇偶校验位的判断,判断接收到的数据是否出错,如果没有接收到停止位,表示帧出错,并且每接收到一个数据都有一个读取数据指示rdsig。本设计在QuartusⅡ集成的软件开发环境中对其进行逻辑综合测试及仿真验证,设计是正确的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1