以下是使用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;
答案 0 :(得分:2)
由于my_choice
是choices
类型,它是枚举类型,其值为'ch1','ch2','ch3','ch4',那么my_choice
将始终具有这四个值,至少在模拟中。
在硬件中,可用值空间取决于实现,例如,如果将值设置为one-hot或binary。启动后,复位是一种很好的方法,可以确保将值明确定义为4个值中的一个,如果电路符合时序要求,那么该值将保持在定义的值空间中。 4个值。