基于fpga控制的数字频率计设计(含程序、仿真图)学士学位论文.doc
《基于fpga控制的数字频率计设计(含程序、仿真图)学士学位论文.doc》由会员分享,可在线阅读,更多相关《基于fpga控制的数字频率计设计(含程序、仿真图)学士学位论文.doc(36页珍藏版)》请在咨信网上搜索。
第Ⅰ页 共Ⅰ页 目 录 1 引言 1 1.1 课题背景 1 1.2 课题意义 2 1.3 国内外现状及发展趋势 2 1.4 系统开发环境及技术分析 3 1.4.1 FPGA开发简介 3 1.4.2 VHDL特点及设计方法 5 2 需求分析 7 2.1 系统基本要求 7 2.2 系统结构 7 3 系统设计 8 3.1 总体方案比较 8 3.2 程序流程图 10 3.3 系统模块设计 11 3.3.1 整形电路 11 3.3.2 计数器 12 3.3.3分频器 14 3.3.4锁存器 16 3.3.5控制器 18 3.3.6 显示器 22 4 系统仿真及测试 23 结 论 29 致 谢 30 参 考 文 献 31 附录1 32 附录2 35 第 34 页 共 35页 1 引言 1.1 课题背景 进入信息时代以来,微电子技术和计算机技术飞速发展, 各种电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化, 特别是DSP技术诞生以后,电子测量技术更是迈进了一个全新的时代[1]。近年来,DSP逐渐成为各种电子器件的基础器件,逐渐成为21世纪最具发展潜力的朝阳行业,甚至被誉为信息化数字化时代革命旗手。在电子技术领域内,频率是一个最基本的参数,频率与其它许多电参量的测量方案、测量结果都有十分密切的关系。如时间,速度等都涉及到或本身可转化为频率的测量。因此,频率的测量就显得更为重要。而且,目前在电子测量中,频率的测量精确度是最高的.现在市场上有各种多功能,高精度,高频率的数字频率计,但价格不菲。而在实际工程中,不是对所有信号的频率测量都要求达到非常高的精度。因此,本文提出了一种能满足一般测量精度要求,但成本低廉的数字频率计的设计方案。在电子工程中、资源勘探、仪器仪表等相关应用中,频率计是工程技术人员必不可少的测量工具。数字频率计是计算机,通信设备,音频视频等科研生产领域不可缺少的车辆仪器,采用VHDL语言编程设计实现的数字频率计,除被测信号的整形部分,键输入部分和数码显示部分以外其余全在一片FPGA芯片上实现,整个设计过程变得十分透明,快捷和方便,特别是对于各层次电路系统的工作时序的了解显得尤为准确而且具有灵活的现场可更改性。在不更改硬件电路的基础上对系统进行各种改进,还可以进一步提高系统的性能和测量频率的范围。该数字频率计具有高速、精确、可靠、抗干扰性强,而且具有现场可编程等优点。随着微电子技术和计算机技术的飞速发展,现代电子系统的设计和应用进入一个全新的时代。在电子技术设计领域,可编程逻辑器件已得到广泛普及和应用,高性能但结构简单的电子技术产品已经成为市场主体,通过软件编程可对可编程逻辑器件的结构和工作方式进行重构,使得硬件设计可以和软件设计一样方便快捷,为数字系统的设计带来极大的灵活行。 1.2 课题意义 在电子测量技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,测量频率是电子测量技术中最常见的测量之一。不少物理量的测量,如时间、速度等都涉及或本身可转化为频率的测量。它与许多电参量和非电量的测量都有着十分密切的关系。例如,许多传感器就是将一些非电量转换成频率来进行测量的,因此频率的测量就显得更为重要。数字频率计是用数字来显示被测信号频率的仪器,被测信号可以是正弦波、方波或其它周期性变化的信号。而传统的频率计测量精度随着频率的下降而降低,测量范围也较窄,因此逐渐被新型的数字频率计所代替。数字频率计广泛采用了高速集成电路和大规模集成电路,使得仪器的体积更小、耗电更少、精度和可靠性更高[1] 。目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。而在实际工程中,并不是对所有信号的频率测量都要求达到非常高的精度因此,频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。以往的大多数传统数字频率计一般由分离元件搭接而成,其测量范围、测量精度和测量速度都受到很大的限制。因此基于FPGA的数字频率计频率计以其测量准确、精度高、方便、价格便宜等优势将得到广泛的应用。 1.3 国内外现状及发展趋势 FPGA是现场可编程门阵列的英文简称,全称为Field Programmable Gate Array ,是20世纪70年代发展起来的一种新型立即器件是目前数字系统设计的主要硬件基础[2]。其在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块,实现一定的逻辑功能。FPGA技术是一门实践性很强的学科,最终目的是让用户通过硬件描述语言编程来配置芯片的内部连接和元器件参数,以获得所需的电路功能。使得设计方法从 “电路设计-----硬件搭试----焊接”的传统方式转到“功能设计---软件模拟----下载”的电子设计自动化模式[3]。应此,必须选择正确有效的方法来完成可编程器件的逻辑编程。 FPGA是一种新兴的高密度大规模可编程逻辑器件,它具有门阵列的高密度和PLD器件的灵活性和易用性,目前已成为一类主要的可编程器件。FPGA器件作为系统控制的核心,其灵活的现场可更改性,可再配置能力,对系统的各种改进非常方便,在不更改硬件电路的基础上还可以进一步提高系统的性能。可编程器件的最大特点是可通过软件编程对其器件的结构和工作方式进行重构,能随时进行设计调整而满足产品升级[4]。使得硬件的设计可以如软件设计一样方便快捷,从而改变了传统数字系统及用单片机构成的数字系统的设计方法、设计过程及设计观念,使电子设计的技术操作和系统构成在整体上发生了质的飞跃。具有高速、精确、可靠、抗干扰性强.当今技术的发展日新月异,FPGA 的容量和速度成倍的增长,而价格却逐年下降,这将使得基于FPGA设计的数字频率计优势更加明显。相信不久的将来,这一技术必将得到更加广泛的应用[5]。 1.4 系统开发环境及技术分析 本次设计主要是用FPGA的开发环境QuartusⅡ 采用VHDL语言编程并对设计电路进行仿真,以便提前测试这个设计的可靠性。选用VHDL语言进行设计,可以不懂硬件结构,也不必知道最终设计的目标期间是什么样子,而是进行独立设计。正因为VHDL语言的硬件描述与具体工艺技术和硬件无关,所以VHDL设计程序的硬件目标器件有广阔的选择范围。 1.4.1 FPGA开发简介 现场可编程门阵列(FPGA)器件是八十年代中期出现的产品,它的应用大大地方便了IC的设计,因而随着数字技术日益广泛的应用,以FPGA为代表的ASIC器件得到了迅速的普及和发展,器件集成度和速度都在高速增长[6]。有了FPGA,我们只需要在计算机上绘出原理图,再运行相应的软件,就可把所设计的逻辑电路在FPGA中实现。所有步骤均可自动完成。电子设计工程师自己设计专用集成电路成为了一件很容易的事情。FPGA作为专用集成电路(ASIC)概念上的一个新型范畴和门类,以其高度灵活的用户现场编程方式,现场定义高容量数字单片系统的能力,能够重复定义、反复改写的新颖功能,为复杂数字系统设计、研制以及产品开发提供了有效的技术手段[7]。电子应用设计工程师应用FPGA技术不仅可避免通常ASIC单片系统设计周期长,前期投资风险大的弱点,而且克服了过去板级通用数字电路应用设计的落后,繁琐和不可靠性。 基于FPGA的开发设计,其工程设计流程如图1.1所示: 设计输入 综合 布局布线 时序分析 功耗分析 工程更改管理 调试 编程和配置 仿真 时序逼近 图1.1 FPGA工程设计流程 流程中各个模块具体功用如下: 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.2 VHDL特点及设计方法 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~5 V; c)Altera Cyclone Ⅱ 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时基 NO NO YES YES YES 图3.3 程序流程图 分频电路将50MHz标频信号通过500 MHz、50 MHz、5 MHz分频产生所需的闸门信号,其原理图如图3.4所示: 可控分频 晶振 500M分频 50M 分频 5M 分频 CLKK 图3.4 分频电路原理图 进行500MHz分频后。其频率为:50MHz/500MHz=1/10=0.1Hz周期为10s,所以所显示的频率值是实际频率值的10倍,档位为 * 0.1,精度为0.1;进行50 MHz分频后。其频率为50MHz/50MHz=1/1=1Hz,周期为1s,所以所显示的频率值即是实际频率值。档位为 * 1,精度为1。进行5 MHz分频后。其频率为50MHz/5MHz = 10Hz周期变为0.1s,所以所显示的频率值是实际频率值的1/10倍。档位为 * 10,精度为10。 3.3 系统模块设计 频率计设计总体如图3.5所示: CLK 计数器 CLKK 数据锁存 译码显示 数码管显示 放大整形电路 500MHZ 50MHZ 5MHZ 分频 晶振 输入信号 图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 计数器功能表 CLK EN CLRN STAT[1.0] OUT4-1 DF H L 0,1,2 3位加一计数 OF等于第三位进位 H L 3 4位加一计数 OF等于第四位进位 × L L × 计数保持 L × × × L L × H × L L 设计生成的计数器模块如图3.7所示: Signal Reset En Cntover Cntlow Lock Cout1[3.0] Cout2[3.0] Cout3[3.0] Cout4[3.0] 图3.7 单个计数器模块 每个十进制计数器用VHDL语言编程实现。源程序如下: module Counter(reset,signal,en,cntover,cntlow,lock,cout1,cout2,cout3,cout4); input signal,en; // en为分频器输出的方波信号 output cntover,cntlow,lock,reset; output [3:0]cout1,cout2,cout3,cout4; reg cntover,cntlow,lock; reg [3:0]cout1,cout2,cout3,cout4; wire reset; assign reset=(cntover||cntlow||lock); always@(posedge signal) begin if(reset) begin cout1<=0;cout2<=0;cout3<=0;cout4<=0;cntlow<=0;cntover<=0; end else if(en) begin if((cout1==9)&&(cout2!=9)) begin cout1<=0;cout2<=cout2+1;cntover<=0;cntlow<=0; end else if((cout1==9)&&(cout2==9)&&(cout3!=9)) begin cout1<=0;cout2<=0;cout3<=cout3+1;cntlow<=0; end else if((cout1==9)&&(cout2==9)&&(cout3==9)&&(cout4!=9)) begin cout1<=0;cout2<=0;cout3<=0;cout4<=cout4+1; end else if((cout1==9)&&(cout2==9)&&(cout3==9)&&(cout4==9)) begin cntover<=1; end else begin cout1<=cout1+1; cntover<=0; end end else begin cntover<=0;cntlow<=0;end //end //always@(negedge en) //begin if(!en) begin if((cout4==0)&&(cout3<=9)&&(cout2<=9)&&(cout1<=9)) begin cntlow<=1;lock<=0; end else if(cntover) begin lock<=0;cntlow<=0; end else begin lock<=1;cntlow<=0; end if((cout4==0)&&(cout3==0)&&(cout2==0)&&(cout1==0)) begin cntlow<=0;cntover<=0;lock<=0; end end end endmodule 3.3.3分频器 分频器是本系统最重要的功能部件之一,由它产生闸门电平和控制器、计数器的控制脉冲。它有四个输入:标准时钟脉冲输入CLK1024、溢出处理触发TRIGGER、复位触发RESET和档位状态STAT[1..0]。三个输出:计数闸门电平FGATE、控制器工作脉冲FTRIGGER、计数器控制器清零脉冲FCLR。设计生成的分频器模块如图3.8所示: Clk count_clk Reset Select[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的源程序如下: module DivFreq(clk,reset,select,count_clk); output count_clk; input clk,reset; input [1:0] select; reg count_clk; reg [23:0] num; //always @ (posedge clk) //begin if(reset) count_clr<=1; // else count_clr<=0; //end always @ (posedge clk ) begin if(!reset) case(select) 2'b00: begin if(num==499) begin count_clk<=~count_clk; num<=0; end else num<=num+1; end 2'b01: begin if(num==4999) begin count_clk<=~count_clk; num<=0; end else num<=num+1; end 2'b11: begin if(num==49999) begin count_clk<=~count_clk; num<=0; end else num<=num+1; end default: begin if(num==4999) begin count_clk<=~count_clk; num<=0; end else num<=num+1; end endcase else begin num<=0; count_clk<=1; end end endmodule 3.3.4锁存器 如果计数器输出直接与译码器相连接,那么在计数过程中输出端则随输入脉冲数的增加而不断跳变,那么显示数码管则也会不断闪烁跳变,让人不能看到稳定的输出,设锁存器后,则不再跳变,便可清晰读出计数结果。由control控制模块产生的latch信号来提供锁存脉冲。其生成的功能模块如图3.9所示: Lock Cout1[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 , 2 STAT = 3 OUT5 = IN3 = IN4 OUT4 = IN2 = IN3 OUT3 = IN1 = IN2 OUT2 0 = IN1 桥接器功能表如表3.3所示: 表3.3 桥接器功能表 CLK(IN) SET(IN) RESET(IN) OUT 0 0 = IN 0 1 0 1 0 F × 0 0 × 0 F 锁存器单元LATCH_4_1和LATCH_4_16均为4bit锁存器,其唯一不同在于置位时,LATCH_4_16锁存器内容置为F,另一个置1。下面将LATCH_4_16的功能表和源程序列出: Lock.vhdl /锁存模块 module Lock(lock,cin,cout); input lock; input [3:0]cin; output [3:0]cout; reg [3:0]cout; always@(posedge lock) begin if(lock) cout=cin; end endmodule 3.3.5控制器 控制器CONTROLER是整个系统最复杂也是最关键的部件,附图1左上部分是控制器组成。它由一个控制器核心模块CONTROL_CORE和寄存器OFREGISTER组成 OFREGISTER由CLK端接受计数器溢出脉冲在其上升沿置1,当控制器核心开始换档工作时,通过CLR清除OFREGISTER。其功能表如表3.4所示: 表3.4 输入输出功能表 输入 输入 输出 CLK CLR OF × 1 × 0 设计生成的控制器模块如图3.10所示: Clk std_f_sel[1.0] Clear reset Cntover light_1k Cntlow light_10k light_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 采用一位热码编码 */ module Control(std_f_sel,reset,clk,clear,cntover,cntlow,light_1k,light_10k,light_100k); output[1:0] std_f_sel; output reset; output light_1k,light_10k,light_100k; input clk,clear,cntover,cntlow; reg[1:0] std_f_sel; reg reset; reg[5:0] present,next; reg light_1k,light_10k,light_100k; parameter start_fl00k=6'b000001, fl00k_cnt=6'b000010, start_fl0k=6'b000100, fl0k_cnt=6'b001000, start_flk=6'b010000, flk_cnt=6'b100000; always @(posedge clk or posedge clear) begin if(clear) present<=start_fl0k; else present<=next; end always @(present or cnt- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 fpga 控制 数字频率计 设计 程序 仿真 学士学位 论文
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【可****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【可****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文