&引用;当别人;VHDL case语句中的行?
我是一名学习VHDL的学生,我的教科书中的示例代码在几个地方显示了与下面类似的行&引用;当别人;VHDL case语句中的行?,vhdl,Vhdl,我是一名学习VHDL的学生,我的教科书中的示例代码在几个地方显示了与下面类似的行 when "000" => tmp_result <= a and b; when "001" => tmp_result <= a or b; ... when others => tmp_result <= (others => '0'); 当“000”=>tmp_结果tmp_结果tmp_结果“0”时; 我发现VHDL的语法总体上非常不直观,但我真的一点也不“理解”
when "000" => tmp_result <= a and b;
when "001" => tmp_result <= a or b;
...
when others => tmp_result <= (others => '0');
当“000”=>tmp_结果tmp_结果tmp_结果“0”时;
我发现VHDL的语法总体上非常不直观,但我真的一点也不“理解”这一行
我真的很困惑,为什么上面这句话不仅仅是:
when others => tmp_result <= '0'
when others=>tmp_result这是因为tmp_result
被定义为std_逻辑向量(而不是简单的std_逻辑)
tmp_结果这是因为tmp_结果
被定义为std_逻辑向量(而不是简单的std_逻辑)
tmp_结果STD_逻辑_向量
具有固定大小。因此,当您为它赋值时,您可以使用
(others => '0')
表示希望将剩余位设置为0
。由于变量具有固定大小,编译器将知道要设置多少位。你可以把这句话和其他一些说法混在一起,例如
tmp_result <= (1=>'1', OTHERS => '0');
你看,我们可能每次都要更改大小,这就是为什么我们要定义一个generic
变量。使用(其他=>'0')
将其设置为0
将使我们不必再次更改整个程序。STD\u LOGIC\u VECTOR
具有固定大小。因此,当您为它赋值时,您可以使用
(others => '0')
表示希望将剩余位设置为0
。由于变量具有固定大小,编译器将知道要设置多少位。你可以把这句话和其他一些说法混在一起,例如
tmp_result <= (1=>'1', OTHERS => '0');
你看,我们可能每次都要更改大小,这就是为什么我们要定义一个generic
变量。使用(其他=>'0')
将其设置为0
将使我们不必再次更改整个程序