基于FPGA的RS-232串口通讯逻辑设计_第1页
基于FPGA的RS-232串口通讯逻辑设计_第2页
基于FPGA的RS-232串口通讯逻辑设计_第3页
基于FPGA的RS-232串口通讯逻辑设计_第4页
基于FPGA的RS-232串口通讯逻辑设计_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业设计题目:基于FPGA的RS-232串口通讯逻辑设计信息与电气工程2008200829261132012年6月10日独创声明本人郑重声明:所呈交的毕业论文(设计,是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本论文(设计)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。此声明的法律后果由本人承担。作者签名:

二〇一年月日毕业论文(设计)使用授权声明本人完全了解鲁东大学关于收集、保存、使用毕业论文(设计)的规定。本人愿意按照学校要求提交论文(设计)的印刷本和电子版,同意学校保存论文(设计)的印刷本和电子版,或采用影印、数字化或其它复制手段保存论文(设计);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布论文(设计)的部分或全部内容,允许他人依法合理使用。(保密论文在解密后遵守此规定)论文作者(签名):二〇一年月日毕业设计选题报告姓名杨常伟性别男学院信息与电气工程学院年级2008级学号20082926113设计题目基于FPGA的RS-232串口通讯逻辑设计课题来源教学课题类别应用研究选做本课题的原因及条件分析:现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者的代表就是EDA(electronicdesignautomatic,电子设计自动化)技术。而FPGA(Field-ProgrammableGateArray,现场可编程门阵列)是特殊的ASIC芯片,与其它的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。而串行通信技术又有比较成熟的技术与其特有的优点被普遍应用,因此设计此课题具有很强的的实用性和发展性。指导教师意见:签名:年月日院(系)毕业论文(设计)领导小组意见:(公章)年月日毕业设计任务下达书学院信息与电气工程学院专业计算机科学与技术学号0322110213姓名杨常伟现将毕业设计任务下达书发给你。毕业设计任务下达书内容如下:一、基于FPGA的RS-232串口通讯逻辑设计二、4.基于FPGA的RS-232串口通讯逻辑设计的上机测试。三、具体要求利用VHDL语言编写程序实现基于FPGA的RS-232的串行通信的接收和发送,利用FPGA集成度比较高,具有在线可编程能力,在其完成各种功能的同时,可以将串行通信接口构建其中,根据实际需求分配资源。开题报告撰写的要求,查阅文献资料的要求,设计工作要求,写作格式要求,纪律要求,以及设计中注意的问题和其他方面的要求等,100字左右。四、[1]刘涛.小型网站架设设计[M].北京:中国铁道出版社,2004.[2]温明.ASP网站建设实录[M].北京:希望电子出版社,2005.[3]石志国.ASP动态网站编辑[M].北京:清华大学出版社,2001.五、进程安排阶段起止日期主要内容六、毕业设计任务下达书于年月日发出。毕业设计应于年月日前完成后交指导教师,由指导教师评阅后提交毕业设计答辩委员会。七、毕业设计任务下达书一式两份,一份给学生,一份留学院存档。指导教师:签发于年月日分管院长:签发于年月日毕业设计开题报告姓名杨常伟性别男学院信息与电气工程学院年级2008级学号20082926113预计完成时间设计题目基于FPGA的RS-232串口通讯逻辑设计课题来源教学课题类别应用研究指导教师韩辅君毕业设计实施方案:FPGAVHDL;;;;完成基于FPGA的RS-232串口通讯逻辑设计。设计主要内容(提纲):1、介绍选题背景及EDA技术的发展背景;2、FPGA简介及其开发环境介绍,并对RS-232通信原理简单介绍了解;3、对所设计的各个模块进行程序编写及用Modelsim对各个模块进行模拟仿真;4、程序模块功能设计,完成各个功能所需代码。指导教师意见:学生对于设计基于FPGA的RS-232串口通讯逻辑设计较为熟练,基本可以实现设计的既定功能,整个实施方案过程合理清晰,步骤合理,阶段任务明确;设计内容完整、科学,符合设计的相关要求,已经具备了开题的条件,同意开题。签名:年月日年月日学院毕业论文(设计)领导小组意见:(公章)年月日(签章)年月日毕业设计结题报告姓名杨常伟性别男学院信息与电气工程学院年级2008级学号20082926113设计题目基于FPGA的RS-232串口通讯逻辑设计课题来源教学课题类别应用研究指导教师韩辅君本课题完成情况介绍(包括研究过程、实验过程、结果分析、存在的问题及应用情况等。)指导教师意见:本设计基本实现了所定义的功能,采用模块化设计有很强的可读性和移植性。结构设计合理,程序编写恰当,比较好的完成了设计任务。同意结题。签名:年月日学院毕业论文(设计)领导小组意见:(公章)年月日设计成绩

毕业设计成绩评定表指导教师对论文(设计)的内容、工作量、工作态度、完成质量、创新性、应用性、文本规范、存在不足等给出评价,以及是否同意参加答辩。不少于100字。学院:信息与电气工程学院学号:0322110213姓名杨常伟设计总成绩:设计题目基于FPGA的RS-232串口通讯逻辑设计指导教评阅人对论文(设计)的内容完整性、工作思路、理论观点、创新性、应用性、文本规范、外语能力、存在不足等给出评价,以及是否同意参加答辩。不少于100字师评语该设计在对鲁东大学书店概况做了需求分析的基础上,划分了网站的功能结构,开发了一个基于ASP的鲁东大学网上书店网站,整个设计方案合理,实现的功能较为齐全,达到了设计任务书所规定的要求,设计说明书结构合理,表达清楚。最好能加上每个同学可以发布自己的买书和卖书的论坛。同意推荐该同学参加答辩。评定成绩:签名:年月日评阅人评语注意时间先后安排,全文时间要合理该学生基本完成了鲁东大学网上书店网站的设计要求,设计思路较为清晰,功能较为完善,摘要所反映的外语能力较好,设计说明书的文本、图表规范,表述清楚,数据库设计可以更合理一些。同意该学生参加答辩。评定成绩:签名:年月日答辩小组评语手写答辩成绩:组长签名:年月日注:1、论文(设计)总成绩=指导教师评定成绩(50%)+评阅人评定成绩(20%)+答辩成绩(30%)2、将总成绩由百分制转换为五级制,填入本表相应位置。目录1引言1.1选题背景1.1.2课题研究的必要性1.2课题研究的内容2FPGA简介及其开发环境简介2.1FPGA简介2.1.1FPGA发展历史与现状2.1.2FPGA系统设计流程2.4FPGA开发版(EXCD-1)概述2.4.1板上资源2.4.2使用说明3串口通信设计3.2设计的基本要求4串口通信各单元电路设计124.1RS-232顶层模块设计124.2RS-232发送模块设计124.3RS-232接收模块设计134.4波特率发生模块144.5显示模块设计14上机调试15管脚配置154.6.2测试结果分析165实验总结18附录19参考文献28致谢29

基于FPGA的RS-232串口通讯逻辑设计杨常伟(信息与电气工程学院,电气工程及其自动化专业,2008级4班,20082926113)摘要:随着科学技术的发展,通讯的速度及在线可编程能力越来越重要,而一些普通的集成芯片很难满足这一要求。FPGA的出现,使接口的通讯速度和能力大幅提高。本文用VHDL语言编写程序实现基于FPGA的RS-232的串行通信,并从FPGA通讯应用的角度对系统进行分析设计,把目前应用和后继发展进行兼顾考虑,随着科学的发展,该课题还存在大量的后续研究工作。关键词:FPGA,通讯,接口,VHDLBasedontheFPGAserialcommunicationsRS-232logicdesignAbstract:Withthedevelopmentofscienceandtechnology,thecommunicationspeedandonlineprogrammableabilitybecomemoreandmoreimportant,andsomecommonintegratedchipisdifficulttomeettherequirements.TheemergenceoftheFPGA,makethecommunicationinterfacespeedandcapacityincrease.Inthispaper,usingtheVHDLlanguageproceduresfortherealizationofserialcommunicationbasedontheFPGA,andthisarticlefromtheFPGAcommunicationapplicationangle,carriesontheanalysistothesystemdesign,theapplicationandsubsequentdevelopmentintoaccount,alongwiththedevelopmentofscience,thereisstillalotofwork.Keywords:FPGA,communication,interface,VHDL1引言现代社会的标志之一就是信息产品的广泛使用,而且是产品的性能越来越强,复杂程度越来越高,更新步伐越来越快。支撑信息电子产品高速发展的基础就是微电子制造工艺水平的提高和电子产品设计开发技术的发展。前者以微细加工技术为代表,而后者的代表就是EDA(electronicdesignautomatic,电子设计自动化)技术。本设计采用的VHDL是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级等三个不同层次的设计;支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强,因此在实际应用中越来越广泛。ASIC(ApplicationSpecificIntegratedCircuit是专用的系统集成电路,是一种带有逻辑处理的加速处理器。而FPGA(Field-ProgrammableGateArray,现场可编程门阵列)是特殊的ASIC芯片,与其它的ASIC芯片相比,它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。串行通信是将数据分解成二进制位用一条信号线,一位一位顺序传送的方式,其优势是用于通信的线路少,因而在远距离通信时可以极大地降低成本,它适合于远距离数据传送,也常用于速度要求不高的近距离数据传送PC系列机上有两个串行异步通信接口、键盘、鼠标与主机间采用串行数据传送。异步通信是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。本设计采用串口异步通信技术。1.1选题背景本节将从FPGA嵌入式应用开发技术与串行通信发展的客观实际出发,通过对该技术发展状况的了解,以及课题本身的需要,指出研究基于FPGA的芯片系统与设计——FPGA串口通信的设计与实现的必要性。课题相关技术的发展我们知道现在数字集成电路不间断的发展、变化。由起初的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSIC以及很多具有专用功能的专用集成电路。然而,随着集成电路的规模变得越来越大,很多设计师想自己设计出理想的集成电路,他们的想法是在实验室里就能设计出合适的超大规模集成电路芯片,而且想立刻投入实践之中。基于上述的想法,设计师们设计出了现场可编程逻辑器件(FPLD,在现场可编程逻辑器件中,应用最为广泛的有两种:现场可编程门阵列(FPGA和复杂可编程逻辑器件(CPLD[2]。Xilinx公司在1985年开发出第一块现场可编程逻辑器件,现在,FPGA已经发展了十几年了。在这十几年中,数字系统现场集成技术取得了惊人的成就。现场可编程器件的规模也由最初的1200个门逐渐发展到几十万门,现在国际上现场可编程逻辑器件的两大领导厂商Xilinx和Altera公司又推出了上百万门FPGA/CPLD产品,可以说现在的现场可编程逻辑器件的集成度达到了一个前所未有的高度。同时他们推出的器件所具有的资源和开发套件相比于以前也增加了很多。基于FPGA的优良特性,它在通信、控制、数据计算等领域得到了广泛的应用。它为用户减少了电子系统的开发风险和开发成本。同时缩短了上市时间,再通过系统编程、远程在线重构技术等更是减少了维护升级的成本。大大降低了整体系统的开发投入成本。未来可编程器件的发展趋势可以有这么几个:首先,它朝着大容量、低电压、低功耗的FPGA发展,这是毋庸置疑的,可以说各个芯片都朝着这个方向发展;其次,它朝着系统级的高密度FPGA发展;再次,FPGA可能朝着与ASIC(ApplicationSpecificIntegratedCircuit)融合的方向发展。当这样的FPGA在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点;最后,可能会朝着动态可重构FPGA方向发展。FPGA动态可重构技术主要是基于SRAM可编程FPGA全部或者使部分逻辑资源,从而实现系统的动态转换功能。他可以在系统上实现动态配置的新型FPGA芯片。1.1.2课题研究的必要性随着科学技术的发展,新产品、新技术层出不穷,电子技术的发展更是日新月异。电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。RS-232接口是现在最常用的一种通信接口,它的使用及开发现在已经非常成熟,因此基于FPGA的RS-232串口逻辑通信将具有更加好的可行性及适用性,可以应用到各种控制与通信系统中。1.2课题研究的内容本设计主要研究基于FPGA的RS-232串口异步通信,要求根据RS-232异步通信的帧格式进行传输。FPGA数据接收模块中采用的每一帧格式为:1位开始位+8位数据位+1位结束位,波特率为9600。该模块首先检测串口数据的起始位,在检测到起始位后,每隔一个波特率的时间对串口数据进行一次采样,并存入寄存器的相应位置,当每一帧的8位数据全部写入寄存器后,再统一输出。2FPGA简介及其开发环境简介2.1FPGA简介2.1.1FPGA发展历史与现状就如前面所提及的现在数字集成电路不间断的发展、变化。由起初的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSIC以及很多具有专用功能的专用集成电路。然而,随着集成电路的规模变得也越来越大,很多设计师想自己设计出理想的集成电路,他们的想法是在实验室里就能设计出合适的超大规模集成电路芯片,而且想立刻投入实践之中。基于上述的想法,设计师们设计出了现场可编程逻辑器件(FPLD,在现场可编程逻辑器件中,应用最为广泛的有两种:现场可编程门阵列(FPGA和复杂可编程逻辑器件(CPLD[2]。Xilinx公司在1985年开发出第一块现场可编程逻辑器件,现在,FPGA已经发展了十几年了。在这十几年中,数字系统现场集成技术取得了惊人的成就。现场可编程器件的规模也由最初的1200个门逐渐发展到几十万门,现在国际上现场可编程逻辑器件的两大领导厂商Xilinx和Altera公司又推出了上百万门FPGA/CPLD产品,可以说现在的现场可编程逻辑器件的集成度达到了一个前所未有的高度。同时他们推出的器件所具有的资源和开发套件相比于以前也增加了很多。大规模可编程逻辑门阵列FPGA(FieldProgramGateArray)和复杂可编程逻辑器件CPLD(ComplexProgrammableLogicDevice)是现在应用最为广泛的两种可编程专用集成电路。他们具有性能好、容量大、体积小、功耗低、可靠性高、速度快、设计周期短等好处。而且现在各大公司都在努力扩充自己的IP库,用更为优化的资源满足用户的需要,扩大自己的市场。基于FPGA的优良特性,它在通信、控制、数据计算等领域得到了广泛的应用。它为用户减少了电子系统的开发风险和开发成本。同时缩短了上市时间,再通过系统编程、远程在线重构技术等更是减少了维护升级的成本。大大降低了整体系统的开发投入成本。未来可编程器件的发展趋势可以有这么几个:首先,它朝着大容量、低电压、低功率的FPGA发展,这是毋庸置疑的,可以说各个芯片都朝着这个方向发展;其次,它朝着系统级的高密度FPGA发展;再次,FPGA可能朝着ASIC(ApplicationSpecificIntegratedCircuit)融合的方向发展。当这样的FPGA在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点;最后,可能会朝着动态可重构FPGA方向发展。FPGA动态可重构技术主要是基于SRAM可编程FPGA全部或者使部分逻辑资源,从而实现系统的动态转换功能。他可以在系统上实现动态配置的新型FPGA芯片。。2.1.2FPGA系统设计流程在本章中,我们根据我们的设计对XilinxFPGA开发环境ISE和整个开发流程做一个详细了解。我们知道Xilinx作为世界上最大的FPGA(现场可编程门阵列)/CPLD(复杂可编程器件)生产商之一,不断推动着现场可编程器件技术的发展。作为其开发软件ISE也是不断随着器件的发展而推陈出新,最新的ISE已经取代了早期的Foundation系列,而且其功能更强大,包含的库更多,能利用它进行开发的系列更多。ISE是IntegratedSoftwareEnvironment(集成综合环境)的缩写,它是Xilinx提供给用户的一个工具集,这个集成的工具可以实现FPGA/CPLD的源代码输入或原理图输入、仿真、综合到下载到板子上调试的整个开发过程,其界面风格简洁流畅,易学易用。在遇到问题时,我们可以查找在线的帮助信息,通过Xilinx提供的技术支持网站,我们可以把在设计中遇到的问题解决掉。同时,在ISELanguageTemplate中ISE元件提供给我们丰富的代码片段。在编写程序时,找到我们需要的代码片段,我们可以加以修改,变成我们所要的程序。下面是我们进行FPGA进行开发的设计流程。图2-1FPGA设计流程图在接下来的设计中,我们根据上面的FPGA设计流程图,我们仔细的分析一下FPGA的开发流程。2.1.4FPGA开发编程原理硬件设计需要根据各种性能指针、成本、开发周期等因素,确定最佳的实现方案,画出系统框图,选择芯片,设计PCB并最终形成样机。CPLD/FPGA软件设计可分为两大块:编程语言和编程工具。编程语言主要有VHDL和Verilog两种硬件描述语言;编程工具主要是两大厂家Xilinx和Xilinx的集成综合EDA软件(如MAX+plusII、QuartusII、Foundation、ISE)以及第三方工具(如FPGAExpress、Modelsim、SynposysSVS等)。具体的设计输入方式有以下几种:语言方式。HDL既可以描述底层设计,也可以描述顶层的设计,但它不容易做到较高的工作速度和芯片利用率。用这种方式描述的项目最后所能达到的性能与设计人员的水平、经验以及综合软件有很大的关系。2.图形方式。可以分为电路原理图描述,状态机描述和波形描述3种形式。有的软件3种输入方法都支持,如Active-HDL。MAX+plusII图形输入方式只支持电路原理图描述和波形描述两种。电路原理图方式描述比较直观和高效,对综合软件的要求不高。一般大都使用成熟的IP核和中小规模集成电路所搭成的现成电路,整体放到一片可编程逻辑器件的内部去,所以硬件工作速度和芯片利用率很高,但是当项目很大的时候,该方法就显得有些繁琐;状态机描述主要用来设计基于状态机思想的时序电路。在图形的方式下定义好各个工作状态,然后在各个状态上输入转换条件以及相应的输入输出,最后生成HDL语言描述,送去综合软件综合到可编程逻辑器件的内部。由于状态机到HDL语言有一种标准的对应描述方式,所以这种输入方式最后所能达到的工作速度和芯片利用率主要取决于综合软件;波形描述方式是基于真值表的一种图形输入方式,直接描述输入与输出的波形关系。这种输入方式最后所能达到的工作速度和芯片利用率也是主要取决于综合软件。本设计采用的是以VHDL硬件编程语言实现,并以Modelsim6.5g仿真。ISE软件是Xilinx的综合开发工具,它集成了Xilinx的FPGA/CPLD开发流程中所涉及的所有工具和第三方软件接口。ISE9.1i版本几乎支持Xilinx现行的所有FPGA,在该集成开发环境中可以实现电路的设计、综合、适配到最后形成下载文件以及在线配置FPGA,还能对电路进行功能仿真,对适配后形成的最终电路进行时序仿真。也就是说只要有了ISE这个集成开发环境,就基本上可以完成Xilinx公司FPGA开发过程中的所有工作。另外,为了方便设计,ISE还提供了免费LPM模块供用户调用,如计数器、内存、加法器、乘法器等。除了这些免费的LPM模块外,Xilinx公司还开发了有偿IP核供给有需要的用户使用。这些LPM模块和IP核都大大简化了设计过程,缩短了开发周期。ISE9.1i支持多种输入方式,常用的有:(1)原理图输入:这种方法最直观,适合顶层电路的设计;(2)硬件描述语言输入:包括AHDL、VHDL及VerilogHDL输入。采用硬件描述语言的优点易于使用自顶向下的设计方法、易于模块规划和复用、移植性强、通用性好。(3)网表输入:对于在其它软件系统上设计的电路,可以采用这种设计方法,而不必重新输入,ISE支持的网表檔包括EDIF、VHDL及Verilog等格式。这种方法的优点是可以充分利用现有的设计资源。在本章的设计中,采用的是VHDL硬件描述语言输入的方式。一般来说,完整的FPGA设计流程包括电路设计与输入、功能仿真、综合、综合后仿真、实现、布线后仿真与验证、板级仿真验证与调试等主要步骤。基本介绍对FPGA进行设计,我们有两种设计输入方式,一种是硬件描述语言输入方式,一种是原理图设计输入方式。本设计以硬件描述语言输入方式进行设计,因此对原理图设计输入方式,我们不做介绍。硬件描述语言使用的是文本方式描述设计,他又分为普通硬件描述语言和行为描述、语言两种。普通硬件描述语言有ABEL-HDL、CUPL等,他们支持逻辑方程、真值表、状态机等逻辑表达方式。目前,行为描述语言是非常常用的一种高层描述语言,它有两种描述方式:VHDL和Verilog-HDL。现在这两种描述语言都成为了IEEE标准,而且他们分别都有自己的优点:设计者在系统设计、逻辑验证阶段就可以确定方案的可行性;语言可以公开利用,便于实现大规模的系统设计;硬件描述语言有很强的逻辑描述和仿真功能。VHDL作为硬件描述语言的一种,它和Verilog在细节上有一定的区别,但是他们最大的区别在于所处的开发环境不同,Verilog它根源于传统的自底而上的设计,因而被集成电路工业基于单元的设计大量采用,而VHDL多采用的是自定而上的设计开发。VHDL模型具有不同的构造体,有功能构造体、行为构造体、结构构造体三种。我们可以把VHDL模型分为两个部分:接口部分(VHDL中的实体entity)和行为部分(VHDL中的构造体architecture)。实体的作用是在VHDL模型中定义模块如何与其他的模型进行连接的,在实体的内部我们可以定义模型的名称以及任何要传递给模型的参数,端口定义等。编程语言的优势(1)与其它的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。2.4FPGA开发版(EXCD-1)概述EXCD-1可编程片上系统开发板是一款易于使用的开发板,它能够实现大量基于FPGA的数字系统设计。开发板采用XilinxSpartan3EFPGA器件,板上资源丰富,有2Mbytes的Flash和1Mbytes的快速SRAM,以及各种输入输出设备,可以方便的设计具有各种功能的数字系统,也可设计含有XilinxMicroBlaze软核的嵌入式处理器系统。EXCD-1可编程片上系统开发板有5个扩展接口,可灵活的扩展各种功能模块,如数模转换模块,模数转换模块,LCD显示模块等。图2-1EXCD-1可编程片上系统开发板2.4.1板上资源图2-2EXCD-1板上资源框图1.XilinxSpartan3EXC3S500EPQ208FPGA器件10,476逻辑单元1,164CLBs73Kbits分布式RAM360Kbits块RAMs20个专用乘法器4个DCMs158个用户I/O管脚PQ208管脚封装2.时钟:50MHZ晶振输入3.高速异步SRAM512K×16bits4.Flash存储器1M×16bits5.配置Flash:XCF04S4Mbit6.JTAG下载接口7.4个按键8.1个4位7段数码管9.2个DIP开关10.8个拨码开关11.8个发光二极管12.1个PS2接口13.1个RS232接口14.1个VGA接口15.扩展接口:4个具有8个IO信号的12-PIN扩展接口1个具有34个IO信号的68-PINSCSI扩展接口16.1个电源接口17.1个电源拨码开关18.1个复位按钮2.4.2使用说明1使用前准备1.连接电源;2.连接XilinxUSB平台电缆或并口下载线,用于配置FPGA和平台Flash;3.连接串行电缆板上相应端口;4.FPGA配置及编程XilinxSpartan3EXC3S500EFPGA器件提供了两种方案来解决FPGA的编程。(1.JTAG配置这是一种很通用的编程方式,利用PC机直接将FPGA的配置文件通过JTAG下载到FPGA芯片中,每次上电需要重新下载程序。如图2-3所示。JTAG配置方式编程的器件为FPGA,配置文件为ISE的综合和实现后自动生成*.bit文件。(2.PROM配置PROM配置方式与JTAG不同,FPGA的配置文件下载到PROM中,重新上电之后,PROM将通过串行或者并行的方式将配置文件下载FPGA芯片。因此,PROM配置方式的好处在于掉电无需重新下载。JTAG配置和PROM配置操作流程很相似,只是由于它们编程的器件不同,它们需要的配置文件格式也不同。PROM配置方式编程的器件为FLASH,需要的配置文件为IMPACT软件生成的*.mcs文件。如图2-3所示。图2-3JTAG配置与PROM配置方式示意图2输入时钟EXCD-1可编程片上系统开发板使用50MHZ的晶振作为整个系统的工作时钟。晶振产生的50MHz时钟信号连接至FPGA全局时钟引脚P80,可驱动FPGA内部锁相环(DLL)模块,以达到分频或倍频的目的。3串口通信设计串口通信的原理图如图3.1所示。其中UART-TX为发送数据线UART-RX为接收数据线。图3.1串口通信原理图3.2设计的基本要求通信方式可分为并行通信和串行通信两种。并行通信就是数据以成组的方式在多个并行信道上同时传输;而串行通信则是在传输过程中,二进制数据一位一位的通过一条通信信道,并且按照规定的规程依次传输,实现计算机与计算机或计算机与外部设备之间的通信(数据交换。根据RS232异步通讯的帧格式FPGA数据接收模块中采用的每一帧格式为:1位开始位(0)+8位数据位+1位结束位(1),波特率为9600。该模块首先检测串口数据的起始位,在检测到起始位后,每隔一个波特率的时间对串口数据进行一次采样,并存入寄存器的相应位置,当每一帧的8位数据全部写入寄存器后,再统一输出。由于串行通信的收发方都只需要一条数据线,比较容易实现.而且长距离传输时也更加可靠,因此其应用十分广泛。本设计就是使用第二种方法设计的串行通信。4串口通信各单元电路设计设计流程图:4.1RS-232顶层模块设计其顶层模块原理图如下:图4.1RS-232顶层模块原理图由三部分组成:接收模块,发送模块以及波特率发生模块等三个模快。其顶层文件模块程序代码见附录一。4.2RS-232发送模块设计工作说明:发送器接收8位的数据,并将其串行输出。("reset"置位后开始传输。RS-232模块的传输数据:8位数据,1个停止位(1),1个开始位(0)。RS-232发送底层模块仿真波形分析:首先将数据接收信号使能端ENABLE=0,亦即使其处于发送状态工作中。开始时,RESET=1信号传送端口TXD处于等待状态,这时,在D_DATA中已经写入初值01100010。当RESET=0时,遇到时钟上升沿时,TXD端口开始传输数据,从最低位开始传送。传送数据前首先发一个起始位0,8位数据传送完成后,再发送一个停止位1。从波形结果分析可知,仿真结果满足预期要求,实现了传输功能。传送程序代码见附录二。4.3RS-232接收模块设计工作说明:1.当reset置位时开始检测起始位(0)。2.检测到起始位接收允许信号rxa置位。3.图RS-232接收模块波形仿真图RS-232接收模块仿真结果分析:首先将ENABLE_R置位,表示接收执行工作状态。当RESET信号置零时,RXA在第一个时钟上升沿无变化,用来检测起始位0。当检测到起始位零时,接下来的一个时钟周期RXA置1。然后,一个时钟周期发送一位数据,从起始位开始发送,直至最后一位。由于传送过程还未给R_DATA赋值,因此为接收完成时始终显示未初始化状态U。当8位数据接受完成,将数据赋给R_DATA。有以上仿真波形分析可知,所编程序语言符合预期。程序代码见附录三。4.4波特率发生模块图波特率8分频仿真波形为方便观察仿真波形结果,本波形采用8分频进行测试仿真。首先,频率发生器复位信号RESETB=1,复位内部的计数器。其次,将RESETB置零,在下一个时钟上升沿,触发波特率产生器开始工作。由于内部计数程序的给定计数周期和连续工作,使其产生8分频稳定的时钟频率。由以上波形分析可知,试验测试结果达到预期。再实际上机时,本设计采用9600的波特率,附录中给出的程序为产生9600的时钟脉冲。波特率发生模块程序代码见附录四。4.5显示模块设计显示模块仿真波形如下:图4.5显示模块仿真波形图本模块所要实现的功能是将接受到的8位二进制数,以十六进制形式在数码管上显示出来。当FPGA接收到传输过来的信号L_DATA后,将接受到的数据转而经由DATA_OUT输出。然后,通过地址位选信号ADDR的改变,使高位与低位被循环显示。因而能使数码管以2位十六进制来显示接收到的8位二进制数。接收程序代码见附录五。管脚配置NET"clk"LOC="p80";NET"T_data<0>"LOC="p107";NET"T_data<1>"LOC="p106";NET"T_data<2>"LOC="p61";NET"T_data<3>"LOC="p62";NET"T_data<4>"LOC="p43";#sw0NET"T_data<5>"LOC="p32";#sw1NET"T_data<6>"LOC="p26";#sw2NET"T_data<7>"LOC="p20";#sw3NET"data_out<0>"LOC="p47";#segaNET"data_out<1>"LOC="p50";#segbNET"data_out<2>"LOC="p48";NET"data_out<3>"LOC="p41";NET"data_out<4>"LOC="p45";NET"data_out<5>"LOC="p42";NET"data_out<6>"LOC="p49";NET"data_out<7>"LOC="p40";#seghNET"add<0>"LOC="p39";#sel1NET"add<1>"LOC="p36";#sel2NET"add<2>"LOC="p35";#sel3NET"add<3>"LOC="p34";#sel4NET"enable_R"LOC="p14";#sw5NET"reset"LOC="p6";#sw6NET"flag"LOC="p194";#sw7NET"rxa"LOC="p171";NET"rxd"LOC="p184";NET"txd"LOC="p18";#PACE:EndofConstraintsgeneratedbyPACE4.6.2测试结果分析本设计在进行上机测试时,采用串行调试小助手进行验证调试。在验证传送时,首先用拨码开关,拨至上方即ENABLE_R=1;RESET复位后即开始接收数据。然后,将FLAG所连接的拨码开关拨动一下,使数码管显示数据。在端口定义时,使接收输出端口DATA_OUT安排用来驱动LED灯。例如,当发送一个16进制数A5时,前两个数码管显示A5,另两个数码管未使用。(LED为共阴极,所以,1点亮,0灭灯),其实验结果如4.6.1图及4.6.2图所示。经过反复测试都能得到正确的结果。图4.6.1串行调试助手使用界面图4.6.2EXCD-1实物显示图接下来验证传送功能时,将拨码开关SW5拨至下方,即ENABLE_R=0,执行传送功能。当RESET复位即拨码开关SW6由上拨至下方时,开始执行传送。在配置引脚时,为使实验结果容易观察,定义传送的低四位的数据为0,用拨码开关SW0~SW3来改变高四位,得到的结果如图所示。5实验总结将设计程序下载到实验板上运行调试后,最终结果与预期效果基本一致,用键盘输入字符到串口调试软件,从串口调试软件发送到实验版上。在此次RS232串行通信的设计过程中,更进一步地熟悉有关数字电路的知识和具体应用。学会了利用ISE9.1i软件进行原理图的绘制,硬件描述语言VHDL的编写,程序的仿真等工作。并能根据仿真结果分析设计的存在的问题和缺陷,从而进行程序的调试和完善。在设计电路中,往往是先仿真后连接实物图,但有时候仿真和电路连接并不是完全一致的,例如在对具体模块的仿真的过程中,往往没有考虑到整体设计的层面以及与上下模块接口的设计。再加上器件对信号的延时等问题,实际下载到实验板上后会出现一系列的问题,因此仿真图和电路连接图还是有一定区别的。此次的RS232串行通信设计重在各个模块代码的编写,虽然能把各个模块的代码编写出来,并能正常显示,但对于各个模块的优化设计还有一定的缺陷和不足。总的来说,通过这次的设计实验更进一步地增强了实验的动手能力,对RS232串行通信的工作原理也有了更加透彻的理解。本设计是采用硬件描述语言和FPGA芯片相结合进行的RS-232串行通信的研设计,从中可以看出EDA技术的发展在一定程度上实现了硬件设计的软件化。设计的过程变的相对简单,容易修改等优点,相信随着电子技术的发展,串行通信的功能会更加多样化,满足人们的各种需要。在今后的学习中,我希望对FPGA做一个更深入的研究。充分挖掘FPGA的应用潜力,更加熟悉FPGA的开发设计,模拟仿真等开发流程。能够学好FPGA。作者认真的进行了这次毕业设计,并且按时完成了论文的写作。但是由于我的水平有限,加上时间紧迫。对FPGA的认识还不够透彻,开发过程中有些环节还不是很清楚。因此论文中难免会出现错误和不足之处,希望大家不吝指正,批评!附录一.RS-232顶层模块程序代码:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitytop_232isPort(clk:inSTD_LOGIC;reset:inSTD_LOGIC;enable_R:inSTD_LOGIC;T_data:inSTD_LOGIC_VECTOR(7downto0;txd:outSTD_LOGIC;rxd:inSTD_LOGIC;data_out:outSTD_LOGIC_VECTOR(7downto0;rxa:outSTD_LOGIC;flag:instd_logic;add:bufferstd_logic_vector(3downto0;endtop_232;architectureBehavioraloftop_232iscomponentTxD_232port(clk:inSTD_LOGIC;reset:inSTD_LOGIC;enable_R:inSTD_LOGIC;T_data:inSTD_LOGIC_VECTOR(7downto0;txd:outSTD_LOGIC;endcomponent;componentRxD_232port(clk:inSTD_LOGIC;reset:inSTD_LOGIC;enable_R:inSTD_LOGIC;rxd:inSTD_LOGIC;R_data:outSTD_LOGIC_VECTOR(7downto0;rxa:outSTD_LOGIC;endcomponent;componentBaudPort(clk:inSTD_LOGIC;resetb:inSTD_LOGIC;clkb:outSTD_LOGIC;endcomponent;componentLEDPort(clk:instd_logic;--显示时钟L_data:instd_logic_vector(7downto0;--接收十六进制代码data_out:outstd_logic_vector(7downto0;--LED显示信号add:bufferstd_logic_vector(3downto0;--LED位选信号flag:instd_logic;endcomponent;signalb:std_logic;signalSIG1:std_logic_vector(7downto0;beginU0:RxD_232portmap(clk=>b,reset=>reset,enable_R=>enable_R,R_data=>sig1,rxd=>rxd,rxa=>rxa;U1:TxD_232portmap(clk=>b,reset=>reset,enable_R=>enable_R,T_data=>T_data,txd=>txd;U2:Baudportmap(clk=>clk,resetb=>reset,clkb=>b;U3:LEDportmap(clk=>clk,L_data=>sig1,add=>add,flag=>flag;endBehavioral;二.数据传送模块代码libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityTxD_232isPort(clk:inSTD_LOGIC;reset:inSTD_LOGIC;enable_R:inSTD_LOGIC;D_data:inSTD_LOGIC_VECTOR(7downto0;TxD:outSTD_LOGIC;endTxD_232;architectureBehavioralofTxD_232issignalT_Reg:Std_Logic_Vector(7downto0;--发送寄存器beginT_Reg<=D_DATA;TxD_Proc:process(clk,reset,enable_RvariableBitPos:INTEGERrange0to9;--用来选择发送寄存器的位beginifreset='1'thenBitPos:=0;--复位elsifRising_Edge(clkthenifenable_R='0'thencaseBitPosiswhen0=>TxD<='0';--发送起始位Bitpos:=BitPos+1;--发送寄存器置1when1=>TxD<=T_reg(0;--发送第1位BitPos:=BitPos+1;--发送寄存器置2when2=>TxD<=T_reg(1;--发送第2位BitPos:=BitPos+1;--发送寄存器置3when3=>TxD<=T_reg(2;--发送第3位BitPos:=BitPos+1;--发送寄存器置4when4=>TxD<=T_reg(3;--发送第4位BitPos:=BitPos+1;--发送寄存器置5when5=>TxD<=T_reg(4;--发送第5位BitPos:=BitPos+1;--发送寄存器置6when6=>TxD<=T_reg(5;--发送第6位BitPos:=BitPos+1;--发送寄存器置7when7=>TxD<=T_reg(6;--发送第7位BitPos:=BitPos+1;--发送寄存器置8when8=>TxD<=T_reg(7;--发送第8位BitPos:=BitPos+1;--发送寄存??置9when9=>TxD<='1';--发送第9位BitPos:=9;--发送寄存器置0endcase;elseTxD<='1';BitPos:=0;endif;endif;endprocess;endBehavioral;三.接受模块程序代码:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityRxD_232isPort(clk:inSTD_LOGIC;reset:inSTD_LOGIC;enable_R:inSTD_LOGIC;RxD:inSTD_LOGIC;RxA:outSTD_LOGIC;R_data:outSTD_LOGIC_VECTOR(7downto0;endRxD_232;architectureBehavioralofRxD_232issignalRReg:Std_Logic_Vector(7downto0;--接收寄存器signalRRegL:Std_Logic;--位接收begin--接收控制模块RxAvProc:process(RRegL,ResetbeginifReset='1'then--当接收寄存器读时,位有效信号复位RxA<='0';--位接收上升沿到来elsifRising_Edge(RRegLthen--当接收寄存器写时,位有效信号置1;RxA<='1';endif;endprocess;--接收模块RxProc:process(Clk,Reset,Enable_R,RxD,RRegvariableBitPos:INTEGERrange0to9;--结构位置定义beginifReset='1'then--Reset复位RRegL<='0';BitPos:=0;elsifRising_Edge(ClkthenRRegL<='1';ifEnable_R='1'thencaseBitPosiswhen0=>--空闲位RRegl<='0';ifRxD='0'then--开始位为0BitPos:=1;--结构位置1endif;when1=>--当??构位置??1时RReg(0<=RxD;--接收信号送接收寄存器,接收第0位BitPos:=BitPos+1;when2=>RReg(1<=RxD;--接收第1位BitPos:=BitPos+1;when3=>RReg(2<=RxD;--接收第2位BitPos:=BitPos+1;when4=>RReg(3<=RxD;BitPos:=BitPos+1;when5=>RReg(4<=RxD;BitPos:=BitPos+1;when6=>RReg(5<=RxD;BitPos:=BitPos+1;when7=>RReg(6<=RxD;--接收第6位BitPos:=BitPos+1;when8=>RReg(7<=RxD;--接收第7位BitPos:=BitPos+1;when9=>BitPos:=0;RRegL<='1';R_data<=RReg;endcase;endif;endif;endprocess;endBehavioral;四.波特率发生模块程序代码:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entityBaudisPort(clk:inSTD_LOGIC;resetb:inSTD_LOGIC;clkb:outSTD_LOGIC;endBaud;architectureBehavioralofBaudissignalclka:std_logic;beginprocess(clk,resetbVariablecnt:integer;beginifresetb='1'thencnt:=0;clka<='0';elsifrising_edge(clkthencnt:=cnt+1;ifcnt=2604thenclka<=notclka;cnt:=0;endif;clkb<=clka;endif;endprocess;endBehavioral;五.显示模块代码:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;entityLEDisPort(clk:instd_logic;--显示时钟L_data:instd_logic_vector(7downto0;--接收十六进制代码data_out:outstd_logic_vector(7downto0;--LED显示信号addr:bufferstd_logic_vector(3downto0;--LED位选信号flag:instd_logic;endLED;architectureBehaverofLEDissignalHIGH:std_logic_vector(7downto0;--高4位信号signalLOW:std_logic_vector(7downto0;--低4位信号beginprocess(clkvariablecount:integerrange0to1:=0;--计数器beginifRising_Edge(clkthenifcount=1thencount:=0;elsecount:=count+1;endif;ifcount=0thenaddr<="0000";elseaddr<="0001";endif;endif;endprocess;process(flagbegincaseL_data(7downto4is--接收信号的高4位的显示when"0000"=>HIGH<="11111100";--0when"0001"=>HIGH<="01100000";--1when"0010"=>HIGH<="11011010";--2when"0011"=>HIGH<="11110010";--3when"0100"=>HIGH<="01100110";--4when"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论