基于FPGA的串口通信设计 参考样例.docx

上传人:b****5 文档编号:5390022 上传时间:2022-12-15 格式:DOCX 页数:25 大小:181.68KB
下载 相关 举报
基于FPGA的串口通信设计 参考样例.docx_第1页
第1页 / 共25页
基于FPGA的串口通信设计 参考样例.docx_第2页
第2页 / 共25页
基于FPGA的串口通信设计 参考样例.docx_第3页
第3页 / 共25页
基于FPGA的串口通信设计 参考样例.docx_第4页
第4页 / 共25页
基于FPGA的串口通信设计 参考样例.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

基于FPGA的串口通信设计 参考样例.docx

《基于FPGA的串口通信设计 参考样例.docx》由会员分享,可在线阅读,更多相关《基于FPGA的串口通信设计 参考样例.docx(25页珍藏版)》请在冰豆网上搜索。

基于FPGA的串口通信设计 参考样例.docx

基于FPGA的串口通信设计参考样例

 

高等教育自学考试

毕业设计(论文)

 

题目基于FPGA的串口设计

专业班级2012级电子信息工程

姓名********

指导教师姓名、职称xxx讲师

所属助学单位武汉工业职业技术学院

 

2014年5月10日

 

摘要

本设计用接口芯片的VHDL的设计方法,通过对MAX232串行通总线接口的设计,掌握发送与接收电路的基本设计思路,并进行串口通信。

采用VHDL语言设计分频模块、发生模块、接收模块和显示模块;用键盘输入及串口调试软件调试;拨码开关开关控制发送资料,并在串口调试软件环境下显示,数码管显示出接收到的数据。

关键词硬件描述语言;VHDL;FPGA;RS232

 

Abstract

Thisdesignusingtheinterfacechipdesignmethod,throughtheVHDLforMAX232seriallinksbusinterfacedesign,graspsthesendingandreceivingcircuitdesign,thebasicandserialinterfacecommunication.UsingVHDLlanguagedesignfrequencymodule,producingmodule,receivingmoduleanddisplaymodule,Usethekeyboardinputandserialdebuggingsoftwaredebugging,Dialthecodeswitchswitchcontrol,andsenddatainserialadjustmentundersoftwareenvironmentdisplay,digitalpipeshowedreceiveddata.

Keywords,VHDL,TheFPGA,RS232

 

 

1绪论

现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能向越强,越复杂,更新越快的方向发展。

而支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。

前者以微细加工技术为代表,而后者的代表就是EDA(electronicdesignautomatic,电子设计自动化)技术。

本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。

ASIC(ApplicationSpecificIntegratedCircuit)是专用的系统集成电路,是一种带有逻辑处理的加速处理器。

而FPGA(Field-ProgrammableGateArray,现场可编程门阵列)是特殊的ASIC芯片,与其它的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。

串行通信是将数据分解成二进制位用一条信号线,一位一位顺序传送的方式,其优势是用于通信的线路少,因而在远距离通信时可以极大地降低成本,适合于远距离数据传送,也常用于速度要求不高的近距离数据传送PC系列机上有两个串行异步通信接口、键盘、鼠标与主机间采用串行数据传送。

异步通信是一种很常用的通信方式,它在发送字符时,所发送的字符之间的时间间隔可以是任意的。

发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。

它的好处在于通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。

1.1选题背景

本节将从FPGA嵌入式应用开发技术与串行通信发展的客观实际出发,通过对该技术发展状况的了解,以及课题本身的需要,指出基于FPGA串口通信的设计与实现的必要性。

1.1.1课题相关技术的发展

当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。

它与传统的电子产品在设计上的显著区别是大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低。

同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期。

EDA技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。

EDA技术以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑映像,编程下载等工作。

最终形成集成电子系统或专用集成芯片的一门新技术。

本设计利用VHDL硬件描述语言结合可编程逻辑器件进行的,并通过数码管显示通信结果。

RS232通信可以由各种技术实现,如单片机等。

利用可编程逻辑器件具有其它方式没有的特点:

易学,方便,新颖,有趣,直观,设计与实验项目成功率高,理论与实践结合紧密,体积小,容量大,I/O口丰富,易编程和加密等特点,并且它还具有开放的接口,丰富的设计库,模块化的工具以及LPM定制等优良性能,应用非常方便。

因此,本设计采用可编程逻辑器件实现。

1.1.2课题研究的必要性

现在是一个知识爆炸的新时代。

新产品、新技术层出不穷,电子技术的发展更是日新月异。

可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。

RS-232异步通讯协议,数据在传输过程中没有时钟信号,在接收端必须以一种特定的方式,与接收数据进行同步。

串行通信要求的传输线路少,可靠性高,传输距离远,凭借其多方面的优势,已接口,但是在FPGA中还没有集成这个功能,因此将所需要的串口通信集成被广泛应用到微机与外设的数据交换。

目前在很多芯片中集成了串口通信到FPGA芯片内部中,使得整个系统更加稳定,集成度更高。

1.2课题研究的内容

本设计主要研究基于FPGA的RS232异步通信,要求根据RS232异步通信的帧格式FPGA数据接收模块中采用的每一帧格式为:

1位开始位+8位数据位+1位结束位,波特率为9600。

该模块首先检测串口数据的起始位,在检测到起始位后,每隔一个波特率的时间对串口数据进行一次采样,并存入寄存器的相应位置,当每一帧的8位数据全部写入寄存器后,再统一输出。

 

2FPGA及其开发环境简介

2.1FPGA简介

2.1.1FPGA概述

FPGA是现场可编程门阵列(FieldProgrammableGateArray)的简称,与之相应的CPLD是复杂可编程逻辑器件(ComplexProgrammableLogicDevice)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件或CPLD/PGFA。

CPLD/PGFA几乎能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路。

它如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入或硬件描述语言自由的设计一个数字系统。

通过软件仿真可以事先验证设计的正确性,在PCB完成以后,利用CPLD/FPGA的在线修改功能,随时修改设计而不必改动硬件电路。

使用CPLA/FPGA开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。

这些优点使得CPLA/FPGA技术在20世纪90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言VHDL的进步。

2.1.2FPGA基本结构

FPGA具有掩膜可编程门阵列的通用结构,它由逻辑功能块排成数组,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。

FPGA一般由3种可编程电路和一个用于存放编程数据的静态内存SRAM组成。

这3种可编程电路是:

可编程逻辑模块(CLB--ConfigurableLogicBlock)、输入/输出模块(IOB--I/OBlock)和互连资源(IR—InterconnectResource)。

可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个数组,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。

1.CLB是FPGA的主要组成部分。

它主要由逻辑函数发生器、触发器、数据选择器等电路组成。

CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G’、F’和H’。

G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、F2、F3和F4。

这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数。

逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G’和F’,而另一个输入信号是来自信号变换电路的输出H1。

这个函数发生器能实现3输入变量的各种组合函数。

这3个函数发生器结合起来,可实现多达9变量的逻辑函数。

CLB中有许多不同规格的数据选择器(四选一、二选一等),通过对CLB内部数据选择器的编程,逻辑函数发生器G、F和H的输出可以连接到CLB输出端X或Y,并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号以及输出信号。

这些数据选择器的地址控制信号均由编程信息提供,从而实现所需的电路结构。

CLB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROM。

F和G的输入等效于ROM的地址码,通过查找ROM中的地址表可以得到相应的组合逻辑函数输出。

另一方面,逻辑函数发生器F和G还可以作为器件内高速RAM或小的可擦写内存使用,它由信号变换电路控制。

2.输入/输出模块IOB。

IOB提供了器件引脚和内部逻辑数组之间的连接。

它主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成。

每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。

当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器。

缓冲器的输出分成两路:

一路可以直接送到MUX,另一路经延时几纳秒(或者不延时)送到输入通路D触发器,再送到数据选择器。

通过编程给数据选择器不同的控制信息,确定送至CLB数组的I1和I2是来自输入缓冲器,还是来自触发器。

当IOB控制的引脚被定义为输出时,CLB数组的输出信号OUT也可以有两条传输途径:

一条是直接经MUX送至输出缓冲器,另一条是先存入输出通路D触发器,再送至输出缓冲器。

IOB输出端配有两只MOS管,它们的栅极均可编程,使MOS管导通或截止,分别经上拉电阻接通Vcc、地线或者不接通,用以改善输出波形和负载能力。

3.可编程互连资源IR。

可编程互连资源IR可以将FPGA内部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统。

IR主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接。

2.1.3FPGA系统设计流程

一般说来,一个比较大的完整的项目应该采用层次化的描述方法:

分为几个较大的模块,定义好各功能模块之间的接口,然后各个模块再细分去具体实现,这就是TOPDOWN(自顶向下)的设计方法。

目前这种高层次的设计方法已被广泛采用。

高层次设计只是定义系统的行为特征,可以不涉及实现工艺,因此还可以在厂家综合库的支持下,利用综合优化工具将高层次描述转换成针对某种工艺优化的网络表,使工艺转化变得轻而易举。

CPLD/FPGA系统设计的工作流程如图2-1所示

图2-1CPLD/FPGA系统设计流程

流程说明:

1.按照“自顶向下”的设计方法进行系统划分。

2.输入VHDL代码,这是设计中最为普遍的输入方式。

此外,还可以采用图形输入方式(框图、状态图等),这种输入方式具有直观、容易理解的优点。

3.将以上的设计输入编译成标准的VHDL档。

4.进行代码级的功能仿真,主要是检验系统功能设计的正确性。

这一步骤适用于大型设计,因为对于大型设计来说,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。

一般情况下,这一仿真步骤可略去。

5.利用综合器对VHDL源代码进行综合优化处理,生成门级描述的网络表文件,这是将高层次描述转化为硬件电路的关键步骤。

综合优化是针对ASIC芯片供货商的某一产品系列进行的,所以综合的过程要在相应的厂家综合库的支持下才能完成。

6.利用产生的网络表文件进行适配前的时序仿真,仿真过程不涉及具体器件的硬件特性,是较为粗略的。

一般的设计,也可略去这一步骤。

7.利用适配器将综合后的网络表文件针对某一具体的目标器件进行逻辑映像操作,包括底层器件配置、逻辑分割、逻辑优化和布局布线。

8.在适配完成后,产生多项设计结果:

(a)适配报告,包括芯片内部资源利用情况,设计的布尔方程描述情况等;(b)适配后的仿真模型;(c)器件编程檔。

根据适配后的仿真模型,可以进行适配后时序仿真,因为已经得到器件的实际硬件特性(如时延特性),所以仿真结果能比较精确的预期未来芯片的实际性能。

如果仿真结果达不到设计要求,就修改VHDL源代码或选择不同速度和质量的器件,直至满足设计要求。

最后将适配器产生的器件编程檔通过编程器或下载电缆加载到目标芯片CPLD/FPGA中。

2.1.4FPGA开发编程原理

硬件设计需要根据各种性能指针、成本、开发周期等因素,确定最佳的实现方案,画出系统框图,选择芯片,设计PCB并最终形成样机。

CPLD/FPGA软件设计可分为两大块:

编程语言和编程工具。

编程语言主要有VHDL和Verilog两种硬件描述语言;编程工具主要是两大厂家Altera和Xilinx的集成综合EDA软件(如MAX+plusII、QuartusII、Foundation、ISE)以及第三方工具(如FPGAExpress、Modelsim、SynposysSVS等)。

具体的设计输入方式有以下几种:

1.HDL语言方式。

HDL既可以描述底层设计,也可以描述顶层的设计,但它不容易做到较高的工作速度和芯片利用率。

用这种方式描述的项目最后所能达到的性能与设计人员的水平、经验以及综合软件有很大的关系。

2.图形方式。

可以分为电路原理图描述,状态机描述和波形描述3种形式。

有的软件3种输入方法都支持,如Active-HDL。

MAX+plusII图形输入方式只支持电路原理图描述和波形描述两种。

电路原理图方式描述比较直观和高效,对综合软件的要求不高。

一般大都使用成熟的IP核和中小规模集成电路所搭成的现成电路,整体放到一片可编程逻辑器件的内部去,所以硬件工作速度和芯片利用率很高,但是但项目很大的时候,该方法就显得有些繁琐;状态机描述主要用来设计基于状态机思想的时序电路。

在图形的方式下定义好各个工作状态,然后在各个状态上输入转换条件以及相应的输入输出,最后生成HDL语言描述,送去综合软件综合到可编程逻辑器件的内部。

由于状态机到HDL语言有一种标准的对应描述方式,所以这种输入方式最后所能达到的工作速度和芯片利用率主要取决于综合软件;波形描述方式是基于真值表的一种图形输入方式,直接描述输入与输出的波形关系。

这种输入方式最后所能达到的工作速度和芯片利用率也是主要取决于综合软件。

2.2QuartusII9.1集成开发环境简介

QuartusII软件是Altera的综合开发工具,它集成了Altera的FPGA/CPLD开发流程中所涉及的所有工具和第三方软件接口。

QuartusII9.1版本几乎支持Altera现行的所有FPGA,在该集成开发环境中可以实现电路的设计、综合、适配到最后形成下载文件以及在线配置FPGA,还能对电路进行功能仿真,对适配后形成的最终电路进行时序仿真。

也就是说只要有了QuartusII这个集成开发环境,就基本上可以完成Altera公司FPGA开发过程中的所有工作。

另外,为了方便设计,QuartusII还提供了免费LPM模块供用户调用,如计数器、内存、加法器、乘法器等。

除了这些免费的LPM模块外,Altera公司还开发了有偿IP核提供给有需要的用户使用。

这些LPM模块和IP核都大大简化了设计过程,缩短了开发周期。

QuartusII9.1支持多种输入方式,常用的有:

(1)原理图输入:

这种方法最直观,适合顶层电路的设计;

(2)硬件描述语言输入:

包括AHDL、VHDL及VerilogHDL输入。

采用硬件描述语言的优点易于使用自顶向下的设计方法、易于模块规划和复用、移植性强、通用性好。

(3)网表输入:

对于在其它软件系统上设计的电路,可以采用这种设计方法,而不必重新输入,QuartusII支持的网表檔包括EDIF、VHDL及Verilog等格式。

这种方法的优点是可以充分利用现有的设计资源。

在本章的设计中,采用的是VHDL硬件描述语言与原理图输入相结合的方式。

一般来说,完整的FPGA设计流程包括电路设计与输入、功能仿真、综合、综合后仿真、实现、布线后仿真与验证、板级仿真验证与调试等主要步骤。

2.3VHDL硬件描述语言简介

2.3.1基本介绍

VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。

1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。

自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。

此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。

1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。

现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。

有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。

VHDL语言是一种用于电路设计的高级语言。

主要用于描述数字系统的结构,行为,功能和接口。

除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。

VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个组件,一个电路模块或一个系统)分成外部(或称可视部分,及埠)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。

在对一个设计实体定义了外部接口后,一旦其内部开发完成后,其它的设计就可以直接调用这个实体。

这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。

2.3.2VHDL系统设计的特点

与其它硬件描述语言相比,VHDL具有以下特点:

功能强大、设计灵活。

VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。

它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。

VHDL支持同步电路、异步电路和随机电路的设计,这是其它硬件描述语言所不能比拟的。

VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。

  支持广泛、易于修改。

由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。

在硬件电路设计过程中,主要的设计檔是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。

  强大的系统硬件描述能力。

VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。

而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。

另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。

VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。

  独立于器件的设计、与工艺无关。

设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。

当设计描述完成后,可以用多种不同的器件结构来实现其功能。

  很强的移植能力。

VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。

易于共享和复用。

VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。

这些模块可以预先设计或使用以前设计中的存盘模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。

2.3.3VHDL系统优势

1)与其它的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。

强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。

2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。

3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。

符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。

4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。

5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。

 

3串口通信总体设计方案

3.1串口通信的原理图

如图3.1所示。

其中TXD为发送数据线,RXD为接收数据线。

图3.1

3.2设计的基本要求

根据RS232异步通讯的帧格式FPGA数据接收模块中采用的每一帧格式为:

1位开始位+8位数据位+1位结束位,波特率为9600。

该模块首先检测串口数据的起始位,在检测到起始位后,每隔一个波特率的时间对串口数据进行一次采样,并存入寄存器的相应位置,当每一帧的8位数据全部写入寄存器后,再统一输出。

 

4串口通信各单元电路设计

4.1RS-232发送顶层模块发送模块设计

RS-232发送模块

下面是我们所想要实现的:

图4.1

它的工作方式:

发送器接收8位的数据,并将其串行输出。

("TxD_start"置位后开始传输).

当有数传输的时候,使"busy"信号有效,此时“TxD_start”信号被忽略.

RS-232模块的参数是固定的:

8位数据,2个停止位,无奇偶校验.

RS-232发送顶层模块原理图如图4.2所示

图4.2

RS-232发送顶层模块波形仿真图如图4.3所示

图4.3

RS-232发送顶层模块VHDL程序

--分频模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCOUNT883IS

PORT(clk:

inSTD_LOGIC;--系统时钟

RESET:

INSTD_LOGIC;--复位信号

CNT:

OUTSTD_LOGIC);--采样频率

ENDENTITY;

ARCHITEC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1