VHDL ShiftMultiplier 代码错误分析及修正
VHDL ShiftMultiplier 代码错误分析及修正
个人认为这段代码存在以下错误:
-
代码未定义输入信号A和B的类型和位宽,应该在代码前定义。
-
代码中的'a'应该是'A','b'应该是'B',因为输入信号是A和B。
-
在process中,temp被赋初值为全零,但是应该赋为全一,因为在累加过程中,需要左移B的位数,而全零会导致累加无效。
-
在累加过程中,应该从i+2向i倒序赋值,而不是从i+3向i倒序赋值,因为temp的位宽为8,而不是9。
修改后的代码如下:
architecture multiplierTest of ShiftMultiplier is
signal temp: std_logic_vector(7 downto 0);
begin
temp <= '11111111';
process(A, B)
begin
for i in 0 to 3 loop
if A(i) = '1' then
temp(i+2 downto i) <= B; -- 移位并累加
end if;
end loop;
end process;
P <= temp;
end multiplierTest;
原文地址: http://www.cveoy.top/t/topic/mLEm 著作权归作者所有。请勿转载和采集!