首页
学习
活动
专区
圈层
工具
发布

VHDL程序
EN

Stack Overflow用户
提问于 2012-04-02 04:02:46
回答 2查看 7.3K关注 0票数 4

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

模块:

代码语言:javascript
复制
 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:

代码语言:javascript
复制
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;
EN

回答 2

Stack Overflow用户

发布于 2012-04-02 20:59:14

问题是:

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

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

很好

...and将A替换为...

什么?!

你不能替换 A (或B),因为你会遇到这个问题。您可以编写一个过程,该过程接受两个整数输入,并给出两个整数输出。然后,这些输出可以馈送一些寄存器,然后这些寄存器馈送输入,但是必须有一个寄存器才能打破组合反馈循环。

票数 6
EN

Stack Overflow用户

发布于 2012-04-02 22:40:17

不要在problem2实体中测试它。只需直接从您的测试平台调用过程即可。

(此代码未经过测试!)

代码语言:javascript
复制
ABproc: process is
begin
    A<=25;
    B<=22;
    AB(A, B);
    wait 1 ns;
    assert A = 47;
    assert B = 3;
    wait; -- forever
end process;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9967836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档