当前位置:文档之家› 基于VHDL语言数字频率计的设计

基于VHDL语言数字频率计的设计

基于VHDL语言数字频率计的设计
基于VHDL语言数字频率计的设计

关于数字频率计设计

[摘要]本报告介绍了一种以大规模可编程逻辑芯片为设计载体,由顶到底分层设计,多功能数字频率计的设计方法。该频率计采用VHDL语言程序与原理图相结合的方法,极大地减少了硬件资源占用。该数字频率计测量范围为0到9999HZ,基准频率为1HZ,结果用4只7段数码管显示十进制结果。中间用到了设置控制电路、计数电路、锁存电路和译码电路等模块。仿真结果表明,该数字频率计性能优异,设计语言灵活,硬件更简单,速度更快。

[关键词]数字频率计;控制电路;计数电路;锁存电路

With regard to the design of digital frequency meter

[Abstract] The present report describes a large-scale programmable logic chip design carrier, in the end by a top-tiered design, multi-function digital frequency meter design methods. The frequency counter using VHDL language programs, and the method of combining schematic, greatly reducing the hardware footprint. The digital frequency meter measurement range from 0 to 9999HZ, the base frequency of 1HZ, the results with the four 7-segment LED display decimal results. Intermediate used for setting up control circuit, counting circuit, latch circuit and decoding circuit modules. The simulation results show that the digital frequency meter high-performance, design language flexibility, hardware simpler and faster.

[Key words]digital frequency meter; control circuit; counting circuit; Latch Circuit

目录

摘要 ................................................................................................................... I Abstract ............................................................................................................ II 第1章引言 (3)

第2章VHDL的简述 (4)

2.1 VHDL的发展 (4)

2.2 VHDL的特点 (4)

2.3 VHDL语言结构 (4)

2.3.1 实体(ENTITY) (5)

2.3.2结构体(ARCHITECTURE) (6)

2.4 VHDL软件设计简介 (6)

第3章频率计方案的设计 (8)

3.1 方案一 (8)

3.2 方案二 (11)

3.3 方案比较 (12)

3.4 方案改造 (12)

第4章利用VHDL语言设计频率计 (13)

4.1 系统功能的分析与电路设置 (13)

4.2 测频原理 (13)

4.3 测频模块工作描述及VHDL程序 (13)

4.3.1 计数模块(CNT10) (13)

4.3.2 锁存模块(REG16B) (14)

4.3.3 控制模块(TESTCTL) (15)

4.3.4 译码模块(DISPLAR) (15)

4.3.5 测频主系统实现(FREQ) (16)

4.3.6 原理图的制作 (18)

第5章数字频率计仿真及分析 (19)

5.1 MAX+PLUS II的特点 (19)

5.2 MAX+PLUS II的编译、仿真简介 (19)

5.3 多功能数字频率计编译及仿真 (20)

5.3.1 编译结果的记载 (20)

5.3.2 仿真结果的记载 (22)

5.4 引脚锁定 (23)

5.5 程序的下载和测试 (24)

第6章实验过程中遇到的问题及分析 (25)

结论 (25)

致谢 (26)

参考文献 (27)

附录 (28)

附录一方案一总程序 (28)

附录二原理图 (34)

附录三实验结果记录 (35)

第1章引言

随着计算机技术和半导体技术的发展,传统的硬件电路电路设计方法已大大落后于当今技术的发展,一种崭新的、采用硬件描述语言的硬件电路设计方法已经兴起,这是电子设计自动化(EDA)领域的一次重大变革。目前,广泛使用的硬件描述语言有VHDL(Very Speed Integrated Circuit Hardware Description Language)和Verilog HDL;它们先后被批准为国际标准语言。据统计,目前在美国硅谷约有90%以上的ASIC和FPGA采用硬件描述语言进行设计,VHDL的应用已成为当今以及未来EDA解决方案的核心,而且是复杂数字系统设计的核心。

多功能数字频率计是一种用十进制数字显示被测信号频率、周期、占空比的数字测量仪器,是在数字电路中的一个典型应用;实际的硬件设计的多功能数字频率计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差,随着复杂可编程逻辑器件(CPLD)的广泛应用,以EDA工具作为开发手段,运用VHDL语言,将使整大大简化,提高整体个系统的性能和可靠性;它是计算机、通信设备、音频视频等科研生产领域不可缺少的测量仪器。采用VHDL编程设计实习的多功能数字频率计,具有体积小,可靠性高,功耗低的特点;整个系统非常精简,且具有灵活的现场可更改性。

本实验报告注重书本知识与实验的结合,在报告中有介绍到VHDL语言以及MAXPLUSMAX+PLUSII的特点,软件应用的介绍,具体的实验步骤等等。对数字频率计的设计过程做了详细的说明。

在本实验报告的编写过程中,我力求解决实验中遇到的各个问题,在第六章有详细的说明。

现代电子设计技术是发展的,相应的设计方法以及设计软件也会随之不断改进,其中一定有许多问题值得深入探讨。我真诚的欢迎老师以及其他读者对报告中的有关问题给予批评指正。

第2章 VHDL的简述

2.1 VHDL的发展

VHDL诞生于1982年。在1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言,自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA 公司相继推出了自己的VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。而Verilog HDL是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具,1985年Moorby推出它的第三个商用仿真器Verilog XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司公开发表了Verilog HDL,并成立LV1组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995. VHDL的英文全名是VHSIC(Very High Speed Interated Circuit)Hardare Description Language,支持各种模式的设计方法:自顶向下与自底向上或混合方法,在面对当今许多电子产品生命周期的缩短,需要多次重新设计以其融入最新技术、改变工艺等方面,VHDL具有良好的适应性。用VHDL设计的最大优点是设计者可以专心致力于其功能的实现,而不需要对不影响功能的与工艺有关的因素花费过多的时间和精力。

2.2 VHDL的特点

VHDL语言主要用于描述数字系统的结构、行为功能和接口,与其他硬件描述语言相比,VHDL语言有如下优越之处:

1)VHDL语言支持自上而下(Top Down)和基于库(Library Base)的设计方法,还支持同步电路、异步电路,FPGA以及其他随机电路的设计;

2)VHDL语言具有多层次描述系统硬件功能的能力可以从系统的数字模型直到门级电路,其高层次的行为描述可以与低层次的RTL描述和结构描述混合使用,还可以自定义数据,给编程人员带来较大的自由和方便;

3)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必关心最终设计实现的目标器件是什么;

4)VHDL具有电路仿真与验证功能,可以保证设计的正确性,用户甚至不必编写如何测试向量便可以进行源代码级的调试,而且设计者可以非常方便地比较各种方案之间的可行性及其优劣,不需要任何实际的电路实验;

5)VHDL语言可以与工艺无关编程;

6)VHDL语言标准、规范,易于共享和复用。

2.3VHDL语言结构

图 2.1vhdl 程序结构框图

图2.1中是VHDL 的全部结构,但实际上并不需要全部结构,就像在许多设计项目中,大部分工程师只用到VHDL 其中的30%的语法;通常图2.2结构才是基本和必须的。

USE 定义区 ENTITY 定义区 ARCHITETURE 定义区

图2.2VHDL 程序基本结构

2.3.1实体(ENTITY )

实体作为一个设计实体的组成部分,其功能是对这个设计实体与外部电路进行接口描述,它是设计实体的表层设计单元;实体说明部分规定了设计单元的输入输出接口信号或引脚,它是设计实体对外一个通信界面,就一个设计实体而言,外界所看到得仅仅是他的界面上的各种接口。它可以拥有一个或多个结构体,用于描述此设计实体的逻辑结构和逻辑功能对于外界来看,这一部分是不可见的。不同逻辑功能的实体可以拥有相同的实体描述,这是因为实体类似于原理图中的一

https://www.doczj.com/doc/1c10364235.html,E 定义区

2.PACKAGGE 定义区

3.ENTITY 定义区

4.ARCHITECTURE 定

义区 Component 定义区

信号定义

Data Flow 描述

Behavior Process 描

Structure 描述

5.CONFIGURATION 定

义区

定义使用哪些

描述电路内部的功能,说明电路执行什么动作或

决定哪一

architectur e 能被使

定义电路实体的外观:I/O 接口的规

定义元件库

个邮件符号,而其的逻辑功能是有设计实体中结构的描述确定的。实体是VHDL的基本设计单元,他可以对一个门电路,一个芯片、一块电路板乃至整个系统进行接口描述,其结构:

ENTITY 实体名 IS

【GENERIC (常数名:数据类型【:设定值】;

{常数名:数据类型【:设定值】});】

【PORT(端口名:端口模式数据类型;

{端口名:端口模式数据类型});】

END ENTITY 实体名;

2.3.2结构体(ARCHITECTURE)

结构体是实体所定义的设计实体中的一个组成部分,结构体描述设计实体的内部结构和实体端口间的逻辑关系。结构体由两部分组成:

1)对数据类型、常数、信号、子程序和元件等元素的说明部分;

2)描述实体逻辑行为的,一各种不同的描述风格表达的功能描述语句,他们包括各种形式的顺序描述语句和并行描述语句。其语句格式如下:

ARCHITECTURE 结构体名;

【说明语句】

BEGIN

【功能描述语句】

END ARCHITECTURE 结构体名;

图2.3的五种结构的基本组成和功能分别是:

1)块语句是由一个系列并行执行语句构成的组成体,它的功能是将结构中的并行语句组成一个或多个模块。

2)进程语句定义顺序语句模块,用以将从外部获得的信号值,或内部的运算数据向其它的信号进行赋值。

3)信号赋值语句将设计实体内的处理结果向定义的信号或界面端口进行赋值。

4)子程序调用语句用意调用过程或者函数,并将此元件的端口与其它的元件、信号或高层次实体的界面端口进行连接。

2.4 VHDL软件设计简介

系统电路的软件设计可采用工具MAX+PLUSⅡ,用该工具软件所支持的语言—硬件描述语言VHDL,以文本的方式进行编程输入。在编程时分别对控制、技术、锁存、译码等电路模块进行VHDL文本描述,使每个电路模块以及器件都以文本的形式出现,然后通过编译、波形分析、仿真,调试来完善每个器件的功能,单个器件制作完成后,然后将它们生成库文件,并产生相应的符号,最后言语将各个已生成库文件的器件的各个端口连接在一起,从而形成了系统主电路的软件结构。在连接器件

时,也可以采用图形输入方式,即在图形输入界面中调出先制作的库文件器件符号,再将每个器件符号的各端口直接连接,从而构成系统主电路。在上述工作的基础上,再进行波形分析、仿真调试便完成整个软件设计。

结构体(ARCHITECTUE)

说明语句

功能描述语句结构

块语句(BLOCK)

进行语句(PROCESS)

信号赋值语句

子程序调用语句

元件例化语句

图2.3结构体构造图

第3章频率计方案的设计

3.1 方案一

根据频率计的测频原理,可以选择合适的时基信号即闸门时间,对输入被测信号脉冲进行计数,实现测频的目的。在这个设计前,我们加入了一项测试周期的功能。在实验过程中,要在频率计提供的基信号和输入信号之间做出选择,充当时基信号即闸门时间。当测频率的时候,要以输入信号作为时钟信号,因为输入信号的频率大于频率计提供的基准频率,在频率计提供的基准信号周期内,计算输入信号的周期数目,再乘以频率计基准频率,就是输入信号的频率值了。此时的时基信号为频率计的基准信号。当测周期的时候,要以频率及提供的基准信号作为时钟信号,因为频率及提供的时基频率大于输入信号的频率,在输入信号周期内,计算频率计提供的基准信号的周期数目,再乘以基准信号频率,就是输入信号的周期值了。此时的时基信号为输入信号。

㈠方案一的设计思路

1.时基的设计

输入信号是随意的,没法预知其频率是多少,如何选取频率计提供的基准信号是关键。测量频率时,在某个挡进行测量的时候,就需要提供该挡的时基。在10KHZ 挡,该挡最大读数为9.99KHZ,同时也说明最小的读数是0.0KHZ,所以提供的时基应该是频率为0.01KHZ的脉冲.同样的方法100KHZ挡提供的时基应该是频率为0.1KHZ的脉冲,1MHZ挡提供的时基应该是频率为1KHZ的脉冲。同样用到3个分频器,但是节约了资源。可以考虑使用状态机来实现这3种时基,因为采用状态机来控制时序很清楚,不容易出错。状态机用1KHZ(周期为1ms)的脉冲信号触发,因为所要生产的时基中,频率最大的就是1KHZ的脉冲,要产生高电频为10ms和1ms 的脉冲信号,可以采用100个状态的状态机,从状态1,状态2……到状态100. 2.计数器的设计

各个档之间的转换应遵循设计要求,要根据在时基有效时间内的计数值进行判断。计数器可以直接定义成一个整形信号,这样计数器(即加1)就十分方便,只要使用语句“计数器<=计数器+1;”就可以。但这个计数值要作为显示输出,就要将这个计数器用个位、十位,百位分开表示,而且要遵循“加一逢十”的规则。这样可以直接通过七段译码器进行显示。

3.模块的划分

计数器在各个挡是被反复应用的,如果在各个挡分别设计计数器,就造成资源的浪费,而且在测量周期和频率时,计数器的时钟信号和输入信号要进行调换,但是计数功能是一样的,所以将计数器设计成单独的模块。7段译码器在各位,十位,百位中也都被利用了,因此也将其设计成单独的模块,重复引用就不需要在3个显示的时候重复书写译码电路了。

㈡方案一各模块的实现

1.计数器的设计和实现

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY frequency IS

PORT(treset:IN STD_LOGIC; --异步复位端口tclk:IN STD_LOGIC; --时钟输入tsig:IN STD_LOGIC; --信号输入tkeep1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --计数值个位tkeep2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --计数值十位tkeep3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --计数值百位END ENTITY frequency;

ARCHITECTURE one OF frequency IS

SIGNAL tcou1:STD_LOGIC_VECTOR(3 DOWNTO 0); --内部计数值个位SIGNAL tcou2:STD_LOGIC_VECTOR(3 DOWNTO 0); --内部计数值十位SIGNAL tcou3:STD_LOGIC_VECTOR(3 DOWNTO 0); --内部计数值百位BEGIN

ctrcou:PROCESS(treset,tclk) --控制计数功能的进程BEGIN

IF treset='1'THEN

tcou1<="0000";tcou2<="0000";tcou3<="0000";

ELSE

IF tclk'EVENT and tclk='1'THEN

IF tsig='1'THEN

--时基信号高电平为判断条件有效的时候遇到时钟上升沿触发IF tcou3="1010"THEN

tcou3<="1010"; --如果百位为10,百位不变

ELSE

IF tcou1="1001"AND tcou2="1001"AND tcou3="1001"THEN

--如果计数值为999

tcou1<="0000";tcou2<="0000";tcou3<="1010";

--则计数值百位变成10,十位、个位变成0 ELSIF tcou1="1001"AND tcou2="1001"THEN

--如果百位小于9,十位为9且个位为9的时候

tcou1<="0000";tcou2<="0000";tcou3<=tcou3+1;

百位数值加1,十位、个位清零

ELSIF tcou1="1001"THEN

--如果百位和十位都小于9且个位为9的时候tcou1<="0000";tcou2<=tcou2+1;

--个位清零,十为数值加1

ELSE tcou1<=tcou1+1; --其他情况就是个位数值加1

END IF;

END IF;

ELSE

tcou1<="0000";tcou2<="0000";tcou3<="0000";

END IF;

END IF;

END IF;

END PROCESS ctrcou;

oputctr:PROCESS(treset,tsig) --控制数值输出的进程

BEGIN

IF treset='1'THEN

tkeep1<="0000";tkeep2<="0000";tkeep3<="0000";

ELSE

IF tsig'EVENT AND tsig='0' THEN --时钟下降沿触发输出各位数值tkeep1<=tcou1;

tkeep2<=tcou2;

tkeep3<=tcou3;

END IF;

END IF;

END PROCESS oputctr;

END one;

2.7段译码器的设计

七段译码器将4位BCD码以七段译码器的形式输出。可以使用一个7位向量来分别表示7段译码器中的7段。程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY display IS

PORT(data_in:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

--输入为4位二进制数,范围从0到9 data_out:OUT STD_LOGIC_VECTOR(0 DOWNTO 6)); --7段译码输出END ENTITY display ;

ARCHITECTURE one OF display IS

SIGNAL indata:STD_LOGIC_VECTOR(3 DOWNTO 0); --内部数值信号BEGIN

PROCESS(data_in) --输出入信号作为进程的敏感触发进程BEGIN

indata<=data_in; -将输入信号赋值给内部数值信号CASE indata IS

WHEN"0000"=>data_out<="1111110"; --0到7段译码(以下类推) WHEN"0001"=>data_out<="0110000";

WHEN"0010"=>data_out<="1101101";

WHEN"0011"=>data_out<="1111001";

WHEN"0100"=>data_out<="0110011";

WHEN "0101"=>data_out<="1011011";

WHEN "0110"=>data_out<="1011111";

WHEN "0111"=>data_out<="1110000";

WHEN "1000"=>data_out<="1111111";

WHEN "1001"=>data_out<="1111011";

WHEN OTHERS=>data_out<="0110001"; --其他时候输出出错表示

END CASE;

END PROCESS;

END one;

错误!未找到引用源。数字频率计的综合设计

要设计的数字频率计需要3个输入端口,一个脉冲输入端口clk(频率为20MHZ);一个异步复位端口reset,用于使系统回到初始状态;还有一个就是测试信号的输入端口testsignal,用于输入待测的信号。

该频率计需要7个输出端口,要有一个表示是显示频率还是周期的输出端口unit;还有3个显示频率值的7端译码输出端口display1,display2和diaplay3,以及3个小数点输出端口dot向量。

程序如附录错误!未找到引用源。

3.2 方案二

本方案是由8位十进制数字频率计的电路逻辑图,它由一个测频控制信号发生器

TESTCTL,8个有时钟使能的十进制计数器CNT10,一个32位锁存器REG32B组成。以下分别叙述频率计各逻辑模块的功能与设计方法。

1.测频信号发生器设计

频率测量的基本原理使计算每秒钟内待测信号的脉冲个数,这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计每一计数器CNT10的ENA使能端进行同步测控。当TETEN高电频时允许计数;低电频时,停止计数,并保持其所计的数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒钟的计数值锁存进32位锁存器REG32B中,并由外部的七段译码器译出并稳定显示。锁存信号之后,必须有一个清零信号CLR_CNT对计数器进行清零,为下1秒钟的技术操作作准备。

2.寄存器REG32B的设计

设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。若已有32位BCD码存在于此模块的输入端口,在信号LOAD的上升沿后即被锁存到寄存器REG32B的输出端输出,然后由实验板上的7段译码器译成能在数码管上显示的相对的数值。

3.十进制计时器CNT10的设计

设计一个有一时钟使能输入端ENA,用于锁定计数值。当高电平时计数允许,低电平时计数禁止。

3.3 方案比较

方案一可同时实现测频率和测周期两个功能,且可实现小数点随量程变化自动移位的功能,测试的最大频率能达到1MHZ。同时采用了记忆显示方法,及测量过程中不显示数据,待测量过程结束以后,显示测频结果,并将此结果保持到下次测量结束。虽然实现的功能较多,但是程序繁杂,且管脚众多,实验室无法达到此程序所需的硬件要求。而方案二仅仅只能测量频率,测量范围为99999999HZ,其程序分块明了,调用简单。与方案一比较方案二更为合理。

3.4 方案改造

方案二虽然程序分块明了,调用简单。但是范围达到99999999HZ,实验室器材无法达到所要管脚的要求,故改为4为计数器来计数,范围达到9999HZ。此时32位锁存器REG32B应该为16位锁存器REG16B。

第4章 利用VHDL 语言设计频率计

4.1 系统功能的分析与电路设置

由于多功能数字频率计是一个需对数字信号进行测量和显示的系统,因此需要设置控制电路、计数电路、锁存电路和译码电路等。测控电路是对计数电路进行工作和时序控制。锁存电路的主要功能是对计数输出的数据进行锁定保存,即使在前级计数电路的计数器清零以后,锁存器是对单个十进制计数器进行保存,因此锁存器的个数由前一级计数电路的十进制计数器的个数决定。译码显示电路由译码器和显示器构成。译码器的功能是,将锁存器保存并输出的四位二进制代码表示的十进制数进行译码转换,将其转换能直接驱动数码管显示与其对应的十进制数字字符的输出信号。显示器由数码管电路构成。由于被测信号可能具有多个位数的频率,因此需要多个数码管对其进行显示(本实验需要4个)。

4.2 测频原理

图4.1测试原理框图

如图4.1预测门信号是一个脉冲,cnt1、cnt2是十进制计数器。

4.3 测频模块工作描述及VHDL 程序

各个模块的描述在方案二里已经介绍,这里只介绍各个模块的VHDL 程序。 4.3.1计数模块(CNT10) Library IEEE;

Use IEEE.STD_LOGIC_1164.ALL; Entity CNT10 is

Port(CLK:IN STD_LOGIC; --计数时钟信号

D

Q

CNT1 CLKEN

CLK OUT CLR

CNT2 CLKEN

CLK OUT CLR

ClR:IN STD_LOGIC; --清零信号

ENA:IN STD_LOGIC; --计数使能信号

CQ:OUT INTEGER RANGE 0 TO 15; --4位计数结果输出

CARRY_OUT:OUT STD_LOGIC); --计数进位

End CNT10;

ARCHITECTURE ATR OF CNT10 IS

SIGNAL CQI:INTEGER RANGE 0 TO 15;

BEGIN

PROCESS(CLK,CLR,ENA)

Begin

IF CLR='1'THEN CQI<=0; --计数异步清零

ELSIF CLK'EVENT AND CLK='1' THEN

IF ENA='1'THEN

IF CQI<9 THEN CQI<=CQI+1;

ELSE CQI<=0;END IF; --等于9,则计数器清零END IF;

END IF;

END PROCESS;

PROCESS(CQI)

BEGIN

IF CQI=9 THEN CARRY_OUT<='1'; -进位输出ELSE CARRY_OUT<='0';END IF;

END PROCESS;

CQ<=CQI;

END ATR;

4.3.2 锁存模块(REG16B)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY REG16B IS

PORT(REG16B:IN STD_LOGIC;

DIN:IN STD_LOGIC_VECTOR(15 DOWNTO 0);

DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));

END REG16B;

ARCHITECTURE art OF REG16B IS

BEGIN

PROCESS(REG16B,din)

BEGIN

IF REG16B'EVENT AND REG16B='1'THEN DOUT<=DIN; --锁存输入数据END IF;

END PROCESS;

END ART;

4.3.3 控制模块(TESTCTL)

Library IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY TESTCTL IS

PORT(CLK:IN STD_LOGIC; --1HZ测频控制信号

TSTEN:OUT STD_LOGIC; --计数器时钟使能

CLR:OUT STD_LOGIC; --计数器清零

LOAD:OUT STD_LOGIC); --输出锁存信号

End TESTCTL;

ARCHITECTURE ATR OF TESTCTL IS

SIGNAL TESTCTL:STD_LOGIC;

BEGIN

PROCESS(CLK)

BEGIN

IF CLK'EVENT AND CLK='1' THEN --1HZ时钟2分频

TESTCTL<=NOT TESTCTL;

End IF;

END PROCESS;

PROCESS(CLK,TESTCTL)

BEGIN

IF CLK='0'AND TESTCTL='0'THEN --产生计数器清零信号

CLR<='1';

ELSE CLR<='0'; END IF;

END PROCESS;

LOAD<=NOT TESTCTL; TSTEN<=TESTCTL;

END ATR;

4.3.4 译码模块(DISPLAR)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY DISPLAY IS

PORT(D_IN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

A:OUT STD_LOGIC;

B:OUT STD_LOGIC;

C:OUT STD_LOGIC;

D:OUT STD_LOGIC;

E:OUT STD_LOGIC;

F:OUT STD_LOGIC;

G:OUT STD_LOGIC);

END DISPLAY;

ARCHITECTURE ARCDISPLAY OF DISPLAY IS

BEGIN

PROCESS(D_IN)

TYPE DATA_OUT IS ARRAY(0 TO 6)OF STD_LOGIC;

V ARIABLE OUTP:DATA_OUT;

BEGIN

CASE D_IN IS

WHEN"0000"=>OUTP:="1111110";

WHEN"0001"=>OUTP:="0110000";

WHEN"0010"=>OUTP:="1101101";

WHEN"0011"=>OUTP:="1111001";

WHEN"0100"=>OUTP:="0110011";

WHEN"0101"=>OUTP:="1011011";

WHEN"0110"=>OUTP:="1011111";

WHEN"0111"=>OUTP:="1110000";

WHEN"1000"=>OUTP:="1111111";

WHEN"1001"=>OUTP:="1111011";

WHEN OTHERS=>NULL;

END CASE;

A<=outp(0);

B<=outp(1);

C<=outp(2);

D<=outp(3);

E<=outp(4);

F<=outp(5);

G<=outp(6);

END PROCESS;

END ARCDISPLAY;

4.3.5测频主系统实现(FREQ)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY FREQ IS

PORT (CLK:IN STD_LOGIC;

FSIN:IN STD_LOGIC;

result_out:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));

END FREQ;

ARCHITECTURE atr OF FREQ IS

COMPONENT TESTCTL --待调用的测频控制信号发生器端口定义

PORT(CLK:IN STD_LOGIC;

TSTEN:OUT STD_LOGIC;

CLR:OUT STD_LOGIC;

LOAD: OUT STD_LOGIC);

END COMPONENT;

COMPONENT CNT10 --待调用的有时钟使能的十进制计数端口定义PORT(CLK:IN STD_LOGIC;

CLR:IN STD_LOGIC;

ENA:IN STD_LOGIC;

CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

CARRY_OUT:OUT STD_LOGIC);

END COMPONENT;

COMPONENT REG16B --待调用的16位锁存器端口定义

PORT(REG16B:IN STD_LOGIC;

DIN:IN STD_LOGIC_VECTOR(15 DOWNTO 0);

DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));

END COMPONENT;

SIGNAL FRE_EN1:STD_LOGIC;

SIGNAL CN_CLR1:STD_LOGIC;

SIGNAL LOAD1:STD_LOGIC;

SIGNAL DLATCH1:STD_LOGIC_VECTOR(15 DOWNTO 0);

SIGNAL CNTOUT1:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

U1:TESTCTL PORT MAP(CLK=>CLK,TSTEN=>FRE_EN1,

CLR=>CN_CLR1,LOAD=>LOAD1);

U2:REG16B PORT MAP(REG16B=>LOAD1,DIN=>DLATCH1,DOUT=>RESULT_OUT);

--名字关联

U3:CNT10 PORT MAP(CLK=>FSIN,CLR=>CN_CLR1,ENA=>FRE_EN1,

CQ=>DLATCH1(3 DOWNTO 0),CARRY_OUT=>CNTOUT1(0)); --位置关联

U4:CNT10 PORT MAP(CLK=>CNTOUT1(0),CLR=>CN_CLR1,ENA=>FRE_EN1,

CQ=>DLATCH1(7 DOWNTO 4),CARRY_OUT=>CNTOUT1(1));

U5:CNT10 PORT MAP(CLK=>CNTOUT1(1),CLR=>CN_CLR1,ENA=>FRE_EN1,

CQ=>DLATCH1(11 DOWNTO 8),CARRY_OUT=>CNTOUT1(2));

U6:CNT10 PORT MAP(CLK=>CNTOUT1(2),CLR=>CN_CLR1,ENA=>FRE_EN1,

CQ=>DLATCH1(15 DOWNTO 12),CARRY_OUT=>CNTOUT1(3));

End atr;

4.3.6 原理图的制作

利用EDA工具进行原理图输入设计的优点是,设计者不必具备许多诸如编程技术、硬件语言等新知识就能迅速入门,完成较大规模的电路系统设计。

各个分块模块所能实现的原理图符号如下所示:

(1)计数模块符号(2)锁存模块符号

(3)控制模块符号(4)译码模块符号

(5)输入模块符号(6)输出模块符号

总原理图如附录二所示,具体制作方法在5.2节会介绍到。

基于FPGA的频率计的文献综述

文献综述 一.课题来源及研究的目的和意义 数字频率计已经广泛应用于高科技等产品上面,可以不无夸张的说没有不包含有频率计的电子产品。我国的CD、VCD、DVD和数字音响广播等新技术已开始大量进入市场;而在今天这些行业中都必须用到频率计。到今天频率计已开始并正在向智能、精细方向的发展,因此系统对电路的要求越来越高,传统的集成电路设计技术已经无法满足性能日益提高的系统要求。在信息技术高度发展的今天,电子系统数字化已成为有目共睹的趋势。从传统的应用中小规模芯片构成系统到广泛地应用单片机,直至今天FPGA/CPLD在系统设计中的应用,电子技术已迈入一个全新的阶段。而在电子技术中,频率是最基本的参数之一,而信号的频率往往与测量方案的制定、测量结果都有十分密切的关系,所以测频率方法的研究越来越受到重视。 数字频率计属于时序电路,它主要由具有记忆功能的触发器构成。在计算机及各种数字仪表中,都得到了广泛的应用。在CMOS电路系列产品中,数字频率计是用量最大、品种很多的产品,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。EDA技术是面向解决电子系统最基本最底层硬件实现问题的技术,通过设计输入编辑、仿真、适配、下载实现整个系统硬件软件的设计过程。通过EDA技术设计者不但可以不必了解硬件结构设计, 而且将使系统大大简化, 提高整体的可靠性,再加上其设计的灵活性使得EDA技术得以快速发展和广泛应用。 二、主要研究内容 1、研究内容 数字频率计用于对方波、正弦波、三角波的测量,并将结果用十进制数字显示,本设计的应达到的技术指标有: 1)频率测量范围:10HZ~100MHZ; 2)测量分辨率:1HZ; 3)测量通道灵敏度:50mVpp; 4)通道输入阻抗:不小于100KΩ; 5)测量误差:±1; 2、测量方案 (1)测频原理选择 目前常用测量频率原理有三种:直接测量频率方法、直接与间接测量相结合

基于VHDL设计的频率计

基于VHDL设计的频率计 专业:信息工程学号:姓名: 一、实验任务及要求 1、设计一个可测频率的数字式频率计,测量范围为1Hz~12MHz。该频率计 的逻辑图如图所示。 2、用层次化设计方法设计该电路,编写各个功能模块的程序。 3、仿真各功能模块,通过观察有关波形确认电路设计是否正确。 4、完成电路设计后,用实验系统下载验证设计的正确性。 二、设计说明与提示 由上图可知8位十进制数字频率计,由一个测频控制信号发生器TESTCTL、8个有时钟使能的十进制计数器CNT10、一个32位锁存器REG32B组成。 1、测频控制信号发生器设计要求。频率测量的基本原理是计算每秒种内待测信号的脉冲个数。这就要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同不控制。当TSTEN高电平时允许计数、低电平时停止计数,并保持其所计的数。在停止计数期间,首先需要一个锁存信号Load的上跳沿将计数器在前1秒钟的计

数值锁存进32位锁存器REG32B中,并由外部的7段译码器译出并稳定显示。设置锁存器的好处是为了显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号CLR_CNT对计数器进行清零,为下1秒钟的计数操作做准备。测频控制信号发生器的工作时序如下图。为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时使其值翻转。 其中控制信号时钟CLK的频率1Hz,那么信号TSTEN的脉宽恰好为1秒,可以用作闸门信号。然后根据测频的时序要求,可得出信号Load和CLR_CNT 的逻辑描述。由图可见,在计数完成后,即计数使能信号TSTEN在1秒的高电平后,利用其反相值的上跳沿产生一个锁存信号Load,0.5秒后,CLR_CNT产生一个清零信号上跳沿。 高质量的测频控制信号发生器的设计十分重要,设计中要对其进行仔细的实时仿真(TIMING SIMULATION),防止可能产生的毛剌。 2、寄存器REG32B设计要求。若已有32位BCD码存在于此模块的输入口,在信号Load的上升沿后即被锁存到寄存器REG32B的内部,并由REG32B的输出端输出,经7段译码器译码后,能在数码管上显示输出的相对应的数值。 3、十进制计数器CNT10设计要求。此十进制计数器的特殊之处是,有一时钟使能输入端ENA,当高电平时计数允许,低电平时禁止计数。 三、各个模块设计程序与时序仿真 (1)测频控制信号发生器 程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TESTCTL IS PORT (CLK : IN STD_LOGIC; TSTEN : OUT STD_LOGIC; CLR_CNT : OUT STD_LOGIC; Load : OUT STD_LOGIC); END TESTCTL; ARCHITECTURE behav OF TESTCTL IS SIGNAL Div2CLK : STD_LOGIC; BEGIN

基于vhdl的频率计设计

课程论文(设计)题目基于quartus的频率计的设计院系电子与信息工程学院 专业电子与通信工程 学生姓名 学号 指导教师 二O一四年元月三日

一、频率计的说明 (3) 二、顶层原理图 (4) 三、底层模块设计 (4) 3.1十进制加法计数器CNT10 (4) 3.2十二进制加法计数器CNT12 (5) 3.3控制模块CODE (6) 3.4锁存器LOCK (7) 四、底层模块的仿真 (7) 4.1LOCK模块的仿真结果 (7) 4.2CNT12的仿真结果 (8) 4.3CNT10模块的仿真结果 (8) 4.4CODE模块的仿真结果 (8) 五、频率计顶层原理图的输入 (9) 六、频率计仿真结果 (9) 总结 (10)

一、频率计的说明 频率就是周期性信号在单位时间(1S )内的变化次数。频率计的作用就是测量输入信号的频率,我设计的频率计的原理是若在一定1S 的时间间隔内测得这个周期性信号的重复变化次数为N ,则其频率可表示为:f=N 。如下图1.1所示,通过定义闸门信号为1s 后,通过统计下该时间内有多少次脉冲即可得到相应的频率。 图1.1系统测量频率的原理 系统的框图如下图1.2所示,首先由时基电路产生基准信号,通过控制电路产生出1s 的闸门信号,闸门电路把1s 内截取的检测信号传递给计数器,通过计数器计数就可以得到需要测量的频率。锁存器的作用就是为了保存当前的频率交给显示电路显示。 计数器 锁存器 显示电路 闸门电路 计数脉冲 控制电路 锁存信号 清零信号闸门信号 时基 电路被测信号 图1.2系统原理框图

二、顶层原理图 如下图2.1所示,系统顶层原理图包括CNT12、CODE 、CNT10、LOCK 、CODE 模块。其中CNT10和CNT12分别为10和12进制计数器,CODE 则为控制模块输出清零、锁存、和闸门信号,LOCK 则为锁存模块,负责将采集的频率数值锁存起来方便显示,CODE 模块则是将二进制转换成十进制的模块。 系统中的clk1为为我们为测试时候的输入闸门信号,通过CNT12信号后模拟1s 的闸门的信号,系统输出的端口为4个QQ[3..0],这样方便系统仿真,也可以减少系统的复杂程度。 CNT10CLK CLR CS ]0QQ[3..CO CNT10CLK CLR CS ]0QQ[3..CO CNT10CLK CLR CS ]0QQ[3..CO CNT10CLK CLR CS ] 0QQ[3..CO LOCK ] 0DD[3..] 0QQ[3..LOCK ] 0DD[3..] 0QQ[3..LOCK ] 0DD[3..]0QQ[3..LOCK ] 0DD[3..] 0QQ[3..CODE LOCK CLR CS ]0DD[https://www.doczj.com/doc/1c10364235.html,T12 CLK ] 0QQ[3..CLK CLK CLK CLK (被测信号)) (8Hz CLK1 f CLKIN DECODER ] 0AK[3..g a ~]0LED1[6..]0LED2[6..]0LED3[6..]0LED4[6..DECODER DECODER DECODER ] 0AK[3..] 0AK[3..] 0AK[3..g a ~g a ~g a ~ 三、底层模块设计 3.1十进制加法计数器CNT10 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

基于VHDL频率计的设计

频率计 一、实验目的 1.学习并熟悉使用max+plusⅡ软件。 2.掌握各频率计各逻辑模块的功能与设计方法。 二、实验原理 频率测量基本原理是计算每秒钟内待测信号的脉冲个数。要求TESTCTL的计数使能信号TSTEN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。当TSTEN为高电平时,允许计数;为低电频时停止计数,并保持其所计的脉冲信号。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前一秒的计数值锁存进32位锁存器REG32B中,并由周期性的清零信号并不断闪烁。所存信号之后,必需有一清零信号CLR_CNT 对计数器进行清零,为下一秒的计数做准备。测试控制信号发生器的工作时序如图。为了产生这个时序图,需首先建立一个由D触发器构成的二分频器,在每次时钟CLK上沿到来时其值翻转。 三、实验内容和代码 —————————————cnt10—————————————— LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY CNT10 IS PORT (CLK: IN STD_LOGIC; CLR: IN STD_LOGIC; ENA: IN STD_LOGIC; CQ: OUT INTEGER RANGE 0 TO 15; CARRY_OUT :OUT STD_LOGIC ); END CNT10; ARCHITECTURE behav OF CNT10 IS SIGNAL CQI: INTEGER RANGE 0 TO 15; BEGIN PROCESS(CLK, CLR, ENA) BEGIN IF CLR = '1' THEN CQI <= 0; ELSIF CLK'EVENT AND CLK = '1' THEN IF ENA = '1' THEN IF CQI < 9 THEN CQI <= CQI + 1; ELSE CQI <= 0;END IF; END IF; END IF; END PROCESS; PROCESS(CQI) BEGIN

基于VHDL的一种数字频率计设计

基于VHDL的一种数字频率计设计 摘要 在电子测量技术中,频率是最基本的参数之一,它与许多电参量和非电量的测量都有着十分密切的关系。通过使用等精度测量方法改善了这些问题。对于等精度测量的频率计,测量频率的相对误差与被测信号频率的大小无关,只与闸门时间和标准信号频率有关,即实现等精度测量。利用VHDL语言进行数字频率计的设计能够使设计结构清晰、层次清楚,减少了由电子器件之间引起的相互干扰。本文介绍了基于Altera公司的集成开发环境QuartusII,使用VHDL设计等精度的频率计,采用这样的设计可以简化硬件的开发和制造过程,而且使硬件体积大大减小,并提高了系统的可靠性。 关键词频率;等精度;VHDL;数字频率计

A VHDL-BASED DIGITAL FREQUENCY METER DESIGN ABSTRACT In electronic measurement technology, the frequency is one of most basic parameters.It all has a very close relationship with parameters and non-electric power measurements.Through the use of precision measurement that can improve these issues. For the frequency meter which uses the precision measurement,the relative error of the measurement frequency has nothing to do with the size of the measured signaling frequency, and only related with gate time and standard signaling https://www.doczj.com/doc/1c10364235.html,ly Namely the realization of precision measurement. Designing the digital frequency meter using the VHDL language that can cause the design structure clearly, the level to be clear,and reduce the mutual disturbance which caused by the electronic device between. This article introduces a basic method to design a precision frequency meter with VHDL in QuartusII IDE of Altera https://www.doczj.com/doc/1c10364235.html,ing such design that can simplify the development of the hardware and the manufacture process, moreover can reduce the hardware volume greatly, and improve the reliability of the system. KEY WORDS frequency;precision;VHDL;digital frequency meter

简述基于QuartusⅡ设计的频率计

重庆师范大学 期末考核提交材料 课程名称: EDA原理及应用 院系:物理与电子工程学院 时间: 2012—2013学年度第2学期 专业:电子信息科学与技术(职教师资)年级: 2011级 培养层次:本科 学生姓名: 学号: 成绩:

基于QuartusⅡ设计的频率计 摘要:计数器在数字电路中有着广泛的应用,现提出一种计数器设计穿插在电 子电路设计的教学方法,使学生能够快速地根据现有的数字电路知识转化到EDA 的应用。 关键词频率计;电子设计自动化;Verilog 0 引言:随着EDA技术的发展和应用领域的扩大,EDA技术在电子信息、通信、 自动控制及计算机应用等领域的重要性日益突出。同时,随着技术市场对EDA技术需求的不断提高,产品的市场效率和技术要求也必然会反映到数学和科研领域中来。以最近的十届全国大学生电子设计竞赛为例,涉及EDA技术的赛题从未缺席过。对诸如斯坦福大学、麻省理工学院等美国一些著名院校的电子与计算机实验室建设情况的调研表明,其EDA技术的教学与实践的内容也十分密集;在其本科和研究生教学中有两个明显的特点:其一,各专业中EDA教学实验课程的普及率和渗透率极高;其二,几乎所有实验项目都部分或全部地融入了EDA技术,其中包括数字电路、计算机组成与设计、计算机接口技术、数字通信技术、嵌入式系统、DSP等实验内容,并且更多地注重创新性实验。这显然是科技发展和市场需求双重影响下自然产生的结果。 1.QuartusⅡ简介:QuartusⅡ是Altera提供的FPGA/CPLD开发集成环境, Altera是世界最大的可编程逻辑器件供应商之一。QuartusⅡ在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+plusⅡ的更新换代产品,其界面友好,使用便捷。 2.计数器设计 这里首先设计测频用的、含时钟使能控制的2位十进制计数器。 2.1:设计电路原理图。频率计的核心元件之一是含有时钟使能及进位扩展输出的十进制计数器。为此这里用一个双十进制计数器74390和其他一些辅助元件来完成。首先建立图像编辑环境,再在原理图编辑窗口分别键入74390、AND4、AND2、NOT、INPUT和OUTPUT元件名,调出这些元件,并按照图1链接好电路原理图。图中,74390连成两个独立的十进制计数器,待测频率信号clk通过一个与门进入74390的计数器“1”端的时钟输入端1CLKA。与门的另一端由计数使能信号enb 控制:当enb=1时允许计数;enb=0时禁止计数。计数器1的4 位输出去q[3]、q[2]、q[1]和q[0]并成总线表达方式,即q[ 3..0](注意原理图中的总线表示方法,如Q[3..0],与VHDL不同),由图1左下角的OUTPUT输出端口向外输出计数值。同时由一个4输入与门和两个反相器构成进位信号,进位信号进入第二个计数器的时钟输入端2CLKA。第二个计数器的4位计数输出是q[7]、q[6]、q[5]、q[4],总线输出信号是q[7..4]。这两个计数器的总的进位信号,可由一个6输入与门和两个反相器产生,由cout输出。Clr是计数器的清零信号。

基于Verilog的数字频率计的设计(包含代码及仿真).doc

一、实验名称 数字频率计的设计 二、实验地点 211楼303 三、实验目的和任务 (1)了解数字电路设计的基本特点 (2)了解数字频率计电路的基本原理 (3)基本掌握ISE软件的使用(设计输入、仿真、实现) (4)了解可编程逻辑器件(FPGA )的一般情况 (5)基本掌握HDL的使用 四、实验内容 (1)设计出符合设计要求的解决方案 (2)设计出单元电路 (3)利用EDA 软件对各单元电路及整体电路进行仿真 (4)利用EDA 软件在ELB电子课程设计实验板实现设计 (5)观察实验结果 五、项目需用仪器设备名称以及所需主要元器件 PC机、EDA教学实验系统一台,带有(SPARTAN -3A XC3S200A芯片,LED管 , 七段数码管等)的实验板一块 , 跳线、下载电缆一根,函数发生器。 六、实验任务与要求 频率测量范围为10Hz~10MHz,用6只数码管以kHz为单位显示测量结果;有三个带锁按键开关(任何时候都只会有一个被按下)用来选择1S、0.1S 和0.01S三个闸门时间中的一个;有一个按钮开关用来使频率计复位;有两只LED,一只用来显示闸门的开与闭,另一只当计数器溢出时做溢出指示。数字频率计的相关技术指标如下: 1、位数:测量频率通过LED数码管为六位十进制数显示。 2、测试频率范围为:10HZ-10MHZ。 3、计数器溢出时要有溢出标志over。 4、需要有闸门标志gate。 5、显示工作方式:a、用BCD七段共阳极数码管显示读数,只有在读数不发生跳变时才是正确的结果。b、采用记忆显示方法,即在一次测试结束时,显示测试结果,此显示值一直保留到下次测量显示数到来,才将上次显示更新。用第二次测试结果,更新显示值。 6、要求被测输入信号应是符合数字电路要求的脉冲波。 七、verilog设计环境介绍 Verilog Verilog HDL是目前应用最为广泛的硬件描述语言.Verilog HDL可以用来进行各种层次的逻辑设计,也可以进数字系统的逻辑综合,仿真验证和时序分析等。Verilog HDL适合算法级,寄存器级,逻辑级,开关级、系统级和版图级等各个层次的设计和描述. verilogHDL进行设计最大的优点是其工艺无关性.这使得工程师在效用设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路. verilogHDL是一种硬件描述语言(hardware description language),为了制作数字电路而用来描述ASICS和FPGA的设计之用。 verilogHDL 的设计者想要以 C 编程语言为基础设计一种语言,可以使工程师比较容易学习。 Verilog 是由en:Gateway Design Automation公司于大约1984年开始发展。Gateway Design Automation公司后来被Cadence Design Systems于1990年所购并。现在Cadence 对于Gateway 公司的Verilog 和Verilog-XL 模拟器拥有全部的财产权。 选择VHDL还是verilog HDL?这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。选择何种语言主要还是看周围人群的使用习惯,这样可以方便日后的学习交流。当然,如果您是专用集成电路(ASIC)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。

《基于VHDL数字频率计的设计》开题报告+(1) (2)

商洛学院 本科毕业设计(论文)开题报告 题目基于VHDL数字频率计的设计 学院名称物理与电子信息工程系 专业班级电子信息工程10级2班 学生姓名吕超 学号 10037318 指导教师刘萌 填表时间: 2014 年 3 月 10日

填表说明 1.开题报告作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一。 2.此报告应在指导教师指导下,由学生在毕业设计(论文)工作前期完成,经指导教师签署意见、相关系主任审查后生效。 3.学生应按照学校统一设计的电子文档标准格式,用A4纸打印。 4.参考文献不少于8篇,其中应有适当的外文资料(一般不少于2篇)。 5.开题报告作为毕业设计(论文)资料,与毕业设计(论文)一同存档。

设计(论文) 题目 基于VHDL数字频率计的设计 设计(论文)类型(划“√”)工程设计应用研究开发研究基础研究其它√ 一、本课题的研究目的和意义 数字频率计是电子设计、仪器仪表、资源勘测、计算机、通讯设备、音频视频等应用领域不可缺少的测量仪器, 被广泛应用于航天、电子、测控等领域。在数字电路中,频率计属于时序电路,它主要由具有记忆功能的触发器构成。在计算机及各种数字仪表中,都得到了广泛的应用;在CMOS电路系列产品中,频率计是用量最大、品种最多的产品。许多物理量的测量, 如振动、转速等的测量都涉及到或可以转化为频率的测量,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。 传统的数字频率计一般是由分离元件搭接而成,用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差大、可靠性差。后来随着单片机的大规模的应用, 出现了不少用单片机控制的频率测量系统。相对于以前用分离元件搭接起来的频率测量系统, 单片机控制的频率测量系统在频率测量范围、频率测量精度和频率测量速度上都有了很大的提高。但由于单片机工作频率的限制、单片机内部计数器位数的限制等因素, 由单片机控制的频率测量系统无法在频率测量范围、频率测量精度和频率测量速度上取得重大突破。若再增加别的器件, 以弥补单片机的不足, 不仅会大大增加系统的复杂性, 而且不利于系统的集成化。以E D A 工具作为开发平台,运用V H D L 语言,将使整个系统大大简化,从而提高整体的性能和可靠性。 本课题采用的是等精度数字频率计,在一片FPGA开发板里实现了数字频率计的绝大部分功能, 它的集成度远远超过了以往的数字频率计。又由于数字频率计最初的实现形式是用硬件描述语言写成的程序, 具有通用性和可重用性。所以在外在的条件(如基准频率的提高, 基准频率精度的提高)的允许下,只需对源程序作很小的改动, 就可以使数字频率计的精度提高几个数量级。同时对于频率精度要求不高的场合, 可以修改源程序, 使之可以用较小的器件实现, 从而降低系统的 整体造价。

基于VHDL语言的频率计设计

目录 一、课程设计任务: (2) 二、课程设计原理: (2) 三、课程设计所需仪器: (2) 四、课程设计使用的硬件资源及原理框图: (2) 五、设计过程及操作: (3) 1、FTCTRL测频控制模块: (3) 2、计数器模块: (3) 3、REG32B锁存器模块 (3) 4、DECL7S译码器模块 (4) 5、分频器模块 (4) 6、MUX多路选择器模块。 (4) 7、器件连接: (4) 8、操作过程: (4) 六、设计各个模块代码: (5) 1:FTCTRL模块 (5) 2:CNT_10计数器模块 (5) 3:REG32B锁存器模块 (6) 4:DECL7S译码器模块 (6) 5:any_10 10分频器模块 (7) 6:any_5 5分频器模块 (7) 7:any_16 16分频模块 (8) 8:MUX多路选择器模块 (9) 9:顶层例化代码 (9) 七、总电路: (12) 八、管脚配置: (13) 九、设计结果: (14)

设计8位十进制频率计 二、课程设计原理: 根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。这清0个信号可以由一个测频控制信号发生器TESTCTL 产生,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的EN使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD 的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。 三、课程设计所需仪器: Altrea DE2-115实验箱;quartusII 12.1;modelsim仿真软件。 四、课程设计使用的硬件资源及原理框图: 1、50MHz时钟源两个 2、拨动开关 3、7段数码管/液晶显示屏

基于VHDL的数字频率计设计

常州信息职业技术学院 学生毕业设计(论文)报告 系别:电子与电气工程学院 专业:电子信息工程技术 班号: 学生姓名: 学生学号: 设计(论文)题目:基于VHDL的数字频率计设计指导教师:朱幼娟 设计地点:常州信息职业技术学院 起迄日期:2011.9.1~2011.10.31

毕业设计(论文)任务书 专业电子信息工程技术班级姓名 一、课题名称:基于VHDL的数字频率计设计 二、主要技术指标: 1.频率范围为:1Hz~50MHz。 2.结果用数码管十进制显示。 3.输入信号电压幅度为50mV~5V。 三、工作内容和要求: 1.构建大体的设计方案,并了解其内容。 2.构建出大体的顶层原理设计框图。 3.对底层的每个电路模块的设计,并通过软件MAX+PLUS2完成程序的编写通过。 4.对整个原理框图进行编译并通过。 5.对整个仿真图编译通过。 四、主要参考文献: [1]陈必群.EDA技术与项目训练[M],常州:常州信息职业技术学院,2009年. [2]王凤英.基于FPGA的数字频率计设计与仿真[J].科技资讯,,2008,15(8):1—10 [3]谭会生,张昌凡.EDA技术及应用.西安[M]:电子科技大学出版社,2001年 [4]张凯,林伟.VHDL实例剖析[M].北京:国防工业出版社,2004年 [5]刘玉良,李玲玉,邓勇全.吉林:用EDA方法设计数字系统的灵活性[D],2002年 [6]宋万杰等.CPLD技术及其应用.[M].西安:西安电子科技大学出版社,2000年. 学生(签名)年月日 指导教师(签名)年月日 教研室主任(签名)年月日 系主任(签名)年月日

基于VHDL的数字频率计的设计

湖南科技大学 信息与电气工程学院《VHDL硬件描述语言课程设计报告》 题目:数字频率计 专业:通信工程 班级:一班 姓名: 学号: 指导教师:胡仕刚 2015年 01月 04日

信息与电气工程学院 课程设计任务书 20 —20 学年第学期专业:学号:姓名: 课程设计名称: 设计题目: 完成期限:自年月日至年月日共周 设计依据、要求及主要内容(可另加附页): 指导教师(签字): 批准日期:年月日

目录 摘要 (1) 引言 (2) 第一章概述 (2) 1.1设计概述 (2) 1.2课程设计的总体目标 (2) 1.3设计内容 (2) 1.4设计原理 (2) 1.5设计功能 (3) 第二章数字频率计系统分析 (3) 2.1数字频率计的设计任务及要求 (3) 2.2模块的划分 (3) 2.3设计分析 (4) 第三章各功能模块基于VHDL的设计 (4) 3.1时基产生与测频时序控制电路模块的VHDL源程序 (4) 3.2待测信号脉冲计数电路模块的VHDL源程序 (5) 3.2.1 十进制加法计数器的VHDL源程序 (5) 3.2.2待测信号脉冲计数器的VHDL源程序 (6) 3.3锁存与译码显示控制电路模块的VHDL源程序 (7) 3.3.1 译码显示电路的VHDL源程序 (7) 3.3.2 锁存与译码显示控制模块的VHDL源程序 (7) 3.4顶层电路的VHDL源程序 (8) 第四章数字频率计波形仿真 (9) 4.1时基产生与测频时序控制电路模块的仿真 (9) 4.2待测信号脉冲计数电路模块的仿真 (10) 4.2.1 十进制加法计数器的仿真 (10) 4.2.2待测信号脉冲计数器的仿真 (10) 4.3锁存与译码显示控制电路模块的仿真 (10) 4.3.1 译码显示电路的仿真 (11) 4.3.2 锁存与译码显示控制模块的仿真 (11) 4.4数字频率计系统的仿真 (11) 第五章体会和建议 (12) 参考文献: (13)

等精度频率计设计VHDL程序

FreqtestSimple.vhd Project: 1 ----------------------------------------------------------------------------- 2 -- Filename: 3 -- testbench.vhd 4 -- Description: 5 -- 6 -- test bench module 7 -- Copyright (c) 2005 by JohnYuan 8 -- 9 -- An X.M.U.T. Projects free to use, but see documentation for conditions 10 -- 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 -- Revision -- Revision -- -------- -- 1.0 -- -- ----------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164 .all; use ieee.std_logic_unsigned .all; ----------------------------------------------------------------------------- entity yuan is History: Date ---------- Nev.6th 2006 Author --------- YichaoChen;ShiqinHuang Comment ----------- Initial revision port( bclk : in std_logic; --System clk 50MHz tclk : in std_logic; --Pulse under measure clr cl : in std_logic; --Reset signal : in std_logic; --MCU test command input start : out std_logic; --Measure start and stop signal : in std_logic_vector (2 downto 0); --Data output select data : out std_logic_vector (7 downto 0)); --Output data to MCU end yuan; sel ----------------------------------------------------------------------------- architecture one of yuan is signal bzq,tsq:std_logic_vector (31 downto 0); signal ena:std_logic; begin --signal ena equals to start start <= ena; -- --Data selection command,MCU read data from CPLD data<=bzq(7 downto 0) bzq(15 downto 8) bzq(23 downto 16) when sel="010" else bzq(31 downto 24) when sel="011" else tsq(7 downto 0) tsq(15 downto 8) tsq(23 downto 16) when sel="110" else tsq(31 downto 24) when sel="111" else tsq(31 downto 24); ----------------------------------------------------------------------------- --Dff d:process(tclk,clr,cl) begin if clr='1' then ena<='0' after 1ns; elsif tclk'event and tclk='1' then ena <= cl after 1ns; end if; end process; ----------------------------------------------------------------------------- --Measuring counter,clocked by pulse under measure tf:process(tclk,clr,ena) -- begin if clr='1' then tsq<=(others=>'0')after 1ns; elsif tclk'event and tclk='1' then if ena='1' then tsq <= tsq + 1 after 1ns; end if; end if; end process; ----------------------------------------------------------------------------- when sel="000" else when sel="001" else when sel="100" else when sel="101" else Page 1 of 2 Revision:

基于VHDL的8位十进制频率计设计

基于VHDL的8位十进制频率计设计 目录 目录 (1) 摘要 (2) 1.设计目的 (2) 2.设计要求 (2) 3.设计思路 (2) 4.频率计设计原理 (3) 4.1频率计的组成部分 (3) 4.2频率计工作原理 (3) 4.3频率计各模块介绍 (3) 5.频率计仿真 (7) 5.1FCTRL控制模块仿真 (7) 5.2REGESTER寄存器模块仿真 (7) 5.3SELTIME扫描模块仿真 (7) 5.4DELED显示模块仿真 (8) 5.5CNT10计数器模块仿真 (8) 5.6总电路仿真 (8) 6.频率计各模块程序 (9) 7.频率计下载到实验箱现象 (13) 8.设计体会 (14) 9.参考资料 (14)

[ 摘要]使用VHDL 语言来设计数字频率计, 给出了原理图和仿真图形, 所设计的电路通过硬件仿真, 下载到目标器件上运行, 能够满足测量频率的要求, 具有理论与实践意义, 实现了电子电路自动化(EDA)的过程。 [ 关键词] VHDL; EDA; 仿真; FPGA; 频率计 1.设计目的 1.1熟悉Max+plusII 10.2的软件的基本使用方法。 1.2理解频率计的测量原理。 1.3掌握VHDL语言的编写方法。 1.4掌握虚拟数字频率计的软件设计。 2.设计要求 在Max+plusII中设计一个数字频率计电路,设计要求为:测量范围:1Hz~100MHz,数码管动态扫描显示所测的频率。 3.设计思路 方案一:采用周期法。通过测量待测信号的周期并求其倒数,需要有标准倍的频率,在待测信号的一个周期内,记录标准频率的周期数,这种方法的计数值会产生最大为±1个脉冲误差,并且测试精度与计数器中记录的数值有关,为了保证测试精度,测周期法仅适用于低频信号的测量。 方案二:采用直接测频法。直接测频法就是在确定的闸门时间内,记录被测信号的脉冲个数。由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为±1个脉冲误差。进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量准确度为&=Tx/T=1/Fx。由此可知直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。因此直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量精度保持不变的要求。 方案三:采用等精度频率测量法,测量精度保持恒定,不随所测信号的变化而变化。在快速测量的要求下,要保证较高精度的测频,必须采用较高的标准频率信号。采用高集成度、高速的现场可编程门阵列FPGA为实现高速、高精度的测频提供了保证。 本设计所采用的测频方法就是直接测频法。

VHDL语言设计数字频率计

数字频率计的设计 一、频率计实现的功能 要设计的频率计的测量围为1MHz。为了提高测量的精度,量程分为三档,分别是:10kHz、100kHz、1MHz。并要求在测量频率大于或小于选择的量程时,频率计自动换档。 1、当读数大于999时,频率计处于超量程状态,下一次测量时,量程自动增加一档。 2、当读数小于009时,频率计处于欠量程状态,下一次测量时,量程自动减小一档。 3、当超出测量围时,显示错误。 4、在计数时不显示数据,计数完成后只显示测量结果。 5、小数点位置要自动移位。 二、频率计各部分的分析 在这个设计中,需要用计数器来进行计数,而且计数器在各个档位要被重复使用,在测量的过程中,计数允许时钟信号还要进行调整,故将计数器设计成一个单独的模块,提供计数值的输出。显示结果包括数值显示,档位显示及溢出标志显示。其中数值显示要用到三个数码管,实验箱上连在一起的三个数码管中,只有两个数码管部接有译码器,因此我们自己还要在程序中为那个没有译码器的数码管再加一段七段译码器程序来显示结果。档位标志由三个LED灯来显示,代替数码管上的小数点的功能。溢出标志由两个LED灯来显示,其中一个显示结果溢出,另一个显示输入信号在测量围之。 该频率计的顶层逻辑电路原理图如图(1)所示: 图(1) 三、频率计各部分的设计和实现 从上面的分析可以知道,频率计可以由三个模块来组成。下面对各个模块的设计方法和实现方法进行详细说明。 1、时基进程的设计和实现 在实际使用时,输入的信号是随意的,没有办法预知输入的频率。因此选取频率计的时基是非常重要的。在设计要求中,将量程分为三档,在某一档进行测量时,需要提供该档的

相关主题
文本预览
相关文档 最新文档