Tôi đang cố gắng tạo một MACC đơn giản để hoạt động, nhưng nó làm được những điều không ngờ tới. Phép nhân không hoạt động. 00001 * 00001 xuất 00000
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity macc is
Port ( clk : in STD_LOGIC;
rst : in STD_LOGIC;
en : in STD_LOGIC;
A : in STD_LOGIC_VECTOR (4 downto 0);
B : in STD_LOGIC_VECTOR (4 downto 0);
P : out STD_LOGIC_VECTOR (8 downto 0));
end macc;
architecture Behavioral of macc is
signal product : STD_LOGIC_VECTOR (8 downto 0);
signal acc_in : STD_LOGIC_VECTOR (8 downto 0);
signal acc_out : STD_LOGIC_VECTOR (8 downto 0);
begin
product <= A*B;
acc_in <= acc_out + product;
acc: process is
begin
wait until rising_edge(clk);
if (rst = '1') then
acc_out <= (others => '0');
elsif (en = '1') then
acc_out <= acc_in;
end if;
end process acc;
P <= acc_out;
end Behavioral;
Dạng sóng được thêm vào.
—
Arturs Wrapsans
Tôi không nhớ nhiều về VHDL, nhưng
—
clabacchio
product
nên được cập nhật không đồng bộ phải không? Trong trường hợp đó, vấn đề không phải là acc
, mà là sự nhân lên thực sự ...
Vâng, đó là những gì bài viết này là về.
—
Arturs Wrapsans
Đúng, xin lỗi, tôi đã bối rối bởi bối cảnh ...
—
clabacchio