版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、i 摘摘 要要 伴随着集成电路(ic)技术的发展,电子设计自动化(eda)逐渐成为重要的设计手段, 已经广泛应用于模拟与数字电路系统等许多领域。电子设计自动化是一种实现电系统 或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,它吸收 了计算机科学领域的大多数最新研究成果,以高性能的计算机作为工作平台,促进了 工程发展。 数字频率计是一种基本的测量仪器。它被广泛应用与航天、电子、测控等领域。 采用等精度频率测量方法具有测量精度保持恒定,不随所测信号的变化而变化的特点。 本文首先综述了 eda 技术的发展概况,fpga/cpld 开发的涵义、优缺点,vhdl 语 言的历史及其优点
2、,概述了 eda 软件平台quartus;然后介绍了频率测量的一般 原理,利用等精度测量原理,通过 fpga 运用 vhdl 编程,利用 fpga(现场可编程门 阵列)芯片设计了一个 8 位数字式等精度频率计,该频率计的测量范围为 0-100mhz, 利用 quartus 集成开发环境进行编辑、综合、波形仿真,并下载到 cpld 器件中, 经实际电路测试,仿真和实验结果表明,该频率计有较高的实用性和可靠性。 关键词关键词:电子设计自动化;vhdl 语言;频率测量;数字频率计 ii abstract the electronic design automation (eda) technolog
3、y has become an important design method of analog and digital circuit system as the integrated circuits growing. the eda technology, which is closely connected with the electronic technology, microelectronics technology and computer science, can be used in designing electronic product automatically.
4、 digital frequency meter is a basic measuring instruments. it is widely used in aerospace, electronics, monitoring and other fields. with equal precision frequency measurement accuracy to maintain a constant, and not with the measured signal varies.we firstly present some background information of e
5、da, fpga/cpld,vhdl and the eda software platform quartus in this thesis;then introduced the general principle of frequency measurement, utilization of precision measuring principle, using vhdl programming, use of fpga (field programmable gate array) chip design such as the precision of a digital fre
6、quency meter, this frequency meters measuring range is 0-100mhz,use quartus integrated development environment for editing, synthesis, wave simulation, and download to the cpld device, by the actual circuit testing, simulation and experimental results show that the frequency meter has high practical
7、 and reliability. keywords: electronic design automation,vhdl, frequency measurement,digital frequency meter iii 目目 录录 摘 要.i abstract.ii 目 录.iii 1. 前言.1 2. 频率测量.3 2.1 数字频率计工作原理概述.3 2.2 测频原理及误差分析.4 2.3.1 常用测频方案.4 2.3.2 等精度测频原理.4 2.3.3 误差分析.5 本章小结.6 3. 数字频率计的系统设计与功能仿真.7 3.1 系统的总体设计.7 3.2 信号源模块.8 3.3 分
8、频器.9 3.4 测频控制信号产生器.10 3.5 锁存器.11 3.6 十进制计数器.11 3.7显示模块.12 3.7.1 显示模块设计.12 3.7.2 显示电路.13 3.7.3 译码器.14 本章小结.14 结 论.15 致 谢.16 参考文献.17 附录一 频率计顶层文件.18 附录二 信号源模块源程序.19 附录三 分频器源程序.20 附录四 测频控制信号发生器源程序.21 iv 附录五 32 位锁存器源程序.22 附录六 有时钟使能的十进制计数器的源程序.23 附录七 显示模块源程序.24 1 1. . 前言前言 eda 是指以计算机大规模可编程逻辑器件的开发软件及实验开发系统
9、为设计工具, 通过有关开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、逻 辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至对于特定目标 芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯 片的一门新技术1。eda 技术高级阶段采用一种新的设计概念:自顶而下(top_down) 的设计程序和并行工程(concurrent engineering )的设计方法,设计者的精力主要集中在 所要电子产品的准确定义上,eda 系统去完成电子产品的系统级至物理级的设计。此 阶段 eda 技术的主要特征是支持高级语言对系统进行描述,高层次综合(high l
10、evel synthesis )理论得到了巨大的发展,可进行系统级的仿真和综合。 vhdl(超高速集成电路硬件描述语言)是由美国国防部开发的一种快速设计电路的工具,目 前已经成为 ieee(the institute of electrical and electronics engineers)的一种工业标准硬件描述语 言。相比传统的电路系统的设计方法,vhdl 具有多层次描述系统硬件功能的能力,支持自顶向下 (top_down)和基于库(librarybased)的设计的特点,因此设计者可以不必了解硬件结构。 vhdl 主要用于描述数字系统的结构、行为、功能和接口,非常适用于可编程逻辑芯
11、片的应用设计。与其它的 hdl 相比,vhdl 具有更强的行为描述能力,从而决定了它 成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构, 从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的 eda 工具和 vhdl 综合器而言,将基于抽象的行为描述风格的 vhdl 程序综合成为具体的 fpga 和 cpld 等目标器件的网表文件己不成问题。vhdl 语言在硬件设计领域的作用将与 c 和 c+在软件设计领域的作用一样,在大规模数字系统的设计中,它将逐步取代如 逻辑状态表和逻辑电路图等级别较低的繁琐的硬件描述方法,而成为主要的硬件描述 工具,它将成为数字系统设计
12、领域中所有技术人员必须掌握的一种语言。vhdl 和可 编程逻辑器件的结合作为一种强有力的设计方式,将为设计者的产品上市带来创纪录 的速度。从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用 vhdl 对 电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具 生成具体的门级逻辑电路的网表,下载到具体的 cpld 器件中去,从而实现可编程的专用集成电路 (asic)的设计。cpld 和 fpga 建立内部可编程逻辑连接关系的编程技术有三种:基于反熔丝技 术的器件只允许对器件编程一次,编程后不能修改。其优点是集成度、工作频率和可靠性都很高, 2 适
13、用于电磁辐射干扰较强的恶劣环境。基于 eeprom 内存技术的可编程逻辑芯片能够重复编程 100 次以上,系统掉电后编程信息也不会丢失。编程方法分为在编程器上编程和用下载电缆编程。 用下载电缆编程的器件,只要先将器件装焊在印刷电路板上,通过 pc, sun 工作站、ate(自动测 试仪)或嵌入式微处理器系统,就能产生编程所用的标准 5v, 3.3v 或 2.5v 逻辑电平信号,也称为 isp ( in system programmable)方式编程,其调试和维修也很方便。基于 sram 技术的器件编程数据 存储于器件的 ram 区中,使之具有用户设计的功能。在系统不加电时,编程数据存储在 e
14、prom、硬盘、或软盘中。系统加电时将这些编程数据实时写入可编程器件,从而实现板级或系 统级的动态配置。 数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连 线比较复杂,而且会产生比较大的延时,造成测量误差,可靠性差。随着复杂可编程 逻辑器件(cpld)的广泛应用,以 eda 工具作为开发手段,运用 vhdl 语言。将使 整个系统大大简化。提高整体的性能和可靠性。 数字频率计是通信设备、音、视频等科研生产领域不可缺少的测量仪器。采用 vhdl 编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示 部分外,其余全部在一片 fpga 芯片上实现。整个系统非常精简
15、,且具有灵活的现场 可更改性。 本文用 vhdl 在 cpld 器件上实现一种 8 位数字频率计测频系统,能够用十进制 数码显示被测信号的频率,不仅能够测量正弦波、方波和三角波等信号的频率,而且 能对其他多种频率信号进行测量。具有体积小、可靠性高、功耗低的特点。 2. . 频率测量频率测量 2.1 数字频率计工作原理概述数字频率计工作原理概述 数字频率计的设计原理实际上是测量单位时间内的周期数。这种方法免去了实测 以前的预测,同时节省了划分频段的时间,克服了原来高频段采用测频模式而低频段 3 采用测周期模式的测量方法存在换挡速度慢的缺点。 采用一个标准的基准时钟,在单位时间(1s)里对被测信号
16、的脉冲数进行计数,即为 信号的频率。由于闸门的起始和结束时刻对于信号来说是随机的,将会有一个脉冲周 期的量化误差。进一步分析测量准确度:设待测信号脉冲周期为 tx,频率为 fx,当测 量时间为 t=1s 时,测量准确度为=tx/t=1/fx。由此可知直接测频法的测量准确度与 信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较 低。因此直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量 精度保持不变的要求。 为克服低频段测量的不准确问题,采用门控信号和被测信号对计数器的使能信号 进行双重控制,大大提高了准确度。当门控信号为 1 时,使能信号并不为 1,只有
17、被测 信号的上升沿到来时,使能端才开始发送有效信号,两个计数器同时开始计数。当门 控信号变为 0 时,使能信号并不是立即改变,而是当被测信号的下一个上升沿到来时 才变为 0,计数器停止计数。因此测量的误差最多为一个标准时钟周期。当采用 100mhz 的信号作为标准信号时,误差最大为 0.01s。 计算每秒钟内待测信号脉冲个数。这就要求计数使能信号 tsten 能产生一个 1 秒 脉宽的周期信号,并对频率计的每一计数器 cnt10 的 ena 使能端进行同步控制。当 tsten 为高电平时,允许计数;低电平时,停止计数,并保持其所计的数。在停止计 数期间,首先需要一个锁存信号 load 的上跳沿
18、将计数器在前 1 秒钟的计数值锁存进 32 位锁存器 reg32b 中,并由外部的译码器译出并稳定显示。锁存信号之后,必须由 清零信号 clr_cnt 对计数器进行清零,为下一秒钟的计数操作做准备。 当系统正常工作时,脉冲发生器提供的 1 hz 的输入信号,经过测频控制信号发生 器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波, 送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证 系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能 够在数码显示管上可以显示的十进制结果。在数码显示管上可以看到计数结果3。 2.2 测频原理
19、及误差分析测频原理及误差分析 2.3.1 常用测频方案常用测频方案 频率测量方案 方案一:采用周期法。通过测量待测信号的周期并求其倒数,需要有标准倍的频 率,在待测信号的一个周期内,记录标准频率的周期数,这种方法的计数值会产生最 4 大为1 个脉冲误差,并且测试精度与计数器中记录的数值有关,为了保证测试精度, 测周期法仅适用于低频信号的测量。 方案二:采用直接测频法。直接测频法就是在确定的闸门时间内,记录被测信号 的脉冲个数。由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生 最大为1 个脉冲误差。进一步分析测量准确度:设待测信号脉冲周期为 tx,频率为 fx,当测量时间为 t=1
20、s 时,测量准确度为=tx/t=1/fx。由此可知直接测频法的测量 准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准 确度也较低。因此直接测频法只适合测量频率较高的信号,不能满足在整个测量频段 内的测量精度保持不变的要求。 方案三:采用等精度频率测量法,测量精度保持恒定,不随所测信号的变化而变 化。在快速测量的要求下,要保证较高精度的测频,必须采用较高的标准频率信号。 单片机受本身时钟频率和若干指令运算的限制,测频速度较慢,无法满足高速、高精 度的测频要求;而采用高集成度、高速的现场可编程门阵列 fpga 为实现高速、高精 度的测频提供了保证。 本设计所采用的测频方法
21、就是等精度频率测量法,下面我们将对等精度频率测量 法做进一步介绍。 2.3.2 等精度测频原理等精度测频原理 等精度测频方法是在直接测频方法的基础上发展起来的。它的闸门时间不是固定 的值,而是被测信号周期的整数倍,即与被测信号同步,因此,避除了对被测信号计 数所产生1 个字误差,并且达到了在整个测试频段的等精度测量。其测频原理如图 2.1 所示。在测量过程中,有两个计数器分别对标准信号和被测信号同时计数。首先给 出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等到被测信号的上 升沿到来时,计数器才真正开始计数。然后预置闸门关闭信号(下降沿)到时,计数器并 不立即停止计数,而是等到
22、被测信号的上升沿到来时才结束计数,完成一次测量过程。 可以看出,实际闸门时间 t 与预置闸门时间 t1 并不严格相等,但差值不超过被测信号 的一个周期4。 5 图 2.1 等精度测频原理波形图 等精度测频的实现方法可简化为图 2.2 所示。cnt1 和 cnt2 是两个可控计数器, 标准频率信号从 cnt1 的时钟输入端 clk 输入;经整形后的被测信号从 cnt2 的时钟 输入端 clk 输入。当预置门控信号为高电平时,经整形后的被测信号的上升沿通过 d 触发器的 q 端同时启动 cnt1 和 cnt2。cnt1、cnt2 同时对标准频率信号和经整形 后的被测信号进行计数,分别为 ns与 n
23、x。当预置门信号为低电平的时候,后而来的 被测信号的上升沿将使两个计数器同时关闭,所测得的频率为(fs/ns)*nx。则等精度 测量方法测量精度与预置门宽度的标准频率有关,与被测信号的频率无关。在预置门 时间和常规测频闸门时间相同而被测信号频率不同的情况下,等精度测量法的测量精 度不变。 图 2.2 等精度测频实现原理图 6 2.3.3 误差分析误差分析 设在一次实际闸门时间 t 中计数器对被测信号的计数值为 nx,对标准信号的计数 值为 ns。标准信号的频率为 fs,则被测信号的频率如式(2-1): fx=(nx/ns)fs (2-1) 由式 1-1 可知,若忽略标频 fs 的误差,则等精度
24、测频可能产生的相对误差如式(2-2): =(|fxe-fx|/fxe)100% (2-2) 其中 fxe 为被测信号频率的准确值。 在测量中,由于 fx 计数的起停时间都是由该信号的上升沿触发的,在闸门时间 t 内对 fx 的计数 nx 无误差(t=nxtx);对 fs 的计数 ns 最多相差一个数的误差,即 |ns|1,其测量频率如式(2-3): fxe=nx/(ns+ns)fs (2-3) 将式(2-1)和(2-3)代入式(2-2),并整理如式(2-4): =|ns|/ns1/ns=1/(tfs) (2-4) 由上式可以看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时 间和标准
25、信号频率有关,即实现了整个测试频段的等精度测量。闸门时间越长,标准 频率越高,测频的相对误差就越小。标准频率可由稳定度好、精度高的高频率晶体振 荡器产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短, 即提高测试速度5。 本章小结本章小结 本章从各个方面说明了频率计的工作原理,介绍了频率测量的原理和误差的分析, 通过对各种频率测量方法的比对,对等精度频率计的实现,在理论上起到了作用。 7 3. 数字频率计的系统设计与功能仿真数字频率计的系统设计与功能仿真 3.1 系统的总体设计系统的总体设计 当系统正常工作时,由系统时钟提供的 100mhz 的输入信号,经过信号源模块, 先通
26、过 100 分频产生 1mhz 的时钟信号,再将 1mhz 的时钟信号分频产生多种频率输 出,其中 1hz 的输出频率被作为控制模块的时钟输入,7812hz 的输出频率被作为显 示模块的时钟输入,由控制模块产生的计数使能信号 testen 和清零信号 clr 对计数模块 进行控制,而由其产生的锁存信号 load 对锁存模块进行控制,一旦计数使能信号为高 电平,并且时钟上升沿到来,计数器便开始正常计数,清零信号到来则计数清零,而 当锁存信号为高电平时,数据便被锁存器锁存,然后将锁存的数据输出到显示模块显 示出来,数据锁存保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计 数结果转换成相应
27、的能够在数码显示管上可以显示的十进制结果。在数码显示管上可 以看到计数结果。数字频率计的原理框图如图 3.1 所示。主要由 5 个模块组成,分别是: 信号源模块、控制模块、计数模块、锁存器模块和显示器模块6。 图 3.1 数字频率计的原理框图 根据数字频率计的系统原理,cnt 控制信号发生器。testctl 的计数使能信号 testen 能产生一个 1 s 宽的周期信号,并对频率计的每一计数器 cnt10 的 ena 使能端进行同 步控制:当 testen 高电平时允许计数、低电平时停止计数。 8 reg32b 为锁存器。在信号 load 的上升沿时,立即对模块的输入口的数据锁存到 reg32
28、b 的内部,并由 reg32b 的输出端输出,然后,七段译码器可以译码输出。在这里 使用了锁存器,好处是可以稳定显示数据,不会由于周期性的清零信号而不断闪烁。 cnt10 为十进制计数器。有一时钟使能输入端 ena,用于锁定计数值。当高电平时 允许计数,低电平时禁止计数。将八个十进制计数器 cnt10 级联起来实现 8 位十进制 计数功能2,7 。 disply 为七段译码显示驱动电路,可以将频率计数的结果译成能在数码管上显示的 相对应的阿拉伯数字,便于读取测量的结果。 为了实现系统功能,测频控制信号发生器 testctl、计数器 cnt10、锁存器 reg32b 存 在一个工作时序的问题,设
29、计时需要综合考虑。 8位数字频率计的顶层框图(endfreq.bdf),设计实现包括信号源模块 (f1mhz、cnt)、频率计模块(freq)和显示模块(display)三大模块。下面分别 介绍三个模块的结构和实现方法。 3.2 信号源模块信号源模块 信号源是为了产生 1mhz 的门控信号和待测的定频信号,而对输入系统时钟 clk(50mhz)进行分频的模块,设计源代码 pin1mhz.vhd 对输入系统时钟 clk(50mhz)进行分频产生 1mhz 信号。 pin1mhz 的封装图如 3.2 所示,图中 clkin 为接入的 100mhz 信号,图中 clkout 为接到 cnt 的 cl
30、k 的 1mhz 的信号。 clkin clkout pin1mhz_1 inst 图3.2 pin1mhz封装图 pin1mhz 的工作时序仿真图如图 3.3 所示。 图 3.3 信号源模块仿真图 9 从 pin1mhz 的工作时序仿真图可以看出:由系统时钟提供的 100mhz 的输入信 号,经过信号源模块,通过 100 分频产生 1mhz 的时钟信号,达到了设计所需的预期 效果。 3.3 分频器分频器 此程序要求将1mhz的输入频率分别进行21分频(产生500khz的输出频freq500k)、 23分频(产生125 khz的输出频率freq125k)、25 分频(产生31250hz的输出频
31、freq31250)、 27分频(产生7812hz的输出频率freq7812)、29分频(产生1953hz的输出频率freq1953)、 211分频(产生488hz的输出频率freq488)、213分频(产生1hz的输出频率freq1)。 cnt的封装图如图3.4,图中clk为pin1mhz输入的1mhz信号,freq1为输出给控 制信号发生器的1hz信号,7812hz的输出频率freq7812被作为显示模块的时钟输入, freq 488、freq1953、freq31250、freq125k、freq500k作为待测信号。 clkfreq1 freq488 freq1953 freq7812
32、 freq31250 freq125k freq500k cnt inst 图3.4cnt封装图 cnt 的工作时序仿真图如图 3.5 所示。 图 3.5 cnt 的时序仿真图 当 1mhz 频率波形输入后,分别产生了设计所需要的 500khz 的输出频 freq500k,125 khz 的输出频率 freq125k,31250hz 的输出频 freq31250,7812hz 的输 10 出频率 freq7812,1953hz 的输出频率 freq1953,488hz 的输出频率 freq488,1hz 的 输出频率 freq1。 3.4 测频控制信号产生器测频控制信号产生器 控制模块的作用是
33、产生测频所需要的各种控制信号。控制信号的标准输入时钟为 1hz,每两个时钟周期进行一次频率测量。该模块产生的 3 个控制信号,分别为 tsten,load,clr_cnt.clr_cnt 信号用于在每次测量开始时,对计数器进行复位, 以清除上次测量的结果,该复位信号高电平有效,持续半个时钟周期的时间。tsten 为计数允许信号,在 tsten 信号的上升沿时刻计数模块开始对输入信号的频率进行测 量,测量时间恰为一个时钟周期(正好为单位时间 1s),在此时间里被测信号的脉冲数 进行计数,即为信号的频率。然后将值锁存,并送到数码管显示出来。设置锁存器的 好处是使显示的数据稳定,不会由于周期性的清零
34、信号而不断闪烁。在每一次测量开 始时,都必须重新对计数器清 07。 测频控制产生器如图 3.6,图中 clk 接 cnt 的 freq1 的 1hz 的信号,tsten 为 计数允许信号,接计数器 cnt10 的 ena,clr_cnt 信号用于在每次测量开始时,对 计数器进行复位,接计数器 cnt10 的 clr,load 接锁存器的 load。 clktsten clr_cnt load testctl inst 图 3.6 testctl 的封装图 测频控制信号发生器 testctl 的工作时序图,控制模块的几个控制信号的时序关 系图如图 3.7 所示。 图3.7 testctl的时序仿
35、真图 从图中可看出,计数使能信号 tsten 在 1s 的高电平后,利用其反相值的上跳沿 产生一个锁存信号 load,随后产生清 0 信号上跳沿 clr_cnt。为了产生这个时序图 11 需首先建立一个由 d 触发器构成的二分频器,在每次时钟 clk 上升沿到来时令其翻转。 其中,控制信号时钟 clk 的频率取 1hz,而信号 tsten 的脉宽恰好为 1s,可以用作闸 门信号。此时,根据测频的时序要求,可得出信号 load 和 clr_cnt 的逻辑描述。 由图可知,在计数完成后,计数使能信号 teten 在 1s 的高电平后,利用其反相值的 上跳沿产生一个锁存信号 load,0.5s 后,
36、clr_cnt 产生一个请零信号上跳沿。 3.5 锁存器锁存器 锁存器模块也是必不可少的,测量模块测量完成后,在load信号的上升沿时刻将测 量值锁存到寄存器中,然后输出到显示模块。锁存器是起数据保持的作用,它将会把 数据保存到下次触发或复位。主要是主从触发器组成的。用于存储数据来进行交换, 使数据稳定下来保持一段时间不变化,直到新的数据将其替换。 锁存器reg32b的封装如图3.8,图中load接控制测频产生器testctl的load, 而din31.0接计数器cnt10的cq3.0,dout31.0接显示器display的in端。 load din31.0 dout31.0 reg32b
37、inst 图3.8 reg32b的封装图 32 位锁存器 reg32b 的工作时序图如图 3.9。 图 3.9 reg32b 的时序仿真图 本程序是用来实现锁存器模块的功能,但它的程序相当简单,在锁存信号 load 的 上升沿到来时,锁存器将测量值锁存到寄存器,然后输出到显示模块。但从仿真图 3.9 中可以明显的看出,锁存输出并不是立即进行的,而是经历了一个短暂的延时,这是 由于硬件引起的。 3.6 十进制十进制计数器计数器 计数器模块是由 8 个带有异步清零端,进位信号输出的模为 10 的计数模块级连而 成。通过(freq.vhd)进行元件例化实现。此十进制计数器的特殊之处是,有一时钟使能
38、12 输入端 ena,用于锁定计数器。当高电平计数允许,低电平时计数禁止。计数器模块 用于对输入信号的脉冲进行计数,该模块必须有计数允许、异步清零等端口,以便于 控制模块对其进行控制。 cnt10 的封装如图 3.10,其中 clr 为复位接 testctl 的 clr_cnt 端,ena 接 testctl 的 tsten 端,cq3.0接锁存器的 dout31.0端。 clk clr ena cq3.0 carry_out cnt10 inst 图 3.10 cnt10 的封装图 有时钟使能的十进制计数器cnt10的工作时序仿真如图3.11。 图 3.11 cnt10 的时序仿真图 此程序
39、模块实现的功能是带使能端的 10 进制计数。程序要求只有当使能端信号为 高电平时计数器才能正常工作,每个时钟的上升沿到来时计数器加 1,因为这里要实现 的是 10 进制计数,所以当计数到 10 时计数器清零,同时产生进位信号,这里的进位 信号仅为一个脉冲信号,一旦计数从 10 变为 1,脉冲信号立即变为低电平。同时该计 数器也应带有清零信号,一旦清零信号为高电平,计数器立即清零。 3.7显示模块显示模块 3.7.1 显示模块设计显示模块设计 led有段码和位码之分,所谓段码就是让led显示出八位数据,一般情况下要通 过一个译码电路,将输入的4位2进制数转换为与led显示对应的8位段码。位码也就
40、是 led的显示使能端,对于共阴级的led而言,低电平使能,在本设计中设计了一个3位 的循环计数器,将计数结果输入到译码器,译码结果输出即可依次使能每个led。例 如:要让8个led同时工作显示数据,就是要不停的循环扫描每一个led,并在使能每 一个led的同时,输入所需显示的数据对应的8位段码。虽然8个led是依次显示,但 是受视觉分辨率的影响,看到的现象是8个led同时工作。display 模块的顶层图如下 13 所示。cnt计数产生扫描信号(位码),led模块用于查表产生led段码输出。 图3.12位display的封装图。图中in0in7接锁存器的dout31.0端。 in73.0 i
41、n63.0 in53.0 in43.0 in33.0 in23.0 in13.0 in03.0 clk lout76.0 sel2.0 display inst 图3.12 display的封装图 display 工作时序图如下图 3.13。 图 3.13 disply 工作时序图 用 8 个 led 将待测频率显示出来,将通过十进制计数器的时钟信号 clk,输出为时 钟信号计数译码后的显示驱动端,在八段 led 译码为对应的八段二进制编码,并由数 码显示器显示出来。图 3.13 中为相应二进制编码与相对应的屏显数字。 14 3.7.2 显示电路显示电路 图 3.14 display 硬件结构
42、图 此部分如图 3.14,图中主要由 07 循环累加器、3-8 译码器、bcd-7 段显示译码器、 8 选 1 多路数据开关和 8 个 led 显示器组成的扫描数码显示器。 3.7.3 译码器译码器 74138 译码器作为数据分配器的功能表如表 1 所示。 表 1 74ls138 编码器作为数据分配器的功能表 输入输出 en1 en2b en2a c b ay0 y1 y2 y3 y4 y5 y6 y7 0 0 x x x x 1 1 1 1 1 1 1 1 1 0 d 0 0 0 d 1 1 1 1 1 1 1 1 0 d 0 0 1 1 d 1 1 1 1 1 1 1 0 d 0 1 0
43、1 1 d 1 1 1 1 1 1 0 d 0 1 1 1 1 1 d 1 1 1 1 1 0 d 1 0 0 1 1 1 1 d 1 1 1 1 0 d 1 0 1 1 1 1 1 1 d 1 1 1 0 d 1 1 0 1 1 1 1 1 1 d 1 1 0 d 1 1 1 1 1 1 1 1 1 1 d 74ls138 的 3 个译码输入 c、b、a 用做数据分配器的地址输入,8 个输出 y0y7 15 用做 8 路数据输出,3 个输入控制端中的 en2a用做数据输入端,en2b接地,en1 用做 使能端6。当 en1=1,允许数据分配,若需要将输入数据转送至输出端 y2,地址输入 应为
44、 cba=010,由功能表可得: (3-1) 21222 () aba ygggcbag 而其余输出端均为高电平。因此,当地址 cba=010 时,只有输出端 y2 得到与输入相 同的数据波形。 本章小结本章小结 本章介绍了频率计的各个软件组成模块,通过运用 quartus 集成开发环境对 各功能模块进行编辑、综合、波形仿真,对各功能模块的的仿真图,及其仿真功能做 了基本讲解,对本设计的实现起到了主要作用。 结结 论论 本设计对等精度频率计进行了系统的设计。首先介绍了频率测量的一般方法,着 重介绍等精度测频原理并进行了误差分析,利用等精度测量原理,通过 fpga 运用 vhdl 编程,利用 f
45、pga(现场可编程门阵列)芯片设计了一个 8 位数字式等精度频率 计,该频率计的测量范围为 0-100mhz,利用 quartus 集成开发环境进行编辑、综 合、波形仿真,并下载到 cpld 器件中,经实际电路测试,仿真和实验结果表明,该 频率计有较高的实用性和可靠性,达到预期的结果。和传统的频率计相比,利用 fpga 设计的频率计简化了电路板设计,提高了系统设计的实用性和可靠性,实现数 字系统的软件化,这也是数字逻辑设计的趋势。 本次毕业设计中,我除了对相关的专业知识以及相关的实验操作进行了回顾,还 有许多其他的收获,比如在绘制论文中所需要的相关的电路图的过程中,我还学会使 用word绘图,
46、这次毕业设计不但让我对本专业的相关基础知识进行了很好的复习,还 对原由书本上的知识进行了拓展和延伸,毕业设计不但锻炼了我的动手能力,也锻炼 了我处理问题的能力,并且学会了许多新的知识。 16 致致 谢谢 通过两个多月的努力,参阅了大量的文献、专著、和资料,才使我有了较为清晰 的思路来完成本课题的设计。设计也引用了其中的部分内容,在此,对这些文献、专 著和资料的作者和编著们表示感谢。 在这里同时也要感谢指导老师徐进老师,由于对以前所学知识的遗忘,我在最初 的一个星期里总是不知道该怎么入手,正是有了徐进老师的指点我的毕业设计才得以 顺利进行。 在论文的撰写和设计模块的仿真过程中,我也得到了很多同学
47、和朋友的帮助与支 持,在这里一并表示感谢。同时,也向我的家人致以真心的谢意!他们在我的大学阶段 中给予我的一切是无法用言语来表达的。 最后,衷心感谢各位评阅老师!感谢您们在百忙之中参与我的论文评阅工作。谢谢! 17 参考文献参考文献 1 王紫婷,吴蓉,张彩珍,吴晓春.eda 技术与应用.兰州:兰州大学出版社,2003 年 4 月 2 谭会生,张昌凡.eda 技术及应用.西安:西安电子科技大学出版社,2004 年 4 月 3 林敏,方颖立.vhdl 数字系统设计与高层次综合.北京:电子工业出版社,2002 年 1 月 4 李国洪,沈明山.可编程器件 eda 技术与实践.北京:机械工业出版社,20
48、04 年 7 月 5 王锁萍.电子设计自动化教程.成都:电子科技大学出版社,2000 年 2 月 6 周国富.现场可编程门阵列及应用.电子技术应用,1995 年 6 月 18 附录一附录一 频率计顶层文件频率计顶层文件 clkfreq1 freq488 freq1953 freq7812 freq31250 freq125k freq500k cnt inst clk clr ena cq3.0 carry_out cnt10 inst1 clk clr ena cq3.0 carry_out cnt10 inst2 clk clr ena cq3.0 carry_out cnt10 inst
49、3 clk clr ena cq3.0 carry_out cnt10 inst4 clk clr ena cq3.0 carry_out cnt10 inst5 clk clr ena cq3.0 carry_out cnt10 inst6 clk clr ena cq3.0 carry_out cnt10 inst7 clk clr ena cq3.0 carry_out cnt10 inst8 in73.0 in63.0 in53.0 in43.0 in33.0 in23.0 in13.0 in03.0 clk lout76.0 sel2.0 display inst9 clkin cl
50、kout pin1mhz_1 inst10 load din31.0 dout31.0 reg32b inst11 clktsten clr_cnt load testctl inst12 vcc clk input lout76.0 output sel2.0 output sd3.0 sd7.4 sd11.8 sd19.16 sd23.20 sd27.24 sd31.28sd15.12 sd31.0 dout31.0 19 附录二附录二 信号源模块源程序信号源模块源程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logi
51、c_unsigned.all; entity pin1mhz_1 is port (clkin : in std_logic; clkout : out std_logic); end pin1mhz_1; architecture a of pin1mhz_1 is begin process(clkin) variable cnttemp : integer range 0 to 99; begin if clkin=1 and clkinevent then if cnttemp=99 then cnttemp:=0; else if cnttemp50 then clkout=1; e
52、lse clkout=0; end if; cnttemp:=cnttemp+1; end if; end if; end process; end a; 20 附录三附录三 分频器源程序分频器源程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt is port(clk : in std_logic; -1mhz 输入 freq1 : out std_logic; -1hz 输出 freq488 : out std_logic; -488hz 输出 freq1953
53、: out std_logic; -1953hz 输出 freq7812 : out std_logic; -7812hz 输出 freq31250: out std_logic; -31250hz 输出 freq125k : out std_logic; -125khz 输出 freq500k : out std_logic ); -500khz 输出 end cnt; architecture behv of cnt is signal temp: std_logic_vector(19 downto 0); begin process(clk) begin if clkevent and
54、 clk =1 then if temp=11110100001000111111 then temp=00000000000000000000; else temp=temp+1; end if; end if; end process; freq1=temp(19); freq488=temp(10); freq1953=temp(8); freq7812=temp(6); freq31250=temp(4); freq125k=temp(2); freq500k=temp(0); end behv; 21 附录四附录四 测频控制信号发生器源程序测频控制信号发生器源程序 library i
55、eee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity testctl is port ( clk: in std_logic; -1 hz 测频控制时钟 tsten: out std_logic; -计数器时钟使能 clr_cnt: out std_logic; -计数器清零 load: out std_logic); -输出锁存信号 end testctl; architecture art of testctl is signal div2clk :std_logic; signal clr :std_logic; signal loadcnt :std_logic; begin process ( clk ) is begin if clkevent and clk= 1 -1 hz 时钟二分频 then div2clk=not div2clk; end if ; end process; process ( clk,div2clk ) begin if clk= 0 and div2clk = 0 t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 九年级数学上册 24 圆教案 (新版)新人教版
- 2024年度甲方乙双方就酒店管理服务合同
- 2024年度电商平台运营与广告投放协议
- 2024世界图书出版西安限公司招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024“才聚齐鲁成就未来”山东山科控股集团限公司平台公司社会招聘10人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年度新能源电池研发生产担保合同2篇
- 2024年度租赁设备与技术服务合同
- 2024年度设备维修与技术支持合同
- 2024年度大学校园快递收发站点建设合同
- 《网络营销策划》课件
- 第23课《范进中举》课件(25张PPT) 年部编版语文九年级上册
- 中国古典园林平面图汇总
- 新概念英语第一册课文及翻译
- 新版现代西班牙语第二册课后答案
- 生产调度竞聘报告第一版课件
- 颅脑CT检查技术课件
- 测量系统分析 -课件
- 《狼》选择题解析(内容理解)-
- 学会倾听 主题班会课件(共23张ppt)
- 新生儿脓疱疮全面资料课件
- 道地药材来源及鉴别课件
评论
0/150
提交评论