Vhdl 使用时钟启用输出显示器

Vhdl 使用时钟启用输出显示器,vhdl,fpga,vivado,Vhdl,Fpga,Vivado,我正在尝试向两个7段显示输出一个变化的值。它应该从我的电路板上的开关读取一个组合输入。即,当I_SW=“1000”时,SW12已打开。在该语句下,我需要将输出分配给D4和D3(我的前两个7段显示器),这非常简单。但是,我需要输出一个4位的值,该值在2Hz时钟启用的每个上升沿都会发生变化。例如,2Hz CE上升沿->分别向D2和D1输出0值->下一个上升沿->分别向D2和D1输出0值1->返回下一个CE上升沿后的第一个输出。 基本上它需要循环。下面的代码是到目前为止我所拥有的,它在“计数器”部分看

我正在尝试向两个7段显示输出一个变化的值。它应该从我的电路板上的开关读取一个组合输入。即,当I_SW=“1000”时,SW12已打开。在该语句下,我需要将输出分配给D4和D3(我的前两个7段显示器),这非常简单。但是,我需要输出一个4位的值,该值在2Hz时钟启用的每个上升沿都会发生变化。例如,2Hz CE上升沿->分别向D2和D1输出0值->下一个上升沿->分别向D2和D1输出0值1->返回下一个CE上升沿后的第一个输出。 基本上它需要循环。下面的代码是到目前为止我所拥有的,它在“计数器”部分看起来是错误的,但我不知道要将其更改为什么。有人能帮我吗

if (i_SW = "1000") then
        i_D4 <= 0 ;
        i_D3 <= 1 ;
        if i_Reset = '1' then
            o_SC <= "0000";
        elsif (rising_edge(i_Clk)) then
            if i_CE1Hz = '1' then
                if counter = "1111" then
                   counter <= "0000";
                else
                   counter <= (counter + 1);
                end if;
            end if;
        end if;
        o_SC <= counter;
         
如果(i_SW=“1000”)那么

i_D4是否有一种方法可以“等待”上升沿,然后继续循环上升沿?您是否询问是否可以在第一个上升沿上创建闩锁,而不是循环上升沿内的代码?对不起,很难理解你想做什么。您应该提供所有代码以及与代码相关联的测试台。@Laburtz是的,我想是的。我还没有一个测试台,在我相对确定代码可以工作之前,我不会费心去做。有太多的代码,它们被分成不同的实体,与这个实体没有任何关系。但是,如果顶层实体有帮助的话,我很乐意提供它。是否有一种方法可以“等待”上升沿,然后继续循环上升沿?您是否询问是否可以在第一个上升沿上创建闩锁,而不是循环上升沿内的代码?对不起,很难理解你想做什么。您应该提供所有代码以及与代码相关联的测试台。@Laburtz是的,我想是的。我还没有一个测试台,在我相对确定代码可以工作之前,我不会费心去做。有太多的代码,它们被分成不同的实体,与这个实体没有任何关系。但是,我很乐意提供顶级实体,如果它有帮助的话?