VHDL MUX测试平台问题

时间:2015-07-21 18:23:16

标签: vhdl

我正在尝试通过P. Ashenden的书:VHDL设计师指南来学习VHDL。第一章的练习10要求您在VHDL中编写2对1(我假设1位宽)MUX并进行模拟。我提前为一个完整的菜鸟道歉。这是我的第一个VHDL代码。

我的MUX在合成中没有产生任何错误或警告。我的测试台也不会产生错误或警告。但是,除了信号的名称外,模拟完全是空白的。

我已经尝试在线查看大量其他MUX示例(以及本书中的一个基准测试示例),所有这些都在我尝试合成它们时出错,所以我没有足够的信心使用它们作为向导,并没有从他们那里得到太多。我不确定我在这里做错了什么。我会包含一个模拟图像,但我没有足够的重复点:(

另外,我意识到一个好的MUX也应该有它没有接收到选择输入/高阻抗值的情况,等等。在这种情况下,我只是想让玩具模型工作。

MUX代码是:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity MUXtop is
    Port (a, b, sel: in bit;
         z: out bit);
end MUXtop;

architecture behav of MUXtop is
begin
    choose: process is
    begin
        if sel = '0' then
            z <= b;
        else
            z <= a;
        end if;
    end process choose;
end architecture behav;

测试台代码是:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

ENTITY MUXtest IS
END MUXtest;

ARCHITECTURE behavior OF MUXtest IS 

-- Component Declaration for the Unit Under Test (UUT)

    COMPONENT MUXtop
    PORT(
        a : IN  bit;
        b : IN  bit;
        sel : IN  bit;
        z : OUT  bit
        );
    END COMPONENT MUXtop;


   --Inputs
   signal a : bit := '0';
   signal b : bit := '0';
   signal sel : bit := '0';

   --Outputs
   signal z : bit;

BEGIN

-- Instantiate the Unit Under Test (UUT)
    uut: MUXtop PORT MAP (
           a => a,
           b => b,
           sel => sel,
           z => z
           );

   -- Stimulus process
   stimulus: process
   begin
       wait for 10 ns;
       a <= '1';
       wait for 10 ns;
       sel <= '1';
       wait for 10 ns;
       b <= '1';
       wait;
   end process stimulus;
END architecture behavior;

1 个答案:

答案 0 :(得分:1)

使用类型位(在包标准中声明)时,您不需要包std_logic_1164的use子句。

MUXtop中的流程语句choose没有敏感子句,导致流程在模拟中持续执行。 (除非你跳过可能设置为无穷大的增量循环迭代限制,否则它不会做任何事情。)

我添加了一个敏感列表,在两个设计单元中注释掉了多余的使用条款,并添加了一些更多的刺激步骤以及最终wait for 10 ns;以允许在您的测试平台中看到最后一个操作:

library IEEE;
-- use IEEE.STD_LOGIC_1164.ALL;

entity MUXtop is
    Port (a, b, sel: in bit;
         z: out bit);
end MUXtop;

architecture behav of MUXtop is
begin
    choose: process (a, b, sel)  -- is
    begin
        if sel = '0' then
            z <= b;
        else
            z <= a;
        end if;
    end process choose;
end architecture behav;

LIBRARY ieee;
-- USE ieee.std_logic_1164.ALL;

ENTITY MUXtest IS
END MUXtest;

ARCHITECTURE behavior OF MUXtest IS 

-- Component Declaration for the Unit Under Test (UUT)

    COMPONENT MUXtop
    PORT(
        a : IN  bit;
        b : IN  bit;
        sel : IN  bit;
        z : OUT  bit
        );
    END COMPONENT MUXtop;


   --Inputs
   signal a : bit := '0';
   signal b : bit := '0';
   signal sel : bit := '0';

   --Outputs
   signal z : bit;

BEGIN

-- Instantiate the Unit Under Test (UUT)
    uut: MUXtop PORT MAP (
           a => a,
           b => b,
           sel => sel,
           z => z
           );

   -- Stimulus process
   stimulus: process
   begin
       wait for 10 ns;
       a <= '1';
       wait for 10 ns;
       sel <= '1';
       wait for 10 ns;
       sel <= '0';     -- added
       wait for 10 ns; -- added
       b <= '1';
       wait for 10 ns; -- added
       wait;
   end process stimulus;
END architecture behavior;

这就是:

muxtest.png (点击)