基于FPGA的简易逻辑分析仪的设计与仿真完整毕业设计论文.docx
《基于FPGA的简易逻辑分析仪的设计与仿真完整毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于FPGA的简易逻辑分析仪的设计与仿真完整毕业设计论文.docx(28页珍藏版)》请在冰豆网上搜索。
基于FPGA的简易逻辑分析仪的设计与仿真完整毕业设计论文
摘要
逻辑分析仪是一种类似于示波器,用来分析测量数字系统的逻辑波形和逻辑关系的仪器设备。
在每个时钟到来,并且与预置的触发字逻辑状态相同时,将触发之后的数据进行储存、处理并输出显示到屏幕上。
本文采用FPGA开发器件设计一个8通道的简易逻辑分析仪,实现对输入的8路逻辑信号进行数据判断、数据存储、采集和处理,然后输出显示的功能。
其功能参数分别是采样率为100KHz,每通道存储深度为32bit。
本次设计使用FPGA(现场可编程逻辑门阵列)芯片和VHDL硬件描述语言作为主要设计方法实现8路简易逻辑分析仪。
本系统根据逻辑分析仪所要实现的各项功能分别编程设计了对应的功能模块,分别是触发模块,数据缓存模块,分频模块以及存储器模块,并分别进行了仿真验证,在此基础上,完成了系统电路的设计与仿真。
仿真结果表明,本次设计各模块都达到了所需要求,实现了各自的功能。
系统总体方案也得到了较理想的结果,本次设计方案是可行的,达到了设计要求。
关键词:
逻辑分析仪,数据采集,FPGA,VHDL
Abstract
Logicanalyzerisakindofequipmentwhichissimilartotheoscilloscope,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灵活的现场可更改性,使得在有需要时可以对系统进行非常方便的改进。
系统的性能还可以在不更改硬件电路的情况下得到进一步的提高。
本设计主要使用QuartusⅡ软件作为开发平台,以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路逻辑信号进行实时采集的功能,采样频率为100KHz,并且可以设置简单的单级触发字。
当8路通道数据流的逻辑状态与预置的触发字的逻辑状态完全相同时,就会产生触发信号。
触发之后,将触发信号输出到RAM中作为RAM的片选信号,再由RAM对8通道的数据流进行一次采集、存储,每通道储存深度为32bit,并且进行输出显示。
2.2总体设计方案
鉴于本次设计的基本要求,选择QuartusII软件平台来实现。
由于条件限制,无法从外部硬件电路采集模拟信号作为测试信号,所以本文设计了一个可任意选择有源晶振的数字信号发生器,可产生8通道的连续循环数字信号数据,以作为测试信号。
系统设计中还将涉及到这样几个模块,分别是触发功能模块,数据缓存模块,采集和处理功能模块。
最后要有一个RAM模块。
根据以上的要求,设计出来的简易逻辑分析仪的系统实现框图如图2.1所示。
系统的工作流程图以及各模块之间的控制关系如图2.2所示:
从图2.1和图2.2的系统框图和工作流程图可以看出,该系统的实现主要是由多个FPGA子模块互相连接构成的,可以由VHDL语言编程实现。
用FGPA方式实现的这种系统,就像我们能看到的,随时都可以在原理图上根据要求做出相应的更改,只要对相应模块原先的程序进行少量更改就可以实现不同的我们想要的功能,增加或者减少一些功能,然后再把程序生成相应的图形符号互相连接起来就可。
本次设计中的几个模块分别负责对输入信号的判断、比较、存储、采集和处理,最后经由RAM输出。
这样的由VHDL语言描述的系统最后可以构造于一个芯片中,只要配置好相应的引脚接口,就可以很方便地在硬件电路上进行测试。
该系统所需要用的子模块以及说明如下:
(1)8路数字信号发生器:
本次设计主要是用VHDL语言来描述8路数字信号发生器的发生,它主要由预置寄存器、分频器和循环移位寄存器三部分组成,能够输出连续的8路循环数字信号。
其中预置寄存器中预置的信号由外部输入。
(2)触发电路:
由于本次设计的是简易型逻辑分析仪,所以触发模块只要求设置简单的一级触发。
当输入的信号与预置的触发字逻辑状态相同时,输出高电平信号,分别作为启动存储器、分频器的使能信号和启动RAM的片选信号。
(3)存储器:
8路通道的数据流信号到来时,缓存下来,等待,不进行输出。
当使能信号EN到来时,存储器将会对使能信号EN到来时刻之后的数据流进行输出,也即将触发点之后的数据写进RAM中。
(4)分频器:
分频器在接收到触发电路发出的使能信号ABLE后开始工作,将有源晶振输入的1MHz时钟进行640分频,得到周期为640us的时钟信号,其实就是分频后的一个时钟周期相当于系统时钟的64个周期。
分频后的时钟作为RAM的读写使能信号OE输入给RAM进而控制RAM的读写。
(5)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所具有的优越性。
从上面的工作流程图中可以清晰地看出这种设计简单又十分方便,只涉及到分频器,预置寄存器和循环移位寄存器这三部分的编程,几乎只使用一个小的FPGA芯片就能实现。
从图3.2的顶层结构也可以看得非常清楚。
CLOCK时钟主要负责控制循环移位寄存器。
3.1.2带异步置位/复位的通用8位寄存器设计
预置寄存器的功能:
在使能信号为高电平时,将预置的信号输出到循环移位寄存器中。
使用VHDL语言编程并在QuartusII中生成的该模块符号图如图3.3所示。
图3.3通用8位寄存器元件符号图
预置寄存器的仿真结果如图3.4所示。
图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所示。
图3.8循环移位寄存器时序仿真图
图3.8中CLK为时钟信号,LOAD为工作信号,D为预置信号,Q为输出观察信号。
从图中可以看出,当时钟信号上升沿到来且LOAD信号处于低电平时,循环移位寄存器开始工作产生数据流。
可以看到该循环移位寄存器模块很好的实现了其功能,符合设计要求。
3.1.5数字信号发生器仿真
使用VHDL语言编程并在QuartusII中生成的该模块符号图如图3.9所示。
图3.9数字信号发生器元件符号图
数字信号发生器的仿真结果如图3.10所示:
图3.10数字信号发生器仿真图
图3.10是数字信号发生器在预置信号为00000101(5)时产生的循环序列仿真图,CLK1是1MHz有源晶振,CLKU为系统时钟,LOADA是工作信号。
在使能信号ENU处于高电平状态,时钟信号CLKU上升沿到来并且加载信号LOADA处于低电平时,预置寄存器将预置信号00000101(5)送入循环移位寄存器,从而产生连续不断循环的数据流。
从仿真图可以看出此数字信号发生器模块功能完全符合所需要求。
3.2触发电路实现与仿真
该模块的设计框图如图3.11所示。
该模块的作用:
在系统电路上电之后,数字信号发生器会源源不断地输出数据流,而触发电路模块会一直接收数据流,并且一直检测输入的数据流序列与预置触发字的逻辑状态是否相同。
只有当8路信号的逻辑状态与预置触发字的逻辑状态完全相同时,才会产生一个触发信号发送出去,作为触发模块后面几个模块的控制信号。
图3.12为触发电路的符号图。
图3.12触发电路元件符号图
触发模块的仿真结果如图3.13所示。
图3.13触发电路时序仿真波形
在图3.13中,CLK为时钟信号,INPUTM、INPUTN分别为输入测试信号、预置触发字,PEQ为输出观察信号。
可以看到,在每个时钟上升沿到来时,触发电路都会对输入数据INPUTM和预置触发字INPUTN进行对比,若不相同则输出低电平,若在某一个时钟上升沿触发则将一直输出高电平。
如图3.13所示,当输入数据流INPUTM的逻辑状态为00001001(9)和预置触发字的逻辑状态00001001(9)相同时,之后将一直输出高电平。
从仿真图可以看出,该触发电路模块实现了所需功能,完全符合设计要求。
3.3存储器REGN的实现
存储器REGN的设计框图如图3.11所示。
该模块的作用:
数字信号发生器产生的数据流在源源不断输出到触发电路的同时,也会不断的输出到这一模块。
当触发电路触发后产生的使能信号EN到来即为高时,存储器REGN才会允许输入端的数据流进行输出。
使用VHDL语言编程并在QuartusII中生成的该模块元件图如图3.15所示。
图3.15存储器REGN元件符号图
存储器REGN的仿真结果如图3.16所示:
图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所示。
该模块的作用:
当触发电路触发后产生的使能信号ABLE到来时,分频器电路开始工作,对1MHz的时钟信号进行640分频,得到一个周期为640us的时钟信号输出给RAM作为RAM的读写控制信号,之后,RAM就可以在一个周期的读写信号控制下写32个数据,读32个数据。
使用VHDL语言编程并在QuartusII中生成的该模块符号图如图3.18所示。
图3.18分频器元件符号图
640分频器的仿真结果如图3.19所示。
图3.19640分频器仿真图
在图3.19中,CLK为时钟信号,OUTPUT输出信号。
从仿真图看到,当分频器工作的时候,高频时钟信号被分成了一个低频时钟信号。
640分频器模块完全能够实现所需要求,符合设计要求。
3.5存储器RAM的实现
RAM存储器用于存储采集的数据,其设计框图如图3.20所示。
该模块的作用:
RAM作为整个设计中最核心的模块,需要完成数据的采集和处理工作。
在系统时钟的作用下,当触发电路触发后产生的使能信号CS到来时,这时候读写控制信号OE也会同时到来,并且OE处于高电平。
这时候RAM启动,并开始对输入的数据流进行采样,之后将采集得来的信号数据写入RAM中,采样存储时间持续32个系
统时钟周期,亦即32bit每一通道,然后结束存储。
此时OE的高电平状态会结束并进入低电平状态,此时RAM读出先前存储的32bit数据。
从CS片选信号到来的那一刻,每过一个系统时钟,RAM内部都有一个计数器加一,当计数满64次之后,关闭RAM,停止读写。
使用VHDL语言编程并在QuartusII中生成的该模块符号图如图3.21所示。
图3.21RAM的元件符号图
存储器RAM的仿真结果如图3.22所示。
图3.22存储器RAM仿真图
图3.23OE高电平期间写入的32个数据放大图
图3.24OE低电平期间读出的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模块,RAM模块在QuartusII中对应接口连接起来之后,得到如图4.1所示的系统顶层原理图。
图4.1系统顶层原理图
4.2系统顶层仿真图
在2000us时间观察域,系统时钟信号为0.1MHz,有源晶振1MHz的基础上,得到的系统顶层仿真结果如图4.2所示。
图4.2系统顶层仿真图
图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接口,使用