VHDL'范围=>'0'命令

Eng*_*nic 3 range fpga vhdl

希望有人能回答我的问题。我在 VHDL 代码中遇到了这个命令,但不确定它到底做什么。有人可以澄清以下问题吗?

if ( element1 = (element1'range => '0')) then

假设 element1 是一个 4 位 std_logic_vector,这个条件说明了什么?我在我拥有的几本书或谷歌上找不到这个问题的直接答案。谢谢!

小智 5

也就是说,创建一个临时数组,聚合指定范围的大小,并将每个元素设置为“0”。不管这个范围是多少。

防止element1大小变化时发生意外。

每次你看到像这样的神奇数字3 downto 0,或者for i in 0 to 3 loop ...尝试用这个或等效的数字替换它们,因为for i in element1'range loop ...永远不会循环到数组的末尾。

定义的范围是必要的,因为关系运算符=(如 <、> 等)不会将其参数限制为相同的长度,因此更简单的聚合形式(others => '0')不起作用,因为其大小未定义。