七位频率计vhdl

这是一个使用VHDL编写的频率计设计,包括一个分频器、四位计数器、28位锁存器和顶层文件。通过分频和多个四级计数器累加,实现频率测量,最终将结果存储在28位锁存器中输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

频率探测:

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY FTCTRL IS  PORT (CLKK:IN STD_LOGIC;   CNT_EN:OUT STD_LOGIC;   RST_CNT:OUT STD_LOGIC;   load:OUT STD_LOGIC );  END FTCTRL; ARCHITECTURE behav OF FTCTRL IS  SIGNAL Div2CLK:STD_LOGIC; BEGIN  PROCESS(CLKK)  BEGIN   IF CLKK'EVENT AND CLKK = '1' THEN    Div2CLK <= NOT Div2CLK;   END IF;  END PROCESS;  PROCESS(CLKK,Div2CLK)  BEGIN   IF CLKK='0' AND Div2CLK='0' THEN RST_CNT<='1';   ELSE RST_CNT <= '0'; END IF;  END PROCESS;  load <= NOT Div2CLK; CNT_EN <= Div2CLK; END behav;

四位计数器:

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNTER10B IS  PORT(FIN:IN STD_LOGIC;   CLR:IN STD_LOGIC;   ENABL:IN STD_LOGIC;   COUNT:OUT STD_LOGIC;   DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END COUNTER10B; ARCHITECTURE behav OF COUNTER10B IS  BEGIN  PROCESS(FIN,CLR,ENABL)   VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);  BEGIN   IF CLR='1' THEN CQI:=(OTHERS=>'0');   ELSIF FIN'EVENT AND FIN='1' THEN    IF ENABL='1' THEN    IF CQI<9 THEN CQI:=CQI+1;    ELSE CQI:=(OTHERS=>'0');   END IF;   END IF;   END IF;   IF CQI=9 THEN COUNT<='1';    ELSE COUNT<='0';   END IF;   DOUT<=CQI;  END PROCESS; END behav;

28位锁存器: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG28B IS  PORT(LK:IN STD_LOGIC;   DIN:IN STD_LOGIC_VECTOR(27 DOWNTO 0);   DOUT:OUT STD_LOGIC_VECTOR(27 DOWNTO 0)); END REG28B; ARCHITECTURE  behav OF REG28B IS BEGIN  PROCESS(LK,DIN)  BEGIN   IF LK'EVENT AND LK='1' THEN DOUT<=DIN;   END IF;  END PROCESS; END behav;

顶层文件: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FREQTEST IS  PORT(CLK1HZ:IN STD_LOGIC;   FSIN:IN STD_LOGIC;   DOUT:OUT STD_LOGIC_VECTOR(27 DOWNTO 0);   CARRY_OUT:OUT STD_LOGIC); END FREQTEST; ARCHITECTURE struc OF FREQTEST IS COMPONENT FTCTRL  PORT(CLKK:IN STD_LOGIC;   CNT_EN:OUT STD_LOGIC;   RST_CNT:OUT STD_LOGIC;   Load:OUT STD_LOGIC); END COMPONENT; COMPONENT COUNTER10B  PORT(FIN:IN STD_LOGIC;   CLR:IN STD_LOGIC;   ENABL:IN STD_LOGIC;   DOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);   COUNT:OUT STD_LOGIC); END COMPONENT; COMPONENT REG28B  PORT(LK:IN STD_LOGIC;   DIN:IN STD_LOGIC_VECTOR(27 DOWNTO 0);   DOUT:OUT STD_LOGIC_VECTOR(27 DOWNTO 0)); END COMPONENT;  SIGNAL TSTEN1,CLR_CNT1,Load1:STD_LOGIC;  SIGNAL COUNT1,COUNT2,COUNT3,COUNT4,COUNT5,COUNT6:STD_LOGIC;  SIGNAL DTO:STD_LOGIC_VECTOR(27 DOWNTO 0); BEGIN  U1:COUNTER10B PORT MAP(FIN=>FSIN,CLR=>CLR_CNT1,ENABL=>TSTEN1,DOUT=>DTO(3 DOWNTO

0),COUNT=>COUNT1);  U2:COUNTER10B PORT MAP(FIN=>COUNT1,CLR=>CLR_CNT1,ENABL=>TSTEN1,DOUT=>DTO(7 DOWNTO 4),COUNT=>COUNT2);  U3:COUNTER10B PORT MAP(FIN=>COUNT2,CLR=>CLR_CNT1,ENABL=>TSTEN1,DOUT=>DTO(11 DOWNTO 8),COUNT=>COUNT3);  U4:COUNTER10B PORT MAP(FIN=>COUNT3,CLR=>CLR_CNT1,ENABL=>TSTEN1,DOUT=>DTO(15 DOWNTO 12),COUNT=>COUNT4);  U5:COUNTER10B PORT MAP(FIN=>COUNT4,CLR=>CLR_CNT1,ENABL=>TSTEN1,DOUT=>DTO(19 DOWNTO 16),COUNT=>COUNT5);  U6:COUNTER10B PORT MAP(FIN=>COUNT5,CLR=>CLR_CNT1,ENABL=>TSTEN1,DOUT=>DTO(23 DOWNTO 20),COUNT=>COUNT6);  U7:COUNTER10B PORT MAP(FIN=>COUNT6,CLR=>CLR_CNT1,ENABL=>TSTEN1,DOUT=>DTO(27 DOWNTO 24),COUNT=>CARRY_OUT);  U8:FTCTRL PORT MAP(CLKK=>CLK1HZ,CNT_EN=>TSTEN1,RST_CNT=>CLR_CNT1,Load=>Load1);  U9:REG28B PORT MAP(LK=>Load1,DIN=>DTO,DOUT=>DOUT); END struc;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值