eda实验 4位十进制的频率计设计

合集下载

实验三 4位十进制频率计设计

实验三 4位十进制频率计设计

实验三4位十进制频率计设计一、实验目的1.掌握数字频率计的Verilog描述方法;2.学习设计仿真工具的使用方法3.学习层次化设计方法;二、实验原理根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽位1秒的输入信号脉冲计数允许信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一次测频计数周期做准备的计数器清零信号。

这3个信号由测频控制信号发生器产生,它的设计要求是,测频控制信号发生器的计数使能信号输出CNT_EN 能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。

当CNT_EN 高电平时,允许计数;当CNT_EN低电平时停止计数,并保持所计的脉冲数。

在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各个锁存器REG4B中,并由外部的七段译码器译出,显示计数值。

设置锁存器的好处是,显示数据稳定,不会由于周期性的清零信号而不断闪烁。

信号锁存之后,还必须用清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作做准备。

三、实验内容1、用4位十进制计数器对用户输入时钟进行计数,计数间隔为1秒,计数满1秒后将计数值(即频率值)锁存到4位寄存器中显示,并将计数器清0,再进行下一次计数。

2、为上述设计建立元件符号3、设计仿真文件,进行验证。

4、编程下载并在实验箱上进行验证四、实验步骤程序源代码module FREG (clk1HZ,uclk,led0,led1,led2,led3,rst,en,load);input clk1HZ, uclk;output [3:0]led0,led1,led2,led3;output load,rst,en;wire in_load,in_rst,in_en,c0,c1,c2;wire [3:0]dout0,dout1,dout2,dout3;assign load=in_load;assign rst=in_rst;assign en=in_en;CNTL u1(.CLK(clk1HZ),.CNL_EN(in_en),.RST_CNL(in_rst),.LOAD(in_load));CNT10 u2 (.CLK(uclk),.EN(in_en),.RST(in_rst),.COUT(c0),.DOUT(dout0));CNT10 u3 (.CLK(c0),.EN(in_en),.RST(in_rst),.COUT(c1),.DOUT(dout1));CNT10 u4 (.CLK(c1),.EN(in_en),.RST(in_rst),.COUT(c2),.DOUT(dout2));CNT10 u5 (.CLK(c2),.EN(in_en),.RST(in_rst),.DOUT(dout3));RGB4 u6 (.DIN(dout0),.LOAD(in_load),.DOUT(led0));RGB4 u7 (.DIN(dout1),.LOAD(in_load),.DOUT(led1));RGB4 u8 (.DIN(dout2),.LOAD(in_load),.DOUT(led2));RGB4 u9 (.DIN(dout3),.LOAD(in_load),.DOUT(led3));endmodulemodule CNT10(CLK,RST,EN,COUT,DOUT); //4位计数器input CLK,RST,EN;output COUT;output[3:0] DOUT;reg[3:0] Q; reg COUT;always @ (posedge CLK or posedge RST)beginif(RST) Q=0;else if(EN) beginif(Q<9) Q=Q+1;else Q=0;endendalways @ (Q)if(Q==4'b1001) COUT=1;else COUT=0;assign DOUT=Q;endmodulemodule RGB4(DIN,LOAD,DOUT); //数据缓存器input LOAD;input[3:0] DIN;output[3:0] DOUT;reg[3:0] DOUT;always @ (posedge LOAD)DOUT=DIN;endmodulemodule CNTL(CLK,CNL_EN,RST_CNL,LOAD);//控制部分input CLK;output CNL_EN,RST_CNL,LOAD;reg CLKDIV,CNL_EN,LOAD,RST_CNL;always @ (posedge CLK)CLKDIV=~CLKDIV;always @ (posedge CLK) beginCNL_EN=CLKDIV;LOAD=~CLKDIV;endalways @ (CLK) beginif(CLK==1'b0&&CNL_EN==1'b0)RST_CNL=1;elseRST_CNL=0; endendmoduleRTL视图仿真结果功能分析:在波形中,CLK1HZ的频率为1HZ,以CLK1HZ为输入,产生en,rst,load的输出波形。

4位的十进制的数字频率计

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);--数码管的选择begin--分频,得到0.5Hz信号test_enprocess(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<="0000000000000000";elsif fsin'event and fsin='1' thenif test_en='1' thenif data(15 downto 0)="1001100110011001" then data<=data+"0110011001100111"; --9999->0000elsif data(11 downto 0)="100110011001" then data<=data+"011001100111";--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位十进制频率计设计

4位十进制频率计设计

4位十进制频率计设计频率计是一种用来测量信号频率的仪器或设备,它广泛应用于电子、通信、无线电、音频和视频等领域。

本文将介绍一种设计思路,用于实现一个4位十进制频率计。

==设计思路==为了设计一个能够测量高精度频率的4位十进制频率计,我们需要考虑以下几个关键因素:1.输入范围:频率计应该能够适应不同频率范围的输入信号,从几赫兹到几百兆赫兹。

为了实现这一点,我们可以选择一个高性能的计数器和适当的预分频器。

2.分辨率:分辨率是指频率计能够测量的最小变化量。

较高的分辨率可以提供更精确的测量结果。

为了实现较高的分辨率,我们可以选择一个高位数的计数器以及适当的预分频器。

3.显示和输出:频率计应该能够以易读的方式显示测量结果,并可以通过输出接口连接到其他设备或系统。

基于以上要求,我们可以采用以下设计思路来实现4位十进制频率计。

1.时钟源:选择一个高稳定性的晶振作为频率计的时钟源。

晶振的稳定性对于频率计的测量精度非常重要。

2.频率测量:我们可以使用计数器和预分频器的组合来测量输入信号的频率。

计数器将输入信号进行计数,并以预定的时间间隔将计数器的值读取到显示寄存器中。

a.计数器:选择一个具有足够位数的计数器,以提供较高的分辨率。

例如,采用16位或者更高位的计数器,可以提供较高的计数能力和分辨率。

b.预分频器:使用预分频器将输入信号的频率降低到易于计数器处理的范围内。

预分频器的选择要根据输入信号的频率范围来确定。

比如,对于输入信号频率范围为几赫兹到几百兆赫兹,我们可以选择一个可设置不同分频系数的预分频器。

c.计数时间:选择一个适当的计数时间来保证测量结果的准确性。

较短的计数时间会降低分辨率,较长的计数时间会增加测量误差。

通过权衡这两者,我们可以设定一个合适的计数时间。

3.显示和输出:在实现频率计的显示和输出功能时,我们可以采用以下几种方式:a.LED数码管:选择一个4位数码管显示器来显示频率测量结果。

设计一个驱动电路,将显示寄存器中的计数值转换为相应的数码管显示。

四位十进制频率计的设计

四位十进制频率计的设计

十进制计 数模块
4位十进制频率计的外部接口
四位十进制频率计的端口说明
F1Hz:给tctl aa模块提供1Hz的频率输入。 Fin :被测频率输入。 Scan_clk:给scan_led模块提供扫描频率输 入(建议为200Hz,以方便计数)。 Bt[1..0]:片选信号输出。 Sg[6..0]:译码信号输出。 Cout:进位输出。
当系统正常工作时外界提供的1hz的输入信号经过测频控制信号发生器进行信号的变换产生计数信号被测的信号通过信号整形电路产生同频率的矩形波送入计数模块计数模块对输入的矩形波进行计数将计数结果送入锁存器中保证系统可以稳定的显示数据显示译码器将二进制表示的计数结果转换成相应的能够在八段数码显示管上可以显示的十进制结果
5,TCTL时序仿真 , 时序仿真
(8) 分析波形
Tctl 的波形仿真
6,完成reg16_2129源程序的输入,并进行编译, ,完成 源程序的输入, 源程序的输入 并进行编译, 如果编译有错误,进行修改后,再编译,直到无误为止。 如果编译有错误,进EG16—2129时序仿真 , 时序仿
脉冲发生器电路、测频控制信号发生器电路、计 数模块电路、锁存器、译码驱动电路
各部分的原理
TESTCTL为测频控制信号发生器。TESTCTL的计数使能信 号TSTEN能产生一个1 s宽的周期信号,并对频率计的每 一计数器CNT10的ENA使能端进行同步控制:当TSTEN高 电平时允许计数、低电平时停止计数 REG32B为锁存器。在信号Load的上升沿时,立即对模块 的输入口的数据锁存到REG32B的内部,并由REG32B的输 出端输出,然后,七段译码器可以译码输出。在这里使 用了锁存器,好处是可以稳定显示数据,不会由于周期 性的清零信号而不断闪烁。 CNT10为十进制计数器。有一时钟使能输入端ENA,用于 锁定计数值。当高电平时允许计数,低电平时禁止计数。 SEVYM为七段译码显示驱动电路,可以将频率计数的结 果译成能在数码管上显示相对应的阿拉伯数字,便于读 取测量的结果。

EDA课程设计报告,数字频率计

EDA课程设计报告,数字频率计

. I目录前言01. 总体设计方案11.1总体设计方案12. 单元模块设计12.1十进制计数器设计12.1.1 十进制计数器原件t10设计12.1.2 位十进制计数器的顶层设计22.2闸门控制模块EDA设计32.2.1 定时信号模块Timer32.2.2 控制信号发生器模块T_con42.3译码显示模块42.3.1 显示存放器设计42.3.2 译码扫描显示电路52.3.3 译码显示模块的顶层电路设计73. 软件测试83.1测试的环境83.2调试和器件编程84. 设计总结85. 参考文献9前言在电子技术高度开展的今天,各种电子产品层出不穷,而频率作为设计的最根本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。

测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程的自动化等优点。

数字频率计是一种用十进制数字显示被测信号频率的数字测量仪器,它的根本功能是测量正弦信号、方波信号、尖脉冲信号以及其它各种单位时间变化的物理量。

当今国外厂家生产的数字频率计在功能和性能方面都比拟优良,而且还在不断开展中,但其构造比拟复杂,价位也比拟高,在测量精准度要求比拟低的测量场合,使用这些数字频率计就不够经济合算。

我所设计的这款数字频率计能够可靠实现频率显示功能,原理及构造也比拟简单本次所做的课程设计就是一个数字频率计,能测量1HZ~9999HZ的矩形波信号,并正确地显示所测信号的频率值。

数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比拟复杂,而且会产生比拟大的延时,造成测量误差、可靠性差。

随着现场可编程门阵列FPGA 的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。

采用FPGA现场可编程门阵列为控制核心,通过硬件描述语言VHDL编程,在Quartus‖仿真平台上编译、仿真、调试,并下载到FPGA芯片上,通过严格的测试后,能够较准确地测量各种常用的波形信号的频率,而且还能对其他多种物理量进展测量。

EDA四位十进制频率计课程设计报告

EDA四位十进制频率计课程设计报告

EDA四位十进制频率计课程设计报告本科课程设计报告S课程名称:CPLD/FPGA应用设计课程设计题目:4位十进制计数扫描显示电路实验地点:中区采矿楼二层专业班级:电信学号:学生姓名: 2021年 6 月 17 日目录一、设计目的 ........................................................................... ...................................................... 3 二、设计的主要内容和要求 ........................................................................... ................................ 3 三、整体设计方案 ........................................................................... ................................................ 3 1、设计方案 ........................................................................... .......................................................... 3 2、四位十进制频率计顶层文件原理图 ........................................................................... .............. 4 3、本设计中重要端口说明 ........................................................................... .................................. 4 四、各个模块的设计说明及设计步骤 ........................................................................... ................ 4 1、顶层文件原理图设计 ........................................................................... ...................................... 5 2、x4Cnt10 模块说明 ........................................................................... .......................................... 5 3、 Tctl 模块说明 ........................................................................... ............................................. 5 4、锁存器reg16模块的说明 ........................................................................... ............................... 6 5、scan_led 模块说明 ........................................................................... .......................................... 7 6、分频器............................................................................ ............................................................. 8 7、动态显示时序仿真图 ........................................................................... ...................................... 8 8、调用各子模块编译仿真,时序仿真图如下 ........................................................................... .. 9 9、编译仿真完成,定义管脚 ........................................................................... .............................. 9 10、试验箱进行硬件测试 ........................................................................... .................................... 9 五、设计总结 ........................................................................... ...................................................... 10 六.参考文献 ........................................................................... ...................................................... 11 七.附录............................................................................ . (11)一、设计目的1、学习掌握频率计的设计方法。

4位10进制数字频率计

重庆交通大学信息科学与工程学院综合性实验报告姓名:学号班级:专业级班实验项目名称:四位十进制频率计设计实验项目性质:综合性设计实验实验所属课程: EDA技术实验室(中心):现代电子实验中心指导教师:实验完成时间: 2011 年 10月 29日一、课题任务与要求设计一个数字频率计,能用数码管动态当前输入频率,并能达到以下要求:1、四位十进制频率计2、显示范围1Hz~10KHz3、显示时间不少于1S4、具有记忆显示的功能,即在测量过程中不刷新数据,等结束后才显示测量结果,给出待测信号的频率值,并保存到下一次测量结束。

二、设计系统的概述1、分析设计要求可知:此系统需用到多路时钟信号,因此在设计时首先考虑之中信号的引入,本设计中从外部输入频率为1Hz的CLK1Hz信号,然后通过编程将此信号进行处理得到所需的多路信号:en是使能信号、l ock是锁存信号、rst是复位信号,它们的基本时序关系如下:2、设计一个4位的十进制加法计数器,用来统计1s内输入的外部脉冲个数(单位时间内的输入脉冲数即输入信号的频率)。

3、为了能够使数码管上的示数保持至少1s还需要配合lock锁存信号设计一个锁存器,在锁存信号有效期间,数码管的示数保持不变。

4、当完成了计数之后还需对4位十进制计数器的输出信号进行译码输出,在此设计了一个7段数码管的译码显示电路。

三、单元电路的设计与分析(重点描述自己设计部分)总体设计电路框图:1、时钟控制电路(clock)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk1Hz:in std_logic;rst,en,lock:out std_logic);end entity clock;architecture one of clock issignal div2:std_logic;beginp1:process(clk1Hz)beginif(clk1Hz'event and clk1Hz='1') thendiv2<=not div2;end if;end process p1;p2:process(clk1Hz,div2)beginif clk1Hz='0' and div2='0' then rst<='1';else rst<='0';end if;end process p2;en<=div2;lock<=not div2;end one;2、一位的十进制计数电路(cnt10)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport(clk,rst,en:in std_logic;count:out std_logic;q:out std_logic_vector(3 downto 0));end entity cnt10;architecture one of cnt10 issignal temp:std_logic_vector(3 downto 0);beginprocess(clk,rst,en)beginif rst='1' then temp<="0000";elsif(clk'event and clk='1')and en='1' thenif temp="1001" then temp<="0000";count<='1';else temp<=temp+1;count<='0';end if;end if;end process;q<=temp;end one;3、四位十进制计数器电路(cnt4_10)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt4_10 isport(clkin,rst,en:in std_logic;count:out std_logic;q:out std_logic_vector(15 downto 0));end entity cnt4_10;architecture one of cnt4_10 iscomponent cnt10 isport(clk,rst,en:in std_logic;count:out std_logic;q:out std_logic_vector(3 downto 0));end component;signal temp:std_logic_vector(2 downto 0);beginu1:cnt10 port map(clkin,rst,en,temp(0),q(3 downto 0));u2:cnt10 port map(temp(0),rst,en,temp(1),q(7 downto 4));u3:cnt10 port map(temp(1),rst,en,temp(2),q(11 downto 8));u4:cnt10 port map(temp(2),rst,en,count,q(15 downto 12));end architecture one;4、锁存器电路(reg16)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16 isport(lockin:in std_logic;din:in std_logic_vector(15 downto 0);dout:out std_logic_vector(15 downto 0));end entity reg16;architecture one of reg16 isbeginprocess(lockin,din)beginif lockin'event and lockin='1'then dout<=din;end if;end process;end architecture one;5、译码显示电路(shuma)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shuma isport(din:in std_logic_vector(15 downto 0);dout:out std_logic_vector(27 downto 0));end entity shuma;architecture one of shuma isbeginprocess(din)beginfor i in 0 to 3 loopcase din((4*i+3) downto (4*i)) iswhen "0000"=>dout((7*i+6) downto (7*i))<="0111111";when "0001"=>dout((7*i+6) downto (7*i))<="0000110";when "0010"=>dout((7*i+6) downto (7*i))<="1011011";when "0011"=>dout((7*i+6) downto (7*i))<="1001111";when "0100"=>dout((7*i+6) downto (7*i))<="1100110";when "0101"=>dout((7*i+6) downto (7*i))<="1101101";when "0110"=>dout((7*i+6) downto (7*i))<="1111101";when "0111"=>dout((7*i+6) downto (7*i))<="0000111";when "1000"=>dout((7*i+6) downto (7*i))<="1111111";when "1001"=>dout((7*i+6) downto (7*i))<="1101111";when others=>NULL;end case;end loop;end process;end architecture one;6、元件例化总电路library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity freq_counter isport(clockin,freq:in std_logic;cout:out std_logic;dout:out std_logic_vector(27 downto 0));end entity freq_counter;architecture one of freq_counter iscomponent clock isport(clk1Hz:in std_logic;rst,en,lock:out std_logic);end component clock;component cnt4_10 isport(clkin,rst,en:in std_logic;count:out std_logic;q:out std_logic_vector(15 downto 0));end component cnt4_10;component reg16 isport(lockin:in std_logic;din:in std_logic_vector(15 downto 0);dout:out std_logic_vector(15 downto 0));end component reg16;component shuma isport(din:in std_logic_vector(15 downto 0);dout:out std_logic_vector(27 downto 0));end component shuma;signal temp0,temp1,temp2:std_logic;signal temp3,temp4:std_logic_vector(15 downto 0);beginu1:clock port map(freq,temp0,temp1,temp2);u2:cnt4_10 port map(clockin,temp0,temp1,cout,temp3);u3:reg16 port map(temp2,temp3,temp4);u4:shuma port map(temp4,dout);end architecture one;四、电路的仿真、结果及分析当程序设计完成之后,新建波形文件仿真如下:其中:freq表示外部提供的基准时钟信号,频率为1Hz;clockin表示外部待测信号频率,输入值范围0~9999Hz;cout表示计数溢出标志,当计数器完成一轮计数后自动置1;dout表示输出信号,总共28路(每7路接一个数码管,总共可以接4个数码管),分别对应显示输入信号频率的千、百、十、个位从图中可以看出:当clockin输入值为1000Hz时,dout输出0000110011111101111110111111即:1000当clockin输入值为500Hz时,dout输出0111111110110101111110111111即:0500当clockin输入值为200Hz时,dout输出0111111101101101111110111111即:0200输出结果是正确的,和输入应该得到的结果一致,表明程序设计基本没有问题。

简易数字频率计设计报告

根据系统设计要求, 需要实现一个 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位十进制频率计设计一、实验目的设计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. 设计任务设计一简易数字频率计,其基本要求是:1)测量频率范围1Hz~10Hz ,量程分为4档,即×1,×10,×100,×1000。

2)频率测量准确度3102-⨯±≤∆x xf f .3)被测信号可以是下弦波、三角波和方波。

4)显示方式为4位十进制数显示。

5)使用EWB 进行仿真。

2. 设计原理及方案频率的定义是单位时间(1s )内周期信号的变化次数。

若在一定时间间隔T 内测得周期信号的重复变化次数为N ,则其频率为f=N/T据此,设计方案框图如图1所示。

图1 数字频率计组成框图其基本原理是,被测信号u x 首先经整形电路变成计数器所要求的脉冲信号,频率与被测信号的频率f x 相同。

时钟电路产生时间基准信号,分频后控制计数与保持状态。

当其高电平时,计数器计数;低电平时,计数器处于保持状态,数据送入锁存器进行锁存显示。

然后对计数器清零,准备下一次计数。

其波形逻辑关系图如图2所示。

3. 基本电路设计1)整形电路整形电路是将待测信号整形变成计数器所要求的脉冲信号。

电路形式采用由555定时器所构成的施密特触发器,电路如图XXX 所示。

若待测信号为三角波,输入整形电路,设置分析为瞬态分析,启动电路,其输入、输出波形如图XXX 所示。

可见输出为方波,二者频率相同。

2)时钟产生电路时钟信号是控制计数器计数的标准时间信号,其精度很大程度上决定了频率计的频率测量精度。

当要求频率测量精度较高时,应使用晶体振荡器通过分频获得。

在此频率计中,时钟信号采用555定时器构成的多谐振荡器电路,产生频率为1Kz 的信号,然后再进行分频。

多谐振荡器电路如图XXX 所示。

由555定时器构成多谐振荡器的周期计算公式为XXXXXXXXXX取XXXXXXXXXXXXXX ,则得到振荡频率为1Kz 的负脉冲,其振荡波形如图XXX 所示。

3)分频器电路采用计数器构成分频电路,对1Kz的时钟脉冲进行分频,取得不同量程所需要的时间基准信号,实现量程控制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA实验报告实验三、4位十进制的频率计设计一、实验目的1、设计4位十进制频率计,学习较复杂的数字系统设计方法,熟悉对Quartus II 软件的使用。

2、用4位十进制计数器对用户输入时钟UCLK进行记数二、实验原理:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清零,为下一测频计数周期作准备。

这3个信号可以由一个测频控制信号发生器产生下图中的TESTCTL,它的设计要求是:TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。

当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。

在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。

设置锁存器的好处是:显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。

4位十进制频率计设计的原理框图四、实验步骤及结果五、1破解软件2、新建工程3、程序输入及编译新建文件并输入程序并进行编译。

实验VHDL程序代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY EX10 ISPORT (clk1Hz : IN STD_LOGIC; -- 1 Hz clockuclk : IN STD_LOGIC; -- user clock inputled0 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); led1 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); led2 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); led3 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);p_cnt_en : OUT STD_LOGIC; -- IO01p_rst_cnt: OUT STD_LOGIC; -- IO00p_load : OUT STD_LOGIC -- IO02);END EX10;ARCHITECTURE behv OF EX10 ISCOMPONENT cnt10PORT (clk : IN STD_LOGIC;rst : IN STD_LOGIC;ena : IN STD_LOGIC;outy: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);cout: OUT STD_LOGIC);END COMPONENT;COMPONENT reg4bPORT (load: IN STD_LOGIC;din : IN STD_LOGIC_VECTOR(3 DOWNTO 0);dout: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT testctlPORT (clkk : IN STD_LOGIC;cnt_en : OUT STD_LOGIC;rst_cnt: OUT STD_LOGIC;load : OUT STD_LOGIC);END COMPONENT;SIGNAL cnt_en : STD_LOGIC;SIGNAL rst_cnt : STD_LOGIC;SIGNAL load : STD_LOGIC;SIGNAL dout0, dout1, dout2, dout3: STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL cout0, cout1, cout2, cout3: STD_LOGIC;BEGINp_cnt_en <= cnt_en ;p_rst_cnt <= rst_cnt;p_load <= load ;u_testctl:testctl PORT MAP (clkk => clk1Hz ,cnt_en => cnt_en ,rst_cnt => rst_cnt,load => load); u_cnt10_0:cnt10 PORT MAP (clk => uclk ,rst => rst_cnt,ena => cnt_en ,outy => dout0 ,cout => cout0 );u_cnt10_1:cnt10 PORT MAP (clk => cout0 ,rst => rst_cnt,ena => cnt_en ,outy => dout1 ,cout => cout1 );u_cnt10_2:cnt10 PORT MAP (clk => cout1 ,rst => rst_cnt,ena => cnt_en ,outy => dout2 ,cout => cout2 );u_cnt10_3:cnt10 PORT MAP (clk => cout2 ,rst => rst_cnt,ena => cnt_en ,outy => dout3 ,cout => cout3 );u_reg4b_0:reg4b PORT MAP (load => load ,din => dout0, dout => led0);u_reg4b_1:reg4b PORT MAP (load => load ,din => dout1,dout => led1);u_reg4b_2:reg4b PORT MAP (load => load ,din => dout2,dout => led2);u_reg4b_3:reg4b PORT MAP (load => load ,din => dout3,dout => led3);END behv;TESTCTL.VHD 程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY testctl ISPORT (clkk : IN STD_LOGIC;cnt_en : OUT STD_LOGIC;rst_cnt: OUT STD_LOGIC;load : OUT STD_LOGIC);END testctl;ARCHITECTURE behv OF testctl IS SIGNAL div2clk: STD_LOGIC;BEGINPROCESS(clkk)BEGINIF clkk'EVENT AND clkk = '1' THENdiv2clk <= NOT div2clk;END IF;END PROCESS;PROCESS(clkk, div2clk) BEGINIF clkk = '0' AND div2clk = '0' THENrst_cnt <= '1';ELSErst_cnt <= '0';END IF;load <= NOT div2clk;cnt_en <= div2clk;END PROCESS;END behv;LIBRARY IEEE;USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED. ALL;ENTITY cnt10 ISPORT (clk : IN STD_LOGIC;rst : IN STD_LOGIC;ena : IN STD_LOGIC; outy: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);cout: OUT STD_LOGIC);END cnt10;ARCHITECTURE behv OF cnt10 ISSIGNAL cqi: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk, rst, ena) BEGINIF rst = '1' THENcqi <= "0000";cout <= '0';ELSIF clk'EVENT AND clk = '1' THENIF ena = '1' THENIF cqi = "1001" THENcqi <= "0000";cout <= '1';ELSEcqi <= cqi + 1;cout <= '0';END IF;END IF;END IF;outy <= cqi;END PROCESS;END behv;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY reg4b ISPORT (load: IN STD_LOGIC;din : IN STD_LOGIC_VECTOR(3 DOWNTO 0); dout: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END reg4b;ARCHITECTURE behv OF reg4b ISBEGINPROCESS(load)BEGINIF load'EVENT AND load = '1' THENdout <= din;END IF;END PROCESS;END behv;打开RTL图形时序仿真:打开“assignments”中的“assignments editor”打开EDA,装入模式10.根据EDA 管脚进行指定保存,并下载“sof”文件到EDA启动EDA软件。

并连接到eda试验仪。

相关文档
最新文档