基于FPGA的串口设计.docx
- 文档编号:23147380
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:25
- 大小:205.71KB
基于FPGA的串口设计.docx
《基于FPGA的串口设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的串口设计.docx(25页珍藏版)》请在冰豆网上搜索。
基于FPGA的串口设计
高等教育自学考试
毕业设计(论文)
题目基于FPGA的串口设计
专业班级
姓名
指导教师姓名、职称
所属助学单位
2013年3月25日
目录
目录2
摘要2
第一节绪论4
1.1研究背景4
1.2课题研究现状及发展存在的主要问题4
1.3课题研究的指导思想及其技术指标5
1.3.1UART模块5
1.3.2基于FPGA串口设计的技术要求5
第二节UART原理介绍5
2.1UART结构和工作原理5
2.1.1UART原理5
2.1.2UART的结构6
第三节方案选择7
3.1设计语言选择7
3.1.1VHDL编程语言的优势7
3.1.2VHDL基本介绍8
3.2FPGA核心芯片的选择8
3.3电平转换方式选择8
3.4总体框图设计9
第四节系统硬件设计9
4.1器件芯片介绍9
4.1.1FPGA核心板EP1C12介绍9
4.1.2MAX23210
4.1.3RS23211
4.2系统整体结构11
第五节系统软件设计13
5.1发送数据程序流程图13
5.2接收数据流程图14
5.3系统源程序设计15
第六节总结19
致谢20
参考文献21
摘要
随着微电子技术的发展,电子设备逐渐向着小型化、集成化方向发展。
UART由于具有可靠性高、传输距离远、线路简单等优点,被广泛应用于串行通信电路。
本设计是基于现场可编程门阵列FPGA的嵌入式UART模块化设计方法。
利用FPGA实现UART的功能与PC机实现串口通信。
UART模块是通过MX232转换电平与PC机进行通信,采用硬件描述语言(VHDL)实现逻辑电路,
整个设计采用模块化实现,通过有限状态机,增加设计灵活性、降低成本。
关键字【FPGA、UART、串行通信、PC机、VHDL】
Abstrac
WiththeRapiddevelopmentofmicroelectronicstechnology,
Electronicequipmentbecomesmallerandintegrated.UARTbecauseofitshighreliability,longtransmissiondistance,linesbecomebroaderandsimpleserialdatacommunicationcircuit.ThedesignisbasedonFieldProgrammableGateArray(FPGA)designmethodologyforembeddedUART.WeuseFPGAtocometruethecommunicationbetweenUARTandpersonalcomputer,allbasedonthesemodulesfeaturehardwaredescriptionlanguageVHDLandimplementedthroughthefinitestatemachine,andenhancedesignflexibility,reducedcosts.
KeyWords:
【FPGA、UART、USART、PC、VHDL】
第一节绪论
1.1研究背景
近几十年,电子技术飞速发展,高新科技日新月异。
传统的设计方法也逐渐被淘汰掉,取而代之的是基于EDA的芯片设计技术。
现场可编程门阵列FPGA(FieldProgrammableGateArray)与复杂可编程器件CPLD(ComplexProgrammableLogicDevice)是当今最常见的两类可编程集成电路(ASIC),其性能好、可靠性高、容量大、体积小、功耗小、使用灵活、设计周期短、成本低、硬件功能能够通过编程实现,提高电子设计系统的灵活性和通用性。
它广泛应用于航天航空、网络通信、军用雷达、工业控制等多个领域,但FPGA/CPLD器件同单片机、ARM等器件不同,内部没有集成的UART,因此要实现串行通信,必须另行开发独立UART模块。
UART即通用异步收发器(UniversalAsynchronousReceiver/Transmitter),它在数据通信时需要的连线少,具有相关工业标准提供的标准的接口电平规范,所以被广泛用于控制领域。
本设计是基于FPGA器件设计了符合RS-232标准的UART,以利于实现FPGA开发系统与PC机之间的串口数据交换。
1.2课题研究现状及发展存在的主要问题
通用异步收发器(UART)是雷达中常用的器件类型,多用于全机检测、指令发送接收、状态传递、键盘显示操作以及控制等。
由于许多大的器件供应商不在生产此类军用类产品,因此,就必须用别的方法其在雷达中的应用。
应用可编程器件实现UART功能模块,既可以满足产品类别的需求,又可以在使用中根据实际情况更改配置,这是我们设计中值得考虑的一种方法。
在嵌入式系统中,CPU往往要通过各种串行数据总线与“外界”进行通信。
FPGA芯片具有静态可重复编程和动态在系统重构的特性,使得硬件功能可通过软件的编程修改参数来实现,极大的提高了电子系统设计的灵活性与适用性。
因此UART技术的FPGA实现正广泛应用于军事及其他领域。
当今社会是数字化的社会,数字集成电路广泛应用于社会个各领域。
数字集成电路从电子管、晶体管、中小规模集成电路、超大规模集成电路(VISIC)逐步发展成专用集成电路(ASIC)。
但ASIC由于其设计周期长,不够灵活等缺陷制约着它的应用。
现场可编辑逻辑器件的出现使ASIC设计周期大大缩短,使能广泛应用到实际中去。
FPGA是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物,它采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点:
1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
1.3课题研究的指导思想及其技术指标
自第一个大规模集成电路芯片发明后,从上世纪70年代UART就得到广泛的应用,进过几十年发展,UART芯片的引脚名称、功能等基本没有太大改变。
这些年由于一下高速Modem以及一些软件要求更高的传输速率,UART芯片内部基本构架也得到扩展。
UART在系统中作为接口,提供一下功能:
1.将计算机内部传输来的并行数据转换为传出的串行数据流。
2.将计算机外部的串行数据转换为字节,供计算机内部并行数据器件使用。
3.在输出串行数据流中加入奇偶校验,并对外部接收的数据流进行奇偶检验。
4.在输出串行数据流中加入启停标记,并对外部进入的数据流删除启停标记。
1.3.1UART模块
UART内核模块是整个设计的核心。
在数据接收时,UART内核模块负责控制波特率发生器和移位寄存器同步的接收并且保存RS-232接收端口上的串行数据。
在数据发送时,UART内核模块首先生产完整的发送序列,之后控制移位寄存器将序列加载到移位寄存器的内部寄存器里。
最后再控制波特率发生器驱动移位寄存器将数据串行输出。
1.3.2基于FPGA串口设计的技术要求
(1)能够设计出与串行数据发送和接收的串口,可实现与PC机的通讯。
(2)设计波特率为9600bit/s。
(3)发送数据帧格式定义为:
1位起始位,8位数据位和1位停止位。
(4)用modelsim仿真
第2节UART原理介绍
2.1UART结构和工作原理
2.1.1UART原理
UART即通用异步收发器,是一种串行通信方式。
数据在传输过程中是通过一位一位地进行传输来实现通信的,串行通信方式具有传输线少,成本底等优点,缺点是速度慢。
串行通信分为两种类型:
同步通信方式和异步通信方式。
但一般多用异步通信方式,主要因为接受和发送的时钟是可以独立的这样有利于增加发送与接收的灵活性。
异步通信是一个字符接着一个字符传输,一个字符的信息由起始位、数据位、奇偶校验位和停止位组成。
每一个字符的传输靠起始位来同步,字符的前面一位是起始位,用下降沿通知收方开始传输,紧接着起始位之后的是数据位,传输时低位在前高位在后,字符本身由5~8位数据位组成。
数据位后面是奇偶校验位,最后是停止位,停止位是用高电平来标记一个字符的结束,并为下一个字符的传输做准备。
停止位后面是不同长度的空闲位。
停止位和空闲位都规定为高电平,这样可以保证起始位有一个下降沿。
UART的帧格式如图2.1所示。
UART的帧格式包括线路空闲状态(idle,高电平)、起始位(startbit,低电平)、5~8位数据位(databits)、校验位(paritybit,可选)和停止位(stopbit,位数可为1、1.5、2位)。
在串口的异步通信中,数据以字节为单位的字节帧进行传送。
发送端和接收端必须按照相同的字节帧格式和波特率进行通信。
其中字节帧格式规定了起始位、数据位、寄偶效验位、停止位。
起始位是字节帧的开始。
使数据线处于逻辑0状态,用于向接收端表明开始发送数据帧,起到使发送和接收设备实现同步。
停止位是字节帧的终止,使数据线处于逻辑1状态。
用于向接收端表明数据帧发送完毕。
波特率采用标准速度9600bit/s。
这种格式是由起始位和停止位来实现字符的同步。
UART内部一般有配置寄存器,可以配置数据位数(5~8位)、是否有校验位和校验的类型、停止位的位数(1,1.5,2)等设置将发送器和接收器模块组装起来,就能较容易地实现通用异步收发器总模块,而且硬件实现不需要很多资源,尤其能较灵活地嵌入到FPGA/CPLD的开发。
2.1.2UART的结构
UART的设计采用模块化的设计思想,主要分为3个模块:
数据发送模块、数据接收模块及波特率发生器控制模块。
发送模块实现数据由并行输入到串行输出,接收模块实现数据由串行输入到并行输出,波特率发生器模块控制产生UART时钟频率。
从图中可以看出UART主要有由数据总线接口、控制逻辑、波特率发生器、发送部分和接收部分组成且控制逻辑一般是由MP即微处理器模块实现,图中的对象器件一般指和CPU进行通信的外围串行通信设备类打印机等。
连线采用最简单的3线制连接模式,即只需要两根信号线和一根地线来完成数据收发。
而FPGA只需要选择两个普通I/O引脚分别与接口芯片MAX3232对应引脚T2IN、R2OUT相连即可完成将串口电平转换为设备电路板的工作电平,即实现RS-232电平和TTL/CMOS电平的转换。
一个MAX3232芯片可以支持两个串口的电平变换,我们选择其中的一组接口,图中的4个电阻可以省去。
在电路中加入了0的跳线电阻,是为了在这组接口出故障时可以方便地跳线,使用另一组接口。
第3节方案选择
3.1设计语言选择
3.1.1VHDL编程语言的优势
(1)与其它的硬件描述语言相比VHDL具有更强的行为描述能力从而决定了他成为系统设计领域最佳的硬件描述语言。
强大的行为描述能力是避开具体的器件结构从逻辑行为上描述和设计大规模电子系统的重要保证。
(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。
(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。
符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。
(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。
(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。
3.1.2VHDL基本介绍
对FPGA进行设计,我们有两种设计输入方式:
一种是硬件描述语言输入方式一种是原理图设计输入方式。
本设计以硬件描述语言输入方式进行设计因此对原理图设计输入方式我们不做介绍。
硬件描述语言使用的是文本方式描述设计他又分为普通硬件描述语言和行为描述、语言两种。
普通硬件描述语言有ABEL-HDL、CUPL等他们支持逻辑方程、真值表、状态机等逻辑表达方式。
目前行为描述语言是非常常用的一种高层描述语言它有两种描述方式VHDL和Verilog-HDL。
现在这两种描述语言都成为了IEEE标准而且他们分别都有自己的优点设计者在系统设计、逻辑验证阶段就可以确定方案的可行性语言可以公开利用便于实现大规模的系统设计硬件描述语言有很强的逻辑描述和仿真功能。
VHDL作为硬件描述语言的一种它和Verilog在细节上有一定的区别但是他们最大的区别在于所处的开发环境不同Verilog它根源于传统的自底而上的设计因而被集成电路工业基于单元的设计大量采用而VHDL多采用的是自定而上的设计开发。
VHDL模型具有不同的构造体有功能构造体、行为构造体、结构构造体三种。
我们可以把VHDL模型分为两个部分接口部分VHDL中的实体entity和行为部分VHDL中的构造体architecture。
实体的作用是在VHDL模型中定义模块如何与其他的模型进行连接的在实体的内部我们可以定义模型的名称以及任何要传递给模型的参数端口定义等。
3.2FPGA核心芯片的选择
本系统用的主芯片是EP1C12Q240C8,该系列的芯片采用324引脚、BGA封装的EP1C12FPGA,它拥有12060个LE,52个M4K片上RAM(共计239616bits),2个高性能PLL以及多达249个用户自定义IO。
同时,系统还可以根据用户不同的设计需求来更换其它不同系列的核心板,如:
EP1C6、EP2C20、EP3C25等。
所以,不管从性能上而言,还是从系统灵活性上而言,它都会成为我们的好帮手。
EP1C12核心板具有JTAG调试接口、50MHz高精度时钟源等可用资源,因此对于设计和仿真都提供了较好的条件。
3.3电平转换方式选择
RS─232C是与RS499、RS423、RS422和RS485并列的一种UART(universalasynchronousreceiver/transmitter)接口标准规范和总线标准规范.这些规范虽然规定了不同的通信接口电气特性、传输速率、连接特性和接口的机械特性等内容,但是都对应异步串行通信协议.由于实际中PC的外部接口配置为RS─232C已经成为事实标准,所以文章以RS─232C为基础编写FPGA串口驱动程序。
而MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,所以电平转换部分就是用MAX232实现的。
3.4总体框图设计
第四节系统硬件设计
4.1器件芯片介绍
4.1.1FPGA核心板EP1C12介绍
EP1C12核心板为基于AlteraCyclone器件的嵌入式系统开发提供了一个很好的硬件平台,它可以为开发人员提供以下资源:
(1)主芯片采用AlteraCyclone器件EP1C12F324C8
(2)EPCS4I8配置芯片
(3)4个用户自定义按键
(4)个用户自定义LED
(5)1个七段码LED
(6)标准AS编程接口和JTAG调试接口
(7)40MHz高精度时钟源
(8)三个高密度扩展接口
(9)系统上电复位电路
(10)支持+5V直接输入,板上电源管理模块系统主芯片采用324引脚、BGA封装的E1C12FPGA,它拥有12060个LE,52个M4K片上RAM(共计239616bits),2个高性能PLL以及多达249个用户自定义IO。
同时,系统还可以根据用户不同的设计需求来更换其它不同系列的核心板,如:
EP1C6、EP2C20、EP3C25等。
FPGA开发平台提供了丰富的资源供学生或开发人员学习使用,资源包括接口通信、控制、存储、数据转换以及人机交互显示等几大模块,接口通信模块包括SPI接口、IIC接口、VGA接口、RS232接口、USB接口、PS2键盘/鼠标接口、1-Wire接口等;存储模块包括EEPROM存储器模块等;数据转换模块包括串行ADC、DAC以及音频CODE等;人机交互显示模块包括8个按键、16个LED发光二极管显示、1602字符型点阵LCD、8位动态7段码管、实时时钟、SD卡等。
上述的这些资源模块既可以满足初学者入门的要求,也可以满足开发人员进行二次开发的要求。
EDA/SOPC实验开发平台提供的资源有:
(1)、标准配置核心板为EP1C12核心板(核心芯片为EP1C12F324C8)。
可更换EP2C20F484C8等其它核心板。
(2)、1602字符型液晶点阵。
(3)、RTC,提供系统实时时钟。
(4)、1个256色VGA接口
(5)、1个标准串行接口。
(6)、1个USB设备接口,利用PDIUSBD12芯片实现USB协议转换。
(7)、基于SPI或IIC接口的音频CODEC模块。
(8)、1个蜂鸣器输出模块。
(9)、2个PS2键盘/鼠标接口。
(10)、串行ADC和串行DAC模块。
(11)、IIC接口的EEPROM存储器模块。
(12)、基于1-Wire接口的数字温度传感器。
(13)、8位动态七段码管LED显示。
(14)、16个用户自定义LED显示,8个用户自定义按键输出。
(15)、一个SD卡接口模块。
(16)、扩展接口,供用户高速稳定的自由
4.1.2MAX232
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。
引脚介绍:
第一部分是电荷泵电路。
由1、2、3、4、5、6脚和4只电容构成。
功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。
第二部分是数据转换通道。
由7、8、9、10、11、12、13、14脚构成两个数据通道。
其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。
8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。
TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。
第三部分是供电。
15脚GND、16脚VCC(+5v)。
主要特点:
1、符合所有的RS-232C技术标准
2、只需要单一+5V电源供电
3、片载电荷泵具有升压、电压极性反转能力,能够
产生+10V和-10V电压V+、V-
4、功耗低,典型供电电流5mA
5、内部集成2个RS-232C驱动器
(6)、内部集成两个RS-232C接收器
(7)、高集成度,片外最低只需4个电容即可工作。
4.1.3RS232
RS232接口是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。
它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。
该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。
随着设备的不断改进,出现了代替DB25的DB9接口,现在都把RS232接口叫做DB9
4.2系统整体结构
本设计以FPGA为基础来实现异步通信,而UART模块就为本设计关键所在,如图所示,该模块主要有串行发送器、接收器以及波特率发生器三个模块组成。
波特率发生器模块:
在异步通信中,发送方和接受方必须保持相同的波特率才能实现正确的数据传送。
在本设计中,由于RS-232C传输必定是工作在某种波特率下,为了便于和RS-232C总线进行同步,需要产生符合RS-232C传输波特率的时钟。
本设计完整的工作流程可以间单的分为数据接收过程和发送过程两部分。
接收过程:
当UART模块检测到有新数据(RS-232C总线传输线的起始位)就会触发接收流程。
首先UART模块内部会重置波特率发生器和移位寄存器,控制逻辑使移位寄存器的工作模式为波特率模式,以准备数据接收,其次移位寄存器在波特率时钟的驱动下工作,不断的读取RS-232C串行总线上的输入数据,一位一位的接收,并且将数据保存到内部的数据寄存器内。
然后在进行串并转换,在通过CPU内部数据总线传送到数据I/O缓存器,最后被CPU内部采用。
发送过程:
当要发送数据出去时,先把要发送的CPU内部数据存储到数据I/O缓存器,传送到数据寄存器,然后进行串并转换。
UART模块内部会重置波特率发生器控制逻辑控制移位寄存器进入RS-232C串行发送的协议模式,并且使移位寄存器工作在波特率模式下,于是移位寄存器便在波特率时钟的驱动下依次将数据寄存器的数据一位一位发送到RS-232C的发送端TXD,这样就产生了RS-232C的数据发送时序。
第5节系统软件设计
5.1发送数据程序流程图
5.2接收数据流程图
5.3系统源程序设计
endif;
(1)主程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;
entitytopis
port(clk32mhz,reset,rxd,xmit_cmd_p_in:
instd_logic;总的输入输出信号的定义
rec_ready,txd_out,txd_done_out:
outstd_logic;
txdbuf_in:
instd_logic_vector(7downto0);待发送数据输入
rec_buf:
outstd_logic_vector(7downto0));接收数据缓冲
endtop;
architectureBehavioraloftopis
componentreciever
port(bclkr,resetr,rxdr:
instd_logic;
r_ready:
outstd_logic;
rbuf:
outstd_logic_vector(7downto0))
endcomponent;
componenttransfer
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 串口 设计