【问题标题】:Structural Architucture Simulation in ACtive-HDLACtive-HDL 中的结构架构仿真
【发布时间】:2015-09-25 11:41:44
【问题描述】:

我已经编写了两个成功在 ISE Design Suit 中模拟的代码:

-- 2X1 Multiplexer
library IEEE;
use IEEE.STD_LOGIC_1164.all;
package mux2to1_pkg is
component mux2to1  
    port(d1,d0: in std_logic;
         s: in std_logic;
         f: out std_logic);
end component;
end mux2to1_pkg;
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity mux2to1 is
port(d1,d0: in std_logic;
     s: in std_logic;
     f: out std_logic);
end mux2to1;          
architecture behavioral of mux2to1 is
begin
f <= (d0 and not s) or
     (d1 and     s);
end behavioral;

和

-- 6X1 Multiplexer
library IEEE;
use IEEE.STD_LOGIC_1164.all;
package mux6to1_pkg is
component mux6to1  
    port(d: in std_logic_vector(5 downto 0);
         s: in std_logic_vector(2 downto 0);
         f: out std_logic);
end component;
end mux6to1_pkg;
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use WORK.mux2to1_pkg.all;
entity mux6to1 is
port(d: in std_logic_vector(5 downto 0);
     s: in std_logic_vector(2 downto 0);
     f: out std_logic);
end mux6to1;
architecture structural of mux6to1 is
signal m1,m2,m3,m4: std_logic;
begin
mux1: mux2to1 port map(d(5),d(4),s(0),m1);
mux2: mux2to1 port map(d(3),d(2),s(0),m2);
mux3: mux2to1 port map(d(1),d(0),s(0),m3);
mux4: mux2to1 port map(m2,m3,s(1),m4);
mux5: mux2to1 port map(m1,m4,s(2),f);
end structural;

问题是当我想在 Active-HDL 中模拟 MUX6to1 时,输出根本不会改变。这个节目有什么秘诀?泰。

【问题讨论】:

    标签: vhdl simulation active-hdl


    【解决方案1】:

    使用这个测试平台:

    library ieee;
    use ieee.std_logic_1164.all;
    entity mdl_tb is
    end entity;
    
    library ieee;
    use ieee.numeric_std.all;
    architecture sim of mdl_tb is
      signal s_d : std_logic_vector(8 downto 0) := (others => '0');
      signal f   : std_logic;
    begin
      dut_e : entity work.mux6to1
        port map(d => s_d(5 downto 0),
                 s => s_d(8 downto 6),
                 f => f);
      process is
      begin
        wait for 1 ns;
        s_d <= std_logic_vector(unsigned(s_d) + 1);
      end process;
    end architecture;
    

    它显示如下变化:

    基于此 Active-HDL 脚本和 mdl.vhd 中的上述两个文件:

    # Workspace "prod" create under current and open this workspace
    workspace create prod
    # Design "prod" create under current workspace
    design create -a prod .
    # Create to directory under workspace
    cd $DSN/..
    # Compile
    acom ../mdl.vhd
    acom ../mdl_tb.vhd
    # Load module for simulation
    asim work.mdl_tb
    # Waveform add
    add wave /mdl_tb/*
    # Run
    run 600 ns 
    

    顺便说一句。如果您跳过组件声明和相关包,您可以通过以下代码显着减少代码:

    library IEEE;
    use IEEE.STD_LOGIC_1164.all;
    entity mux2to1 is
      port(d1,d0: in std_logic;
        s: in std_logic;
        f: out std_logic);
    end mux2to1;
    architecture behavioral of mux2to1 is
    begin
      f <= d0 when (s = '0') else d1;
    end behavioral;
    
    library IEEE;
    use IEEE.STD_LOGIC_1164.all;
    entity mux6to1 is
      port(d: in std_logic_vector(5 downto 0);
        s: in std_logic_vector(2 downto 0);
        f: out std_logic);
    end mux6to1;
    architecture structural of mux6to1 is
      signal m1,m2,m3,m4: std_logic;
    begin
      mux1: entity work.mux2to1 port map(d(5),d(4),s(0),m1);
      mux2: entity work.mux2to1 port map(d(3),d(2),s(0),m2);
      mux3: entity work.mux2to1 port map(d(1),d(0),s(0),m3);
      mux4: entity work.mux2to1 port map(m2,m3,s(1),m4);
      mux5: entity work.mux2to1 port map(m1,m4,s(2),f);
    end structural;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-22
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 2016-10-22
      相关资源
      最近更新 更多