我試圖創建一個移位寄存器,通過使用乘法(* 2)將位移位一個位置。但是,當我這樣做時,ISE(賽靈思IDE)告訴我這個表達式具有x2原始信號的元素數量。無符號乘法創建一個x2大小的數組
具體而言,我有:
if rising_edge(clk) then
registro <= unsigned(sequence);
registro <= registro * 2;
-- Just adds into the last position the new bit, Sin (signal input)
registro <= registro or (Sin, others => '0');
sequence <= std_logic_vector(registro);
end if;
而且,我已經聲明之前:
signal Sin : std_logic;
signal sequence : std_logic_vector(0 to 14) := "100101010000000";
signal registro : unsigned (0 to 14);
所以我得到的錯誤(在乘法線):
表達式有30個元素;預計15
因此,爲什麼它創建一個x2大小的向量,如果我只乘以* 2?
我在想什麼?我怎樣才能做到這一點?
預先感謝您
事實上,轉移不利於乘法;它是利用移位的乘法,因爲在二進制數字系統中左移一位等於×2。 – Paebbels
完全正確的@Paebbels,我犯了一個錯誤。去正確=) –