async_counter.vhd

来自「数字逻辑基础与Verilog设计,针对verilog语言的特点」· VHDL 代码 · 共 52 行

VHD
52
字号
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;

ENTITY async_rdff IS 
           PORT (d,clk  : IN  std_logic;
                 reset  : IN  std_logic;
		 q,qb   : OUT std_logic);
END async_rdff;

ARCHITECTURE rtl_arc OF async_rdff IS
BEGIN
	 PROCESS (clk,reset)
         BEGIN
              IF (reset ='0') THEN
                  q  <= '0';
                  qb <= '1';
              ELSIF (clk'event AND clk ='1') THEN
                  q  <= d;
                  qb <= NOT d;
              END IF;
         END PROCESS;
END rtl_arc;

LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;

ENTITY async_counter IS 
           PORT (clk   : IN  std_logic;
                 reset : IN  std_logic;
		 q     : OUT std_logic_vector(3 DOWNTO 0));
END async_counter;

ARCHITECTURE rtl_arc OF async_counter IS
     COMPONENT async_rdff
            PORT (d,clk  : IN  std_logic;
                  reset  : IN  std_logic;
		  q,qb   : OUT std_logic);
     END COMPONENT;
     SIGNAl  q_tmp : std_logic_vector(4 DOWNTO 0);
BEGIN
     q_tmp(0) <= clk;
     G1:FOR i IN 0 TO 3 GENERATE
        async_rdffx: async_rdff
                  PORT MAP (clk   => q_tmp(i),
                            reset => reset,
                            d     => q_tmp(i+1),
                            q     => q(i),
                            qb    => q_tmp(i+1));
     END GENERATE G1;
END rtl_arc;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?