VHDL程序

Kat*_*pio 4 procedure vhdl

对于一个类,我被要求编写一个VHDL过程,它接受两个整数输入A和B,并用A代替A + B和B. 我编写了以下程序和testbench.它完成了实现和行为语法检查,但它不会模拟.虽然我没有错误,但我确实收到一些警告,说明A和B处于组合反馈循环中.有人可以解释问题可能是什么吗?

模块:

 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;
Run Code Online (Sandbox Code Playgroud)

试验台:

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;
Run Code Online (Sandbox Code Playgroud)

Pau*_*l S 6

问题是:

  1. 您的组件会写入自己的输入.这相当于无限循环.你这样做的原因是因为....
  2. 对问题的描述没有意义.

我被要求编写一个VHDL程序,它接受两个整数输入A和B ......

精细

...并用......替换A

什么?!

你不能替换 A(或B)因为你会遇到这个问题.您可以编写一个采用两个整数输入的过程,并提供两个整数输出.然后,这些输出可以输入一些寄存器,然后输入输入,但必须有一个寄存器来打破组合反馈环路.