我正在使用VHDL创建一个可以添加多个向量的简单代码。 例如,下图有一个向量(信号)A和B。
我要做的是获取A的所有部分并将其全部添加。然后将结果存储在B中。下图是一个示例。
最简单的方法是按以下代码列出每个添加项
-- other codes
signal A: std_logic_vector(11 downto 0) := "100101011000";
signal B: std_logic_vector(6 downto 0);
-- other codes
B <= std_logic_vector(
unsigned(A(11 downto 9))
+ unsigned(A(8 downto 6))
+ unsigned(A(5 downto 3))
+ unsigned(A(2 downto 0))
);
-- other codes
但是,当A和B变得很大时,上述方法可能效率不高。有没有有效的方法来创建等效代码? (也许使用生成表格?) 谢谢你的建议。