当前位置:
文档之家› 可变量程数字频率计设计与制作
可变量程数字频率计设计与制作
PROCESS(S) BEGIN
CASE S IS --转化为 BCD 代码 WHEN "00"=> P<="0001"; --译码后显示为数字 1 WHEN "01"=> P<="0010"; WHEN "10"=> P<="0011"; WHEN "11"=> P<="0100"; WHEN OTHERS=> P<=NULL;
根据设计要求,对于 5 位十进制计数器来说,当闸门信号周期为 1s
2
可变量程数字频率计设计与制作
时,其计数值在 0 到 99999 之间,则最大频率为 99999Hz,此即为频率计 电路工作的 1 档。余此类推。(当闸门信号周期为 1ms 时,计数值在 0 到 99999 之间,把它转化为频率为最小频率为 1kHz,最大频率为 99999kHz, 此即为频率计工作电路的 4 档。)
A:=(OTHERS=>'0');
--计数器异步复位
ELSIF CLK'EVENT AND CLK='1' THEN
--检测时钟上升沿
IF EN='1' THEN
--检测是否允许计数
IF A<9 THEN
A:=A+1;
ELSE
A:=(OTHERS=>'0'); --大于 9,计数值清零
END IF;
END IF;
END IF;
IF A=9 THEN
--等于 9,输出进位信号
CO<='1';
ELSE
CO<='0';
END IF;
CQ<=A;
END PROCESS;
END CNT10_ARC;
相应的元件 cnt10.sym 如图 4 所示:
4
可变量程数字频率计设计与制作
图4 2)模块 dang 的 VHDL 文件:
ELSE CLR<='0';
END IF; END PROCESS; EN<=DIV2BCLK; LOAD<=NOT DIV2BCLK; END CONTROL_ARC;
相应的 control.sym 如图 6:
6
可变量程数字频率计设计与制作
图6 说明:在 EN 为高电平时,对待测信号 Fx 进行计数,此时寄存器的使 能端 LOAD 为 0;在 EN 跳变为低电平时,LOAD 发生正跳变,寄存器锁存计 数器的值;在 EN 和 CLR 同时为低电平时,计数器清零。 3.五位计数器模块 5cnt10 当 CLR=0、EN=1 时,其计数值在 0 到 99999 之间循环变化,COUT 为计 数器进位输出信号,作为超量程报警信号。其原理图为:
3
可变量程数字频率计设计与制作
CO: OUT STD_LOGIC);
END CNT10;
ARCHITECTURE CNT10_ARC OF CNT10 IS
BEGIN
PROCESS(CLK,CLR,EN)
VARIABLE A: STD_LOGIC_VECTOR(3 DOWNTO 0);
பைடு நூலகம்
BEGIN
IF CLR='1' THEN
3. 误差分析:若忽略晶振器发生频率产生的误差,用直接接测频 法 Fx=Nx/Tw,计数值 Nx 会产生一个正负 1 的误差,故对高频率信号,用本次 设计的频率计测量效果较好,而对于低频信号,则本次设计的频率计测量 会产生较大误差。一种更精确的频率计是等精度测量频率计。
END CASE; END PROCESS; END DANG_ARC; 相应的 dang.sym 如图 5:
图5 (2)控制信号发生器模块 control
VHDL 文件为:
5
可变量程数字频率计设计与制作
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CONTROL IS
END IF; FS<=X; END PROCESS; END DIV_ARC; 生成的元件 div.sym 如图 2:
图2 2.闸门控制模块
频率计电路工作时先要产生一个闸门信号,宽度为单位时间,如 1s。 在闸门信号有效时间内,对被测信号进行计数,即为信号的频率。该模块 可再分为两个子模块:定时信号模块和控制信号发生器模块。 (1)定时信号模块 timer
END CASE; END PROCESS; END LED_ARC; 相应的 led.sym 为:
图9 6.顶层文件 top
1)top.sym 如图 10(a)所示:
图 10(a) 2)原理图为图 10。其中 K2、K1 为档位控制开关,即 K2 K1=00 时为 1 档,同时在数码管上显示“1”; K2 K1=01 时为 2 档,同时在数码管 上显示“2”;K2 K1=10 时为 3 档,同时在数码管上显示“3”; K2 K1=11 时为 4 档,同时在数码管上显示“4”。“ALARM 接喇叭,超量程时报警。 L1 到 L6 接 6 个数码管。另外说明一点:对 6 位七段 LED 采用动态显示
为产生 4 种不同的闸门信号,可由 3 级模 10 计数器对 1kHz 信号进行 分频,利用档位选择开关通过数据选择器 MUX41 选择出相应的时钟 BCLK, 原理图如图 3(a)所示:
生成的元件 timer.sym 如图 3(b):
图 3(a)
图 3(b) 附:1)生成十进制计数器 cnt10 的 VHDL 文件:
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS
PORT(CLK,CLR,EN: IN STD_LOGIC; --时钟输入端、清零端、使能端 CQ: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
END LED ;
ARCHITECTURE LED_ARC OF LED IS
BEGIN
PROCESS(D)
BEGIN
CASE D IS
--LED 共阳极接法
8
可变量程数字频率计设计与制作 WHEN "0000"=> LED7S<="1000000"; WHEN "0001"=> LED7S<="1111001"; WHEN "0010"=> LED7S<="0100100"; WHEN "0011"=> LED7S<="0110000"; WHEN "0100"=> LED7S<="0011001"; WHEN "0101"=> LED7S<="0010010"; WHEN "0110"=> LED7S<="0000011"; WHEN "0111"=> LED7S<="1111000"; WHEN "1000"=> LED7S<="0000000"; WHEN "1001"=> LED7S<="0011000"; WHEN OTHERS=> LED7S<="1111111";
10
可变量程数字频率计设计与制作 2. 结果分析:最左边的数码管是显示档位的,后 5 个是频率计测得频率
的结果显示,即其读数乘以 X1(档位显示为 1 时),X10(档位显示为 2 时), X100(档位显示为 3 时),X1000(档位显示为 4 时),再带上 Hz 的单位即 为所测信号的频率。据此,可知上述试验结果是正确的,也即表明该频率 计的设计是成功的。
可变量程数字频率计设计与制作
一 设计目的
掌握现代大规模集成数字逻辑电路的应用设计方法,以及 掌握利用计算 机进行电子设计自动化(EDA)的基本方法。
二 设计任务
设计一个五位数字频率计。要求分成四档测量范围:×1、×10、×100、 ×1000。在×1 档,测量范围为 1Hz 到 99999Hz,余此类推。最高测量频率为 99999KHz(×1000 档)。档位的选择由按键手控,但要有指示灯显示。再有, 输入频率大于实际量程时,要有溢出显示。
9
可变量程数字频率计设计与制作 设计可减少引脚。
图 10(b)
五 实验结果及分析
因试验箱里仅有 4M 晶振芯片,无额外的被测信号(除非再用 555 设计一 个信号发生器),为简单起见,即将被测信号 Fx 的管脚也连至管脚 4M 处(即 相于用本次设计的数字频率计验证 4M 晶振的频率)。
1.实验发现:当 K2=‘0’,‘K1=‘0’(X1 档)时,6 个数码管从左到右 依次显示为“100000”,且有喇叭声(报警,超量程);当 K2=‘0’,K1=‘1’ 时,数码管显示为“200000”,且有喇叭声;当 K2=‘1’,K1=‘0’时,数 码管显示“340000”,无喇叭声;当 K2=‘1’,K1=‘1’(X1000 档)时,数 码管显示“404000”,无喇叭声。
三 设计原理
1.测频率法就是在一定时间间隔 Tw(定义为闸门时间)内,测得被测信号重 复出现的次数为 Nx,则其频率可表示为:
Fx=Nx/Tw 2.数字频率计系统组成框图如下: