4位十进制频率计设计
- 格式:doc
- 大小:94.50 KB
- 文档页数:4
4位十进制频率计设计频率计是一种用来测量信号频率的仪器或设备,它广泛应用于电子、通信、无线电、音频和视频等领域。
本文将介绍一种设计思路,用于实现一个4位十进制频率计。
==设计思路==为了设计一个能够测量高精度频率的4位十进制频率计,我们需要考虑以下几个关键因素:1.输入范围:频率计应该能够适应不同频率范围的输入信号,从几赫兹到几百兆赫兹。
为了实现这一点,我们可以选择一个高性能的计数器和适当的预分频器。
2.分辨率:分辨率是指频率计能够测量的最小变化量。
较高的分辨率可以提供更精确的测量结果。
为了实现较高的分辨率,我们可以选择一个高位数的计数器以及适当的预分频器。
3.显示和输出:频率计应该能够以易读的方式显示测量结果,并可以通过输出接口连接到其他设备或系统。
基于以上要求,我们可以采用以下设计思路来实现4位十进制频率计。
1.时钟源:选择一个高稳定性的晶振作为频率计的时钟源。
晶振的稳定性对于频率计的测量精度非常重要。
2.频率测量:我们可以使用计数器和预分频器的组合来测量输入信号的频率。
计数器将输入信号进行计数,并以预定的时间间隔将计数器的值读取到显示寄存器中。
a.计数器:选择一个具有足够位数的计数器,以提供较高的分辨率。
例如,采用16位或者更高位的计数器,可以提供较高的计数能力和分辨率。
b.预分频器:使用预分频器将输入信号的频率降低到易于计数器处理的范围内。
预分频器的选择要根据输入信号的频率范围来确定。
比如,对于输入信号频率范围为几赫兹到几百兆赫兹,我们可以选择一个可设置不同分频系数的预分频器。
c.计数时间:选择一个适当的计数时间来保证测量结果的准确性。
较短的计数时间会降低分辨率,较长的计数时间会增加测量误差。
通过权衡这两者,我们可以设定一个合适的计数时间。
3.显示和输出:在实现频率计的显示和输出功能时,我们可以采用以下几种方式:a.LED数码管:选择一个4位数码管显示器来显示频率测量结果。
设计一个驱动电路,将显示寄存器中的计数值转换为相应的数码管显示。
--VHDL 频率计--一个有效位为4位的十进制的数字频率计。
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity freq isport(fsin:in std_logic;--被测信号clk:in std_logic;--基准时间,1Hzreset : in std_logic;show:out std_logic_vector(6 downto 0);--数码管段码输出row:out std_logic_vector(3 downto 0));--数码管选择信号end freq;architecture one of freq issignal test_en:std_logic;signal clear:std_logic;--复位信号signal data:std_logic_vector(15 downto 0);--bcdsignal data_in:std_logic_vector(3 downto 0);--单个数码管显示signal row_in:std_logic_vector(3 downto 0);--数码管的选择beginprocess(clk)beginif clk'event and clk='1' thentest_en<=not test_en;end if;end process;clear<=not clk and not test_en;--定义clear信号process(fsin)beginif reset= '1' thenrow_in <= "0001";elsif fsin'event and fsin='1' thenif row_in="0001" then row_in<="0010";elsif row_in="0010" then row_in<="0100";elsif row_in="0100" then row_in<="1000";elsif row_in="1000" then row_in<="0001";end if;end if;end process;--在1秒钟时间内对被测脉冲信号计数process(fsin,test_en)beginif clear='1' then data<="00000";elsif fsin'event and fsin='1' thenif test_en='1' thenif data(15 downto 0)="11001" then data<=data+"00111";--9999->0000elsif data(11 downto 0)="1" then data<=data+"1";--999->1000elsif data(7 downto 0)="10011001" then data<=data+"01100111"; --99->100elsif data(3 downto 0)="1001" then data<=data+"0111";--9->10else data<=data+'1';end if;end if;end if;end process;--根据所选数码管显示数据process(row_in)beginrow(3 downto 0)<=row_in(3 downto 0);case row_in iswhen "0001"=>data_in<=data(3 downto 0);when "0010"=>data_in<=data(7 downto 4);when "0100"=>data_in<=data(11 downto 8);when "1000"=>data_in<=data(15 downto 12);when others=>data_in<="XXXX";end case;end process;--根据欲显示的数据配置数码管process(data_in)begincase data_in iswhen "0000"=>show<="0111111";when "0001"=>show<="0000110";when "0010"=>show<="1011011";when "0011"=>show<="1001111";when "0100"=>show<="1100110";when "0101"=>show<="1101101";when "0110"=>show<="1111101";when "0111"=>show<="0000111";when "1000"=>show<="1111111";when "1001"=>show<="1101111";when others=>show<="1000110";end case;end process;end one;--------------------------------------------------------------------实验要求:设计一个有效位为4位的十进制的数字频率计。
根据系统设计要求, 需要实现一个 4 位十进制数字频率计, 其原理框 图如图 1 所示。
主要由脉冲发生器电路、 测频控制信号发生器电路、 待测 信号计数模块电路、 锁存器、 七段译码驱动电路及扫描显示电路等模块组 成。
由于是4位十进制数字频率计, 所以计数器CNT10需用4个,7段显示译 码器也需用4个。
频率测量的基本原理是计算每秒钟内待测信号的脉冲个 数。
为此,测频控制信号发生器 F_IN_CNT 应设置一个控制信号时钟CLK , 一个计数使能信号输出端EN 、一个与EN 输出信号反 向的锁存输出信号 LOCK 和清零输出信号CLR 。
若CLK 的输入频率为1HZ ,则输出信号端EN 输出 一个脉宽恰好为1秒的周期信号, 可以 作为闸门信号用。
由它对频率计的 每一个计数器的使能端进行同步控制。
当EN 高电平时允许计数, 低电平时 住手计数,并保持所计的数。
在住手计数期间,锁存信号LOCK 的上跳沿 将计数器在前1秒钟的计数值锁存进4位锁存器LOCK ,由7段译码器译出 并稳定显示。
设置锁存器的好处是: 显示的数据稳定, 不会由于周期性的标准时钟 CLKEN待测信号计数电路脉冲发 生器待测信号F_INLOCK锁存与译 码显示驱 动电路测频控制信 号发生电路CLR扫描控制数码显示清零信号而不断闪烁。
锁存信号之后,清零信号CLR对计数器进行清零,为下1秒钟的计数操作作准备。
时基产生与测频时序控制电路主要产生计数允许信号EN、清零信号CLR 和锁存信号LOCK。
其VHDL 程序清单如下:--CLK_SX_CTRLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLK_SX_CTRL ISPORT(CLK: IN STD_LOGIC;LOCK: OUT STD_LOGIC;EN: OUT STD_LOGIC;CLR: OUT STD_LOGIC);END;ARCHITECTURE ART OF CLK_SX_CTRL ISSIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THENIF Q="1111"THENQ<="0000";ELSEQ<=Q+'1';END IF;END IF;EN<=NOT Q(3);LOCK<=Q(3)AND NOT(Q(2))AND Q(1);CLR<=Q(3)AND Q(2)AND NOT(Q(1));END PROCESS;END ART;测频时序控制电路:为实现系统功能,控制电路模块需输出三个信号:一是控制计数器允许对被测信号计数的信号EN;二是将前一秒计数器的计数值存入锁存的锁存信号LOCK;三是为下一个周期计数做准备的计数器清零信号CLR。
4位十进制频率计设计一、实验目的设计4位十进制频率计。
学习较复杂的数字系统设计方法。
二、实验原理根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清零,为下一测频计数周期作准备。
这3个信号可以由一个测频控制信号发生器产生,即图5-1中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。
设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。
其工作时序波形如图5-2。
图5-1 4位十进制频率计顶层文件原理图图5-2 频率计测频控制器TESTCTL测控时序图实验步骤设计测频控制器1、为本项设计建立文件夹2、输入设计项目和存盘3、将设计项目设置成工程文件将测频控制器设置为工程文件。
4、选择目标器件并编译如果发现有错,排除错误后再次编译。
5、时序仿真接下来应该测试设计项目的正确性,即逻辑仿真,具体步骤如下:(1)建立波形文件。
用输入总线的方式给出输入信号仿真数据。
(2)输入信号节点。
(3)设置波形参量。
(4)设定仿真时间宽度。
(5)加上输入信号。
(6)波形文件存盘。
(7)运行仿真器。
(8)观察分析波形。
对照测频控制器工作原理,观察显示的时序波形是否正确。
(9)包装元件入库。
设计4位锁存器对照设计测频控制器的实验步骤,设计4位锁存器。
设计分频器设计顶层文件。
1、输入设计项目和存盘根据4位十进制频率计顶层文件原理图。
实验三四位十进制频率计设计1.实验目的:掌握四位十进制频率计的工作原理;掌握四位十进制频率计的Verilog描述方法;学习设计仿真工具的使用方法。
2.实验原理:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的脉冲计数允许信号,1秒计数结束后,计数值(即所测信号频率)锁入锁存器,并为下一次测频作准备,即将计数器清零。
根据频率计的工作原理,将电路划分成控制器、计数器、锁存器几个模块。
控制器:输入端clk收到1Hz信号后,其输出端en控制各个计数器的使能,cls控制各个计数器的清零,load控制锁存器内数据的输出。
计数器:对输入信号的脉冲数进行累计锁存器:锁存测得的频率值3.源程序:module freqcounter(clk,uclk,led0,led1,led2,led3);input clk,uclk;output [3:0] led0,led1,led2,led3;reg [3:0]led0,led1,led2,led3;reg div;wire en,load,cls;reg [3:0] A,B,C,D;always @(negedge clk)begin div=~div;endassign en=div;assign load=~en;assign cls=clk&load;always @(posedge uclk or posedge cls)beginif(cls) beginA=4'd0;B=4'd0;C=4'd0;D=4'd0; endelse if(en) begin A=A+4'd1;if(A==4'D10) begin A=4'd0;B=B+4'd1; endif(B==4'D10) begin B=4'd0;C=C+4'd1; endif(C==4'D10) begin C=4'd0;D=D+4'd1; endif(D==4'D10) begin D=4'd0; endendendalways @(posedge load)beginled0=A;led1=B;led2=C;led3=D;endendmodule4.实验内容4.1创建工程file→New Project Wizard4.2 file→New→Verilog HDL File 4.3输入代码→start Compilation4.4 file→New→Other Files→Vector Waveform FileView→Utility windows→node finder在Edit里设置end time,对clk,uclk进行clock里的设置。
4位十进制频率计的设计计算机与电子等专业课程设计4位十进制频率计的设计一、主要指标和要求1.设计4位十进制频率计,学习较复杂的数字系统设计方法;2.深入学习数字系统设计的方法与步骤;3.用元件例化语句写出频率计的顶层文件;4.用VHDL硬件描述语言进行模块电路的设计;5.设计硬件要求:PC机,操作系统为Windows2000/XP,本课程所用系统均为max+plus II 5.1设计平台,GW48系列SOPC/EDA实验开发系统。
二、工作原理以及方案选择原理工作说明:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。
这3个信号可以由一个测频控制信号发生器产生,即图(a)中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN 能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要产生一个锁存信号LOAD,在该信号上升沿时,将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。
设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。
其工作时序波形如图(a)。
图(a) 频率计测频控制器TESTCTL测控时序图图 (b) 4位十进制频率计顶层文件原理图选择的设计方案:1.根据频率计的工作原理,将电路划分成控制器、计数器、锁存器和LED显示几个模块,控制器——产生1秒脉宽的计数允许信号、锁存信号和计数器清零信号计数器——对输入信号的脉冲数进行累计锁存器——锁存测得的频率值LED显示——将频率值显示在数码管上2.根据图(a)、(b)及(1)(2)描述的4位十进制频率计的工作原理,利用max+ plusII5.1对以上三者的程序进行文本编辑输入和仿真测试并根据图(b),写出频率计的顶层文件,并给出其测频时序波形,及其分析。
EDA 课程设计报告书课题名称 4位十进制频率计的设计姓 名 刘智 学 号 0812201-45 院 系 物理与电信工程系 专 业 电子信息工程 指导教师周来秀讲师2011年 6月10日※※※※※※※※※ ※※※※ ※※※※※※※※※※※2008级学生EDA 课程设计4位十进制频率计的设计刘智(湖南城市学院物理与电信工程系电子信息工程专业,湖南益阳,41300)1设计目的1)学习掌握频率计的设计方法。
2)掌握动态扫描输出电路的实现方法。
3)学习较复杂的数字系统设计方法。
2设计的主要内容和要求4位十进制频率计外部接口设计,顶层文件设计,包含4个模块,Tctl,Reg16,scan_led和一个x4cnt10(4个十进制计数器)。
3 整体设计方案根据频率计的定义和频率测量的基本原理:频率计即是指单位时间1秒内输入脉冲个数并显示出来的电路。
因为要显示被测信号的,只要限制计数器的计数过程为一秒则计数器的结果即为被测信号的频率。
频率值为:Fx=N,N为一秒内计数器所计脉冲个数。
因为是4位十进制频率计计数器是模为9999的十进制加法计数器,可以由4个模为10的十进制计数器级联而成,所以可以显示的频率范围是1-9999HZ。
因此,频率计的功能分割成四个模块:计数器,测频控制信号发生器和输出锁存器,。
各个模块均用VHDL语言描述。
待测信号的转速必须有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号,并有为下一测频计数周期作准备的计数器清零信号。
这三个信号可以由一个测频控制信号发生器产生。
当系统正常工作时,标准信号提供频率为1 Hz的输入信号,经过测频控制信号发生器进行信号变换,产生计数信号,将被测信号当做脉冲信号送入计数器模块,计数模块对输入的脉冲个数进行计数数结束后,将计数结果送入锁存器中,保证系统可以稳定显示数据,计数结果能够显示在七段数码显示管上。
根据系统设计要求,要实现一个4位十进制数字频率计,则要设计测频控制信号发生器模块tct1、四位十进制加法计数器模块x4cnt10、reg16锁存器模块, 七段译码显示模块scan_led 其原理框图如下图所示。
4位10进制计数显示模块设计
一、实验目的:设计4位10进制计数显示模块。
二、实验要求:
(1)、叙述设计思想;
(2)、4位10进制计数显示模块的VHDL描述;
(3)、画出顶层VHDL文件的图形描述;
(4)、调试程序、下载到实验板验证设计的正确性。
三、实验步骤
1、设计思路
4位10进制计数显示要实现四位数有0000开始,没过1s自动加1,并且可以循环计数。
同时,有使能端(ENA)可以控制暂停计数和继续计数,有复位端(RST)可以是四位数复位(0000)。
要实现这个功能需要用到6个主要元件:分频器、计数器、数码管显示译码器、段控制元件、位选择元件和动态扫描元件。
过程如下图图1所示。
图1
2、实验各个模块的VHDL描述:(1)、分频器元件的VHDL语言
(2)、十进制计数器元件的VHDL语言
(3)、动态扫描元件的VHDL语言(4)、位控制元件的VHDL语言
(5)七段数码显示译码器VHDL语言(6)、段控制元件的VHDL语言
3、顶层VHDL文件的图形描述
4、调试程序、下载到实验板验证设计的正确性。
通过对程序进行调试和引脚合理的分配之后,将程序下载到实验板上,实验结果与预期的一样。
四、实验体会
通过该次实验,对VHDL语言的基本用法和作用有了更深入的理解,运用起来更加熟练;同时,通过元件生成和顶层文件的图形描述,使我对quartus II软件的使用有了更深入了解,这使得我CPLD设计过程更加熟练。
四位10进制VHDL频率计设计说明一、频率计数器的功能说明频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。
闸门时间也可以大于或小于一秒。
闸门时间越长,得到的频率值就越准确,但闸门时间越长则每测一次频率的间隔就越长。
闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。
数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。
如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。
因此,数字频率计是一种应用很广泛的仪器。
设计中生成的测频计电路图二、频率计实现四位频率计的结构包括一个测频率控制信号发生器、四个十进制计数器和一个十六位锁存器(本例中所测频率超过测频范围时有警示灯)。
(1)测频时序控制器TESTCTL设计频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。
控制时钟信号CLK取为1Hz,2分频后即可产生一个脉宽为1秒的时钟信号TSTEN,以此作为计数闸门信号。
当TSTEN为高电平时,允许计数;当TSTEN由高电平变为低电平(下降沿到来)时,输出计数锁存信号LOAD,将(2)十进制计数器计数器以待测信号作为时钟,清零信号CLR_CNT到来时清零端ACLR异步清零;CLK_ENA为高电平时开始计数。
如果需要测试较高的频率信号则可将输出位数增加,当然锁存器的位数也要增加。
设计中生成的电路如下(3当如下(4极管闪亮,说明所测频率已经超过频率计所能测量的范围。
三、测频时序控制器的设计思路如下图所示,CLK是由脉冲发生器产生的频率为1Hz的标准时钟信号,当测频计接收到CLK上升沿脉冲时,首先有一个D触发器构成二分频器,在每次时钟CLK的上升沿到来使其值翻转,分为DIV2CLK 与NOTDIV2CLKA,当接收到首个CLK上升沿时,将产生DIV2CLK=1与NOTDIV2CLK=0,分别将他们送入TSTEN与LOAD,则计数器使能端有效,开始计数。
实验五4位十进制频率计设计
一、实验目的:
设计4位十进制频率计,学习较复杂的数字系统设计方法。
二、原理说明:
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。
这清0个信号可以由一个测频控制信号发生器产生,即图5-1中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的EN使能端进行同步控制。
当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。
设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,必须有一清零信号
RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。
【例5-1】10进制计数器,用于计算分频结果,并连接数码管显示。
module cnt10d(clk,rst,en,cq,cout);
input clk;
input rst;
input en;
output[3:0] cq;
output cout;
reg[3:0] cq;
reg cout;
always@(posedge clk or posedge rst) begin
if(rst) cq<=4'b0000;
else
if(en) begin
if(cq<9) begin cq<=cq+1'b1;cout<=1'b0; end
else begin cq<=4'b0000; cout<=1'b1; end
end
end
endmodule
【例5-2】--测频控制器,使得频率计能自动测频
module testctl(clkk,cnt_en,rst_cnt,load);
input clkk; // 1HZ
output cnt_en;
output rst_cnt;
output load;
reg div2clk;
wire cnt_en;
reg rst_cnt;
wire load;
always@(posedge clkk)
div2clk<=~div2clk;
always @(clkk or div2clk) begin
if(!clkk & !div2clk) rst_cnt<=1'b1;
else rst_cnt<=1'b0;
end
assign load = ~div2clk;
assign cnt_en = div2clk;
endmodule
【例5-3】锁存器,将频率计的每位数锁存后输出module reg4(clk,cq,led );
input clk;
input[3:0] cq;
output[3:0] led;
reg[3:0] led;
always@(posedge clk)
led<=cq;
endmodule
[例5-4] 用原理图方式将各模块连接起来
也可以用.v文件实现系统组合。
三、实验内容:
1、根据例5-1、例5-
2、例5-3以及4位十进制频率计的工作原理写出频率计的顶层文件(或者原理图),并给出其测频时序波形,及其分析。
在测试时候添加以下两个模块:(1)DE2上有两个时钟源,分别是(50MHZ ,PIN_N2),(27MHz,PIN_D13),编写一个分频模块,分别产生测频器的clk(8Hz)和f_in(频率任意定)时钟,用于连接在DE2上进行测试。
例如:由27Mhz时钟直接产生8hz的clk输出,和任意设定的f_in测试频率
(2)编写数码显示模块led7s,用于显示频率计数的结果显示。
2、频率计设计硬件验证。
编译、综合和适配频率计顶层设计文件,并编程下载进入目标器件中。
3、思考题
将频率计扩展为8位十进制频率计,并在测频速度上给予优化,使其能测出更高的频率。