1、测频信号控制发生器模块功能1) 计数器:实现十进制计数功能。2) 锁存器:锁存信号。3) 频率信号控制发生器:输入端clk收到1Hz信号后,其输出端testen控制各个计数器的使能,clr_cnt控制各个计数器的清零,load控制锁存器内数据的输出。4) 译码驱动电路:将锁存器输出的BCD码译码,译码后输送到译码显示器件。5) 数码管显示:显示待测信号的频率值。设计思路频率测量的基本原理是计算每秒钟内待测信号的脉冲个数。这就要求testpl的计数使能信号tsten能产生一个1秒脉宽的周期信号,并对频率计的每一计数器cnt10的使能端ena进行同步控制。当tsten为高电平1时,允许计数;为低电
2、平0时停止计数,并保持其计数结果。在停止计数期间,首先需要一个锁存信号load的上跳沿将计数器在前1 秒种的计数值锁存进16位锁存器reg16b中。锁存信号之后,必须有一个清零信号clr_cnt对计数器进行清零,为下1 秒的计数操作做准备,然后由数码管显示出来。三、 选择器件电路中的所有器件都是VHDL语言设计生成的,所以无通用常规器件。四、 功能模块分频器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div isport(clk_in:IN std_logic;div_outb,
3、div_outc:out std_logic);end div;ARCHITECTURE a of div issignal fre_nb:integer range 0 to 25000000;signal fre_nc:integer range 0 to 100000;signal clk_tmpb:std_logic;signal clk_tmpc:begindiv_outb=clk_tmpb;div_outc24999999 thenfre_nb=0;clk_tmpb99999 thenfre_ncclk_tmpc=not clk_tmpc;=fre_nc+1;end process
4、;end a; 逻辑功能:将50MH分频为单位脉冲1Hz和扫描频率。 十进制计数器 entity cnt10 isport(clk: in std_logic; clr: ena: cq : out integer range 0 to 9; carry_out: out std_logic);end cnt10;architecture behav of cnt10 issignal cqi: integer range 0 to 9;process(clr,clk,ena)if(clr=1) then cqielsif(clkevent and clk=) then if(ena= if(
5、cqi=9) then cqi carry_out=; else =cqi+1;0 end if;cq=cqi;end behav;逻辑功能:当第一个CNT10计数输出CQ=9时,下一秒时钟上升沿到来时,将产生一个CARRY_OUT信号作为下一个CNT10的时钟信号,同时CQ清零。依次递推到8个CNT10。测频控制信号发生器entity testctl isport( clk : tsten : out std_logic; clr_cnt : load :end testctl;architecture behav of testctl issignal div2clk : std_logi
6、c;process(clk)if(clkdiv2clk=not div2clk;process(clk,div2clk)if(clk= and div2clk=clr_cntloadtsten=div2clk;对8个CNT10产生同步使能信号TSTEN;产生一个清零信号CLR_CNT,计数完成时对4个CNT10清零;产生一个锁存信号LOAD对锁存器RED16B,对CNT10产生的信号进行锁16位锁存器entity reg16b is port (load: din: in std_logic_vector(15 downto 0); dout: out std_logic_vector(15
7、downto 0);end reg16b;architecture art of reg16b is process(load,din) begin if loadevent and load=then dout=100 secdaoutnull;end case;sel=sec;锁存信号输出给DIN16.0,然后由SELTIME进行扫描输出,当SEL为”000”时选通第一个CNT10,输出到DELED进行译码输出。依次类推。译码器IIBRARY ieee;ENTITY SEG7 IS PORT(NUM:IN std_logic_vector(3 downto 0); A:OUT std_lo
8、gic; B: C: D: E: F: G: DP:OUT std_logic);END SEG7;ARCHITECTURE fun OF SEG7 ISsignal led:std_logic_vector(6 downto 0);BEGIN A=led(6); B=led(5); C=led(4); D=led(3); E=led(2); F=led(1); G=led(0); DP led1111110when num=0000 01100000001110110100101111001001101100110100101101101011011111011011100000111111
9、1111100011110111001111011110100011111101110011101100011110111011001111111010001111111END fun;将SELTIME输出的信号译码显示出来。3-8译码器LIBRARY ieee;ENTITY decode3_8 IS PORT(SEL:IN std_logic_vector(2 downto 0); Q :OUT std_logic_vector(7 downto 0) );END decode3_8;ARCHITECTURE a OF decode3_8 IS Q11111110when sel=0 els
10、e11111101when sel=1 else11111011when sel=2 else11110111when sel=3 else11111111END a;将编码后的信号“翻译”出来从而实现所需的输出信号。五、总体设计电路电路的整体工作情况及连接关系:实验箱内部管脚pin_153接div的clk端,同时div的两个输出div_outb和div_outc分别接testctl的clk端和seltime的clk端,testctl的三个输出端tsten、ckr_cnt、load,其中tsten、ckr_cnt分别接到cnt10的ena和clr端,load接到reg16b的load端。cnt10的clk端接待测信号,对应实验箱的管脚pin_28IO3,将IO3用导线与IO_CLK连接,四个cnt10的输出端cq3.0与reg16b的din15.0连接。最后由reg16b输出的信号经过译码显示电路显示出来。整体仿真图根据上图可以频率为10Hz,对应功能仿真波形同样是10Hz,所以仿真结果正确。管脚分配图实验箱上的IO_3用导线与IO_CLK连接,其中IO_3对应的是pin_28。拨动实验箱上的SW17SW20,IO_CLK输出不同的频率,同时在数码管上显示出对应的频率,设计理论与实际硬件实现相同。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2