基于FPGA的简易逻辑分析仪的设计与仿真完整设计_第1页
基于FPGA的简易逻辑分析仪的设计与仿真完整设计_第2页
基于FPGA的简易逻辑分析仪的设计与仿真完整设计_第3页
基于FPGA的简易逻辑分析仪的设计与仿真完整设计_第4页
基于FPGA的简易逻辑分析仪的设计与仿真完整设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

目录AbstractTOC\o"1-5"\h\z第一章概述4选题背景41.2FPGA简介4第二章设计方案6设计任务和要求6总体设计方案6第三章系统子模块实现与仿真分析9数字信号发生器实现与仿真9数字信号发生器的软件流程图和组成框图9带异步置位/复位的通用八位寄存器10任意分频器11循环移位寄存器12数字信号发生器仿真1314触发电路实现与仿真14存储器REGN的实现与仿真15640分频器FREQ的实现与仿真163.5存储器RAM的实现与仿真17第四章系统顶层的实现与仿真20系统顶层原理图20系统顶层仿真图20结论22参考文献23致谢2425附录25摘要逻辑分析仪是一种类似于示波器,用来分析测量数字系统的逻辑波形和逻辑关系的仪器设备。在每个时钟到来,并且与预置的触发字逻辑状态相同时,将触发之后的数据进行储存、处理并输出显示到屏幕上。本文采用FPGA开发器件设计一个8通道的简易逻辑分析仪,实现对输入的8路逻辑信号进行数据判断、数据存储、采集和处理,然后输出显示的功能。其功能参数分别是采样率为1OOKHz,每通道存储深度为32bit。本次设计使用FPGA(现场可编程逻辑门阵列)芯片和VHDL硬件描述语言作为主要设计方法实现8路简易逻辑分析仪。本系统根据逻辑分析仪所要实现的各项功能分别编程设计了对应的功能模块,分别是触发模块,数据缓存模块,分频模块以及存储器模块,并分别进行了仿真验证,在此基础上,完成了系统电路的设计与仿真。仿真结果表明,本次设计各模块都达到了所需要求,实现了各自的功能。系统总体方案也得到了较理想的结果,本次设计方案是可行的,达到了设计要求。关键词:逻辑分析仪,数据采集,FPGA,VHDLAbstractLogicanalyzerisakindofequipmentwhichissimilartotheoscilloscope,usedtoanalyzethelogicwaveformsandthelogicalrelationofthedigitalmeasurementsystem,wheneveryclockcomeon,andpresettriggerwordlogicisthesameasthestate,willtriggerafterthedataarestored,processingandoutputdisplaytothescreen.FPGAisappliedinthispapertodesignaneightchannelofsimplelogicanalyzerandrealizethefunctionofimplementinginput8-channellogicsignaldatajudging,datastorage,datacollectingandprocessing,thentheoutputdisplay.Theparametersoffunctionare100KHzsamplingrateandeachchannelstoragedepthis32bit.ThisdesignusingFPGA(fieldprogrammablegatearray)chipandVHDLhardwaredescriptionlanguageasthemaindesignmethodtoachieve8simplelogicanalyzer.Thesystemaccordingtothelogicanalyzertoachievethevariousfunctionsrespectivelyprogrammingtodesignthecorrespondingfunctionalmodules,respectivelyistriggermodule,databuffermodule,frequencymoduleandamemorymodulearecarriedoutrespectively,andthesimulationandverification,onthisbasis,completedthedesignandSimulationofthecircuitsystem.Thesimulationresultsshowthatthedesignofthemodulehasreachedthedesiredrequirements,achievetheirrespectivefunctions.Theoverallschemeofthesystemcangettheidealresult,thisdesignschemeisfeasibleandmeetsthedesignrequirements.Keyword:logicanalyzer,datacollection,FPGA,VHDL前言自20世纪70年代初,第一款微处理器研制出来后,开始出现4位和8位总线的运用。然而传统的示波器已经没法满足所需测试及观察要求。1973年美国HP公司和BIOMATION公司分别研发出了状态分析仪和定时分析仪。至此之后,随着计算机技术、通信技术、编程语言、软件行业的高速发展,逻辑分析仪前前后后共经历了四代。目前,逻辑分析仪的核心技术还被国外的大公司牢牢的掌握着,比如Agilent等公司,国内的许多公司还处于生产制造阶段,并没有太多创新。发展至今,电子信息技术正处于高速发展阶段,电子系统数字化的趋势已经不可阻挡。从传统的得到广泛应用的单片机到今天的FPGA/CPLD,从采用中小规模的芯片构成电子电路系统到今天的现场可编程逻辑器件构成电子电路系统,电子设计技术已经踏上了一个崭新的台阶。FPGA/CPLD的使用让硬件电路的设计与传统电路设计方法相比变得十分简单方便,而且可更改性十分强。它们正在电子仪器仪表等领域的数字电子系统设计工作中发挥着越来越重要的作用。逐渐成为国际社会数字系统设计的主流发展方向。目前广范围、高精度数字式频率和功率因数的测量,大都用单片机加高速专用计数器来实现。本次设计通过采用VHDL语言编程,并且最终结果下载在FPGA芯片上实现。整个系统框图十分精简。FPGA灵活的现场可更改性,使得在有需要时可以对系统进行非常方便的改进。系统的性能还可以在不更改硬件电路的情况下得到进一步的提高。本设计主要使用QuartusH软件作为开发平台,以FPGA作为开发器件,VHDL作为设计语言,编写程序设计各个模块以及进行相应的仿真,从而实现简易逻辑分析仪的对输入的逻辑信号进行数据判断、数据存储、采集和处理,并输出显示的功能。本文共分为四章。第一章为概述,主要介绍逻辑分析仪的背景以及FPGA的简介。第二章为设计方案,分别介绍了本次课题设计的设计任务,基本要求,并着重分析了本次设计的总体设计方案及其框图。第三章为系统各子模块的实现与仿真分析,详细讨论本设计所涉及到的各子模块的功能,设计方法以及仿真结果分析。第四章为系统顶层的实现与仿真,主要给出了本设计的顶层原理图及其仿真结果,并做出分析。第一章概述1.1选题背景近年来,随着高校电子类及与其相关的专业教学中,越来越关注学生的动手能力培养,其中让大学生们进入实验室进行项目的实践设计课程日益得到重视。然而在数字电路的实验教学及数字系统的开发设计中,却发现传统示波器所拥有的功能可以说是已经滞后于我们当代的教学要求,更别说能够满足企业或者社会研究实验室的要求了。例如在有些实验电路板系统的测试中,要么是信号显示不了,要么就是信号显示出来了但却不完整,或者出现其他问题,总之问题是层出不穷,而且大多都难以解决。传统的示波器在这时候就显得心有余而力不足,无法满足我们的一些要求。此时逻辑分析仪的作用就显示出来了,可以满足传统示波器所不能满足的要求。然而自从1973年第一台真正意义上的逻辑分析仪诞生至今,已经过去了40年,逻辑分析仪的普及之路依旧任重道远。据不完全统计,30%的数字设计师没有使用逻辑分析仪,80%的高校实验室没有普及逻辑分析仪[1。]导致这样的结果主要归咎于其昂贵的价格,普通人很少能够买得起。而大部分高校又觉得没有必要购买高精确度逻辑分析仪,因为觉得学校环境用不着。逻辑分析仪昂贵的价格和越来越广泛的应用前景之间的矛盾使逻辑分析仪向着高精度高智能化的方向发展,与此同时,在市场的作用下也催生了很多降低成本和拓展功能的方案。当然,逻辑分析仪的功能不止于此。现如今,逻辑分析仪不仅能够分析计算机软硬件、数字系统,而且可以和计算机联合构成多种智能分析仪或者逻辑分析插件,甚至能够和一些数字电压表、仿真器、传统示波器结合在一起构成完善的仪器系统。总之,对逻辑分析仪的研究有着广阔的应用前景以及市场需求。1.2FPGA简介FPGA(Field-ProgrammableGateArray,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如and、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器。系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以方便快捷地完成所需要的逻辑功能。本次设计采用FPGA的设计方法主要考虑到FPGA的高灵活性,可更改性特点。在设计过程中遇到问题时,能够及时方便的更改程序进行调整,充分发挥了FPGA开发方法的优越性。第二章设计方案2・1设计任务和要求本文基于FPGA设计一个8通道的简易逻辑分析仪。要求逻辑分析仪拥有同时对输入的8路逻辑信号进行实时采集的功能,采样频率为10°KHz,并且可以设置简单的单级触发字。当8路通道数据流的逻辑状态与预置的触发字的逻辑状态完全相同时,就会产生触发信号。触发之后,将触发信号输出到RAM中作为RAM的片选信号,再由RAM对8通道的数据流进行一次采集、存储,每通道储存深度为32bit,并且进行输出显示。2・2总体设计方案鉴于本次设计的基本要求,选择QuartusII软件平台来实现。由于条件限制,无法从外部硬件电路采集模拟信号作为测试信号,所以本文设计了一个可任意选择有源晶振的数字信号发生器,可产生8通道的连续循环数字信号数据,以作为测试信号。系统设计中还将涉及到这样几个模块,分别是触发功能模块,数据缓存模块,采集和处理功能模块。最后要有一个RAM模块。根据以上的要求,设计出来的简易逻辑分析仪的系统实现框图如图2.1所示。荷源品臓输入外部输入1rf冷器j1N外部输入1rf冷器j1NI出揃国2.1简舄逻無廿析做系统咒现框I壬系统的工作流程图以及各模块之间的控制关系如图2.2所示:图Z2总系统控制工作济程图从图2.1和图2.2的系统框图和工作流程图可以看出,该系统的实现主要是由多个FPGA子模块互相连接构成的,可以由VHDL语言编程实现。用FGPA方式实现的这种系统,就像我们能看到的,随时都可以在原理图上根据要求做出相应的更改,只要对相应模块原先的程序进行少量更改就可以实现不同的我们想要的功能,增加或者减少一些功能,然后再把程序生成相应的图形符号互相连接起来就可。本次设计中的几个模块分别负责对输入信号的判断、比较、存储、采集和处理,最后经由RAM输出。这样的由VHDL语言描述的系统最后可以构造于一个芯片中,只要配置好相应的引脚接口,就可以很方便地在硬件电路上进行测试。该系统所需要用的子模块以及说明如下:8路数字信号发生器:本次设计主要是用VHDL语言来描述8路数字信号发生器的发生,它主要由预置寄存器、分频器和循环移位寄存器三部分组成,能够输出连续的8路循环数字信号。其中预置寄存器中预置的信号由外部输入。触发电路:由于本次设计的是简易型逻辑分析仪,所以触发模块只要求设置简单的一级触发。当输入的信号与预置的触发字逻辑状态相同时,输出高电平信号,分别作为启动存储器、分频器的使能信号和启动RAM的片选信号。存储器:8路通道的数据流信号到来时,缓存下来,等待,不进行输出。当使能信号EN到来时,存储器将会对使能信号EN到来时刻之后的数据流进行输出,也即将触发点之后的数据写进RAM中。分频器:分频器在接收到触发电路发出的使能信号able后开始工作,将有源晶振输入的1MHz时钟进行640分频,得到周期为640US的时钟信号,其实就是分频后的一个时钟周期相当于系统时钟的64个周期。分频后的时钟作为RAM的读写使能信号OE输入给RAM进而控制RAM的读写。RAM:RAM是此次系统设计中最重要的模块,除了需要接受前面各种模块的控制,还要在受到控制之后开启内部计数,以便在适时的时候选择关闭自己,停止读写数据。该模块的工作时序大致是这样的:在接收到触发电路发出的片选信号CS时,开始启动工作。此时读写信号OE会同时到来,当OE读写信号处于高电平时,写入32个数据,在这期间RAM没有输出。之后OE会进入低电平状态,RAM读出32个数据。最终RAM在自身的控制下关闭,停止工作。第三章系统子模块实现与仿真分析3.1数字信号发生器实现与仿真3・1・1数字信号发生器的工作流程图和组成框图8路数字信号发生器的设计主要是用来产生8路循环连续的数字信号数据,作为本次设计的测试信号。由VHDL语言编程实现,其工作流程图如图3.1所示,预置信号可以通过外部输入,10KHz时钟由1MHz晶振提供的信号经过10分频后产生,在数字信号发生器中进行分频器的设计主要是为了使得有源晶振可以实现自由选取,进一步方便系统的设计,体现了FPGA所具有的优越性。1F分频器1F分频器1有源晶振输入循环移位寄存器8路输出信号8路输出信号图3.18路信号发生器工作流程图从上面的工作流程图中可以清晰地看出这种设计简单又十分方便,只涉及到分频器,预置寄存器和循环移位寄存器这三部分的编程,几乎只使用一个小的FPGA芯片就能实现。从图3.2的顶层结构也可以看得非常清楚。CLOCK时钟主要负责控制循环移位寄存器。有源晶振输入Q0Q1Q7图3.2数字信号发生器的结构框图3.1.2带异步置位/复位的通用8位寄存器设计预置寄存器的功能:在使能信号为高电平时,将预置的信号输出到循环移位寄存器中。使用VHDL语言编程并在QuartusII中生成的该模块符号图如图3.3所示。REGISTERND[7..O]Q[7..O]CLKENSETRESETinst图3.3通用8位寄存器元件符号图

预置寄存器的仿真结果如图3.4所示。MatterlimaBar:|15525na"jjPaint曲18.75ij±Interval:IB72leStark|0ptEnd:40Ole5罠ValiLG.Dps5.12us10.2^os15.36ue33.^6ns25.6ns30.72xls35.04nsiiiiiiiL5.5Z5nsCLKSEIEEEETST±111jrLLnLnLnLnLrrLrmrLLrLnLnLnLrTLmTurTJFLLrmLrT1i111111111111i11111111111111111I■IIID1t1IIIIIIISIIIIDIIIII1i111111111111i1111111111111111也nnJll■lgl■iIBiiiiiiiisisigiiiiiii1i11111111111111111111111111111ll■lgl■iiBiiiiiiiisisigiiiiiii■Illiaaiiiiiaiiiiiaiiiiiii1i111111111111i1111111111111111】\\、U、m』Xi"X*)CH_X1^X1^寻13±1C:0X讥ny..*QIX12713^14)(IE<iey1?T1B1I■I>■oItIiiiiiiitiiiiigiiiiiii1i111111111111i1111111111111111■■■■■・・・・・・・■■■■■・・・・・・・・・・・・・・图3.4带异步置位/复位通用寄存器仿真图图3.4中,CLK为时钟信号,SET和RESET为置位复位信号,EN为使能信号,D为输入测试数据,Q为输出观察信号。从仿真图可以看出,在使能信号EN=1,SET和RESET为0时,在每个时钟上升沿到来时,都可以将预置的信号输出,因此该模块功能满足所需要求。3.1.3任意分频器任意分频器的作用:主要是为了使得有源晶振可以实现自由选取,进一步方便系统的设计。体现了FPGA所具有的优越性。使用VHDL语言编程并在QuartusII中生成的该模块符号图如图3.5所示。图3.5任意分频器元件符号图任意分频器的仿真结果如图3.6所示。图3.6分频器时序仿真图

图3.6中,CLK为时钟信号,OUTPUT为输出信号。从图中可以看出,分频器对原来时钟进行了20分频,很好地实现了其功能,该模块符合设计要求。3.1.4循环移位寄存器循环移位寄存器作用:在每个时钟上升沿到来时,对输入的逻辑信号进行一次移位并输出。使用VHDL语言编程并在QuartusII中生成的该模块符号图如图3.7所示。图3.7循环移位寄存器元件符号图循环移位寄存器的仿真结果如图3.8所示。h/FSlR-impHAr!-i-zhnn:<>|-"ihIr-hIh.-nsItr-uA'h/FSlR-impHAr!-i-zhnn:<>|-"ihIr-hIh.-nsItr-uA'4nIIinS\=rrIITif卜n十4HH.s图3.8循环移位寄存器时序仿真图K曰Ti^0CLKIOLLOAD->23iCyL-□t」:£-QL\-uiv■/irQ[<■xIt-urj'」17-QL2.■_x11-Q[l:■>:©-QLa.1!!!图3.8中CLK为时钟信号,LOAD为工作信号,D为预置信号,Q为输出观察信号。从图中可以看出,当时钟信号上升沿到来且LOAD信号处于低电平时,循环移位寄存器开始工作产生数据流。可以看到该循环移位寄存器模块很好的实现了其功能,符合设计要求。

3.1.5数字信号发生器仿真使用VHDL语言编程并在QuartusII中生成的该模块符号图如图3.9所示。数字信号发生器的仿真结果如图3.10所示:Bane数字信号发生器的仿真结果如图3.10所示:Bane1cm时1CLKLLOAMSET%EE3EI1^-5EMU□IULG日3■_XIFi--jifd^1T-2J161-37[5]■_xIM-JI⑷■r2037[3]—~7![Z]&22--Jlfll■r2337[0]数字信号发生器仿真图SHUCLKUQU[7..O]ENUSETURESETUCLK1LOADA'DU[7..0]inst图3.9数字信号发生器元件符号图图3.10是数字信号发生器在预置信号为00000101(5)时产生的循环序列仿真图,CLK1是1MHz有源晶振,CLKU为系统时钟,LOADA是工作信号。在使能信号ENU处于高电平状态,时钟信号CLKU上升沿到来并且加载信号LOADA处于低电平时,预置寄存器将预置信号00000101(5)送入循环移位寄存器,从而产生连续不断循环的数据流。从仿真图可以看出此数字信号发生器模块功能完全符合所需要求。

3.2触发电路实现与仿真该模块的设计框图如图3.11所示。数据流预罟触炭罕®3.11触发电路框图该模块的作用:在系统电路上电之后,数字信号发生器会源源不断地输出数据流,而触发电路模块会一直接收数据流,并且一直检测输入的数据流序列与预置触发字的逻辑状态是否相同。只有当8路信号的逻辑状态与预置触发字的逻辑状态完全相同时,才会产生一个触发信号发送出去,作为触发模块后面几个模块的控制信号。图3.12为触发电路的符号图。HCT688—CLK'INPUTM[7..0]'INPUTN[7..O]PEQinst5图3.12触发电路元件符号图触发模块的仿真结果如图3.13所示。NameVali15.口M5.12n=10.24uz1E.滋20.4B2Efin=30.72ns35S4a=40.朋uz4G.D8iiiiiiiiii15.GS5nsJ^-0CLK田in?J'iwJ1jv_TTL-jiATTL-jiRiJTrjirLiJir_TrL-jirjLrirjir_TrLr_HXD巨①了CDS■二(D三匹回瓦①国匹①辽:冋③互超}空运扈迈包巨匹目卫冋至?>13□urns1■/13fEQJMasterTimeBar:15.525nsjjjJPohter:17.G0u&Interval:17.GGStartEnd:图3.13触发电路时序仿真波形在图3.13中,CLK为时钟信号,1NPUTM、INPUTN分别为输入测试信号、预置触发字,PEQ为输出观察信号。可以看到,在每个时钟上升沿到来时,触发电路都会对输入数据INPUTM和预置触发字INPUTN进行对比,若不相同则输出低电平,若在某一个时钟上升沿触发则将一直输出高电平。如图3.13所示,当输入数据流INPUTM的逻辑状态为00001001(9)和预置触发字的逻辑状态00001001(9)相同时,之后将一直输出高电平。从仿真图可以看出,该触发电路模块实现了所需功能,完全符合设计要求。3.3存储器REGN的实现存储器REGN的设计框图如图3.11所示。数据流存储器REGN数据流存储器REGNEN图3.14存储器REGN的结构框图该模块的作用:数字信号发生器产生的数据流在源源不断输出到触发电路的同时,也会不断的输出到这一模块。当触发电路触发后产生的使能信号EN到来即为高时,存储器REGN才会允许输入端的数据流进行输出。使用VHDL语言编程并在QuartusII中生成的该模块元件图如图3.15所示。REGNCLKEN'DATA[7..O]Q[7..O]inst6图3.15存储器REGN元件符号图存储器REGN的仿真结果如图3.16所示:15.525ns4jJPointei:3.S5u3Inlervat3.53usStert:0ps15.525ns4jJPointei:3.S5u3Inlervat3.53usStert:0psEcd:40.0usKaneYali15./UCLK田DATAJJIily1■国Q1MasteiTimeBar10.Z4us15.35heEU.45ueZ5.6usIri厂厂厂厂厂门可何币-[厂吋珂吋阿丁厉阿图3.16存储器REGN仿真波形图在图3.16中,CLK为时钟信号,EN为使能信号,DATA为输入测试信号,Q为输出观察信号。从图3.16显示的仿真波形看到,在时钟上升沿以及EN高电平到来时,REGN很好的将数据4及4之后的数据都进行了输出,实现了它的功能,完全符合设计要求。3.4640分频器FREQ的实现由于数字信号发生器产生的每个数据周期是10US,而我们的RAM需要实现在一个周期中,先写入32个数据,再读出32个数据的功能。这就需要向RAM输入一个周期为640US的控制信号。而有源晶振的频率为1MHz,这样我们就可以设计一个640分频器产生这样的控制信号。640分频器的框图如图3.17所示。CLKABLE分频器ABLE图3.17分频器框图该模块的作用:当触发电路触发后产生的使能信号able到来时,分频器电路开始工作,对1MHz的时钟信号进行640分频,得到一个周期为640US的时钟信号输出给RAM作为RAM的读写控制信号,之后,RAM就可以在一个周期的读写信号控制下写32个数据,读32个数据。使用VHDL语言编程并在QuartusII中生成的该模块符号图如图3.18所示。

FREQCLKABLEOUTPUTinst3图3.18分频器元件符号图640分频器的仿真结果如图3.19所示。图3.19640分频器仿真图在图3.19中,CLK为时钟信号,OUTPUT输出信号。从仿真图看到,当分频器工作的时候,高频时钟信号被分成了一个低频时钟信号。640分频器模块完全能够实现所需要求,符合设计要求。3.5存储器RAM的实现RAM存储器用于存储采集的数据,其设计框图如图3.20所示。图3.20RAM实现框图该模块的作用:RAM作为整个设计中最核心的模块,需要完成数据的采集和处理工作。在系统时钟的作用下,当触发电路触发后产生的使能信号CS到来时,这时候读写控制信号OE也会同时到来,并且OE处于高电平。这时候RAM启动,并开始对输入的数据流进行采样,之后将采集得来的信号数据写入RAM中,采样存储时间持续32个系统时钟周期,亦即32bit每一通道,然后结束存储。此时OE的高电平状态会结束并进入低电平状态,此时RAM读出先前存储的32bit数据。从CS片选信号到来的那一刻,每过一个系统时钟,RAM内部都有一个计数器加一,当计数满64次之后,关闭RAM,停止读写。使用VHDL语言编程并在QuartusII中生成的该模块符号图如图3.21所示。

WaIiiaWaIiiapara^meter-WIDTHvalue32TypeSignedIntegerDEPTH■32—SignedIntegerRAM5CLKDATA_O[7..0]ADDR[4..O]CSOEDATA_I[7..O]inst图3.21RAM的元件符号图存储器RAM的仿真结果如图3.22所示。国DKT1国n国血|鸟畑Ttw&a.IB.ESru■■plPiiitecInleihdl223存储器RAM的仿真结果如图3.22所示。国DKT1国n国血|鸟畑Ttw&a.IB.ESru■■plPiiitecInleihdl223u>4D.爭u3e-J.U1盜.翌U3」芒.袈sla.tEEnsinnnnjuuuuuuuuuuuLruuumnnnnnjinnnnnnnnjuuuinjuuuuuuLruuuuuinjuinjinjmnnnnnnnjuinnnjuuuuLruuuuuinjuuuinimnr匚LK_EJ图3.22存储器RAM仿真图WTtmrUTTTTTTTTTTTTTTTTDnirnWTtWDrQnonLOEWTWDnijTrWTTr图3.24OE图3.24OE低电平期间读出的32个数据放大图三;(OEQ亘(叵回0西回!DID匡运匡曰亘:回⑥页烂IDE叵坯叵KD0ZDG图3.23OE高电平期间写入的32个数据放大图在图3.22中,CLK为时钟信号,CLK_EN为使能信号,CLR为计数器复位信号,高电平有效;CS为RAM片选信号,高电平有效;OE为RAM读写信号,高电平写入,低电平读出;D为地址信号。从图3.22仿真图看到当片选信号CS高电平到来时,RAM开始工作,此时读写信号OE为高电平,写入32个数据,此时没有输出。32个时钟过后,OE为低电平,RAM开始读出刚刚写入的32个数据,当读完这32个数据之后,RAM关闭。从仿真图看出,该模块很好地实现了所需要的功能,完全符合设计要求。第四章系统顶层的实现与仿真第四章系统顶层的实现与仿真4.1系统顶层原理图将第三章设计的数字信号发生器模块,触发模块,存储器REGN模块,将第三章设计的数字信号发生器模块,触发模块,存储器REGN模块,RAM模块在QuartusII中对应接口连接起来之后,得到如图4.1所示的系统顶层原理图。图4.1系统顶层原理图4.2系统顶层仿真图在2000US时间观察域,系统时钟信号为0.1MHz,有源晶振1MHz的基础上,得到的系统顶层仿真结果如图4.2所示。nnnnjiwinnnjuiwinmnjuwinimwifumuiiuiminmnnnnniwminnjinnnfmmiinnnnjmwmuiwinnnnwwumjinnniuuuiwiilTU图4.2得到的系统顶层仿真结果如图4.2所示。nnnnjiwinnnjuiwinmnjuwinimwifumuiiuiminmnnnnniwminnjinnnfmmiinnnnjmwmuiwinnnnwwumjinnniuuuiwiilTU图4.2系统顶层仿真图日mu锻国[■fflTikTh_Ci□□JrmJ*-EHHUFTUUh.HailaiInwAmSjtLti™El回DQjDbTb_DH.□□JrmJ*-EHHUFTUUh.HailaiInwAmSjtLti™El回DQjDbTb_DH.14Q3Ub.42uLnnnnimnmirLrLrLmumnjLrumrLnLnjmnnjmjmnrLnjmjuumnrLnrLnjrLnjumnnnnnnnjuumnjuir图4.3顶层系统仿真局部放大图在图4.2的系统仿真图中,CLK为系统时钟;CLK1为有源晶振;CLK_EN使能信号;CLR为计数器复位信号;LOADA为数字信号发生器开始工作信号;DU为预置信号;datab为预置触发字;A为数字信号发生器产生的数据流观察信号;B为触发信号观察信号,亦即RAM片选信号;C为OE读写信号观察信号;D为计数器地址信号;DATA_O为输出端口。整个系统大致的运行流程是这样的:当数据流序列与预置触发字130(10000010)相同时,立刻触发,触发信号B在130(10000010)之后将一直保持高电平。此时分频器启动将时钟信号CLK1进行640分频成读写信号OE输出到RAM中,与此同时触发信号B也输出到RAM中,作为片选信号CS,启动RAM。在OE高电平持续期间,RAM写入数据,之后在OE低电平期间再读出写入的数据。在一写一读持续64个时钟周期之后,RAM关闭。仿真图的结果说明本次设计完全实现了所要实现的简易逻辑分析仪的功能要求,本次设计的流程、系统框图以及原理图是正确的。结论本次设计使用了EDA技术,EDA技术作为目前最前沿的技术,具有丰富的I/O接口,使用起来灵活方便,不必像单片机那样还要考虑到引脚之间是否有冲突,并且每个引脚都有硬件上不同的功能,这样用起来极不方便,在单片机编程时还要考虑某个引脚是否可用,不能像FPGA语言那样只要专心用在软件编程上。本设计使用VHDL语言编程实现了8路数字信号发生器,触发电路,分频器,存储器。最后将这些模块连接起来实现了一个8通道的简易逻辑分析仪,从仿真结果可以看到本次设计是正确的,比较好的完成了这次课题设计。基于FPGA的设计不必改动硬件电路,只需改变程序,就可以达到你想要的结果。可见VHDL语言的出现改变了一直存在于我们大脑中的设计电路的固有思路。使得原先设计电路只能通过硬件慢慢尝试,这样不仅效率低而且错误难以更正,向软件设计转变。这样的转变不仅提高了设计灵活性,又大大的降低了原先硬件电路设计的复杂难度,同时又大大地降低了我们设计研发的成本可谓是万利而无一害。本次设计还可以做一些扩展,比如可以通过更改RAM的存储深度,计数器的地址数以及对分频器程序做出修改从而改变存储深度;也可以提高系统时钟频率,实现更高的采样率。当然本次设计也并不是十全十美的,也有一些不足。一是虽然在理论上设计出了系统的框图以及原理图,并且仿真结果也较好,但是还没有在硬件电路上进行调试,不知在硬件电路上会出现什么问题,今后改进将进行硬件电路的调试工作;二是仿真结果大部分数据信号边缘部分出现了抖动现象,并没有得到消除,今后的改进将研究不同工作频率下的情况,力求消除抖动现象;三是由于数字信号发生器模块程序的运行,输出测试数据时产生了0.01us的延迟,这导致最终结果的输出延迟了一个时钟周期,今后改进将调试改进程序力求减小甚至消除这0.01us的延迟对结果的影响。参考文献潘松,黄继业.EDA技术实用教程—VHDL[m].北京:科学出版社,2010.任晓东,文博,CPLD/FPGA高级应用指南[M].北京:电子工业出版社,2003.6.⑶孙明权,VHDL数字控制系统设计范例[M].北京:电子工业出版社,2003.1.⑷修订版,侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,1997.⑸顾乃绂、孙续.逻辑分析仪原理与应用[M].人民邮电出版社,1989.5.⑹王彦、陈文光、朱卫华.全国大学生电子设计竞赛训练教程[M].北京:北京电子工业出版社,2005.1.[7]戴志坚,师奕兵,王志坚.逻辑分析仪高速数据采集及数据窗口定位J].电子测量,1995,30(18):25-29.⑻陈尚松,雷加,郭庆.电子测量与仪器[M].电子工业出版社,2005.1.⑼刘国林、殷贯西.电子测量[M].机械工业出版社,2003.1.VanHWBroeck,SkudelnyHC,StankeGV.Analysisandrealizationofapulsewidthmodulatorbasedonvoltagespacevectors[J].IEEETransomIndustryApplications,1988,24(1):142-150.CirsteaM.VectorcontrolsystemdesignandanalysisusingVHDL[C].PowerElectronicsSpecialistsConference,IEEE32ndAnnual,2001:81-84.SeJinKim.ASICdesignforDTCbasedspeedcontrolofinductionmotor[C].ProceedingIEEEInternationalSymposiumonIndustrialElectronics,2001:956-961.CirsteaM.AVHDLsuccessstory:electricdrivesystemusingneuralcontroller[C].VHDLInternationalUsersForumFallWorkshop,Proceedings2000:118-122.致谢经过这几个月的忙碌和工作,本次的毕业设计已经接近尾声,作为一个本科生的毕业设计,由于我经验的匮乏,设计中难免有许多考虑不周全的地方,如果没有导师黄旭老师的督促指导,要想完成这个设计是难以想象的。这里首先我要感谢我的导师黄旭老师,她平日里工作繁忙,但却在我做毕业设计的每个阶段,从查阅资料到设计草案的确定和修改,中期检查,直至后期详细设计等整个过程中都给予了我悉心的指导。除了黄旭老师的专业水平外,她的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极地影响我今后的学习和工作生活。其次还要感谢大学四年来所有的老师们,为我们打下了电子专业知识的基础,如果没有这些知识,完成设计几乎不可能。最后感谢苏州大学电子信息学院在这大学四年来对我的大力栽培。附录带异步置位/复位的通用寄存器源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;ENTITYREGISTERNISPORT(D:INSTD_LOGIC_VECTOR(7DOWNTO0);CLK,EN,SET,RESET:INSTD_LOGIC;Q:BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));ENDREGISTERN;ARCHITECTUREAOFREGISTERNISBEGINPROCESS(CLK,SET,RESET)BEGINIF(SET='0'ANDRESET='1')THENQ<=(OTHERS=>'1');ELSIF(SET='1'ANDRESET='0')THENQ<=(OTHERS=>'0');ELSIF(CLK'EVENTANDCLK='1')THENIF(EN='1')THENQ<=D;ELSEQ<=Q;ENDIF;ENDIF;ENDPROCESS;ENDA;分频器源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYFREQ_DIVISPORT(CLK:INSTD_LOGIC;OUTPUT:OUTSTD_LOGIC);ENDFREQ_DIV;ARCHITECTUREAOFFREQ_DIVISSIGNALCOUNT_SIGNAL:INTEGERRANGE0TO9;SIGNALMIDL:STD_LOGIC;BEGINPROCESS(CLK)BEGINIF(CLK'EVENTANDCLK='1')THENIF(COUNT_SIGNAL=9)THENCOUNT_SIGNAL<=0;MIDL<=NOTMIDL;ELSECOUNT_SIGNAL<=COUNT_SIGNAL+1;ENDIF;OUTPUT<=MIDL;ENDIF;ENDPROCESS;ENDA;循环移位寄存器源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSHIFTXISPORT(CLK,LOAD,CLK3:INSTD_LOGIC;0);D:INSTD_LOGIC_VECTOR(7DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDSHIFTX;ARCHITECTUREAAOFSHIFTXISSIGNALTMP:STD_LOGIC_VECTOR(7DOWNTO0);BEGINQ<=TMP;PROCESS(CLK)BEGINIF(CLK'EVENTANDCLK='1')THENIF(LOAD='0')THENTMP<=D;ELSETMP(0)<=TMP(7);FORIIN1TO7LOOPTMP(I)<=TMP(I-1);ENDLOOP;ENDIF;ENDIF;ENDPROCESS;ENDAA;数字信号发生器顶层设计源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;PACKAGESHUZIISCOMPONENTREGISTERNPORT(D:INSTD_LOGIC_VECTOR(7DOWNTO0);CLK,EN,SET,RESET:INSTD_LOGIC;Q:BUFFERSTD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENT;COMPONENTFREQ_DIVPORT(CLK:INSTD_LOGIC;OUTPUT:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTSHIFTXPORT(CLK,CLK3,LOAD:INSTD_LOGIC;0);D:INSTD_LOGIC_VECTOR(7DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDCOMPONENT;ENDSHUZI;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEWORK.SHUZI.ALL;ENTITYSHUISPORT(CLKU,ENU,SETU,RESETU,CLK1,LOADA:INSTD_LOGIC;DU:INSTD_LOGIC_VECTOR(7DOWNTO0);QU:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDSHU;ARCHITECTUREAOFSHUISSIGNALCLK2:STD_LOGIC;SIGNALREGOUT:STD_LOGIC_VECTOR(7DOWNTO0);BEGINREG_1:REGISTERNPORTMAP(D=>DU,CLK=>CLKU,EN=>ENU,SET=>SETU,RESET=>RESETU,Q=>REGOUT);FREQ_1:FREQ_DIVPORTMAP(CLK=>CLK1,OUTPUT=>CLK2);SHIFT_1:SHIFTXPORTMAP(CLK=>CLKU,CLK3=>CLK2,LOAD=>LOADA,D=>REGOUT,Q=>QU);ENDA;触发电路源程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYHCT688ISPORT(C

温馨提示

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

评论

0/150

提交评论