对于一个类,我被要求编写一个VHDL语言程序,它接受两个整数输入A和B,并用A+B替换A,用A-B替换B。我编写了以下程序和测试平台。它完成了实现和行为语法检查,但不会模拟。虽然我没有收到错误,但我确实收到了一些警告,指出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;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;发布于 2012-04-02 20:59:14
问题是:
我被要求写一个VHDL语言程序,接受两个整数输入A和B...
很好
...and将A替换为...
什么?!
你不能替换 A (或B),因为你会遇到这个问题。您可以编写一个过程,该过程接受两个整数输入,并给出两个整数输出。然后,这些输出可以馈送一些寄存器,然后这些寄存器馈送输入,但是必须有一个寄存器才能打破组合反馈循环。
发布于 2012-04-02 22:40:17
不要在problem2实体中测试它。只需直接从您的测试平台调用过程即可。
(此代码未经过测试!)
ABproc: process is
begin
A<=25;
B<=22;
AB(A, B);
wait 1 ns;
assert A = 47;
assert B = 3;
wait; -- forever
end process;https://stackoverflow.com/questions/9967836
复制相似问题