【问题标题】:VHDL MUX Test Bench IssueVHDL MUX 测试台问题
【发布时间】:2015-07-21 18:23:16
【问题描述】:

我正在尝试通过 P. Ashenden 的书:Designer's Guide to VHDL 来学习 VHDL。第 1 章的练习 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;

【问题讨论】:

    标签: vhdl


    【解决方案1】:

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

    您在 MUXtop 中的流程语句 choose 没有敏感条款,这会导致流程在模拟中持续执行。 (在您超出可能设置为无穷大的 delta 循环迭代限制之前,它不会做任何事情。

    我添加了一个敏感性列表,注释掉了两个设计单元中多余的使用条款,并添加了一些更多的刺激步骤以及一个最终的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;
    

    这给出了:

    (可点击)

    【讨论】:

      猜你喜欢
      • 2015-08-05
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多