版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Ⅰ页共Ⅰ页PAGE目录1引言 11.1课题背景 11.2课题意义 21.3国内外现状及发展趋势 21.4系统开发环境及技术分析 31.4.1FPGA开发简介 31.4.2VHDL特点及设计方法 52需求分析 72.1系统基本要求 72.2系统结构 73系统设计 83.1总体方案比较 83.2程序流程图 103.3系统模块设计 113.3.1整形电路 113.3.2计数器 123.3.3分频器 143.3.4锁存器 163.3.5控制器 183.3.6显示器 224系统仿真及测试 23结论 29致谢 30参考文献 31附录1 32附录2 35第36页共35页1引言1.1课题背景进入信息时代以来,微电子技术和计算机技术飞速发展,各种电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,特别是DSP技术诞生以后,电子测量技术更是迈进了一个全新的时代[1]。近年来,DSP逐渐成为各种电子器件的基础器件,逐渐成为21世纪最具发展潜力的朝阳行业,甚至被誉为信息化数字化时代革命旗手。在电子技术领域内,频率是一个最基本的参数,频率与其它许多电参量的测量方案、测量结果都有十分密切的关系。如时间,速度等都涉及到或本身可转化为频率的测量。因此,频率的测量就显得更为重要。而且,目前在电子测量中,频率的测量精确度是最高的.现在市场上有各种多功能,高精度,高频率的数字频率计,但价格不菲。而在实际工程中,不是对所有信号的频率测量都要求达到非常高的精度。因此,本文提出了一种能满足一般测量精度要求,但成本低廉的数字频率计的设计方案。在电子工程中、资源勘探、仪器仪表等相关应用中,频率计是工程技术人员必不可少的测量工具。数字频率计是计算机,通信设备,音频视频等科研生产领域不可缺少的车辆仪器,采用VHDL语言编程设计实现的数字频率计,除被测信号的整形部分,键输入部分和数码显示部分以外其余全在一片FPGA芯片上实现,整个设计过程变得十分透明,快捷和方便,特别是对于各层次电路系统的工作时序的了解显得尤为准确而且具有灵活的现场可更改性。在不更改硬件电路的基础上对系统进行各种改进,还可以进一步提高系统的性能和测量频率的范围。该数字频率计具有高速、精确、可靠、抗干扰性强,而且具有现场可编程等优点。随着微电子技术和计算机技术的飞速发展,现代电子系统的设计和应用进入一个全新的时代。在电子技术设计领域,可编程逻辑器件已得到广泛普及和应用,高性能但结构简单的电子技术产品已经成为市场主体,通过软件编程可对可编程逻辑器件的结构和工作方式进行重构,使得硬件设计可以和软件设计一样方便快捷,为数字系统的设计带来极大的灵活行。1.2课题意义在电子测量技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,测量频率是电子测量技术中最常见的测量之一。不少物理量的测量,如时间、速度等都涉及或本身可转化为频率的测量。它与许多电参量和非电量的测量都有着十分密切的关系。例如,许多传感器就是将一些非电量转换成频率来进行测量的,因此频率的测量就显得更为重要。数字频率计是用数字来显示被测信号频率的仪器,被测信号可以是正弦波、方波或其它周期性变化的信号。而传统的频率计测量精度随着频率的下降而降低,测量范围也较窄,因此逐渐被新型的数字频率计所代替。数字频率计广泛采用了高速集成电路和大规模集成电路,使得仪器的体积更小、耗电更少、精度和可靠性更高[1]。目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。而在实际工程中,并不是对所有信号的频率测量都要求达到非常高的精度因此,频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。以往的大多数传统数字频率计一般由分离元件搭接而成,其测量范围、测量精度和测量速度都受到很大的限制。因此基于FPGA的数字频率计频率计以其测量准确、精度高、方便、价格便宜等优势将得到广泛的应用。1.3国内外现状及发展趋势FPGA是现场可编程门阵列的英文简称,全称为FieldProgrammableGateArray,是20世纪70年代发展起来的一种新型立即器件是目前数字系统设计的主要硬件基础[2]。其在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块,实现一定的逻辑功能。FPGA技术是一门实践性很强的学科,最终目的是让用户通过硬件描述语言编程来配置芯片的内部连接和元器件参数,以获得所需的电路功能。使得设计方法从“电路设计硬件搭试焊接”的传统方式转到“功能设计软件模拟下载”的电子设计自动化模式[3]。应此,必须选择正确有效的方法来完成可编程器件的逻辑编程。FPGA是一种新兴的高密度大规模可编程逻辑器件,它具有门阵列的高密度和PLD器件的灵活性和易用性,目前已成为一类主要的可编程器件。FPGA器件作为系统控制的核心,其灵活的现场可更改性,可再配置能力,对系统的各种改进非常方便,在不更改硬件电路的基础上还可以进一步提高系统的性能。可编程器件的最大特点是可通过软件编程对其器件的结构和工作方式进行重构,能随时进行设计调整而满足产品升级[4]。使得硬件的设计可以如软件设计一样方便快捷,从而改变了传统数字系统及用单片机构成的数字系统的设计方法、设计过程及设计观念,使电子设计的技术操作和系统构成在整体上发生了质的飞跃。具有高速、精确、可靠、抗干扰性强.当今技术的发展日新月异,FPGA的容量和速度成倍的增长,而价格却逐年下降,这将使得基于FPGA设计的数字频率计优势更加明显。相信不久的将来,这一技术必将得到更加广泛的应用[5]。1.4系统开发环境及技术分析本次设计主要是用FPGA的开发环境QuartusⅡ采用VHDL语言编程并对设计电路进行仿真,以便提前测试这个设计的可靠性。选用VHDL语言进行设计,可以不懂硬件结构,也不必知道最终设计的目标期间是什么样子,而是进行独立设计。正因为VHDL语言的硬件描述与具体工艺技术和硬件无关,所以VHDL设计程序的硬件目标器件有广阔的选择范围。1.4.1FPGA开发简介现场可编程门阵列(FPGA)器件是八十年代中期出现的产品,它的应用大大地方便了IC的设计,因而随着数字技术日益广泛的应用,以FPGA为代表的ASIC器件得到了迅速的普及和发展,器件集成度和速度都在高速增长[6]。有了FPGA,我们只需要在计算机上绘出原理图,再运行相应的软件,就可把所设计的逻辑电路在FPGA中实现。所有步骤均可自动完成。电子设计工程师自己设计专用集成电路成为了一件很容易的事情。FPGA作为专用集成电路(ASIC)概念上的一个新型范畴和门类,以其高度灵活的用户现场编程方式,现场定义高容量数字单片系统的能力,能够重复定义、反复改写的新颖功能,为复杂数字系统设计、研制以及产品开发提供了有效的技术手段[7]。电子应用设计工程师应用FPGA技术不仅可避免通常ASIC单片系统设计周期长,前期投资风险大的弱点,而且克服了过去板级通用数字电路应用设计的落后,繁琐和不可靠性。基于FPGA的开发设计,其工程设计流程如图1.1所示:设计输入设计输入综合布局布线时序分析功耗分析工程更改管理调试编程和配置仿真时序逼近图1.1FPGA工程设计流程流程中各个模块具体功用如下:a)设计输入:用任何文本编辑器都可以进行,通常VHDL文件保存为vhd文件。HDL的编译器有很多,ACTIVE公司,MODELSIM公司,SYNPLICITY公司,SYNOPSYS公司,VERIBEST公司等都有自己的编译器。b)综合:将源文件调入逻辑综合软件进行综合。综合的目的是在于将设计的源文件由语言转换为实际的电路。但是此时还没有在芯片中形成真正的电路。这一步的最终目的是生成门电路级的网表(Netlist)。c)布局布线将第2步生成的网表文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到CPLD/FPGA内。这一步的目的是生成用于下载(编程Programming)的编程文件。在这一步,将用到第3步生成的网表,并根据CPLD/FPGA厂商的器件容量,结构等进行布局、布线。这就好像在设计PCB时的布局布线一样。先将各个设计中的门根据网表的内容和器件的结构放在器件的特定部位[8]。然后,在根据网表中提供的各门的连接,把各个门的输入输出连接起来。最后,生成一个供编程的文件。这一步同时还会加一些时序信息(Timing)到设计项目中去,以便于做后仿真。d)时序分析、仿真利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。(也叫布局布线仿真或时序仿真)。这一步主要是为了确定你的设计在经过布局布线之后,是不是还满足你的设计要求。e)编程和配置如果前几步都没有发生错误,并且符合设计要求,这一步就可以将由适配器等产生的配置或下载文件通过编程器或下载电缆下载到目标芯片中。1.4.2VHDL特点及设计方法VHDL最早诞生于1982年,并在1987年底被IEEE和美国国防部确认为标准硬件描述语言。在EDA设计工具中,用的最广泛的是VHDL和VERILOG,当然还有其它的。比较VHDL和VERILOG,在顶层设计方面VHDL优于VERILOG,在门级电路设计方面VERILOG优于VHDL。随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言,将使整个系统大大简化,提高整体的性能和可靠性。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其它的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的,具体如下:a)与其它的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体的FPGA和CPLD等目标器件的网表文件已不成问题,只是在综合与优化效率上略有差异。b)VHDL最初是作为一种仿真标准格式出现的,因此VHDL既是一种硬件电路描述和设计语言,也是一种标准的网表格式,还是一种仿真语言。其丰富的仿真语句和库函数,使得在任何大系统的设计早期(即尚未完成),就能用于查验设计系统的功能可行性,随时可对设计进行仿真模拟。即在远离门级的高层次上进行模拟,使设计者对整个工程设计的结构和功能的可行性做出决策。c)VHDL语句的行为描述能力和程序结构决定了它具有支持大规模设计的分解和已有设计的再利用功能,符合市场所需求的,大规模系统高效、高速的完成必须由多人甚至多个开发组共同并行工作才能实现的特点。VHDL中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有力的支持。d)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动地把VHDL描述设计转变成为门级网表[9]。这种方式突破了门级电路设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。应用EDA工具的逻辑优化功能,可以自动地把一个综合后的设计变成一个更高效、更高速的电路系统。反过来,设计者还可以容易地从综合和优化后的电路获得设计信息,返回去更新修改VHDL设计描述,使之更为完善。e)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。正因为VHDL硬件描述与具体的工艺技术和硬件结构无关,VHDL设计程序的硬件实现目标器件有广阔的选择范围,其中包括各系列的CPLD、FPGA及各种门阵列实现目标。f)由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变源程序的条件下,只需要改变端口类属参量或函数,就能轻易地改变设计的规模和结构。基于VHDL的设计一般采用自顶向下的设计方法,其主要步骤为:1)设计说明:用自然语言表达系统项目的功能特点和技术参数等。2)建立VHDL行为模型,即将设计说明已转化为VHDL行为模型。建立模型是为了通过VHDL仿真器对整个系统进行系统行为仿真和性能评估。3)VHDL行为仿真。这一阶段可以利用VHDL仿真器对顶层系统的行为模型进行仿真测试,检查模拟结果,继而进行修改和完善。4)VHDL-RTL级建模。即将VHDL的行为模型表达为VHDL行为代码。5)前端功能仿真。即对VHDL-RTL级模型进行仿真,简称功能仿真。6)逻辑综合。使用逻辑综合工具将VHDL行为代码描述转化为结构化的门级电路。7)测试向量生成。8)功能仿真。9)结构综合。10)门级时序仿真。11)硬件测试。2需求分析2.1系统基本要求本次频率计设计要求设用FPGA实现一个数字频率计,具体设计要求如下:a)测量频率范围:10Hz~100KHz 精度:ΔF/F≤±2%;b)1024Hz 测量波形:方波Vp-p=3~5V;c)AlteraCycloneⅡEP2C5T144C8芯片、数码管LED发光二极管;d)VHDL语言编程实现。考虑到测量方便,将数字频率计划分为四档:10~99Hz、100~999Hz、1000~9999Hz、10000~99999Hz。这样可以保证每一档三位有效数字,而且第三位有效数字误差在±2以内时即可达到精度要求。其中,三个输入信号:待测信号、标准时钟脉冲信号和复位脉冲信号。频率计能根据输入待测信号频率自动选择量程,并在超过最大量程时显示过量程,当复位脉冲到来时,系统复位,重新开始计数显示频率。2.2系统结构基于上述要求,可以将系统基本划分为四个模块,分别为分频、计数、锁存和控制,并可以确定基本的连接和反馈,如图2.1所示:分频器分频器计数器锁存器输出控制器小数点待测信号标准时钟RESET显示器图2.1频率计模块组成3系统设计3.1总体方案比较方案1:采用小规模数字集成电路制作被测信号经过放大整形变换为脉冲信号后加到主控门的输入端,时基信号经控制电路产生闸门信号送至主控门,只有在闸门信号采样期间内输入信号才通过主控门,若时基信号周期为T,进入计数器的输入脉冲数为N,则被信号的测频率其频率F=N/T,其原理方框图如图3.1所示:整形放大整形放大闸门计数器译码器显示逻辑控制待测信号图3.1方案1测频原理图方案2:采用单片机进行测频控制单片机技术比较成熟,功能也比较强大,被测信号经放大整形后送入测频电路,由单片机对测频电路的输出信号进行处理,得出相应的数据送至显示器显示。原理方框图如图3.2所示:信号整形信号整形测频电路单片机显示晶振待测信号图3.2方案2才频原理图采用这种方案优点是呆以依赖地成熟的单片机技术、运算功能较强、软件编程灵活、自由度大、设计成本也较低,缺点是显而易见的,在传统的单片机设计系统中必须使用许多分立元件组成单片机的外围电路,整个系统显得十分复杂,并且单片机的频率不能做得很高,使得测量精度大大降低。方案3:采用现场可编程门阵列(FPGA)为控制核心采用现场可编程门阵列(FPGA)为控制核心,利用VHDL语言编程,下载烧制实现。将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,可实现大规模和超大规模的集成电路,测频测量精度高,测量频率范围大,而且编程灵活、调试方便。综合上述分析,方案三为本设计测量部分最佳选择方案。3.2程序流程图本次频率计设计的流程图如图3.3所示:数码管显示数码管显示译码显示数据锁存计数器50MHZ分频计数器50MHZ分频500MHZ分频计数器0.1档1档10档开始1S时基10S时基0.1S时基NONOYESYESYES图3.3程序流程图分频电路将50MHz标频信号通过500MHz、50MHz、5MHz分频产生所需的闸门信号,其原理图如图3.4所示:可控分频晶振500M分频可控分频晶振50M分频5M分频CLKK图3.4分频电路原理图进行500MHz分频后。其频率为:50MHz/500MHz=1/10=0.1Hz周期为10s,所以所显示的频率值是实际频率值的10倍,档位为*0.1,精度为0.1;进行50MHz分频后。其频率为50MHz/50MHz=1/1=1Hz,周期为1s,所以所显示的频率值即是实际频率值。档位为*1,精度为1。进行5MHz分频后。其频率为50MHz/5MHz=10Hz周期变为0.1s,所以所显示的频率值是实际频率值的1/10倍。档位为*10,精度为10。3.3系统模块设计频率计设计总体如图3.5所示:CLKCLK计数器CLKK数据锁存译码显示数码管显示放大整形电路500MHZ50MHZ5MHZ分频晶振输入信号图3.5频率计总体设计图3.3.1整形电路FPGA能够识别的信号只有脉冲信号,要使系统能够精确测量各种信号的频率,如:正弦波、三角波、锯齿波等,必需先将被测信号整形,整形电路是将待测信号整形变成计数器所要求的脉冲信号[10]。电路形式采用一个整形三极管9018和一个电位器以及四个1K的电阻组成。其整形电路原理图如图3.6所示:图3.6整形电路原理图3.3.2计数器由四个十进制计数器级联。四个输入端口:时钟脉冲CLK、使能端EN、清零端CLRN、档位状态端STAT[1..0]。五个输出端口:四个四位十进制BCD码输出OUT1[3..0]~OUT4[3..0]、过量程溢出OF[7]。功能表见表3.1:表3.1计数器功能表CLKENCLRNSTAT[1.0]OUT4-1DFHL0,1,23位加一计数OF等于第三位进位HL34位加一计数OF等于第四位进位×LL×计数保持L×××LL×H×LL设计生成的计数器模块如图3.7所示:SSignalResetEnCntoverCntlowLockCout1[3.0]Cout2[3.0]Cout3[3.0]Cout4[3.0]图3.7单个计数器模块每个十进制计数器用VHDL语言编程实现。源程序如下:moduleCounter(reset,signal,en,cntover,cntlow,lock,cout1,cout2,cout3,cout4);inputsignal,en;//en为分频器输出的方波信号outputcntover,cntlow,lock,reset;output[3:0]cout1,cout2,cout3,cout4;regcntover,cntlow,lock;reg[3:0]cout1,cout2,cout3,cout4;wirereset;assignreset=(cntover||cntlow||lock);always@(posedgesignal)beginif(reset)begincout1<=0;cout2<=0;cout3<=0;cout4<=0;cntlow<=0;cntover<=0;endelseif(en)beginif((cout1==9)&&(cout2!=9))begincout1<=0;cout2<=cout2+1;cntover<=0;cntlow<=0;endelseif((cout1==9)&&(cout2==9)&&(cout3!=9))begincout1<=0;cout2<=0;cout3<=cout3+1;cntlow<=0;endelseif((cout1==9)&&(cout2==9)&&(cout3==9)&&(cout4!=9))begincout1<=0;cout2<=0;cout3<=0;cout4<=cout4+1;endelseif((cout1==9)&&(cout2==9)&&(cout3==9)&&(cout4==9))begincntover<=1;endelsebegincout1<=cout1+1;cntover<=0;endendelsebegincntover<=0;cntlow<=0;end//end//always@(negedgeen)//beginif(!en)beginif((cout4==0)&&(cout3<=9)&&(cout2<=9)&&(cout1<=9))begincntlow<=1;lock<=0;endelseif(cntover)beginlock<=0;cntlow<=0;endelsebeginlock<=1;cntlow<=0;endif((cout4==0)&&(cout3==0)&&(cout2==0)&&(cout1==0))begincntlow<=0;cntover<=0;lock<=0;endendendendmodule3.3.3分频器分频器是本系统最重要的功能部件之一,由它产生闸门电平和控制器、计数器的控制脉冲。它有四个输入:标准时钟脉冲输入CLK1024、溢出处理触发TRIGGER、复位触发RESET和档位状态STAT[1..0]。三个输出:计数闸门电平FGATE、控制器工作脉冲FTRIGGER、计数器控制器清零脉冲FCLR。设计生成的分频器模块如图3.8所示:ClkClkcount_clkResetSelect[1.0]图3.8单个分频器模块分频器采用计数分频的办法,即使用一内部寄存器,在时钟脉冲上升沿加一计数,当计到一定值时就改变FGATE的状态,从而达到分频的目的。由于输入标准时钟脉冲为1024Hz,要得到0.1s的FGATE计数值相当小,约为20,误差很大,故在实际设计中把第四档闸门电平时间调整为0.1s,这样第三、四档公用一个闸门电平,同时在计数和锁存时要做相应的移位,因为测量第四档频率时有4位有效数字。要得到10s、1s、0.1s三个FGATE,分别要计数到10240、1024和103。从组成图中也可以看出分频器由这三种计数器并联组成,通过3个4选1选择器(一个74LS153和一个4_1MUX),由STAT[1..0]选择使用的FGATE、FCLR和FTRIGGER[7]。 输出FGATE送计数器EN作为计数器使能闸门电平。FTRIGGER送控制器TRIGGER作为控制器工作脉冲。FCLR送计数器CLRN作为每次计数开始前的清零信号,送控制器CLR作为控制器内部触发信号。FGATE由高变低,即计数结束时,FTRIGGER信号才产生,这时控制器开始工作,判断计数是否有效,然后发出一系列指令直到FCLR信号到来,计数器清零,准备进入下一次计数。采用这样的像CPU时钟一样的信号的原因,一方面,处理计数数据只用了很短的时间,两次测量之间时间很短,加快了频率计的响应速度;另一方面,解决了异步时序逻辑的竞争,使系统工作在异步时序状态下,既保持了很高的响应速度,又有很高的稳定性。为了解决在第一档向第二档转换时等待时间过长的问题,分频器由TRIGGER端口接收一个计数器的溢出脉冲,当计数器溢出时,在脉冲上升沿将内部计数器置为FGATE结束高电平的最后一个计数器值。这样,由于控制器此时溢出已被置位,马上就能进入一次换档处理,保证了换档的快速。另外,RESET信号上升沿到来时,计数器被置为零,这样就可以马上重新开始计数,实现了复位的效果。分频器单元FREQCER_10240的源程序如下:moduleDivFreq(clk,reset,select,count_clk);outputcount_clk;inputclk,reset;input[1:0]select;regcount_clk;reg[23:0]num;//always@(posedgeclk)//beginif(reset)count_clr<=1;//elsecount_clr<=0;//endalways@(posedgeclk)beginif(!reset)case(select)2'b00:beginif(num==499)begin count_clk<=~count_clk;num<=0;endelsenum<=num+1;end2'b01:beginif(num==4999)begin count_clk<=~count_clk;num<=0;endelsenum<=num+1;end2'b11:beginif(num==49999)begin count_clk<=~count_clk;num<=0;endelsenum<=num+1;enddefault:beginif(num==4999)begin count_clk<=~count_clk;num<=0;endelsenum<=num+1;endendcaseelsebeginnum<=0;count_clk<=1;endendendmodule3.3.4锁存器如果计数器输出直接与译码器相连接,那么在计数过程中输出端则随输入脉冲数的增加而不断跳变,那么显示数码管则也会不断闪烁跳变,让人不能看到稳定的输出,设锁存器后,则不再跳变,便可清晰读出计数结果。由control控制模块产生的latch信号来提供锁存脉冲。其生成的功能模块如图3.9所示:LLockCout1[3.0]Cin[3.0]图3.9单个锁存器模块这模块实现了对六位计数结果和溢出信号over的锁存功能。程序很简单,即锁存信号的上升沿来时送数,其它时候则保持不变。锁存器有八个输入:时钟脉冲CLK,置位端SET,复位端RESET,4个4bit十进制BCD输入IN1[3..0]~IN4[3..0],档位状态STAT[1..0]。五个输出:5个5bit十进制BCD输出。组成图见附图2左上部分。由一桥接器BRIDGE和4个LATCH_4_16、1个LATCH_4_1锁存器组成[8]。 桥接器BRIDGE主要是为了数据对齐。因为3、4两档使用同一个分频器,故测量第四档时有4位有效数字,通过桥接器转换后就能保证数据有效数字最高位与锁存器第五位对齐。输入输出对应表如表3.2:表3.2输入输出功能表STAT=0,1,2STAT=3OUT5=IN3=IN4OUT4=IN2=IN3OUT3=IN1=IN2OUT20=IN1桥接器功能表如表3.3所示:表3.3桥接器功能表CLK(IN)SET(IN)RESET(IN)OUT00=IN01010F×00×0F锁存器单元LATCH_4_1和LATCH_4_16均为4bit锁存器,其唯一不同在于置位时,LATCH_4_16锁存器内容置为F,另一个置1。下面将LATCH_4_16的功能表和源程序列出:Lock.vhdl/锁存模块moduleLock(lock,cin,cout);inputlock;input[3:0]cin;output[3:0]cout;reg[3:0]cout;always@(posedgelock)beginif(lock)cout=cin;endendmodule3.3.5控制器控制器CONTROLER是整个系统最复杂也是最关键的部件,附图1左上部分是控制器组成。它由一个控制器核心模块CONTROL_CORE和寄存器OFREGISTER组成OFREGISTER由CLK端接受计数器溢出脉冲在其上升沿置1,当控制器核心开始换档工作时,通过CLR清除OFREGISTER。其功能表如表3.4所示:表3.4输入输出功能表输入输入输出CLKCLROF×1×0设计生成的控制器模块如图3.10所示:CClkstd_f_sel[1.0]ClearresetCntoverlight_1kCntlowlight_10klight_100k图3.10单个控制器模块CONTROL_CORE模块是控制器的核心,有六个输入端口:时序脉冲CLK、清零脉冲CLR、复位脉冲RESET、溢出检测输入OF、计数器输出第3、4位IN3[3..0]和IN4[3..0]。输出端口四个:锁存器工作脉冲LATCH_CLK、OFREGISTER清零脉冲CLROF、锁存器状态LATCH_STAT[1..0]和当前档位状态STAT[1..0]。另外还有寄存器stat_reg[1..0],用在转换档位时临时保存档位。count寄存器,用来标志当前工作脉冲序号。flag寄存器,用来标志当前计数置溢出或不够。reset_reg寄存器,用来标志复位周期。由上述介绍可知有三种情况能到达状态:计数结束、计数中溢出和复位。这个时候就需要检测。RESET信号在上升沿将reset_reg置为1,并进行复位操作,即状态寄存器分别置值。在时刻第工作脉冲到来时,首先检测是不是复位周期,是则跳过,不作任何动作。不是,则检测OF端口是否为1,为1则有溢出,要进行换档,flag标志置1,并发出OFREGISTER清零信号CLROF,没有溢出,则检测计数器最高两位,两位均为0,则说明档位不够,要调低档位,flag标志置2,如果不均为0,则该计数值有效,flag置为0;当脉冲到来时,检测是否是复位周期,是则跳过,不是则继续。如果flag=1,有溢出,向上换档,如果当前档位为3,则保持,并且将锁存器置位(显示1FFFF),否则向上调一挡;如果flag=2,档位不够,当前档位为0时,保持,否则向下调一挡。flag=0,计数有效,发出锁存器时钟脉冲LATCH_CLK,将当前计数值打入锁存器。当脉冲到来时,清除中间状态寄存器。当脉冲到来时,在其下降沿将stat_reg的内容打入STAT,在下一次高电平到来之前实现档位转换。具体源程序如下:clk:输入时钟;clear:为整个频率计的异步复位信号;reset:用来在量程转换开始时复位计数器;std_f_sel:用来选择标准时基;cntover:代表超量程;cntlow:代表欠量程;lock:向锁存器发出的锁存信号。状态A,B,C,D,E,F采用一位热码编码*/moduleControl(std_f_sel,reset,clk,clear,cntover,cntlow,light_1k,light_10k,light_100k);output[1:0]std_f_sel;outputreset;outputlight_1k,light_10k,light_100k;inputclk,clear,cntover,cntlow;reg[1:0]std_f_sel;regreset;reg[5:0]present,next;reglight_1k,light_10k,light_100k;parameterstart_fl00k=6'b000001, fl00k_cnt=6'b000010, start_fl0k=6'b000100, fl0k_cnt=6'b001000, start_flk=6'b010000, flk_cnt=6'b100000;always@(posedgeclkorposedgeclear)begin if(clear) present<=start_fl0k; else present<=next;endalways@(presentorcntoverorcntlow)begincase(present)start_fl00k: next<=fl00k_cnt;fl00k_cnt: begin if(cntlow) next<=start_fl0k; else next<=fl00k_cnt; endstart_fl0k: next<=fl0k_cnt;fl0k_cnt: begin if(cntlow) next<=start_flk; elseif(cntover) next<=start_fl00k; else next<=fl0k_cnt; endstart_flk: next<=flk_cnt;flk_cnt: begin if(cntover) next<=start_fl0k; else next<=flk_cnt; enddefault: next<=start_fl0k;endcaseend/*always@(cntoverorcntlow)//符合量程时输出lock信号beginif((!cntover)&&(!cntlow))lock=1;elselock<=0;end*/always@(present)begincase(present)start_fl00k: begin reset=1;std_f_sel=2'b00;light_1k<=0;light_10k<=0;light_100k<=1;endfl00k_cnt: begin reset=0;std_f_sel=2'b00;light_1k<=0;light_10k<=0;light_100k<=1;endstart_fl0k: begin reset=1;std_f_sel=2'b01;light_1k<=0;light_10k<=1;light_100k<=0;endfl0k_cnt: begin reset=0;std_f_sel=2'b01;light_1k<=0;light_10k<=1;light_100k<=0;endstart_flk: begin reset=1;std_f_sel=2'b11;light_1k<=1;light_10k<=0;light_100k<=0;endflk_cnt: begin reset=0;std_f_sel=2'b11;light_1k<=1;light_10k<=0;light_100k<=0;enddefault: begin reset=1;std_f_sel=2'b01;light_1k<=0;light_10k<=1;light_100k<=0;endendcaseendendmodule3.3.6显示器最终信号输出在8位LED数码管上显示,数码管显示如图3.11所示:图3.11八位数码管频率计设计的计数结果输入到3-8译码器74LS138,译码结果输出可依次使能每个LED:要让每个LED同时工作,显示数据,就要扫描每个LED,并在使能每个LED的同时,输入所需显示的数据对应的8位段码。虽然8个LED是依次显示,但是受视觉分辨率的影响,看到的现象是8个LED同时显示。数码管程序详见附录1。4系统仿真及测试系统程序输入完成后,需要先对程序进行编译,可以在QUARTUSⅡ软件上面的直接编译按钮(StartCompilation)进行编译,编译结果无错误显示如图4.1所示:图4.1正确编译结果编译后的编译报告信息显示了芯片资源的利用率等信息,如图4.2所示:图4.2编译报告信息成功编译之后,就可以进行系统仿真,具体方法是:建立波形文件File>New,点击OtherFiles,选择VectorWavetomFile,如图4.3所示:图4.3新建波形文件加入波形:在波形窗口选择InsertNodeorBus,将会弹出引脚信息窗口,如图4.4所示:图4.4引脚信息窗口点击NodeFinder,添加相应管脚,并保存文件。为了方便观察波形,我们还要设置格点尺寸和结束时间,可以在Edit菜单下面的EndTime和GrideSize中分别设置,我们设置GrideSize为30ns,EndTime为1us(其中GrideSize不要设太小,否则可能会出现信号的延迟大于信号的有效时间,而使得仿真结果感觉好像不正确)。为了方便观察波形,我们可以全屏显示或者点击放大缩小按钮,左键放大,右键缩小。把输入信号定义如下波形(选中那个信号,用鼠标拉黑相关波段,悬着左端工具栏上的1或者0),之后保存文件。点击仿真按钮,波形仿真无误显示,如图4.5所示:图4.5无误仿真结果按照上述步骤依次得出模块仿真结果:锁存器仿真图4.6所示:图4.6锁存器仿真图控制器仿真图4.7所示:图4.7控制器仿真图之后得出整个工程时序仿真图:设置EndTime=1us,GrideSize=50ns时的到系统仿真图4.8所示:图4.8工程时序仿真图顶层设计采用图形画界面模块如图4.9所示:图4.9生成系统整体界面仿真结束之后,进行引脚锁定,如图4.10所示,图4.10引脚锁存完成引脚锁存后,下载验证:a)确认工程正常打开;b)打开Assignment菜单的Pins命令,打开引脚锁定窗口;c)选择对应端口信号名的器件引脚号;d)添加锁定引脚,全部输入保存引脚设置。e)将编译产生的SOF格式文件配置到FPGA中,进行硬件测试。结论本设计是基于FPGA的数字频率计设计,论文中阐述了FPGA开发的现状、发展前景和频率计的开发意义,详细介绍了FPGA的开发模块化设计,并利用QUARTUSⅡ环境进行编译、仿真,以便完成频率计的设计任务。本次设计主要采用FPGA的模块化设计思想,利用QUARTUSⅡ环境进行具体模块开发,并将设计好的各模块进行系统集成,由于VHDL语言设计功底的局限性,在编程、编译过程中经常出现错误,要通过不断的调试才能解决。还有就是在完成模块编程、编译后进行仿真过程时,一定要注意格点大小的设GrideSize一般设置为30ns附近,选择的数值不能太小,也不能太大,否则信号的延迟大于信号的有效时间,使得仿真结果不能正确显示。在测量信号由高位挡向低位档转换时测量结果不太准确,主要原因是三个分频器是并行独立计数的,因此无法保证换挡时各个分频状态保持同步,应该在分频器级联方面做些改进,希望在以后的生活中通过不断的学习,继续完此次功能,并不断加深硬件描述语言的编程功底。当然,本次设计仍有许多不足之处,最主要的一点就是对于数字频率计的精度设计方面无法保证,由于自身水平和时间限制等因素,没能在精度方面完成设计预期要求是本次设计一个较大的遗憾。致谢毕业设计就要结束了,在这段时间里,在马岱老师的悉心指导和帮助下,顺利完成了数字频率计的设计任务。在整个课程设计期间马岱老师对我的设计一直都很关心,对我的要求也很严格,在本次毕业设计过程中,马岱老师对我耐心指导,给我讲解设计思想,帮我理清思路,给我提出了许多宝贵的意见和建议,使我的课题得以顺利完成。在此,对马岱老师表示衷心的感谢。在毕业设计中,感谢淮阴工学院计算机工程学院提供的时间机会,同时我还要感谢同学们,他们为我的系统设计以及论文都提出了宝贵的意见,通过相互交流,使我看到了设计的不足,而我唯有通过不断的努力改进系统的不足,争取用更优秀的设计来回报他们以及老师们的辛勤工作。仅仅靠我一人很难完成此次设计的,正因为周围很多同学的帮助和照顾,在我感到困惑的时候给我很多安慰和提示,给我很多设计系统的思路和建议,很感谢大家对我的支持与鼓励。最后,再次感谢各位老师和同学对我的设计提供的帮助和支持。参考文献1潘松,黄继业编著.EDA技术与VHDL[M].清华大学出版社.2005年2尹常永编著.EDA技术与数字系统设计[M].西安电子科技大学出版社.2004年3谭会生,张昌凡编著.EDA技术及应用[M].西安电子科技大学出版社.2001年4谭会生,编著.EDA技术综合应用实例与分析[M].西安电子科技大学出版社.2004年5罗丰,吴顺君编著.CPLD技术及运用[M].西安交通大学出版社.2003年6齐洪喜,陆颖编著.VHDL电路设计实用教程[M].清华大学出版社.2002年7包明,赵明富.EDA技术与数字系统设计[M].北京:北京航空航天大学出版社,2001.8徐志军,徐光辉.FPGA的开发与应用[M].北京:电子工业出版社,2002.9黄任.单片机与CPLD/FPGA综合应用入门[M].北京:北京航空航天大学出版社.2004年.143-164.10清源计算机工作室编著.Protel99SE仿真与PLD设计[M].北京:机械工业出版社,2000年8月附录1数码显示程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_SIGNED.ALL;ENTITYSCAN_SEG8ISPORT(CLK3,CLK5:INSTD_LOGIC;RST:STD_LOGIC;SEG_DA:OUTSTD_LOGIC_VECTOR(7DOWNTO0);SEG_SEL:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDSCAN_SEG8;ARCHITECTUREADOOFSCAN_SEG8ISSIGNALSEG_BUF1,SEG_BUF2,SEG_BUF1,SEG_BUF3,SEG_BUF4,SEG_BUF0:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALSEG_BUF5,SEG_BUF6,SEG_BUF7,SEG_BUF8:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALSEG_CNT:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALSEG_TEMP:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALCLK:STD_LOGIC;BEGINPROCESS(CLK5)BEGINIFCLK5'EVENTANDCLK5='1'THENCLK<=NOTCLK;ENDIF;ENDPROCESS;PROCESS(CLK5,RST)BEGINIFCLK5'EVENTANDCLK5='1'THENIFCLK='1'THENSEG_BUF1<="0001";SEG_BUF2<="0010";SEG_BUF3<="0011";SEG_BUF4<="0100";SEG_BUF5<="0101";SEG_BUF6<="0110";SEG_BUF7<="0111";SEG_BUF8<="1000";ELSESEG_BUF0<=SEG_BUF8;SEG_BUF8<=SEG_BUF7;SEG_BUF7<=SEG_BUF6;SEG_BUF6<=SEG_BUF5;SEG_BUF5<=SEG_BUF4;SEG_BUF4<=SEG_BUF3;SEG_BUF3<=SEG_BUF2;SEG_BUF2<=SEG_BUF1;SEG_BUF1<=SEG_BUF0;ENDIF;ENDIF;PROCESS(CLK3,RST)BEGINIFCLK3'EVENTANDCLK3='1'THENIFRST="1"THENSEG_CNT<="000";ELSESEG_CNT<=SEG_CNT+1ENDIF;ENDIF;ENDPROCESS;SEG_SEL<=SEG_CNTPROCESS(SEG_CNT,SEG_BUF6,SEG_BUF1,SEG_BUF2,SEG_BUF3,SEG_BUF4,SEG_BUF5,SEG_BUF6,SEG_BUF7,SEG_BUF8)BEGINCASESEG_CNTISWHEN0"0"=>SEG_TEMP<=SEG_BUF1;WHEN0"1"=>SEG_TEMP<=SEG_BUF2;WHEN0"2"=>SEG_TEMP<=SEG_BUF3;WHEN0"3"=>SEG_TEMP<=SEG_BUF4;WHEN0"4"=>SEG_TEMP<=SEG_BUF5;WHEN0"5"=>SEG_TEMP<=SEG_BUF6;WHEN0"6"=>SEG_TEMP<=SEG_BUF7;WHEN0"7"=>SEG_TEMP<=SEG_BUF8;WHENOTHERS=>SEG_TEMP<="XXXX";ENDCASE;ENDPROCESS;PROCESS(SEG_TEMP)BEGINCASESEG_CNTISWHEN"0000"=>SEG_TDA<="00111111";WHEN"0001"=>SEG_TDA<="00OOO11O";WHEN"0010"=>SEG_TDA<="01O11O11";WHEN"0011"=>SEG_TDA<="01001111";WHEN"0100"=>SEG_TDA<="01100110";WHEN"0101"=>SEG_TDA<="01101101";WHEN"0110"=>SEG_TDA<="01111101";WHEN"0111"=>SEG_TDA<="00000111";WHEN"1000"=>SEG_TDA<="01111111";WHEN"1001"=>SEG_TDA<="01101111";WHEN"1010"=>SEG_TDA<="01110111";WHEN"1011"=>SEG_TDA<="01111110";WHEN"1100"=>SEG_TDA<="00111001";WHEN"1101"=>SEG_TDA<="01011110";WHEN"1110"=>SEG_TDA<="01111001";WHEN"1111"=>SEG_TDA<="01110001";WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDAD0;附录2数字频率计硬件原理图如图所示:基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国开源应用程序性能监控行业发展动态与前景趋势预测报告
- 2024-2030年中国常用有色金属矿采选行业发展分析及投资规模研究报告
- 2024-2030年中国工业垃圾处理行业市场深度调研及竞争格局与投资研究报告
- 2024-2030年中国小儿金丹片项目可行性研究报告
- 2024-2030年中国定制式义齿行业发展态势及投资策略研究报告
- 2024至2030年中国双耳瓶数据监测研究报告
- 房地产项目合作开发承包经营管理协议
- 2024年沸腾制粒器项目可行性研究报告
- 2024年新汽车融资租赁协议样本
- 2024年服务协议违约法律诉状
- 2022检验检测机构全套质量手册及程序文件
- 四年级语文上册教学课件-27.扁鹊治病3-部编版(共13张PPT)
- GB∕T 36475-2018 软件产品分类
- 减肥与健康PPT
- 新改版教科版六年级下册科学全册知识点归纳 (超全)
- 小学语文专题讲座
- 小学高段语文课前预习的有效性研究报告
- 车库顶板行车及堆载方案
- 电梯井模板施工工艺标准
- 劳动合同制工人登记表
- 21.模具设计标准要点
评论
0/150
提交评论