在Verilog和VHDL中,`logic [19:4]`和`logic [15:0]`之间究竟有什么区别?

时间:2017-06-08 13:19:03

标签: vhdl verilog system-verilog

当然还有VHDL中的等效语法?

较低的索引是索引的最小界限吗?在具有不同边界但宽度相同的信号之间的分配中会发生什么?

1 个答案:

答案 0 :(得分:4)

假设你的意思是宽度相同......

...所以,在Verilog中我们假设你的意思是

logic [19:4] v19_4;
logic [15:0] v15_0;

在Verilog 模拟中,除非尝试索引位,否则不会有任何差异。

如果您对这些位编制索引,您会发现

  • 在第一种情况下,左手位是位19(即v19_4[19]),而在第二种情况下,左手位是位15(即v15_0[15]); < / p>

  • 在第一种情况下,右手位是位4(即v19_4[4]),而在第二种情况下,右手位是位0(即v15_0[0])。< / p>

在Verilog中,将左手位“MSB”和右手位“LSB”调用是有效的。

您将在VHDL中体验完全相同的行为。在VHDL中,我们假设您的意思是

signal v19_4 : std_logic_vector(19 downto 4);
signal v15_0 : std_logic_vector(15 downto 0);

再次,在VHDL模拟中,除非尝试索引位,否则不会遇到任何差异。如果您对这些位编制索引,您将找到

  • 在第一种情况下,左手位是位19(即v19_4(19)),而在第二种情况下,左手位是位15(即v15_0(15)); < / p>

  • 在第一种情况下,右手位是位4(即v19_4(4)),而在第二种情况下,右手位是位0(即v15_0(0))。< / p>

使用综合,您可能会发现不同之处。 通常建议将0中的向量索引用于合成,以消除合成比您需要的更多位的可能性。但是,我认为大多数合成器会优化掉多余的逻辑。