是否有可能"如果"阻止vhdl中的给定选择?

时间:2016-06-21 06:15:38

标签: vhdl vlsi

以下是使用IF块的VHDL代码。 在最后一个" elsif"中," my_choice"的值被分配到" ch4"。然后"否则"执行块,因为没有满足条件。但是,有没有机会" my_choice"得到除(ch1,ch2,ch3,ch4)之外的其他值,如高阻抗(或其他任何东西)?如果是这样,我怎么能避免呢?由于此赋值可以更改代码的操作。

    entity entity_name
    port
        .....
        .....
    end entity_name;

    architecture bhvr of entity_name

    type choices is (ch1, ch2, ch3, ch4);
    signal my_choice,next_choice : choices;

    begin
        process(clk, reset)
        begin
            if reset='1' tehn
                --------reset
            else
                  my_choice<=next_choice;
            end if;
        end process;

        process(my_choice)
        begin
            if my_choice = ch1 then
                next_choice <= ch2;
            elsif my_choice = ch2 then 
                next_choice <= ch3;
            elsif my_choice = ch3 then
                next_choice <= ch4;
            else  ------------------------------------coming to ch4
                ---- task for ch4
        end process;            
    end architecture;

1 个答案:

答案 0 :(得分:2)

由于my_choicechoices类型,它是枚举类型,其值为'ch1','ch2','ch3','ch4',那么my_choice将始终具有这四个值,至少在模拟中。

在硬件中,可用值空间取决于实现,例如,如果将值设置为one-hot或binary。启动后,复位是一种很好的方法,可以确保将值明确定义为4个值中的一个,如果电路符合时序要求,那么该值将保持在定义的值空间中。 4个值。