VHDL;完成一个0~9之间循环计数的计数器,能在时钟信号的上升沿和下降沿都实现计数值的加1动作.求大神帮忙

 我来答
nereus78e904
2014-05-25 · TA获得超过1.5万个赞
知道大有可为答主
回答量:5463
采纳率:90%
帮助的人:1915万
展开全部

LIBRARY IEEE;

USE IEEE.std_logic_1164.ALL;

USE IEEE.std_logic_unsigned.ALL;

ENTITY double_counter IS

    PORT(clk:IN std_logic;

        counter_out:OUT std_logic_vector(3 DOWNTO 0));

END double_counter;

ARCHITECTURE bhv OF double_counter IS

    SIGNAL counter:std_logic_vector(3 DOWNTO 0):=(OTHERS => '0');

    SIGNAL adder,rising_counter,falling_counter:std_logic_vector(3 downto 0);

BEGIN

    PROCESS(counter)

    BEGIN

        IF counter="1001" THEN adder <= (OTHERS => '0');

        ELSE adder <= counter + 1;

    END IF;

    END PROCESS;

    PROCESS(clk)

    BEGIN

        IF rising_edge(clk) THEN

            rising_counter <= adder;

        END IF;

    END PROCESS;

    PROCESS(clk)

    BEGIN

        IF falling_edge(clk) THEN

            falling_counter <= adder;

        END IF;

    END PROCESS;

    PROCESS(clk,rising_counter,falling_counter)

    BEGIN

        IF clk='0' THEN

            counter <= rising_counter;

        ELSE

            counter <= falling_counter;

        END IF;

    END PROCESS;

    counter_out <= counter;

END;

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式