Gast
#1190925
Hallo liebe Leute,ich muss hier ein multiplitierer programmieren denn
den wert von A*B in shift speicher und die an der ausgang result
ubergeben soll.Das problem ist ubergebende wert muss nicht große und
nicht kleiner als limit.ich hatte gedacht mit schieben von bit kann ich
etwas erreichen aber es schien mein idee nicht so gut gewesen zu
sein.Hat jemand eine idee oder ist meine idee gut und ic kann es nicht
umsetzen.ich danke euch.was ich gemacht habe ist hier unten.
entity Mul is
port ( clk :in std_logic;
reset_n :in std_logic;
A :in std_logic_vector(15 downto 0);
B :in std_logic_vector(15 downto 0);
limit :in std_logic_vector(15 downto 0);
result :out std_logic_vector(15 downto 0)
);
end Mul;
architecture verh of Mul is
signal shift :std_logic_vector(15 downto 0);
begin
process(clk,reset_n)
begin
if reset_n = '0' then
-- A <= x"0";
--B <= x"0";
elsif clk='1' and clk'event then
shift <= A * B ;
if shift >= limit then
shift<= '0' & limit(14 downto 0);
elsif shift <= limit then
shift<= limit(15 downto 1) & '1';
end if;
end if;
end process;
result<= shift;
end verh;