Concatenation (VHDL)如何在一个时钟中部分分配求和结果
我试图在VHDL上实现这一点:Concatenation (VHDL)如何在一个时钟中部分分配求和结果,concatenation,vhdl,partial,Concatenation,Vhdl,Partial,我试图在VHDL上实现这一点: a<=(b+c)/16; a使用ieee.numeric\u std并将a、b、c、dummy声明为无符号,而不是std\u logic\u vector。或者签名,如果这是应用程序所需要的。只需第一次尝试,并将a、b和c作为数字类型std\u logic\u vector没有数字意义,因此无法对其进行算术运算 要么让它们都是整数s,要么按照Brian的建议,使用ieee.numeric_std和有符号或无符号向量类型。遵循Martin和Brian的答案,
a<=(b+c)/16;
a使用ieee.numeric\u std
并将a、b、c、dummy声明为无符号,而不是std\u logic\u vector
。或者签名,如果这是应用程序所需要的。只需第一次尝试,并将a
、b
和c
作为数字类型std\u logic\u vector
没有数字意义,因此无法对其进行算术运算
要么让它们都是整数
s,要么按照Brian的建议,使用ieee.numeric_std
和有符号
或无符号
向量类型。遵循Martin和Brian的答案,目的是强类型-区分标准逻辑向量,无符号和有符号是为了防止计算小于零时数学中有符号和无符号数字的意外混合。处理无符号数字(前导零)时,可以键入convert而不受惩罚-(a&dummy)
signal b,c : std_logic_vector(7 downto 0);
signal a : std_logic_vector(8 downto 0);
signal dummy : std_logic_vector(3 downto 0);
(a & dummy) <= ("00000" & b) + ("00000" & 'c');