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的输出波形。

EDA实训频率计

EDA实训频率计

桂林理工大学高等职业技术学院数字电路EDA设计实训指导课程名称:数字电路EDA设计题目:频率计及PCB学生姓名:陈日荣专业:09通信1学号:5091968104指导老师:韦燕日期:2011-7-5第一部分设计任务书一、题目:应用VHDL设计的频率计以及硬件电路PCB二、内容:设计一个4位十进制频率计,学习复杂数字系统的设计方法。

三、设计要求:测量并显示1HZ-999MHZ的频率。

四、在明确设计任务和要求的前提理解设计指导书的前提下,自己查阅相关资料,进行设计和论证。

第二部分实施计划一、总课时:30节二、时间安排:1、时间:第19、20周(6月27号—7月8号)2、班级:08通信技术班(共36人)应用VHDL设计的频率计以及硬件电路PCB09通信1 陈日荣04号摘要本论文通过对基于EDA技术PCB印制电路板的制作工序,熟悉EDA的制作过程,在电子设计领域,随着计算机技术、大规模集成电路技术、EDA(Electronics Design Automation)技术的发展和可编程逻辑器件的广泛应用,传统的自下而上的数字电路设计方法、工具、器件已远远落后于当今技术的发展。

基于EDA技术和硬件描述语言的自上而下的设计技术正在承担起越来越多的数字系统设计任务。

本文首先综述了EDA技术的发展概况,FPGA开发的流程、优点,VHDL语言的历史、开发步骤及其优点;然后介绍了频率测量的一般原理;接着使用EDA技术,用VHDL语言完成了数字频率计系统的设计工作;最后介绍了EDA技术的前沿发展趋势及系统开发的几点体会。

本课题的数字频率计设计,完全使用一块复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)芯片EP1C3T1148C实现整个电路的测试信号控制、各种时序逻辑控制、计数功能、数码管的显示输出。

在MAX+PLUSII、QUARTUS软件平台上,用VHDL语言编程完成的软件设计、编译、调试、仿真和下载。

频率计EDA报告

频率计EDA报告

设计报告课程名称在系统编程技术任课教师设计题目四位十进制频率计设计班级姓名学号日期一、题目分析㈠主要指标和要求1.设计4位十进制频率计,学习较复杂的数字系统设计方法;2.深入学习数字系统设计的方法与步骤;3.用元件例化语句写出频率计的顶层文件;4.用VHDL硬件描述语言进行模块电路的设计;5.设计硬件要求:PC机,操作系统为Windows2000/XP,本课程所用系统均为Quartus II设计平台,GW48系列SOPC/EDA实验开发系统。

㈡原理工作说明:1、测频原理若某一信号在T秒时间里重复变化了N 次,则根据频率的定义可知该信号的频率fs 为:fs=N/T 通常测量时间T取1秒或它的十进制时间。

频率总体计方框图如下:图(1)频率总体计方框图(1)、时基T 产生电路:提供准确的计数时间T。

晶振产生一个振荡频率稳定的脉冲,通过分频整形、门控双稳后,产生所需宽度的基准时间T的脉冲,又称闸门时间脉冲。

注意:分频器一般采用计数器完成,计数器的模即为分频比。

(2)、计数脉冲形成电路:将被测信号变换为可计数的窄脉冲,其输出受闸门脉冲的控制。

(3)、计数显示电路:对被测信号进行计数,显示被测信号的频率。

计数器一般采用多位10 进制计数器;控制逻辑电路控制计数的工作程序:准备——计数——显示——复位——准备下一次测量。

2、具体实现根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。

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

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

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

4位十进制频率计设计

4位十进制频率计设计

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

EDA技术与应用实践2.数字频率计

EDA技术与应用实践2.数字频率计

2 数字频率计的设计频率测量在科学研究和实际应用中非常重要,数字频率计是用数字显示被测信号(正弦波、方波或其它周期性变化信号)频率的仪器。

如配以适当的传感器,可以对多种物理量进行测量,因此数字频率计是一种应用比较广泛的测量仪器。

2.1 设计要求设计一个4位简易频率计,测量给定信号的频率,并用十进制数字显示,具体指标为: ⑴ 测量范围,分4档(用数码管读数×档位): ① ×1档,1Hz-9.999KHz ,闸门时间1s ; ② ×10档,10Hz-99.99KHz ,闸门时间0.1s ; ③ ×100档,100Hz-999.9KHz ,闸门时间10ms ; ④ ×1000档,1000Hz-9999KHz ,闸门时间1ms 。

⑵ 显示方式:4位十进制数。

⑶ 用动态扫描方式输出显示控制信号。

2.2 设计方案频率计的基本原理是用一个频率稳定度高的信号源作为基准时钟,对比测量其它信号的频率。

通常情况下计算每秒内待测周期信号的个数,此时称闸门时间为1秒。

闸门时间也可以大于或小于1秒,闸门时间越长,得到的频率值就越准确,但每测量一次频率的时间间隔也越长。

通过改变基准时钟信号的频率或设置控制按键对同一基准时钟信号选择不同分频可以改变闸门时间长短。

数字频率计的组成如图 2 - 1所示。

图 2 - 1 数字频率计组成框图根据频率的定义和频率测量的基本原理,测定信号的频率必须有能够产生闸门信号的控制电路、统计闸门时间内脉冲个数的计数电路、对计数结果进行保存的锁存电路以及将测量结果送出的显示控制电路等。

这里闸门时间通过档位选择按键对外部基准时钟信号进行不同的分频获得,外部基准时钟信号同时作为显示电路的扫描信号。

因此4位十进制频率计的核心部分由分频电路、测频控制电路、十进制计数器、存器以及扫描显示控制电路组成。

2.3 模块设计计 数 器锁 存 器分 频显 示 控 制信 号 整 形核心控制电路测频 控制⒈ 测频控制模块频率计的关键是产生测量频率控制时序的测频控制信号发生器。

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芯片上,通过严格的测试后,能够较准确地测量各种常用的波形信号的频率,而且还能对其他多种物理量进展测量。

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位的十进制的数字频率计

--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位十进制频率计设计

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位十进制频率计顶层文件原理图。

EDA实验报告_4位十进制频率计设计

EDA实验报告课程名称:EDA技术实验名称:4位十进制频率计设计班级:姓名:指导老师:签名:一、实验目的1.设计4位十进制频率计,学习较复杂的数字系统设计方法;2.用VHDL硬件描述语言进行模块电路的设计;3.掌握较为复杂的原理图层次化设计,熟悉详细的设计流程。

二、实验仪器计算机一台;Quartus Ⅱ软件;U盘。

三、实验内容与步骤在QuartusⅡ上完成4位计数器、测频控制器的设计以及4位锁存器的设计,根据以上三个设计完成4位十进制频率计的设计并验证。

1. 4位计数器设计(1)输入完整的VHDL语言描述,具体描述如下。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT4B 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 CNT4B;ARCHITECTURE behav OF CNT4B ISSIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINP_REG: PROCESS(CLK, RST, ENA)BEGINIF RST = '1' THEN CQI <= "0000";ELSIF CLK'EVENT AND CLK = '1' THENIF ENA = '1' THEN CQI <= CQI + 1;END IF;END IF;OUTY <= CQI ;END PROCESS P_REG ; --进位输出COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3);END behav;(2) 模块图形符号及逻辑功能描述如图1所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
COMPONENT CONTROL
PORT(CLK:IN STD_LOGIC;--测频控制信号(选取1HZ)
CNT_EN:BUFFER STD_LOGIC;--计数器时钟使能
LOAD:OUT STD_LOGIC;--输出锁存信号
RST_CNT:OUT STD_LOGIC);--计数器清零
END COMPONENT;
DOUT2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--输出计数值
DOUT3: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--输出计数值
COUTT: OUT STD_LOGIC);
END FREQ;
ARCHITECTURE behave OF FREQ IS
SIGNAL q1:STD_LOGIC_VECTOR(3 DOWNTO 0);--定义4位信号q1
BEGIN
PROCESS (CLK)
BEGIN
IF (RST='1')THEN--异步清零
q1<="0000";
ELSE
IF (CLK 'EVENT AND CLK='1')THEN--在时钟信号CLK的上升沿
LOAD:OUT STD_LOGIC;--输出锁存信号
RST_CNT:OUT STD_LOGIC);--计数器清零
END control;
ARCHITECTURE behave OF control IS
SIGNAL tmp:INTEGER RANGE 0 TO 1;
BEGIN
PROCESS (CLK,CNT_EN)
3)设计内容下载至目标芯片,在EDA的GW48型实验箱进行功能验证。
4)谈谈该课题的课程设计中遇到的问题,获得哪些技能和体会,以及建设性意见。
四、设计步骤和安排:
(1)题目安排;图书馆查相关资料;
(2)设计原理研究,总体设计;
(3)各主要模块的VHDL设计。各模块的设计仿真分析。
(4) 完成系统顶层文件设计,系统总体功能的仿真分析。
学号:XXXXXX
XX大学
EDA技术
课程设计报告
题目:4位十进制频率计设计
学生:XXX
学院(系):信息科学与工程学院专业班级:电子XXX
指导教师:XXXX
EDA课程设计任务书
一、设计题目4位十进制频率计设计
二、设计背景
在1秒钟的时间间隔内对输入时钟信号的时钟上升沿进行计数,计数1秒钟该时钟有多少个时钟周期,即得到时钟频率。设计一4位加法十进制计数器进行计数,有一4位计数值输出端,计数到10则有1位计数溢出,输出至溢出端。该溢出端可连至另一4位加法十进制计数器的输入端进行计数,以此类推,由4个加法计数器级联,它们的计数值组成了频率计4位计数值,经锁存器连至数码管显示。
RST:IN STD_LOGIC;--清零信号
ENA:IN STD_LOGIC;--计数使能信号
COUT:OUT STD_LOGIC;--溢出端
OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--计数结果
END frequency;
ARCHITECTURE behave OF frequency IS
OUTY<=q1;
END PROCESS;
END behave;
2.5.3 波形图
2.5.4 原理图
2.6 4位锁存器的设计
为了数据显示稳定,不会因周期性清零而闪烁,设计一4位锁存器,对输出数据锁存。
2.6.1 设计流程图
2.6.2 VHDL程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
(3)设计一测频控制器,产生1s的计数允许信号,1S结束后产生计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清零信号。1HZ测频控制信号作为其输入。
要求:
1)根据系统设计要求,采用自顶向下的方法,划分系统主要模块,画出整体设计原理框图。
2)根据工作原理、用硬件描述语言对设计内容实现,列出设计程序清单,给出仿真波形图和调试中存在问题及解决方法。
RST_CNT<='1';
ELSE
RST_CNT<='0';
END IF;
END PROCESS;
END behave;
2.7.3 波形图
2.7.4 原理图
2.8 4位十进制频率计例化语句顶层文件VHDL程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
(5) 将设计内容进行硬件配置,在GW48实验箱上进行调试。
(6) 撰写课程设计报告、答辩并提交报告。
1 前言
1.1 概念
本系统为《4位十进制频率计设计》。系统任务描述:在1秒钟的时间间隔内对输入时钟信号的时钟上升沿进行计数,计数1秒钟该时钟有多少个时钟周期,即得到时钟频率。
1.2 系统要求及意义
设计一4位加法十进制计数器进行计数,有一4位计数值输出端,计数到10则有1位计数溢出,输出至溢出端。该溢出端可连至另一4位加法十进制计数器的输入端进行计数,以此类推,由4个加法计数器级联,它们的计数值组成了频率计4位计数值,经锁存器连至数码管显示。
2.6.3 波形图
2.6.4 原理图
2.7 测频控制器的设计
设计一测频控制器,产生1s的计数允许信号,1S结束后产生计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清零信号。1HZ测频控制信号作为其输入。
2.7.1 设计流程图
2.7.2 VHDL程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
三、设计内容及要求
设计内容:
设计一4位十进制频率计,对输入信号的频率进行测量,将测量频率值经由数码管显示。
(1)设计含异步清零和同步时钟使能的4位10进制加法计数器,有一输入端CLK,清零复位端RST,使能端ENA,4位加法计数输出端OUTY和1位溢出端COUT。
(2)为了数据显示稳定,不会因周期性清零而闪烁,设计一4位锁存器,对输出数据锁存。
END COMPONENT;
COMPONENT REG4B
PORT(LOAD:IN STD_LOGIC;--控制端,置1时锁存输出
DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);--输入的计数值
DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--输出的计数值
2.5.1 设计流程图
2.5.2 VHDL程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY frequency IS
PORT(CLK:IN STD_LOGIC;--时钟信号
IF ENA='1' THEN--同步使能端为1,让信号从0--9进行计数
q1<=q1+1;
IF q1="0000" THEN
COUT<='0';
ELSIF q1="1001" THEN--超出9时进位
q1<="0000";
COUT<='1ຫໍສະໝຸດ ;--进位1END IF;
END IF;
END IF;
END IF;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY control IS
PORT(CLK:IN STD_LOGIC;--测频控制信号(验证时取1HZ)
CNT_EN:BUFFER STD_LOGIC;--计数器时钟使能
1.3 系统的主要功能
在1秒钟的时间间隔内对输入时钟信号的时钟上升沿进行计数,计数1秒钟该时钟有多少个时钟周期,即得到时钟频率。
1.4 系统的使用原理
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1 秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清零信号。这清零个信号可以由一个测频控制信号发生器(CONTROL)产生,它的设计要求是,CONTROL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器frequency的ENA使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY reg4b IS
PORT(LOAD:IN STD_LOGIC;--控制端,置1时锁存输出
DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);--输入的计数值
DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--输出的计数值
END COMPONENT;
SIGNAL a,b,c,d,e,f:STD_LOGIC;--定义信号a,b,c,d,e,f
相关文档
最新文档