基于FPGA的UART模块的设计
基于FPGA的UART设计说明
师大学本科毕业设计基于FPGA的UART设计学生院系名称专业名称班级学号指导教师完成时间基于FPGA的UART设计电子信息工程专业摘要:UART(通用异步收发器)是一种应用广泛,协议简单,易于调试的串行传输接口。
FPGA是能高密度,低消耗完成所需要的逻辑功能的一种在线可编程器件,是现在业提高系统集成度最佳技术之一,其可反复配置,且使用灵活。
VHDL是描述电路功能或行为的一种硬件语言。
本文首先阐述了运用FPGA实现UART接口的意义。
接着介绍了UART的波特率发生器,发送功能和接收三大核心功能的理论知识。
FPGA的工作原理,配置模式以及VHDL语言实现状态机的相关理论基础。
给出了运用VHDL语言将UART三大功能嵌入在FPGA上的模块化设计方法。
设计包括四大模块:顶层模块,波特率发生器,UART接收器,UART发生器。
在FPGA 片上集成UART主要功能,减少了电路板体积,同时电路也增加了可移植和反复配置功能,有效提高了电路的集成度和灵活性。
最后运用Quartus ii 9.1实现了其功能仿真。
关键词:FPGA UART VHDL 有限状态机The Design of Universal Asynchronous Receiver Transmitter Based on FPGAAbstract:UART (Universal Asynchronous Receiver Transmitter) is a widely used, simple protocol, easy to debug serial transmission interface. FPGA is capable of high-density, low-cost needed to complete a line of programmable logic devices, is now one of the industry's best technologies to improve system integration, which can be repeated to configure and use and flexible. VHDL description of the circuit function or behavior is a hardware language. This paper first describes the use of FPGA to realize the significance of the UART interface. Then introduced the theory of knowledge UART baud rate generator, sending and receiving three core functions. FPGA works, configuration mode and the VHDL-based state machine theory. Gives the UART using VHDL language to three functions embedded in the FPGA design. Design includes four modules: the top-level module, baud rate generator, UART receivers, UART generator. Integrated on-chip UART FPGA basic functions, reducing board space, the circuit also increases the portability and repeated configuration capabilities, improve the integration and flexibility of the circuit. Finally, the use of Quartus ii 9.1 implements its functional simulation.Key Words:FPGA ;UART ;VHDL;FSM目录摘要: (I)Abstract: (II)1 绪论 (1)1.1 课题背景 (1)1.2 课题研究现状 (2)1.3 课题研究容与主要工作 (3)1.4 课题容结构 (3)2 UART理论基础 (4)2.1 接口技术简介 (4)2.2 UART基本结构 (4)2.3 UART数据帧格式 (5)2.4 涉及到的理论计算 (6)3 设计工具 (7)3.1 课题硬件平台——FPGA (7)3.2 设计工具QuartusII简介与使用 (7)3.3 VHDL语言简介 (7)4 UART实现方案 (8)4.1 系统总体结构 (8)4.2 顶层模块设计 (8)4.3 波特率发生模块设计 (9)4.4 接收模块 (10)4.5 发送模块设计 (12)5 UART设计的仿真与验证 (15)5.1波特率发生模块仿真 (15)5.2 接收模块仿真 (15)5.3 发送模块仿真 (16)6 总结 (17)参考文献 (18)致 (19)附录 (20)基于FPGA的UART设计1 绪论在计算机的数据通信中,外设一般不能与计算机直接相连,它们之间的信息交换主要存在以下问题:(1)速度不匹配。
基于FPGA的UART设计
基于FPGA 的UART 设计聂 涛1,许世宏2(11空军工程大学工程学院 陕西西安 710038;21空军第一航空学院 河南信阳 464000)摘 要:UAR T 是一种广泛应用于短距离、低速、低成本通信的串行传输接口。
由于常用UAR T 芯片比较复杂且移植性差,提出一种采用可编程器件FP GA 实现UAR T 的方法,实现了对UAR T 的模块化设计。
首先简要介绍UAR T 的基本特点,然后依据其系统组成设计顶层模块,再采用有限状态机设计接收器模块和发送器模块,所有功能的实现全部采用V HDL 进行描述,并用Modelsim 软件对所有模块仿真实现。
最后将UAR T 的核心功能集成到FP GA 上,使整体设计紧凑,小巧,实现的UAR T 功能稳定、可靠。
关键词:UAR T ;FP GA ;V HDL ;有限状态机;Modelsim中图分类号:TN915104 文献标识码:B 文章编号:1004373X (2006)0212703Design of UART B ased on FPG AN IE Tao 1,XU Shihong 2(11Engineering Institute ,Air Force Engineering University ,Xi ′an ,710038,China ;21First Aeronautic College of Air Force ,Xinyang ,464000,China )Abstract :UAR T is a transmission interface widely used in the short distance ,low speed and low cost communication 1Becausecommon UAR T chip is complicated ,this article introduces a method to design UAR T based on FP GA (Field Programmable G ate Array )and realizes the design of UART models 1First ,we introduce the basic features of UAR T ,then design the top model based on the system constructers 1Second ,the receiver and transfer are designed by FSM (Finite State Machine )1All functions are given by V HDL 1We stimu 2late the functions with Modelsim successfully ,which makes the whole design compact and cabinet ,makes UAR T stable and reliable 1Keywords :UAR T ;FP GA ;V HDL ;finitestate machine ;Modelsim收稿日期:20050921 UAR T (Universal Asynchronous Receiver Transmitter ,通用异步收发器)是广泛使用的串行数据传输协议。
基于FPGA的UART设计
基于FPGA的UART设计毕业设计此文档为word格式,下载后可随意编辑摘要通用串口是远程通信接口,在数字系统使用很普遍,是一个很重要的部件。
本论文使用Verilog HDL 语言描述硬件功能,利用QuartusII 5.0在 FPGA 芯片上的综合描述,采用模块化设计方法设计UART(通用异步收发器)的各个模块。
其中包括波特发生器,程序控制器,UART数据接收器和UART数据发送器,本文采用的外部时钟为48MHZ,波特率为9600。
在QuartusII 5.0和Modelsim6.0环境下进行设计、编译和仿真。
最后的程序编译仿真表明系统数据完全正确。
关键词:VerilogHDL; UART;帧格式;FPGA;AbstractAbstractIn this paper, the use of hardware description languages Verilog VHDL function, the use of Altera's FPGA chips, the design of modular design method of UART (Universal Asynchronous Receiver Transmitter) of each module, including Porter, generators, process controllers, UART receiver data and the UART transmitter data. QuartusII 5.0 and Modelsim6.0 in environment design, compilation, simulation and downloading. Finally, simulation results show that the procedures for compiling data entirely correct.Key words: VerilogHDL; UART; frame format; FPGA目录第一章绪论 (1)1.1引言 (1)1.2 什么是Verilog HDL? (1)1.3 历史 (2)1.4 主要能力 (2)1.5 模块 (4)1.6 数据流描述方式 (5)第二章片上系统SOC与FPGA的现状 (6)2.1 片上系统SOC介绍 (6)2.2 FPGA技术介绍 (6)2.3 FPGA 核心设计流程 (7)2.3.1 设计流程图 (7)2.3.2关键步骤的实现 (8)2.3.2.1 功能仿真 (8)2.3.2.2 逻辑综合 (9)2.3.2.3 前仿真 (9)2.3.2.4 布局布线 (150)2.3.2.5 后仿真(时序仿真) (161)第三章UART设计 (172)3.1 UART的帧格式 (172)3.2 UART模块 (183)3.2.1主要引脚功能介绍 (183)3.2.2UART主体程序 (194)3.3UART发送模块 (205)3.3.1UART的数据发送服务 (205)3.3.2UART的数据发送操作 (16)3.3.3UART的数据发送模块程序 (17)3.3.4UART的数据发送模块程序仿真图 (250)3.4UART接收模块 (261)3.4.1UART数据接收服务 (261)3.4.2UART数据接收操作 (272)3.4.3UART的数据接收模块程序 (272)3.4.4UART的数据接收模块程序功能仿真图 (305)3.5UART控制器 (26)3.5.1UART控制器服务 (26)3.5.2UART控制器模块程序 (3126)3.5.3UART控制器模块程序仿真图 (28)3.6UART波特发生器 (29)3.6.1UART波特发生器服务 (29)3.6.2UART波特发生器模块程序 (29)3.6.13UART波特发生器程序仿真图 (350)结论 (361)参考文献 (372)致谢 (383)附录 (394)外文资料原文 (405)译文 (483)绪论绪论1.1引言21世纪,电子技术迅猛发展,高新技术日新月异。
基于FPGA的UART模块的设计
基于FPGA 的UART 模块的设计杨宗国,李艳萍(太原理工大学信息工程学院 山西太原 030024)摘 要:为了实现计算机与基于F PGA 图像处理系统的数据通信,这里用FP GA 设计了一款简易通用异步收发器(U A RT )模块。
U A RT 的主要功能是实现数据处理模块与RS 232串行数据接口之间的数据转换,即将送过来的并行数据转换为输出的串行数据流,由数据处理模块传送给计算机,还可以将串行数据转换为并行数据,供数据处理模块使用。
为了简化电路设计,减少电路面积,这里省略了U A RT 系统中的奇偶检验模块。
关键词:F PG A;V HDL ;串/并转换;并/串转换;U AR T中图分类号:T N971 文献标识码:B 文章编号:1004-373X(2009)02-019-04Design of UART Module Based on FPGAYA N G Zo ng guo,L I Yanping(Colleg e o f Info rmat i o n Engine ering,Ta i y uan U niversity of T echnolo gy ,T aiyuan,030024,Chi na)Abstract :To realize data communication between computer and FPGA -based imag e processing system,a simple U niversal Asyn -chronous Receiver Transmitter (U ART )is designed by F PGA.T he main function of UA RT is to realize data conversion between data disposal module and RS 232serial port,that is to say,parallel data trinsmitted by data disposal module is converted into serial data flow,then it is transmitted into computer,the serial data is converted into par allel data for the usage o f data disposal module.For pred-i g esting circuit design and reducing electrocircuit proportio n,par ity check module is not needed.Keywords :FP GA ;V H DL ;S/P conversion;P/S conversio n;U A RT收稿日期:2008-05-300 引 言在计算机的数据通信中,外设一般不能与计算机直接相连,它们之间的信息交换主要存在以下问题:(1)速度不匹配。
基于FPGA的UART模块设计
编号基于FPGA的UART模块设计与实现Design and Realization of UART based onFPGA学生姓名周大勇专业控制科学与工程学号S*********指导教师杨晓慧学院电子信息工程学院二〇一三年六月摘要UART因其可靠性高,传输距离远,线路简单,同时UART作为RS232协议的控制接口,从而成为比较广泛的串行数据通信电路,而现在大部分集成电路通信用的UART芯片,存在成本高,电路复杂,移植性较差等缺点,本文提出了一种将UART的功能集成在FPGA芯片中,可使整个系统更为灵活、紧凑,减小整个电路的体积,提高系统的可靠性和稳定性。
本模块功能全部基于verilogHDL硬件描述语言。
关键词:FPGA, UART ,verilogHDL ,RS232ABSTRACTUART, 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 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. All functions of module are based on verilogHDL hardware description language.Keywords:FPGA, UART, verilogHDL, RS232目录摘要 (I)ABSTRACT .................................................................................................................................. I I 目录...................................................................................................................................... I II 第一章绪论. (1)第二章UART 简介 (2)第三章UART功能设计 (3)3.1 波特率发生模块 (3)3.2 波特率接收模块 (5)3.3 UART发送模块 (8)第四章顶层电路及实验数据 (11)第五章结论 (12)致谢 (13)参考文献 (14)第一章绪论通用异步收发器(universal asynchronous receiver transmitter, UART)尽管自20世纪70年代就已出现,但因其简单可靠,目前仍是一种使用广泛的串行通信接口。
基于FPGA的UART设计
郑州轻工业学院课程设计说明书题目:基于FPGA的UART设计姓名:王鹏飞院(系):电子信息工程学院专业班级:电子信息工程13-01学号:0135指导教师:杜海明成绩:时间:2016年6月21日至2016年6月28日郑州轻工业学院课程设计任务书题目基于FPGA的UART设计专业、班级电子信息工程13-01学号 35 姓名王鹏飞主要内容、基本要求、主要参考资料等:主要内容:要求学生使用硬件描述语言描述硬件功能,利用FPGA并采用模块化设计方法设计UART(通用异步收发器)的各个模块。
其中包括波特发生器,程序控制器,UART数据接收器和UART数据发送器,本文采用的外部时钟为48MHZ,波特率为9600。
在软件上进行设计、编译和仿真。
基本要求:1、掌握FPGA 的程序设计方法。
2、掌握硬件描述语言语法。
3、程序设计完成后要求在软件中实现功能仿真。
主要参考资料:1、夏宇闻. Verilog 数字系统设计教程[M].北京:北京航空航天大学出版社,20032、潘松,王国栋.VHDL实用教程「M].成都:电子科技大学出版社,2003.完成期限:—指导教师签名:课程负责人签名:2016年6月18日基于FPGA的UART设计摘要UART作为RS232协议的控制接口得到了广泛的应用,将UART的功能集成到FPGA 芯片中,可使整个系统更为灵活、紧凑,减小整个电路的体积,提高系统的可靠性和稳定性。
提出了一种基于FPGA的UART的实现方法,具体描述了发送、接收等模块的设计,恰当使用了有限状态机,实现了FPGA上的UART的设计,给出仿真结果。
关键词FPGA UART模块化有限状态机目录01 FPGA与UART简介FPGA介绍FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
基于FPGA的UART设计
) + * !"# $ 接收器
由 于串行数据帧和接收时钟是异步的 (由逻辑 /转为 逻 辑 0可以被视为一个数据帧的起始位 %然而 (为了避免 毛 刺影响 (能够得到正确的起始位信号 (必须要求接收到 的起始位在波特率时钟采样的过程中至少有一半都是属 于 逻辑 0才可认定接收到的是起始位 %由于内部采样时钟 由波特率发生器产生 -是发送或接收波特率时 1 2 3 4周期 , 钟 频率的 / 所以起始位需要至少 6个连续 1 5倍 ( 2 3 4周期的 逻 辑 0被接收到 (才认为起始位接收到 (接着数据位和奇 偶校验位将每隔 / 即每一个波 5个 1 2 3 4周 期 被 采 样 一 次 , 特 率时钟被采样一次 %如果起始位的确是 / 5个 1 2 3 4周期 长( 那 么 接 下 来 的 数 据 将 在 每 个 位 的 中 点 处 被 采 样% !"# $ 接收器的状态机一共有 7个状态 8 等待起始位 - 状态 当 !"# $ "# $, $ 接收器复 # 9: 位后 (接收状态机将处于这一个状态 %在此状态 (状态机一 直 在等待 # 从逻辑 /变为逻辑 0 即起始位 ( ( & ’ 的电平跳转 ( 这意味着新的一帧 !"# $ 数据帧的开始 (一旦起始位被确
5678 k l m n o p q n 9 I H]c b ] ‘ H JI H H I D ‘ I ‘ c F b j ] e F rI E F G g d H F E I ‘ c _ FH _ D b c
) G E I H c ] ‘ e F D r
H s F F E ] ‘ E G D r
e D H c
表! % $ & ’的数据帧格式 ^ 9 8 79 起始位 .A (A *A /A 2A MA 3A A 数据位 = 校验位 ^ 9 ~= 停止位
基于FPGA的UART模块设计
基于FPGA的UART模块设计本文介绍了一种利用FPGA实现UART通用异步收发器模块的方法,所设计的UART模块充分利用了FPGA硬件可编程性、高度集成性、实时性的特点。
实践测试表明,该模块设计具有高可靠性、便于扩展和移植的优点。
【关键词】FPGA UART 状态机通用异步收发器(Universal Asynchronous Receiver Transmitter,UART)是数字通信领域流行和广泛使用的一种接口设备,它可以和各种标准串行接口,如RS232、RS485等进行异步通信,具有传输距离远、成本低、可靠性高等优点。
一般来说UART通信需要使用专门的接口协议芯片,但是这种协议芯片存在体积较大、接口复杂且成本较高的缺点。
此外,这种芯片的结构与功能相对固定,在设计中缺乏灵活性。
本文介绍了利用FPGA实现UART通讯的方法,将原来UART专用协议芯片的功能集成到了FPGA中,提高了设计的灵活性与可靠性。
1 UART通讯原理支持UART的串行接口目前比较常用的有RS232、RS422、RS485等,它们之间的区别主要表现在电气特性上,但最基本的通讯原理是一样的。
UART模块接收/发送的都是符合TTL (或CMOS)标准的逻辑电平,与外设之间还需要经过专门的转换芯片将通讯数据转化为符合RS232、RS422或RS485标准的电平。
UART作为一种异步串行通讯方式,数据在通讯过程中是字节为单位按位传输,一般从最低有效位(LSB)开始。
典型的UART通讯数据格式如图1所示。
2 UART的FPGA实现UART通讯模块内部逻辑结构如图2,可分为控制模块、接收模块和发送模块,各个模块的主要功能如下:控制模块:根据CPU写入的数据配制UART通讯参数,并根据接收、发送模块回送的指令产生相应中断上报给CPU,对接收、发送模块状态进行监控、管理;接收模块:该模块主要用于将接收到的串行数据转化为并行数据,再以本地总线形式发送给CPU。
基于FPGA的UART设计
一、题目基于FPGA的UART设计二、设计要求1)支持数据格式:起始位(1bit)+数据(8bit)+奇偶校验位(1bit)+终止位(1bit)2)奇/偶校验可配置3)可配置支持115200以下的常见波特率4)支持115200以下的波特率自适应,自适应过程如下:a.复位后,UART首先接收输入,不断自动调整波特率,直到以一定波特率正确连续接收到3个bytes的0x55b.接着UART以此波特率连续发送3个bytes 0xaac.之后两端以此波特率进行通信d.波特率自适应只在电路复位后进行一次,如欲再次自适应波特率应对电路再次复位e.波特率自适应过程中不能对UART的波特率作任何设置,自适应完成后可以对波特率作设置5)自动计算校验位用于发送数据;对接收到的校验位和数据进行校验,发现错误应设置错误标志,并丢弃数据6)对接收不正常数据(如无终止位、无校验位、数据位数不正确等)应能自动识别并设置错误标志、丢弃三、UART 的工作原理异步通信时,UART发送/接收数据的传输格式如图1所示,一个字符单位由开始位、数据位、停止位组成。
异步通信的一帧传输经历以下步骤:(1)无传输。
发送方连续发送信号,处于信息“1”状态。
(2)起始传输。
发送方在任何时刻将传号变成空号,即“1”跳变到“0”,并持续1位时间表明发送方开始传输数据。
而同时,接收方收到空号后,开始与发送方同步,并期望收到随后的数据。
(3)奇偶传输。
数据传输之后是可供选择的奇偶位发送或接收。
(4)停止传输。
最后是发送或接收的停止位,其状态恒为“1”。
发送或接收一个完整的字节信息,首先是一个作为起始位的逻辑“0”位,接着是8个数据位,然后是停止位逻辑“1”位,数据线空闲时为高或“1”状态。
起始位和停止位的作用是使接收器能把局部时钟与每个新开始接收的字符再同步。
异步通信没有可参照的时钟信号,发送器可以随时发送数据,任何时刻串行数据到来时,接收器必须准确地发现起始位下降沿的出现时间,从而正确采样数据。
基于FPGA的UART的设计与实现
99收稿日期:2020-01-15作者简介:张晓(1989—),女,山东泰安人,研究生,工程师,研究方向:电子电路设计,航空仪表设计。
0 引言UART是通用异步收发器(Universal Asynchronous Re-ceiver/Transmitter),是一种异步收发传输器,是设备间进行异步通信的关键模块。
UART包括RS232、RS449、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。
UART负责处理数据总线和串行口之间的串/并、并/串转换,并规定了帧格式;通信双方只要采用相同的帧格式和波特率,不需同时发送时钟,仅用两根信号线就可以完成信号通信,因此也成为异步串行通信[1]。
UART字符格式为1个起始位,5~8个数据位,1个地址位或奇偶位(可选),1个停止位。
某型航空仪表主要通过RS422总线接口与机上其他设备进行数据交互,显示飞机的指示空速、马赫数、气压高度和升降速度等飞行数据。
同时为了便于该航空仪表内部的检测和维护,设计了维护检测接口,将系统内部各部件的自检信息、传感器信息以及解算后得到的各个参数按照RS422总线要求输出。
由于UART在某型仪表中的重要性,是其最主要的通信接口,本文主要讲述了此航空仪表中基于FPGA编写UART双工通信协议,实现对RS422接口芯片的控制,进行串口通讯。
1 UART双工通信的实现1.1 UART协议的设计原理UART模块由波特率发生器、UART接收器模块和UART发送器模块三个部分构成,FPGA实现UART的模块框图如图1所示。
波特率发生器模块主要用于产生接收器和发送器的时钟频率信号。
接收器模块的作用是接收从串行数据输入异步数据,进行串/并转换。
接收模块带奇偶校验错、帧出错信号,当接收完一帧数据或发送完一帧数据后提供指示信号[2]。
接收器包含移位寄存器和接收缓冲寄存器,移位寄存器将数据按位采集到寄存器里,接收缓冲寄存器用来缓存接收数据,同时产生中断信号给其他模块等。
基于FPGA的UART模块化设计
几 r 广. 几 厂. 几 . n 几 r ] 弋 门. 弋n 一 ]几 n 几 几 几 几 r n n r ] n
广 1 _
Tas ie) 得 到 了相 当广 泛 的 应 用 , 允 许 串行 链 路 rnmt r t 也 它 广- 1 上 进行 全双 工 通 信 。 一般 使 用 通 用 的 U R A T接 口芯 片 , 但 这 种 芯 片 存 在 电路 复 杂 , 本 高 , 低 了 系统 的 可 靠 成 降 图 2 波 特 率发 生 器 仿 真 结 果 性 和稳定度 , 由于 结 构 和 功 能 的相 对 固 定 , 因而 我 们 不 能 根 据 自 己的 设 计 需 要 去 进 行 剪 裁 和 移 植 。 而 日益成 熟 的 S P 所 以分 频 器 对 晶振 的 分频 数 为 3 6 每 一 计 数 周期 周期 使 输 出 电平 OC 2, (yt nPorm beC i 技 术要 求将 整 个 设 计 功 能 集 成 到 ~ 高 、 变 化 , S s m O rga mal h e p) 低 即可 得 到 9 0 6 0波特 率对 应 的 U R 的时 钟 。 图 2为波 AT 块或几块芯 片中, 文通过对 U R 本 A T功 能 的 分析 , 出 了在 F G 特率 发生 器 的 仿真 波形 。 提 PA 22接 收器 模 块 接 收 模块 从 捕 捉到 数据 串的 第 一 个 0开 始 工 - 上 集成 U R A T功 能模 块 , 强 了设 计 的 灵活 性 , 化 了电 路 , 通 过 增 简 并 有 限状 态 机 来描 述 核 心 功 能控 制 逻 辑 , 而 提 高 了整 个 系统 稳 定 性 作 , 也 就 是 验 证 起 始 位 的 到 从 来 , 证 完 后 , 始 接 收 8位 验 开 数 据 , 进 行 串并 转 换 , 后 并 随 正 UR A T是 异 步 通 信 方 式 , 基 本 的 U R 最 A T通 信 只 需 要 两 条信 号 检测停止 位 , 确则输 出。接 所 线 ( X ,X 就 可 以完 成 数 据 的相 互 通 信 , 收 和 发 送 是 全 双 工 收 器状 态 转换 如 图 3 示 。 R DT D) 接 的 , 接收端, 在 串行 的数 字 信 号 转 化成 并 行 的信 号 , 能进 行 处理 数 才 接 收 器 状 态 机 共 包 含 四 据 , 发送 端 , 行 的 信 号 转 化 成 串行 信 号 才 能被 发送 到 另 一 个 设 个 状 态 : 闲 状 态 ( L 、 在 并 空 I E)检 D 备 中使 用 。 测 起 始 位 ( T R 、 据 采 样 S A T)数 S IT)停 S O U R A T帧 格 式 ( 就 是 发送 数据 的格 式 )是 以 一 个 起始 位 开 始 (H F 、 止 位检 测 (T P o 也 ,
FPGA的UART完整设计
FPGA的UART完整设计FPGA(现场可编程门阵列)是一种可编程逻辑设备,可以用于实现各种数字系统。
其中一个常见的应用是实现串行通信接口,如UART(通用异步收发器)。
UART是一种用于串行数据传输的通信协议,常用于连接计算机和外部设备(如传感器、显示器等)。
UART通信有两个关键部分:发送和接收。
在FPGA中,我们可以使用电平转换器、计数器和状态机等模块来设计和实现UART。
首先,我们需要设计发送模块。
发送模块的任务是将数据从FPGA发送到外部设备。
以下是发送模块的设计步骤:1.配置串行通信参数:确定波特率、校验位和停止位等参数。
2.设计数据缓冲区:创建一个FIFO(先进先出)缓冲区,用于存储要发送的数据。
3.生成波特率时钟:使用计数器和时钟分频器来生成适当速率的时钟信号。
4.串行化数据:将数据从缓冲区读取,并将其转换为串行比特流。
5.加入校验位和停止位:根据配置的参数,在数据的末尾添加校验位和停止位。
6.发送数据:将串行的比特流发送到外部设备。
接下来,我们需要设计接收模块。
接收模块的任务是从外部设备接收数据并传输到FPGA。
以下是接收模块的设计步骤:1.配置串行通信参数:确定波特率、校验位和停止位等参数,与发送模块保持一致。
2.生成波特率时钟:使用计数器和时钟分频器来生成适当速率的时钟信号。
3.接收数据:从外部设备接收串行比特流。
4.分析校验位和停止位:验证接收到的数据的校验位和停止位是否正确。
5.并行化数据:将串行比特流转换为并行数据,并存储到接收缓冲区中。
6.处理接收到的数据:根据串行通信协议,处理接收到的数据。
在设计中,需要考虑以下事项:1.时钟同步:确保发送端和接收端使用相同的时钟源,并进行合适的时序调整,以保持数据的稳定性和正确性。
2.缓冲区管理:使用FIFO缓冲区来处理发送和接收的数据,以防止数据丢失和冲突。
3.错误处理:根据串行通信协议,实现适当的错误检测和纠正机制,以确保数据的完整性和正确性。
基于FPGA的UART设计说明
轻工业学院课程设计说明书题目:基于FPGA的UART设计姓名:王鹏飞院(系):电子信息工程学院专业班级:电子信息工程13-01学号: 5指导教师:杜海明成绩:时间:2016年6月21日至2016年6月28日轻工业学院课程设计任务书题目基于FPGA的UART设计专业、班级电子信息工程13-01学号 35 王鹏飞主要容、基本要求、主要参考资料等:主要容:要求学生使用硬件描述语言描述硬件功能,利用FPGA并采用模块化设计方法设计UART(通用异步收发器)的各个模块。
其中包括波特发生器,程序控制器,UART数据接收器和UART数据发送器,本文采用的外部时钟为48MHZ,波特率为9600。
在软件上进行设计、编译和仿真。
基本要求:1、掌握FPGA 的程序设计方法。
2、掌握硬件描述语言语法。
3、程序设计完成后要求在软件中实现功能仿真。
主要参考资料:1、夏宇闻. Verilog 数字系统设计教程[M].:航空航天大学,20032、松,王国栋.VHDL实用教程「M].:电子科技大学,2003.完成期限:2016.6.21—2016.6.28指导教师签名:课程负责人签名:2016年6月18日基于FPGA的UART设计摘要UART作为RS232协议的控制接口得到了广泛的应用,将UART的功能集成到FPGA 芯片中,可使整个系统更为灵活、紧凑,减小整个电路的体积,提高系统的可靠性和稳定性。
提出了一种基于FPGA的UART的实现方法,具体描述了发送、接收等模块的设计,恰当使用了有限状态机,实现了FPGA上的UART的设计,给出仿真结果。
关键词FPGA UART模块化有限状态机目录1 FPGA与UART简介 (1)1.1 FPGA介绍 (1)1.2 UART简介 (1)2 UART工作原理及功能设计 (3)2.1UART工作原理 (3)2.2UART功能设计 (3)2.2.1 波特率发生器设计 (4)2.2.2 发送器设计 (5)2.2.3 接收器设计 (5)3.仿真 (8)4 总结 (9)参考文献 (100)1 FPGA与UART简介1.1 FPGA介绍FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
基于fpga的uart设计答辩
基于fpga的uart设计答辩
基于FPGA的UART设计答辩是对FPGA芯片的应用的一个验证和展示。
在此过程中的主要任务是通过设计和讲述,来证明UART设计的可行性和有效性,同时也需要通过演示确保其功能完善,并且赢得相关领域的认可。
首先,需要阐述设计原理和流程,通过先期的调研来了解UART 的基本原理和特点,然后根据需求进行设计方案的制定,确定所需的资源和实现方案。
同时,还要进一步实现软件和硬件的设计,最终达到实现代码的编写和生成,从而得到了一个初始版本的UART设计。
接下来,我们需要测试初始的UART设计,并对其进行调整和修改。
这一阶段,需要有专业的仪器或工具进行测试,以确保其符合设计需求。
若有偏差,需进行调整和优化,并重新进行测试,直到满足产品研发和工程设计的需要。
然后,需要考虑设计中可能出现的问题及其解决方案。
由于FPGA 芯片设计的复杂性和操作的多样性,设计方案存在一定的不确定性。
在演示过程中,需要时刻关注可能出现的问题,并准备要给出有效的解决方法。
最后,需要引导观众进行一个实际的演示过程,并对其功能,优势以及应用领域进行详细的讲解。
通过演示和讲解,可以让评审委员会更全面地了解UART设计的实际应用。
同时,也可以让观众提出有关该方案的问题,以更好地促进技术交流和合作。
总之,基于FPGA的UART设计答辩需要通过深入的理论研究、系统的设计流程、专业的测试和解决方案的拓展等方式来保证其可行性和有效性,从而获得成功的演示和认可。
基于FPGA的UART设计与实现
基于FPGA的UART设计与实现0 引言通用异步收发器(Universal Asynchronous Receiver/Transmitter,UART)可以和各种标准串行接口,如RS 232 和RS 485 等进行全双工异步通信,具有传输距离远、成本低、可靠性高等优点。
一般UART 由专用芯片如8250,16450 来实现,但专用芯片引脚都较多,内含许多辅助功能,在实际使用时往往只需要用到UART 的基本功能,使用专用芯片会造成资源浪费和成本提高。
一般而言UART 和外界通信只需要两条信号线RXD 和TXD,其中RXD 是UART 的接收端,TXD 是UART 的发送端,接收与发送是全双工形式。
由于可编程逻辑器件技术的快速发展,FPGA 的功能日益强大,其开发周期短、可重复编程的优点也越来越明显,在FPGA 芯片上集成UART 功能模块并和其他模块组合可以很方便地实现一个能与其他设备进行串行通信的片上系统。
1 UART 功能设计1.1 UART 的工作原理异步通信时,UART 发送/接收数据的传输格式如图1 所示,一个字符单位由开始位、数据位、停止位组成。
异步通信的一帧传输经历以下步骤:(1)无传输。
发送方连续发送信号,处于信息“1”状态。
(2)起始传输。
发送方在任何时刻将传号变成空号,即“1”跳变到“O”,并持续1 位时间表明发送方开始传输数据。
而同时,接收方收到空号后,开始与发送方同步,并期望收到随后的数据。
(3)奇偶传输。
数据传输之后是可供选择的奇偶位发送或接收。
(4)停止传输。
最后是发送或接收的停止位,其状态恒为“1”。
发送或接收一个完整的字节信息,首先是一个作为起始位的逻辑“0”位,接着是8 个数据位,然后是停止位逻辑“1”位,数据线空闲时为高或“1”状态。
起始位和停止位的作用是使接收器能把局部时钟与每个新开始接收的字符再同步。
异步通信没有可参照的时钟信号,发送器可以随时发送。
基于FPGA的UART接口模块设计
基于FPGA的UART接口模块设计UART(UniversalAnynchronousReceiverTransmitter,通用异步接收发送器)是广泛应用的串行数据传输协议之一,其应用范围遍及计算机外设、工控自动化等场合。
虽然USB 传输协议比UART 协议有更高的性能,但电路复杂开发难度大,并且大多数的微处理器只集成了UART,因此UART 仍然是目前数字系统之间进行串行通信的主要协议。
随着FPGA 的广泛应用,经常需要FPGA 与其他数字系统进行串行通信,专用的UART 集成电路如8250,8251 等是比较复杂的,因为专用的UART 集成电路既要考虑异步的收发功能,又要兼容RS232 接口设计,在实际应用中,往往只需要用到UART 的基本功能,使用专用芯片会造成资源浪费和成本提高。
可以将所需要的UART 功能集成到FPGA 内部,实现FPGA 与其他数字系统的直接通信,从而简化了整个系统电路,提高了可靠性、稳定性和灵活性。
1 UART 简介基本的UART 通信只需要两条信号线(RXD,TXD)就可以完成数据的相互通信,接收与发送是全双工形式,其中TXD 是UART 发送端,RXD 是UART 接收端。
UART 基本特点是:在信号线上有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。
在发送器空闲时,数据线应保持在逻辑高电平状态。
发送器是通过发送起始比特而开始一个字符传送,起始比特使数据线处于逻辑0 状态,提示接收器数据传输即将开始。
数据位一般为8 位一个字节的数(也有6 位7 位的情况),低位(LSB)在前,高位(MSB)在后。
校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。
停止位在最后,用以标志UART 一个字符传送的结束,它对应于逻辑1 状态,UART 数据帧格式如2 UART 功能实现。
基于FPGA的UART串口接收模块设计
UART串口接收模块设计实验目标:实现FPGA接收其他设备通过UART协议发送过来的数据知识点:1、U RAT通信协议工业环境下数据接收实现。
2、I n system sources and probes editor ISSP)调试工具的使用。
UART发送端发送一个字节数据时序图:采集中间时刻时的数据即可,如下图所示但是在工业应用中,往往有非常强的电磁干扰,只采样一次就作为该数据的电平判定,是不保险的,有可能恰好采集到被干扰的信号而导致结果出错,因此需要使用多次采样求概率的方式进行。
以下为改进型的单bit数据接收方式示意图:BI + 1 - 1丨丨「i |丨11 口「「「i「11 丨im i [1 2 3 4 5 6 7 8 9 10 11 12 1314 1516在这张图中,将每一位数据又平均分成了16小段,对于Bit_x这一位数据,考虑到数据在刚刚发生变化和即将发生变化的这一时期,数据极有可能不稳定的(用红色标出的两段),在这两个时间段采集数据,很有可能得到错误的结果,因此这两段时间的电平无效,采集时直接忽略。
而中间这一时间段(用绿色标出),数据本身是比较稳定的,一般都代表了正确的结果。
但是也不排除该段数据受强 电磁干扰而出现错误的电平脉冲, 因此对这一段电平,进行多次采样,并求高低 电平发生的概率,6次采集结果中,取出现次数多的电平作为采样结果。
例如, 采样6次的结果分别为1/1/1/1/0/1/,贝U 取电平结果为1,若为0/0/1/0/0/0,,贝U 取 电平结果为0,当6次采样结果中1和0各占一半(各3次),则可判断当前通 信线路环境非常恶劣,数据不具有可靠性。
串口发送模块包含两个主要组件:1、 起始位检测进程(低电平,下降沿)2、 波特率产生模块3、 数据接收模块串口接收模块整体结构图:Data_Byte[7:0] Rx_Done=Rst n波特率时钟计算:---------------- ►Baud_Set[2:0] ----- -------- ►ClkModelsim 仿真图:• 在testbench 文件中我们为设计输入了假定的信号, 在仿真图中我们可以看到 data_byte_r 在Rx_done 标志位产生的时候成功的将仿真数据 data_byte_t 接收到其中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 UART顶层模块的仿真测试
将上述各个模块的VHDL代码生成原理图符号,并在原理图编辑工具中将各个模块连接起组成1个完整的UART模块。为了验证 UART模块的正确性,对UART的发送过程和接收过程分别进行了波形仿真。为便于观察波形,波特率产生器设置为4个系统时钟产生一个完整的波特率时钟。图9是UART模块接收过程的仿真波形图。
2.5 发送数据缓冲器模块
发送数据缓冲器模块的功能是将要发送的并行数据转换成串行数据,并且在输出的串行数据流中加入起始位和停止位。缓冲器首先将要发送的8位数据寄存,并在最低位后添加起始位‘O’,在最高位前添加停止位‘1’,组成10位要发送的数据。然后根据 UART内核模块的计数值将相应的数据送入移位寄存器输入端。
UART内核模块输出的计数值是从0依次计到9,即先将要发送数据的最低位送入移位寄存器。发送数据缓冲器的仿真波形图。
由波形图可知,发送数据缓冲器在复位后,在输入的计数值si_count为0时,send_si输出起始位‘O’。在输入的计数值 si_count为1~8时,send_si分别输出send_bus上相应的数据位。在输入的计数值sl_count为9时,send_si输出停止位 ‘1’。
2.4 计数器模块
计数器模块的功能是可控的,在输入时钟的驱动下进行计数,当达到计数上阈时给UART内核一个提示信号。在不同的工作状态下,计数器模块的输入时钟是不同的。UART在数据发送之前需要进行数据加载(即将串行序列保存在移位寄存器内),在此工程中计数器模块的输入时钟为系统时钟,因为此时移位寄存器也工作在系统时钟下。除了数据加载,另外2个需要计数器模块的过程是数据接收和数据发送。
2.6 UART内核模块
UART内核模块是整个设计的核心。在数据接收时,UART内核模块负责控制波特率发生器和移位寄存器,使得移位寄存器在波特率时钟的驱动下同步地接收并且保存RS 232接收端口上的数据。在数据发送时,UART内核模块首先根据待发送数据产生完整的发送数据序列(包括起始位、数据位和停止位),之后控制移位寄存器将序列加载到移位寄存器的内部寄存器里,最后再控制波特率发生器驱动移位寄存器将数据串行输出。UART内核模块的主要功能是控制数据接收、数据加载和数据发送的过程,这可以用状态机来实现,其状态图。
图10为UART发送过程仿真波形。由图可以看出,send=‘1’后待发送数据为“01010101”,将待发送数据加上起始位和停止位,并从最低位开始发送,则发送端txd上的数据序列为“0101010101”,发送停止位后,发送结束信号send_over=‘1’。图10 证明UART数据发送功能完全正确。
,移位寄存器在复位后的每个时钟的上升沿工作。由于数据发送时是先发送有效数据的最低位,因此移位寄存器是将接收的数据由高位向低位移动,dout输出移位寄存器的最低位。图中的regs数据用16进制表示。
2.3 波特率发生器模块
波特率发生器的功能是产生和RS 232通信所采用的波特率同步的时钟,这样才能方便地按照RS 232串行通信的时序要求进行数据接收或者发送。比如,波特率为9 600 b/s,即每秒传输9 600 b数据,则同步的波特率时钟频率为9 600 Hz,周期为1/9 600=O.104 17。设计波特率时钟的基本思路就是设计一个计数器,该计数器工作在速度很高的系统时钟下,当计数器计数到某数值时将输出置高,再计数到一定的数值后再将输出置低,如此反复便能够得到所需的波特率时钟。该系统所用的FPGA系统时钟为50 MHz,RS 232通信的波特率为9 600 b/s,则波特率时钟的每个周期相当于5 208个系统时钟周期。假如要得到占空比为50%的波特率时钟,只要使得计数器在计数到1 604时将输出置高,之后在计数到5 208时将输出置低并且重新计数,就能实现和9 600波特率同步的时钟。
l UART的数据格式
UART的数据传输格式。
由于数字图像亚像素在计算机中是用8位二进制表示,因此UART传输的有效数据位为8位。传输线在空闲时为高电平,因此有效数据流的开始位设为0。接着传输8位有效数据位,先从最低位开始传送。奇偶检验位可以设置为奇检验、偶校验或者不设置校验位,由于本系统使用的传输速率不高,为了加快开发进程,减少电路面积,因此没有设计奇偶检验模块,数据流中不设奇偶检程可以定义3个状态:空闲“idle”状态、接收“receive”和接收完成 “receive_over”。UART内核模块在复位后进入空闲状态。如果信号检测器检测到数据传输,即new_data一‘1’,UART内核检测到此信号就会进入接收状态。在UART进入由空闲状态转为接收状态过程中,需要进行一系列的接收预备操作,包括将子模块复位、选择移位寄存器串行输人数据以及选择移位寄存器的输入时钟等。进入接收状态后,波特率发生器开始工作,其输出波特率时钟驱动移位寄存器同步的存储RS 232接收端口上的数据,并且其提示信号“indicator”驱动计数器进行计数。当所有数据接收完成,计数器也达到了其计数的上阈,此时 overflow=‘1’,通知UART内核进入接收状态。UART内核进入接收完成状态的同时,会检查奇偶校验的结果,同时使得子模块使能信号无效,以停止各个子模块。
移位寄存器模块的作用是存储输入或者输出数据。当UART接收RS 232输入时,移位寄存器在波特率模式下采集RS 232输入信号,且保存结果;当进行RS 232输出时,UART内核首先将数据加载到移位寄存器内,再使移位寄存器在波特率模式下将数据输出到RS 232输出端口上。移位寄存器的仿真波形图。
由仿真波形图可以看出,接收端RxD上的数据序列为0101010101,起始位‘O’后为数据位“10101010”,最后一位为停止位 ‘1’。在10个波特率时钟之后,UART发出1个接收完成信号recv一‘1’,并在数据输出端“new_data”将接收的数据输出给后续数据处理模块。由于发送数据时首先发送数据的最低位,因此接收的数据应为“01010101”,将光条放置数据输出端“new_data”的数据输出波形上,可以从数据栏看到此时数据输出端new_data=“01010101”,UART数据接收功能完全正确。
(3)信息类型不匹配。不同的外设可能采用不同类型的型号,有些是模拟信号,有些是数字信号,因此采用的处理方式也不同。
为了解决外设和计算机之间的信息交换问题,即需要设计一个信息交换的中间环节——接口。UART控制器是最常用的接口。
通用异步收发器(Universal Asynchronotls Receiv—er/Transmitter,UART)是辅助计算机与串行设备之间的通信,作为RS 232通信接口的一个重要的部分,目前大部分的处理器都集成了UART。
2 UART的基本结构
设计的UART主要由UART内核、信号检测器、移位寄存器、波特率发生器和计数器组成,。UART各个功能模块的功能如下文所述。
2.1 信号检测器模块
信号检测器用于对RS 232的输入信号进行实时监测,一旦发现新的数据则立即通知UART内核。信号检测器的仿真波形。
4 结 语
介绍了UART在可编程逻辑器件FPGA上的实现,并通过实际电路验证了设计的功能,使用FPGA不仅可以方便地用串口协议与PC 机进行串行通信,而且扩展了板级系统的接口功能。应用在可编程器件FP—GA内部,可以很大程度地减少电路板的使用面积,并提高系统的稳定性和可编程性。
基于FPGA的UART模块的设计
0 引 言
在计算机的数据通信中,外设一般不能与计算机直接相连,它们之间的信息交换主要存在以下问题:
(1)速度不匹配。外设的工作速度和计算机的工作速度不一样,而且外设之间的工作速度差异也比较大。
(2)数据格式不匹配。不同的外设在进行信息存储和处理时的数据格式可能不同,例如最基本的数据格式可分为并行数据和串行数据。
UART内核的接收完成状态仅保持1个时钟周期,设置这个状态的作用是借用一个时钟周期复位信号检测器,准备接收下次数据传输。
(2)数据加载和发送过程。数据加载和发送的过程都是为发送数据而设定的,所以将它们放在一起进行介绍,可以用4个状态来实现上述的过程,即空闲、加载、发送和发送完成。其中的空闲状态是UART内核复位后的空闲状态,与上面介绍的数据接收过程的空闲状态一致。数据加载过程在数据发送过程之前进行。UART内核复位后进入空闲状态,当探测到发送控制信号有效时,即send=‘1’,便会进入加载状态开始数据加载。在进入加载状态的同时,UART内核会将移位寄存器、计数器复位,并且通过选择信号使得移位寄存器的输入为发送数据缓冲器模块产生的串行数据序列,使得移位寄存器和计数器的工作时钟为系统时钟。进入加载状态后,在UART内核控制下,发送数据缓冲器模块会将完整的待发送序列加载到移位寄存器的数据输入端,发送的序列是和系统时钟同步的,移位寄存器在系统时钟的驱动下不断读人输入端数据并保存在内部寄存器内。在移位寄存器加载数据的同时,计数器也在时钟的驱动下进行计数,由于都是工作在系统时钟下,所以当所有数据被加载时,计数器也达到了计数的上阈(即串行数据的总量),此时overflow=‘1’,通知UART内核进入发送状态。UART内核进入发送状态的同时会改变几个选择信号,比如将移位寄存器的时钟设为波特率时钟,将计数器时钟设为波特率的提示信号,最重要的是将输出信号送到RS 232的发送端口TxD上。发送的过程和接收类似,移位寄存器在波特率时钟的驱动下内部寄存器的数据串行的发送出去,同时计数器在波特率发生器的提示信号驱动下进行计数。UART内核在计数器到达计数上阈后便进入发送完成模式,并且输出发送完成信号。