VHDL D触发器

LIBRARY IEEE;

USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;
USE IEEE.std_logic_unsigned.ALL;

ENTITY LED IS
    GENERIC (LIMIT : INTEGER := 255);

    PORT (
        sys_clk : IN STD_LOGIC;
        --sys_rst_n : OUT STD_LOGIC;

        MY_LED : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
        MY_KEY : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

        BOARD_LED_RED : OUT STD_LOGIC;
        BOARD_LED_GREEN : OUT STD_LOGIC;
        BOARD_LED_BLUE : OUT STD_LOGIC
    );
END ENTITY LED;

ARCHITECTURE BEV OF LED IS

    SIGNAL timer_count1 : INTEGER := 0;
    SIGNAL timer_count2 : INTEGER := 0;
    SIGNAL buff : BIT_VECTOR(7 DOWNTO 0) := "11111110";
    SIGNAL CLK_Counter : INTEGER := 0;
    SIGNAL MY_CLK : STD_LOGIC := '0';

    CONSTANT TIME_1 : INTEGER := 24000000; ---1s
    CONSTANT TIME_2 : INTEGER := 12000000; ---0.5s
    ----------------------上升沿函数------------------------------
    FUNCTION positive_edge(SIGNAL s : STD_LOGIC) RETURN BOOLEAN IS
    BEGIN
        RETURN(s'event AND s = '1');
    END FUNCTION positive_edge;
    ----------------------下降沿函数------------------------------
    FUNCTION falling_edge(SIGNAL s : STD_LOGIC) RETURN BOOLEAN IS
    BEGIN
        RETURN(s'event AND s = '0');
    END FUNCTION falling_edge;

BEGIN

    --本系统时钟为 24Mhz,一个机器周期为 1/24M s,也就是说每过 12000000 个时钟周期为 0.5s
    CKK_Timer : PROCESS (sys_clk)
    BEGIN
        IF positive_edge(sys_clk) = TRUE THEN
            CLK_Counter <= CLK_Counter + 1;
            IF CLK_Counter = 24000000 THEN --计时1
                MY_CLK <= NOT MY_CLK;
                --MY_LED(0) <= NOT MY_LED(0);
                CLK_Counter <= 0;
            END IF;
        END IF;
    END PROCESS; -- CKK_Timer

    TEST_CLK : PROCESS (MY_CLK) --2s脉冲
    BEGIN
        IF positive_edge(MY_CLK) THEN
            MY_LED(7) <= NOT MY_LED(7);
        END IF;
    END PROCESS; -- TEST_CLK

    D_flip_flop : PROCESS (MY_CLK)
    BEGIN
        IF positive_edge(MY_CLK) THEN
            MY_LED(0) <= MY_KEY(0);
        END IF;

    END PROCESS; -- D_flip_flop

END ARCHITECTURE BEV;
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值