基于FPGA的UART模块设计(2020年8月).doc

上传人:xiang****la438 文档编号:141030668 上传时间:2020-08-03 格式:DOC 页数:18 大小:213.35KB
返回 下载 相关 举报
基于FPGA的UART模块设计(2020年8月).doc_第1页
第1页 / 共18页
基于FPGA的UART模块设计(2020年8月).doc_第2页
第2页 / 共18页
基于FPGA的UART模块设计(2020年8月).doc_第3页
第3页 / 共18页
基于FPGA的UART模块设计(2020年8月).doc_第4页
第4页 / 共18页
基于FPGA的UART模块设计(2020年8月).doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《基于FPGA的UART模块设计(2020年8月).doc》由会员分享,可在线阅读,更多相关《基于FPGA的UART模块设计(2020年8月).doc(18页珍藏版)》请在金锄头文库上搜索。

1、一 寸 光 阴 不 可 轻编号 基于FPGA的UART模块设计与实现Design and Realization of UART based on FPGA学 生 姓 名周大勇专 业控制科学与工程学 号S120400525指 导 教 师杨晓慧学 院电子信息工程学院二一三年六月 14摘 要UART因其可靠性高,传输距离远,线路简单,同时UART作为RS232协议的控制接口,从而成为比较广泛的串行数据通信电路,而现在大部分集成电路通信用的UART芯片,存在成本高,电路复杂,移植性较差等缺点,本文提出了一种将UART的功能集成在FPGA芯片中,可使整个系统更为灵活、紧凑,减小整个电路的体积,提高系统

2、的可靠性和稳定性。本模块功能全部基于verilogHDL硬件描述语言。关键词:FPGA, UART ,verilogHDL ,RS232 ABSTRACTUART, because of its high reliability, long transmission distance and the simple line, moreover mainly used in communication between device with RS232 interface. Thus it is becoming more extensive serial data communication

3、circuit. But now most of the integrated UART chips used in communications, have faults of high cost and poor portability. The circuit of the chip is complex. This paper presents a method that UART function will be integrated in FPGA chip, It can makesystem more compact, flexible, reliable and stable

4、. All functions of module are based on verilogHDL hardware description language.Keywords: FPGA, UART, verilogHDL, RS232目 录第一章 绪 论通用异步收发器(universal asynchronous receiver transmitter, UART)尽管自20世纪70年代就已出现,但因其简单可靠,目前仍是一种使用广泛的串行通信接口。各种微处理器,不论是单片机,还是DSP、ARM,UART都是基本外围模块。一般UART由专用芯片来实现,但专用芯片引脚都较多,内含许多辅助功能

5、,在实际使用时往往只需要用到UART的基本功能,使用专用芯片会造成资源浪费和成本提高。本文提出一种基于FPGA的UART模块设,本文设计的UART符合RS232串行通信标准。当我们不需要用到完整的的UART功能和一些辅助功能时,就可以将需要的UART功能集成用FPGA来实现,然而,FPGA内部并不拥有CPU控制单元,无法处理由UART控制器产生的中断,所以FPGA不能利用现成的UART控制器构成异步串行接口,必须将UART控制器的功能集成到FPGA内部。从而可以大大的减少了体积、简化了电路,也提高了系统的灵活性。第二章 UART 简介UART是广泛使用的串行数据传输协议2。基本的UART通信只

6、需要2根信号线(RXD、TXD)就可以完成数据的相互通信,接收与发送都是全双工形式。RXD是UART接收端,为输入;TXD为UART发送端,为输出。UART的基本特点是在其信号线上共有2种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。在发送器空闲时,数据线保持在逻辑高电平状态。当发送器要发送字符时,起始位使数据线处于逻辑0状态,提示接收器数据传输即将开始。波特率和数据帧格式是UART通信中的2个重要指标,波特率表示每秒钟传输二进制数据的位数,表征了数据传输的速率。国际上规定了一系列标准的波特率,如9600 b/s、19200 b/s、115200 b/s、等。数据帧格式定义了所发数据

7、每位的意义,UART的帧格式如图1所示。一般情况每一数据帧,依次由起始位(位)、数据位(位),奇偶校验位(可选的位)以及停止位(位)组成。其中数据位部分是从最低位先开始传送的;奇偶校验位是对帧数据中的数据部分和校验位计算,使的个数满足奇数个或偶数个。当空闲时,收发引脚与均是高电平。一旦需要发送数据,则首先向引脚输出低电平作为起始位,表示帧数据的开始。而在接收数据时,检测到起始位将启动一次数据接收流程。本设计为了简化电路设计,减少电路面积,这里省略了UART系统中的奇偶检验模块。 图1 UART的帧格式第三章UART功能设计 计算机与FPGA之间进行通信!是通过计算机的串行接口实现的。为了实现R

8、S232接口通信,系统整体结构如图2所示。RS232连接方式采用了9芯的连接座与计算机进行连接,FPGA与RS232连接座之间采用电平转换芯片MAX232以实现TTL/COMS电平之间的转换FPGA实现UART的核心功能。UART电路由波特率发生器、发送模块和接收模块3部分组成。波特率发生器为发送模块和接收模块提供时钟信号,以实现数据的异步可靠传输。RXD和TXD分别是接收模块数据线和发送模块数据线。本方案设计的UART数据格式为数据位为8位,波特率可选,不设奇偶校验位,1位起始位,1位停止位。异步通信的过程如下:计算机产生发送串行数据!由RS232连接座的TXD端输入,经过MAX232进行电

9、平转换由FPGA串口接收模块的RXD端进入,进行串并转换得到8位位宽数据总线,该数据由FPGA的其他模块进行处理;FPGA产生发送8位并行数据,数据由8位数据线进入FPGA串口发送模块,进行并串转换后由FPGA串口发送模块的TXD输出到MAX232的T1IN管脚,经过MAX232电平转换由RS232连接座的RXD端输出给计算。 图2 UART整体结构3.1 波特率发生模块波特率发生器实际上就是一个简单的分频器,波特率发生器的功能是产生和 RS- 232 通信所采用的波特率同步的时钟,这样才能按照 RS- 232 串行通信的时序要求进行数据接收或发送。实现波特率时钟的基本思路就是设计一个计数器,

10、该计数器工作在速度很高的系统时钟下,当计数到某数值时将输出置为高电平,再计数一定数值后将输出置为低电平,如此反复就能得到所需的波特率时。本设计采用系统时钟频率50Mhz,目的是为了在接收时进行精确的采样,以提取异步的串行数据。本设计波特率选择的是115200b/s,既每秒传输115200bit数据。为实现此波特率,应计数为50M/115200=434个数。为精确采样,防止上升沿或下降沿出现斜坡现象。本设计选择在就数值中间采样,既采样点为216。波特率发生模块和时序仿真波形如图3和图4所示。图3 波特率发生模块图4 波特率时序仿真波形使用verilogHDL 硬件语言描述波特率发生器的完整代码如

11、下:module bps_generate(clk,clr,bps,bps_start);output bps;input clk,clr;input bps_start;parameter baud_115200=13d433;parameter baud_115200_h=13d216;reg 12:0 cnt;always (posedge clk or negedge clr)if(!clr) cnt=13b0;else if(cnt=baud_115200)|!bps_start) cnt=13b0;else cnt=cnt+1b1;reg bps_r; always (posedg

12、e clk or negedge clr)if(!clr) bps_r=1b0;else if(cnt=baud_115200_h&bps_start) bps_r=1b1; else bps_r=1b0;assign bps=bps_r;endmodule3.2 波特率接收模块接收模块是整个UART的设计的重点,其主要功能是检测数据帧的起始位,然后对接收的数据进行串行到并行的转换,并将接收好的数据储存在寄存器内等待机处理接收器的接受时钟与每个接收字符同步是接收功能实现的关键,但是串行数据帧与数据接收时钟是异步的,所以必须有效地控制采集通信线路上的电平信号的时机,以保证异步通信的双方准确无误地

13、交换信息。UART接受模块和时序仿真波形如图5和图6所示。图5 UART接受模块图6 UART接收模块时序仿真波形接收模块时序仿真波形如图6所示,测试的串行发送数据为“0111011101”,接收模块输出数据为0x77,其中1位开始位,8位数据,1位停止位。此时产生接收完标志信号rec满足传输数据帧格式,满足发送数据帧格式。使用verilogHDL 硬件语言描述UART接收模块的完整代码如下:module uart_recive(clk,clr,bps,bps_start,RXD,parallel_out,indicate_rec);input clk,clr;input RXD; input

14、 bps; output bps_start;output indicate_rec; output 7:0 parallel_out;wire negedge_RXD;reg rxd1,rxd2,rxd3,rxd4;always(posedge clk or negedge clr)beginif(!clr) beginrxd1=1b1;rxd2=1b1;rxd3=1b1;rxd4=1b1;endelse beginrxd1=RXD;rxd2=rxd1;rxd3=rxd2;rxd4=rxd3;endendassign negedge_RXD = rxd4&rxd3&rxd2&rxd1; reg bps_start_r;reg indicate_rec; reg3:0 num;always(posedge clk or negedge clr)if(!clr) beginbps_start_r = 1bz;indicate_rec= 1b0;endelse if(negedge_RXD) begin/接收到串口接收线rs232_rx的下降沿标志信号bps_start_r = 1b1;/启动串口准备数据接收indicate_rec = 1b1;/接收数据中断

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号