Für eine Klasse wurde ich gebeten, eine VHDL-Prozedur zu schreiben, die zwei ganzzahlige Eingaben A und B benötigt und A durch A + B und B durch A-B ersetzt. Ich habe das folgende Programm und die Testbench geschrieben. Es schließt die Implementierung und die Verhaltenssyntaxprüfung ab, es wird jedoch nicht simuliert. Obwohl ich keine Fehler erhalte, erhalte ich einige Warnungen, die besagen, dass sich A und B in kombinatorischen Feedback-Schleifen befinden. Kann jemand etwas Licht auf das Problem werfen?VHDL-Prozeduren
Modul:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Problem2 is
Port (A : inout integer;
B : inout integer);
end Problem2;
architecture Behavioral of Problem2 is
procedure AB (signal A,B: inout integer) is
begin
A<=A+B after 20 ns;
B<=A-B after 30 ns;
end AB;
begin
AB(A=>A, B=>B);
end Behavioral;
Testbench:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY Problem2_test IS
END Problem2_test;
ARCHITECTURE behavior OF Problem2_test IS
-- Component Declaration for the Unit Under Test (UUT)
COMPONENT Problem2
PORT(
A : INOUT integer;
B : INOUT integer
);
END COMPONENT;
--BiDirs
signal A : integer;
signal B : integer;
-- No clocks detected in port list. Replace <clock> below with
-- appropriate port name
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: Problem2 PORT MAP (
A => A,
B => B
);
ABproc: process is
begin
A<=25;
B<=22;
wait;
end process;
END;
, die keinen Sinn bekommen hat ... – ferdepe