四位和八位频率计的原件例化语句 实验报告
数字逻辑电路大型实验4位数字频率计

4位数字频率计一、实验內容用PLD设计一4位数字频率计,测量范围为0-9999Hz,设被测信号为方波,幅值已知足要求。
二、数字频率计的设计1.工作原理:数字频率计的原理框图如下图所示。
当闸门信号(宽度为1S的正脉冲)到来时,闸门开通,被测信号通过闸门送到计数器,计数器开始计数,当闸门信号结束时,计数器停止计数。
由于闸门开通时刻为1S,计数器的计数值就是被测信号频率。
为了使测得的频率值准确,在闸门开通之前,计数器必需清零。
为了使显示电路稳固地显示频率值,在计数器和显示电路之间加了锁存器,当计数器计数结束时,将计数值通过锁存信号送到锁存器。
控制电路在时基电路的控制下产生三个信号:闸门信号、锁存信号和清零信号。
2.数字频率计原理图:(上图:原理框图;下图:原理图)3.CNT10、CNT1二、CODE、LOCK模块的VHDL语言程序;――――――――――――――CNT10SRC――――――――――――――library ieee;use cnt10 isport(clk: in std_logic;clr: in std_logic;cs: in std_logic;qq: buffer std_logic_vector(3 downto 0);co: out std_logic);end cnt10;architecture one of cnt10 isbeginprocess(clk, clr, cs)beginif (clr = '1') then qq <= "0000";elsif (clk'event and clk = '1') thenif (cs = '1') thenif (qq = 9) then qq <= "0000";else qq <= qq + 1;end if;end if;end if;end process;process(qq)beginif (qq = 9) then co <= '0';else co <= '1';end if;end process;end one;――――――――――――――CNT12SRC――――――――――――――library ieee;use cnt12 isport(clk: in std_logic;qq: buffer std_logic_vector(3 downto 0));end cnt12;architecture one of cnt12 isbeginprocess(clk)beginif (clk'event and clk='1') thenif (qq = 11) then qq <= "0000";else qq <= qq + 1;end if;end if;end process;end one;――――――――――――――CODE SRC――――――――――――――library ieee;use code isport(dd: in std_logic_vector(3 downto 0);cs: out std_logic;clr: out std_logic;lock: out std_logic);end code;architecture one of code isbeginprocess(dd)beginif (dd = 0) then clr <= '1';else clr <= '0';end if;if (dd = 11) then lock <= '1';else lock <= '0';end if;if ((dd > 0) and (dd < 9)) then cs <= '1';else cs <= '0';end if;end process;end one;――――――――――――――LOCK SRC ――――――――――――――library ieee;use lock isport(clk: in std_logic;dd: in std_logic_vector(3 downto 0);qq: out std_logic_vector(3 downto 0));end lock;architecture one of lock isbeginprocess(clk, dd)beginif (clk'event and clk = '1') then qq <= dd;end if;end process;end one;4.CNT10、CNT1二、CODE、LOCK模块的仿真结果;(附原始记录)―――――――――――――――CNT10仿真结果―――――――――――――――――――――――――――――CNT12仿真结果―――――――――――――――――――――――――――――CODE仿真结果――――――――――――――――――――――――――――――LOCK仿真结果―――――――――――――――5.项目下载步骤;(1)器件选定选择器件为MAX7000S系列的EPM7128SLC84(2)管脚锁定(说明为何要进行管脚锁定)所谓管脚锁定,就是将加法器adder+gdf的输入,输出信号安排在器件的指定管脚上.在实际应用中,PLD器件常常与其他电路连在一路,因此PLD器件的管脚锁定应按如实际电信号名管脚号信号名管脚号信号名管脚号信号名管脚号LED10 64 LED10 73 LED10 4 LED10 12 LED11 65 LED11 75 LED11 6 LED11 15 LED12 67 LED12 76 LED12 5 LED12 16 LED13 68 LED13 77 LED13 8 LED13 17 LED14 69 LED14 79 LED14 9 LED14 18 LED15 70 LED15 80 LED15 10 LED15 20 LED16 74 LED16 81 LED16 11 LED16 21 CLKIN 33 CLKI 35利用ByteBlaster下载电缆把数字频率计项目以JATG方式下载到EDA实验板的EPM7128SLC84器件中.在编程进程中,若器件或电缆或电源有问题,则会产生错误警告信息.(4)频率测量在CLKO输入端加上不同的时钟信号,按照数字频率计上的显示植,观察测得的频率是不是准确三、选做部份:4位乘法器的设计1.乘法控制器的的设计(1)控制器的ASM图:(2)控制器的VHDL语言程序:END mulcon;ARCHITECTURE one OF mulcon ISSIGNAL current_state,next_state:BIT_VECTOR(1 DOWNTO 0);CONSTANT s0:BIT_VECTOR(1 DOWNTO 0):="00";CONSTANT s1:BIT_VECTOR(1 DOWNTO 0):="01";CONSTANT s2:BIT_VECTOR(1 DOWNTO 0):="10";CONSTANT s3:BIT_VECTOR(1 DOWNTO 0):="11";BEGINcom1:PROCESS(current_sTA TE,start,i4)BEGINCASE current_state ISWHEN s0=>IF(start='1')THEN next_state<=S1;ELSE next_state<=s0;END IF;WHEN s1=>next_state<=s2;WHEN s2=>next_state<=s3;WHEN s3=>IF(i4='1')THEN next_state<=s0;ELSE next_state<=s2;END IF;END CASE;END PROCESS com1;com2:PROCESS(current_state,bi)BEGINCASE current_state ISWHEN s0=>endd<='1';clr<='1';ca<='0';cb1<='0';cb0<='0';cm1<='0';cm0<='0';cc<='0';WHEN s1=>endd<='0';clr<='0';ca<='1';cb1<='1';cb0<='1';cm1<='0';cm0<='0';cc<='0';WHEN s2=>IF(bi='1')THEN endd<='0'; clr<='1';ca<='0';cb1<='0';cb0<='0';cm1<='1';cm0<='1';cc<='1';ELSE endd<='0'; clr<='1';ca<='0';cb1<='0';cb0<='0';cm1<='0';cm0<='0';cc<='1';END IF;WHEN s3=>endd<='0';clr<='1';ca<='0';cb1<='0';cb0<='1';cm1<='0';cm0<='1';cc<='0';END CASE;END PROCESS com2;reg:PROCESS(clk)BEGINIF clk='1' AND clk'EVENT THENcurrent_state<=next_state;END IF;END PROCESS reg;END;(3)控制器的仿真时序图(附原始记录)2.顶层原理图3.顶层原理图仿真结果(附原始记录)四、实验体会;(实验中碰到什么问题?如何解决?)。
四位数字频率计实验报告

数字逻辑电路大型实验报告姓名指导教师专业班级学院信息工程学院提交日期一、实验目的学习用FPGA实现数字系统的方法二、实验内容1.FPGA, Quartus II 和VHDL使用练习2.四位数字频率计的设计三、四位数字频率计的设计1.工作原理当系统正常工作时,8Hz信号测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。
在数码显示管上可以看到计数结果。
工作原理图如下:2.设计方案1) 整形电路:整形电路是将待测信号整形变成计数器所要求的脉冲信号2)控制信号产生器(分频电路):用8Hz时钟信号产生1Hz时钟信号、锁存器信号和cs信号3)计时器:采用级联的方式表示4位数4)锁存器:计数结束后的结果在锁存信号控制下锁存5)译码器:将锁存的计数结果转换为七段显示码3.顶层原理图(总图)注:①CLK1:8Hz时钟信号输入; CLKIN:待测信号输入;②显像时自左而右分别是个位、十位、百位、千位;③顶层原理图中:(1)consignal模块:为频率计的控制器,产生满足时序要求的三个控制信号;(2)cnt10模块:有四个,组成四位十进制(0000-1001)计数器,使计数器可以从0计数到9999;(3)lock模块:有四个,锁存计数结果;(4)decoder模块:有四个,将8421BCD码的锁存结果转换为七段显示码。
4.底层4个模块(控制信号产生模块,十进制计数器模块,锁存器模块,译码模块)的仿真结果。
cnt10模块(十进制计数器模块):输入:CLK:待测量的频率信号(时钟信号模拟);CLR:清零信号,当clr=1时计数器清零,输出始终为0000,只有当clr=0时,计数器才正常计数CS:闸门信号,当cs=1时接收clk计数,当cs=0时,不接收clk,输出为0;输出:co:进位信号,图中,在1001(9)的上方产生一个进位信号0,其余为1。
四位数字频率计实验报告

数字逻辑电路大型实验报告姓名指导教师专业班级学院信息工程学院提交日期1一、实验目的学习用FPGA实现数字系统的方法二、实验内容1.FPGA, Quartus II 和VHDL使用练习2.四位数字频率计的设计三、四位数字频率计的设计1.工作原理当系统正常工作时,8Hz信号测频控制信号发生器进行信号的变换,产生计数信号,被测信号通过信号整形电路产生同频率的矩形波,送入计数模块,计数模块对输入的矩形波进行计数,将计数结果送入锁存器中,保证系统可以稳定显示数据,显示译码驱动电路将二进制表示的计数结果转换成相应的能够在七段数码显示管上可以显示的十进制结果。
在数码显示管上可以看到计数结果。
工作原理图如下:2.设计方案21) 整形电路:整形电路是将待测信号整形变成计数器所要求的脉冲信号2)控制信号产生器(分频电路):用8Hz时钟信号产生1Hz时钟信号、锁存器信号和cs信号3)计时器:采用级联的方式表示4位数4)锁存器:计数结束后的结果在锁存信号控制下锁存5)译码器:将锁存的计数结果转换为七段显示码3.顶层原理图(总图)3注:①CLK1:8Hz时钟信号输入; CLKIN:待测信号输入;②显像时自左而右分别是个位、十位、百位、千位;③顶层原理图中:(1)consignal模块:为频率计的控制器,产生满足时序要求的三个控制信号;(2)cnt10模块:有四个,组成四位十进制(0000-1001)计数器,使计数器可以从0计数到9999;(3)lock模块:有四个,锁存计数结果;(4)decoder模块:有四个,将8421BCD码的锁存结果转换为七段显示码。
4.底层4个模块(控制信号产生模块,十进制计数器模块,锁存器模块,译码模块)的仿真结果。
cnt10模块(十进制计数器模块):输入:CLK:待测量的频率信号(时钟信号模拟);CLR:清零信号,当clr=1时计数器清零,输出始终为0000,只有当clr=0时,计数器才正常计数CS:闸门信号,当cs=1时接收clk计数,当cs=0时,不接收clk,输出为0;输出:4co:进位信号,图中,在1001(9)的上方产生一个进位信号0,其余为1。
数字频率计课程设计实习报告

数字频率计设计报告书一、设计要求设计一个4位十进制数字式频率计,最大测量范围为10MHz。
量程分10kHz、100kHz、1MHz和10MHz四档(最大读数分别为9.999kHz、99.99kHz、999.9kHz、9999.kHz).量程自动转换规则如下:(1)当读数大于9999时,频率计处于超量程状态,此时显示器发出溢出指示,下一次测量时,量程自动增大一档,小数点位置随量程变更自动移位。
(2)可用手动方式使量程在每次测量开始时处于最低档。
显示方式如下:(3)采用记忆显示方式,即计数过程中不显示数据,待计数过程结束以后,显示计数结果,将此显示结果保持到下一次计数结束。
显示时间应不小于1s。
(4)送入信号应是符合CMOS电路要求的脉冲波,对于小信号模拟信号应有放大整形电路。
二、方案设计<1>整体思路所谓频率就是周期性信号在单位时间 (1s)内变化的次数。
若在一定时间间隔 T内测得周期性信号的重复变化次数为 N ,则频率可表示为 f =N /T (Hz)。
被测信号fx经放大整形电路变成计数电路所要求的脉冲信号,其频率与被测信号fx的频率相同。
基准电路提供标准时间基准信号clk,其高电平持续时间 t 1 = 1 s,当 1 s信号来到时 ,闸门电路开通 ,被测脉冲信号通过闸门电路,成为计数电路的计数脉冲 CP,计数电路开始计数,直到 ls信号结束时闸门电路关闭 ,停止计数。
若在闸门时间 1 s内计数电路计得的脉冲个数为 N ,则被测信号频率 f =NHz。
控制电路的作用有两个:一是产生锁存脉冲 CLK,使显示电路上的数字稳定;二是产生清“0”脉冲,使计数电路每次测量从零开始计数。
<2>时钟信号的选择设计电路中时钟信号采用12M有源晶振产生,下面是12M有源晶振引脚图:<3>整形电路的选择整形电路中可以用运算放大器LM311组成电压选择器实现,以下是关于此芯片的资料:引脚功能:GROUND/GND 接地INPUT + 正向输入端INPUT - 反向输入端OUTPUT 输出端BALANCE 平衡BALANCE/STROBE 平衡/选通V+ 电源正V- 电源负NC 空脚LM311引脚图由于LM311过于复杂且此次设计要求精度不高,整形电路可以改为如下电路:这样产生稳定3.3V为幅值的信号送入EPM570中,对芯片起到保护作用。
实验七、八频率计设计

实验七四位十进制频率计的设计一、实验目的1、掌握计数器的设计方法;2、学习较复杂的数字系统的设计方法;3、掌握实现时钟上升沿的设计方法。
二、设计要求1、编写4位十进制计数器的VHDL源程序;2、进行编译、引脚锁定、下载测试;3、进行频率计仿真波形的测试与分析;4、写出设计性实验报告。
三、设计提示图1 四位十进制频率计顶层文件原理图1、实验原理提示:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。
这3个信号可以由一个测频控制信号发生器产生,如图1中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。
当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。
在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。
设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。
锁存信号之后,必须有一清零信号RST_CNT 对计数器进行清零,为下1秒钟的计数操作作准备。
其工作时序波形如图2。
图2 频率计测频控制器TESTCTL测控时序图2、引脚锁定以及硬件下载测试提示:如果目标器件是EPF10K10,建议选实验电路模式0,4个数码管(数码4-1:PIO31-PIO16)显示测频输出;待测频率输入FIN由clock0输入,频率可选4Hz、256HZ . . .或更高;1HZ测频控制信号F1HZ可由clock2输入(用电路帽选选1Hz)。
四、实验报告要求根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;设计原程序,程序分析报告、仿真波形图及其项目分析。
频率计的制作实验报告

频率计的制作实验报告实验目的:本实验的目的是通过制作一个简单的频率计,了解频率计的工作原理以及实际应用。
实验仪器与材料:1. 模块化电子实验箱2. 函数信号发生器3. 示波器4. 电压表5. 电阻、电容等基本元件实验原理:频率计是用于测量信号频率的一种仪器。
其基本原理是利用周期性信号的周期长度与频率之间的倒数关系,通过计算周期长度来确定信号的频率。
实验步骤:第一步:搭建电路1. 将函数信号发生器的输出接入电路板上的输入端,作为输入信号源。
2. 将电路板上的元件按照电路图连接,包括电容、电阻等。
确保电路连接正确。
第二步:调试电路1. 将函数信号发生器的频率设置为一个已知的数值,例如1000Hz。
2. 使用示波器测量电路输出端信号的周期长度。
3. 使用计算器计算出信号的频率。
4. 调整电路参数,直到测量到的频率与设定的频率相等。
第三步:验证测量准确性1. 将函数信号发生器的频率调整到其他已知值,例如2000Hz。
2. 重复上述步骤,测量并计算信号的频率。
3. 比较测量到的频率与设定的频率,验证测量准确性。
实验结果与分析:通过实验,我们成功制作了一个简单的频率计。
在调试电路的过程中,我们可以通过测量输出信号的周期长度,并利用频率的倒数与周期长度的关系计算出信号的频率。
通过与设定的频率进行比较,验证了测量的准确性。
实验中可能存在的误差主要来自于电路元件的稳定性以及测量设备的精度。
为了提高测量准确性,可以选择更稳定的元件,并使用更精确的测量设备。
实验结论:本实验通过制作一个简单的频率计,深入了解了频率计的工作原理和实际应用。
通过测量信号的周期长度并计算出频率,我们可以准确地测量信号的频率。
实验结果验证了测量的准确性,并提出了进一步提高准确性的建议。
频率计在电子测量中具有重要的应用价值,可以广泛应用于通信、电子设备维修等领域。
简易频率计实验报告
实验二简易数字频率计实验目的:(1)学会各种简易数字频率计的设计方法(2)学会VHDL的多进程及多层次设计方法实验原理:设计一个四位数字频率计,此频率计共分四档。
一档:0~9999Hz二档:10~99.99kHz三档:100~999.9kHz四档:1~10MHz分频器模块FEN通过对1Hz的时钟的分频得到0.5Hz的时钟信号。
测频模块FTEST,是整个程序的核心,此模块完成在1s的时间内对被测信号计数的功能,并通过输出数据实现自动换挡的功能。
LOCK模块用来锁存数据。
实验内容:在MAX+plusII中用VHDL语言输入FEN2 、MUX21、CD源程序,保存名字与实体名一致,后缀为vhd,选择目标器件为EP1K30TC144-3,然后进行编译、仿真。
参考程序:1、FEN通过对1Hz的时钟的分频得到0.5Hz的时钟信号。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fen ISPORT(clk:IN STD_LOGIC;q:OUT STD_LOGIC);END fen;ARCHITECTURE fen_arc OF fen ISBEGINPROCESS(clk)VARIABLE x:STD_LOGIC;BEGINIF clk'EVENT AND clk='1'THENx:=NOT x;END IF;q<=x;END PROCESS;END fen_arc;波形仿真图:2、FTSET此模块完成在1s的时间内对被测信号计数的功能,并通过输出数据实现自动换挡的功能。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ftest ISPORT(clr,Fx,door:IN STD_LOGIC;alm:OUT STD_LOGIC;q3,q2,q1,q0,dang:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ftest;ARCHITECTURE CORN_ARC OF ftest ISBEGINPROCESS(door,Fx)VARIABLE c0,c1,c2,c3,c4,c5,c6 :STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE x:STD_LOGIC;BEGINIF Fx'EVENT AND Fx='1'THENIF door='1'THENIF c0<"1001"THENc0:=c0+1;ELSEc0:="0000";IF c1<"1001"THENc1:=c1+1;ELSEc1:="0000";IF c2<"1001"THENc2:=c2+1;ELSEc2:="0000";IF c3<"1001"THENc3:=c3+1;ELSEc3:="0000";c4:=c4+1;ELSEc4:="0000";IF c5<"1001"THEN c5:=c5+1;ELSEc5:="0000"; IF c6<"1001"THEN c6:=c6+1;ELSEc6:="0000";alm<='1';END IF;END IF;END IF;END IF;END IF;END IF;END IF;ELSEIF clr='0'THENalm<='0';END IF;c6:="0000";c5:="0000";c4:="0000";c3:="0000";c2:="0000";c1:="0000";c0:="0000";END IF;IF c6/="0000"THENq3<=c6;q2<=c5;q1<=c4;q0<=c3;dang<="0100";ELSIF c5/="0000"THEN q3<=c5;q2<=c4;q1<=c3;q0<=c2;dang<="0011";q3<=c4;q2<=c3;q1<=c2;q0<=c1;dang<="0010";ELSEq3<=c3;q2<=c2;q1<=c1;q0<=c0;dang<="0001";END IF;END IF;END PROCESS;END CORN_ARC;波形仿真图:3、LOCK模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LOCK ISPORT(A0,A1,A2,A3,A4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);q0,q1,q2,q3,q4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);clk:IN STD_LOGIC);END LOCK;ARCHITECTURE ART OF LOCK ISBEGINPROCESS(clk)BEGINIF(clk'EVENT AND clk='1')THEN q0<=A0;q1<=A1;q2<=A2;q3<=A3;q4<=A4;END IF;END PROCESS;END ART;波形仿真图:顶层仿真波形:实验结果:实现了四位数字频率计的设计。
vhdl语言描述的4位十进制的频率计的设计
vhdl语⾔描述的4位⼗进制的频率计的设计实验七4位⼗进制频率计的设计实验⽬的:设计⼀个4位⼗进制频率计,学习复杂数字系统的设计⽅法。
实验原理:根据频率的定义和频率测量的基本原理,测定信号的频率必须有⼀个脉宽为1秒的脉冲计数允许信号,1秒计数结束后,计数值(即所测信号频率)锁⼊锁存器,并为下⼀次测频作准备,即将计数器清零。
试验内容:1、根据频率计的⼯作原理,将电路划分成控制器、计数器、锁存器和LED显⽰⼏个模块,控制器——产⽣1秒脉宽的计数允许信号、锁存信号和计数器清零信号计数器——对输⼊信号的脉冲数进⾏累计锁存器——锁存测得的频率值LED显⽰——将频率值显⽰在数码管上顶层⽂件框图如下:2、⽤元件例化语句写出频率计的顶层⽂件。
3、⽤VHDL硬件描述语⾔进⾏模块电路的设计。
本实验中不少模块在之前的实验中已经有所涉及,只需要对以前的设计做部分修改即可⽤于这次实验。
提⽰:⼗进制计数器输出的应是4位⼗进制数的BCD码,因此输出⼀共是4×4bit。
4、⽤QuartusII对设计进⾏编译、综合、仿真,给出仿真波形和时序分析数据(不包括数码管显⽰部分)。
5、通过QuartusII集成环境,将设计下载到实验电路上进⾏硬件测试。
实验结果:各模块电路的VHDL描述:10进制计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport (rst,fx,ena:in std_logic;cout: out std_logic;outy :out std_logic_vector(3 downto 0)); end cnt10; architecture behv of cnt10 isbeginprocess (rst,ena,fx)variable cqi :std_logic_vector(3 downto 0);beginif rst='1' then cqi :=(others =>'0');elsif fx'event and fx='1' thenif ena ='1' thenif cqi < 9 then cqi:=cqi+1;cout<='0';elsif cqi=9 thencqi :=(others =>'0');cout<='1';end if;elsif ena='0' then cqi:=(others =>'0');end if;end if;outy <=cqi;end process;end behv;4位10进计数器library ieee;use ieee.std_logic_1164.all;entity cnt10_4 isport(fx,rst,ena:in std_logic;d:out std_logic_vector(15 downto 0));end entity;architecture one of cnt10_4 iscomponent cnt10port (rst,fx,ena:in std_logic;cout: out std_logic;outy :out std_logic_vector(3 downto 0));end component;signal e:std_logic_vector(3 downto 0);beginu1:cnt10 port map(fx=>fx,rst=>rst,ena=>ena,cout=>e(0),outy=>d(3 downto 0)); u2:cnt10 port map(fx=>e(0),rst=>rst,ena=>ena,cout=>e(1),outy=>d(7 downto 4));。
实验五 8位十进制频率计
EDA实验报告8位十进制频率计电信1002班姓名:谌晴学号:1404100320实验五8位十进制频率计一、实验目的设计8位十进制频率计,学习较复杂的数字系统设计方法;学习VHDL编程例化语句的使用。
二、实验内容在SmartSOPC 实验箱上实现8位十进制频率计的设计。
被测信号从fre_input 引脚(FPGA的13脚,位于QuickSOP核心板的左上角)输入,经过检测后测得的频率值用数码管1~8显示。
被测的频率信号由测频模块内部产生并输出到外部引脚,其频率对应关系如下表1所示:表1 输出引脚对应的频率值三、实验原理根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1s的输入信号脉冲技术允许的信号;1s计数结束后,计数值锁入锁存器,并将下一测频计数周期作准备的计数器清零。
计数器在这里是由8个十进制计数器级联组成,如图1所示:图1 频率计计数器结构图四、实验步骤1)启动Quartus II 建立一个空白工程,然后命名为freqtest.qdf。
新建VHDL源程序文件freqtest.vhd、cnt10.vhd和scan_led.vhd,输入程序代码并保存(完整的VHDL程序参考程序清单1),分别进行综合编译。
若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。
2)选择目标期间并对相应的引脚进行锁定,在这里所选择的期间为Altera公司Cyclone系列的EP1C12Q240C8芯片,引脚锁定方法如下表2所示,将未使用的引脚设置为三态输入(一定要设置,否则可能会损坏芯片)。
表2 引脚锁定方法3)将freqtest.vhd设置为顶层实体。
对该工程文件进行全程编译处理,若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。
4)连接硬件、下载程序。
(1)用实验箱配置的连线将核心板上的PACK区的引脚236、237、238和239分别于数码管显示去的COM3(DIG_COM)的DIG4~DIG7相对应连接。
EDA实验--元件例化语言描述的测频控制器
EDA实验(三)CLK作是测频控制时钟频率固定为1HZ。
Fsin是待测信号。
1、1)、测频控制器工作功能仿真波形:2)、测频控制器工作时序仿真波形:2、1)、4位频率计工作功能仿真波形4位频率计功能仿真分析:由功能仿真波形可以看出其低12位为000100000101,每四个一组转化后为105,经译码器后读得105。
待测周期为9.52ms,待测频率计算得105(1/0.00952)。
输入数据与测得数据一致。
2)、4位频率计工作时序波形:3、1)、8位频率计工作功能仿真波形:2)、8位频率计工作时序仿真波形:8位频率计功能时序仿真分析:同理由时序仿真波形可以看出其低12位为000100000101,其于全部为0,每四个一组转化后为105,经译码器后读得105。
其待测周期为9.52ms,待测频率计算得105(1/0.00952)。
输入数据与测得数据一致。
且时序仿真波形与功能仿真波形相比出现了毛刺。
一、4位十进制计数器的VHDL代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 isport (clk,clr,ena:in std_logic;cq:out std_logic_vector(3 downto 0);carry_out:out std_logic);end cnt10;architecture behav of cnt10 isbeginprocess(clk,clr,ena)variable cqi:std_logic_vector(3 downto 0);beginif clr='1' then cqi:=(others=>'0');elsif clk'event and clk='0' thenif ena='1' thenif cqi<9 then cqi:=cqi+1;else cqi:=(others=>'0');end if;end if;end if;if cqi=9 then carry_out<='1';else carry_out<='0';end if;cq<=cqi;end process;end behav;二、4位锁存器VHDL语言: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;architecture art of reg4b isbeginprocess(load,din)beginif(load'event and load = '1')thendout<=din;end if;end process;end art;三、测频控制器的VHDL语言:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testctl isport( clk : std_logic;tsten,clr_cnt,load : out std_logic);end;architecture art of testctl issignal clk_div2 : std_logic;beginload<=not clk_div2;tsten <=clk_div2;p1:process(clk)beginif clk'event and clk='1' thenclk_div2<=not clk_div2;end if;end process;p2:process(clk,clk_div2)beginif clk='0'and clk_div2='0' thenclr_cnt<='1';elseclr_cnt<='0';end if;end process;end art;四、4位十进制频率计的顶层文件:library ieee;use ieee.std_logic_1164.all;entity cui4 isport(fsin,clk:in std_logic;dout:out std_logic_vector(16 downto 0));end;architecture art of cui4 iscomponent cnt10port( clk,clr,ena:in std_logic;cq:out std_logic_vector(3 downto 0);carry_out: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 ( clk:in std_logic;tsten,clr_cnt,load:out std_logic);end component;signal ena:std_logic;signal clr:std_logic;signal load:std_logic;signal carry0:std_logic;signal carry1:std_logic;signal carry2:std_logic;signal clr_cnt:std_logic;signal tsten :std_logic;signal a,b: std_logic;signal cq0,cq1,cq2,cq3:std_logic_vector(3 downto 0);beginu0:testctl port map(clk=>clk,tsten=>a,clr_cnt=>b,load=>load);u1:cnt10 port map(clk=>fsin,clr=>b,ena=>a,cq=>cq0,carry_out=>carry0); u2:reg4b port map(load,cq0,dout(3 downto 0));u3:cnt10 port map(clk=>carry0,clr=>b,ena=>a,cq=>cq1,carry_out=>carry1);u4:reg4b port map(load,cq1,dout(7 downto 4));u5:cnt10 port map(clk=>carry1,clr=>b,ena=>a,cq=>cq2,carry_out=>carry2); u6:reg4b port map(load,cq2,dout(11 downto 8));u7:cnt10 port map(clk=>carry2,clr=>b,ena=>a,cq=>cq3,carry_out=>dout(16)); u8:reg4b port map(load,cq3,dout(15 downto 12));end art;五、8位十进制频率计的顶层文件:library ieee;use ieee.std_logic_1164.all;entity cui8 isport(fsin,clk:in std_logic;dout:out std_logic_vector(32 downto 0));end;architecture art of cui8 iscomponent cnt10port( clk,clr,ena:in std_logic;cq:out std_logic_vector(3 downto 0);carry_out: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 ( clk:in std_logic;tsten,clr_cnt,load:out std_logic);end component;signal ena:std_logic;signal clr:std_logic;signal load:std_logic;signal carry0:std_logic;signal carry1:std_logic;signal carry2:std_logic;signal carry3:std_logic;signal carry4:std_logic;signal carry5:std_logic;signal carry6:std_logic;signal clr_cnt:std_logic;signal tsten :std_logic;signal a,b: std_logic;signal cq0,cq1,cq2,cq3,cq4,cq5,cq6,cq7:std_logic_vector(3 downto 0);beginu0:testctl port map(clk=>clk,tsten=>a,clr_cnt=>b,load=>load);u1:cnt10 port map(clk=>fsin,clr=>b,ena=>a,cq=>cq0,carry_out=>carry0);u2:reg4b port map(load,cq0,dout(3 downto 0));u3:cnt10 port map(clk=>carry0,clr=>b,ena=>a,cq=>cq1,carry_out=>carry1);u4:reg4b port map(load,cq1,dout(7 downto 4));u5:cnt10 port map(clk=>carry1,clr=>b,ena=>a,cq=>cq2,carry_out=>carry2);u6:reg4b port map(load,cq2,dout(11 downto 8));u7:cnt10 port map(clk=>carry2,clr=>b,ena=>a,cq=>cq3,carry_out=>carry3);u8:reg4b port map(load,cq3,dout(15 downto 12));u9:cnt10 port map(clk=>carry3,clr=>b,ena=>a,cq=>cq4,carry_out=>carry4);u10:reg4b port map(load,cq4,dout(19 downto 16));u11:cnt10 port map(clk=>carry4,clr=>b,ena=>a,cq=>cq5,carry_out=>carry5); u12:reg4b port map(load,cq5,dout(23 downto 20));u13:cnt10 port map(clk=>carry5,clr=>b,ena=>a,cq=>cq6,carry_out=>carry6); u14:reg4b port map(load,cq6,dout(27 downto 24));u15:cnt10 port map(clk=>carry6,clr=>b,ena=>a,cq=>cq7,carry_out=>dout(32)); u16:reg4b port map(load,cq7,dout(31 downto 28));end art;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三硬件描述语言的层次化设计1,测频控制器的VHDL语言为LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTL ISPORT (CLK : IN STD_LOGIC; -- 1HzTSTEN : OUT STD_LOGIC; -- 计数器时钟使能CLR_CNT : OUT STD_LOGIC; -- 计数器清零Load : OUT STD_LOGIC ); -- 输出锁存信号END TESTCTL;ARCHITECTURE behav OF TESTCTL ISSIGNAL Div2CLK : STD_LOGIC;BEGINPROCESS( CLK )BEGINIF CLK'EVENT AND CLK = '1' THEN -- 1Hz时钟2分频Div2CLK <= NOT Div2CLK;END IF;END PROCESS;PROCESS (CLK, Div2CLK)BEGINIF CLK = '0' AND Div2CLK = '0' THEN -- 产生计数器清零信号CLR_CNT <= '1';ELSECLR_CNT <= '0';END IF;END PROCESS;Load <= NOT Div2CLK; TSTEN <= Div2CLK;END behav;测频控制器的功能仿真图测频控制器的时序仿真图图可知设定测频控制器的时钟信号为1Hz 2,十进制计数器的VHDL语言为Library ieee;Use ieee.std_logic_unsigned.all;Use ieee.std_logic_1164.all;Entity cnt10 isPort (clk,clr,ena: in std_logic;cq: out std_logic_vector(3 downto 0); cout: out std_logic);end cnt10;architecturebehav of cnt10 isbeginprocess(clk,clr,ena)variablecqi: std_logic_vector(3 downto 0); beginifclr='1' then cqi:=(others=>'0');elsifclk'event and clk='1' thenifena='1' thenifcqi<9 then cqi:=cqi+1;elsecqi:=(others=>'0');end if;end if;end if;ifcqi=9 then cout<='1';elsecout<='0';end if;cq<=cqi;end process;endbehav;十进制加法计数器功能仿真图十进制加法计数器时序仿真图3,四位锁存器的VHDL语言为Library ieee;Use ieee.std_logic_unsigned.all;Use ieee.std_logic_1164.all;Entity cnt10 isPort (clk,clr,ena: in std_logic;cq: out std_logic_vector(3 downto 0); cout: out std_logic);end cnt10;architecturebehav of cnt10 isbeginprocess(clk,clr,ena)variablecqi: std_logic_vector(3 downto 0); beginifclr='1' then cqi:=(others=>'0');elsifclk'event and clk='1' thenifena='1' thenifcqi<9 then cqi:=cqi+1;elsecqi:=(others=>'0');end if;end if;end if;ifcqi=9 then cout<='1';elsecout<='0';end if;cq<=cqi;end process;endbehav;锁存器功能仿真图锁存器时序仿真图4,四位频率计的VHDL语言原件例化语句为LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xu4 ISPORT (CLK : IN STD_LOGIC;FSIN: IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(16 DOWNTO 0) );END xu4;ARCHITECTURE behav OF xu4 ISCOMPONENT cnt10 ISPORT (clk,clr,ena: in std_logic;cq: out std_logic_vector(3 downto 0);cout: out std_logic);END COMPONENT CNT10;COMPONENT reg4b ISPORT ( Load : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT reg4b;COMPONENT TESTCTL ISPORT (CLK : IN STD_LOGIC;TSTEN : OUT STD_LOGIC;CLR_CNT : OUT STD_LOGIC;Load : OUT STD_LOGIC );END COMPONENT TESTCTL ;SIGNAL a : STD_LOGIC;SIGNAL b : STD_LOGIC;SIGNAL c : STD_LOGIC;SIGNAL f1 : STD_LOGIC;SIGNAL f2 : STD_LOGIC;SIGNAL f3 : STD_LOGIC;SIGNAL D1,D2,D3,D4 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINu1:TESTCTL port map (CLK,a,b,c);u2:cnt10 port map (FSIN,b,a,D1,f1);u3:cnt10 port map (f1,b,a,D2,f2);u4:cnt10 port map (f2,b,a,D3,f3);u5:cnt10 port map (f3,b,a,D4,DOUT(16));u6:reg4b port map (c,D1,DOUT(3 DOWNTO 0) );u7:reg4b port map (c,D2,DOUT(7 DOWNTO 4) );u8:reg4b port map (c,D3,DOUT(11 DOWNTO 8) );u9:reg4b port map (c,D4,DOUT(15 DOWNTO 12) ); END behav;四位频率计的功能仿真图四位频率计的时序仿真图由仿真图可知试验中被测信号的频率为134Hz(仿真时FSIN为周期=1/134=7.46268ms,CLK 为周期为1s的时钟信号)所以输入信号和输出信号一致5,八位频率计的VHDL语言原件例化语句为LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY xu8 ISPORT (CLK : IN STD_LOGIC;FSIN: IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(32 DOWNTO 0) );END xu8;ARCHITECTURE behav OF xu8 ISCOMPONENT cnt10 ISPORT (clk,clr,ena: in std_logic;cq: out std_logic_vector(3 downto 0);cout: out std_logic);END COMPONENT CNT10;COMPONENT reg4b ISPORT ( Load : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT reg4b;COMPONENT TESTCTL ISPORT (CLK : IN STD_LOGIC;TSTEN : OUT STD_LOGIC;CLR_CNT : OUT STD_LOGIC;Load : OUT STD_LOGIC );END COMPONENT TESTCTL ;SIGNAL a : STD_LOGIC;SIGNAL b : STD_LOGIC;SIGNAL c : STD_LOGIC;SIGNAL f1 : STD_LOGIC;SIGNAL f2 : STD_LOGIC;SIGNAL f3,f4,f5,f6,f7 : STD_LOGIC;SIGNAL D1,D2,D3,D4,D5,D6,D7,D8 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINu1:TESTCTL port map (CLK,a,b,c);u2:cnt10 port map (FSIN,b,a,D1,f1);u3:cnt10 port map (f1,b,a,D2,f2);u4:cnt10 port map (f2,b,a,D3,f3);u5:cnt10 port map (f3,b,a,D4,f4);u6:cnt10 port map (f4,b,a,D5,f5);u7:cnt10 port map (f5,b,a,D6,f6);u8:cnt10 port map (f6,b,a,D7,f7);u9:cnt10 port map (f7,b,a,D8,DOUT(32));u10:reg4b port map (c,D1,DOUT(3 DOWNTO 0) );u11:reg4b port map (c,D2,DOUT(7 DOWNTO 4) );u12:reg4b port map (c,D3,DOUT(11 DOWNTO 8) );u13:reg4b port map (c,D4,DOUT(15 DOWNTO 12) );u14:reg4b port map (c,D5,DOUT(19 DOWNTO 16) );u15:reg4b port map (c,D6,DOUT(23 DOWNTO 20) );u16:reg4b port map (c,D7,DOUT(27 DOWNTO 24) );u17:reg4b port map (c,D8,DOUT(31 DOWNTO 28) );END behav;八位频率计的功能仿真图八位频率计的时序仿真图由仿真图可知试验中被测信号的频率为134Hz(仿真时FSIN为周期=1/134=7.46268ms,CLK 为周期为1s的时钟信号)所以输入信号和输出信号一致。