基于NI Multisim 11的PLD/PIC/PLC的仿真设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 2对1多任务器

多任务器是一种数据处理的逻辑电路,可以在许多的输入数据中选取一个并将它送至单一输出线上,也称为数据选择器。多任务器主要分为三部分:控制线,数据线和输出线。例如16对1的多任务器有4条控制线,16条数据线,1条输出线。下面以2对1多任务器电路作为范例来进行说明。

NI Multisim 11中“2对1多任务器”电路如图1.2.9所示。

图1.2.9 “2对1多任务器”电路

NI Multisim 11中产生的“2对1多任务器”的VHDL代码如下所示。

        ---------------------------------------------------
        -- Source File: E:\_uc3300a57fa4e8e~1\_uc34e0a7bc757fa~1\_
        uc37b2c4e8c7ae0~1\2_uc15bf91_uc1591a~1.MS1
        -- Sheet: 2_uc15bf91_uc4591a4efb52a15668_1
        -- RefDes: PLD1
        -- Part Number:
        -- Generated By: NI Multisim
        --
        -- Author: ni
        -- Date: Friday, August 27 08:39:15, 2010
        ---------------------------------------------------
        ---------------------------------------------------
        -- Use: This file defines the top-level of the design
        -- Use With File:
        ---------------------------------------------------
        library ieee;
        use ieee.std_logic_1164.ALL;
        use ieee.numeric_std.ALL;
        library work;
        use work.2_uc15bf91_uc4591a4efb52a15668_pkg.ALL;
        entity \2_uc_uc15bf91_uc_uc4591a4efb52a15668_1\ is
            port (
              S : in std_logic;
              D0 : in std_logic;
              D1 : in std_logic;
              Y : out std_logic
            );
        end \2_uc_uc15bf91_uc_uc4591a4efb52a15668_1\;
        architecture behavioral of \2_uc_uc15bf91_uc_uc4591a4efb52a15668_1\ is
            component AND2_NI
              port (
            B : in STD_LOGIC := ' X' ;
            A : in STD_LOGIC := ' X' ;
            Y : out STD_LOGIC := ' U'
          );
            end component;
            component AUTO_IBUF
              port(
              I : in std_logic;
              O : out std_logic
            );
            end component;
            component AUTO_OBUF
                port(
                I : in std_logic;
                O : out std_logic
            );
            end component;
            component BUF_INV_NI
                port (
            A : in STD_LOGIC := ' X' ;
            Y : out STD_LOGIC := ' U'
          );
            end component;
            component OR2_NI
                port (
            B : in STD_LOGIC := ' X' ;
            A : in STD_LOGIC := ' X' ;
            Y : out STD_LOGIC := ' U'
          );
            end component;
            signal \1\ : std_logic;
            signal \2\ : std_logic;
            signal \3\ : std_logic;
            signal \4\ : std_logic;
            signal \5\ : std_logic;
            signal \6\ : std_logic;
            signal \7\ : std_logic;
        begin
            S_AUTOBUF : AUTO_IBUF
                port map( I => S, O => \3\ );
            D0_AUTOBUF : AUTO_IBUF
                port map( I => D0, O => \2\ );
            D1_AUTOBUF : AUTO_IBUF
                port map( I => D1, O => \1\ );
            Y_AUTOBUF : AUTO_OBUF
                port map( I => \7\, O => Y );
            U1 : BUF_INV_NI
                port map( Y => \4\, A => \3\ );
            U2 : AND2_NI
                port map( A => \4\, B => \2\, Y => \5\ );
            U3 : AND2_NI
                port map( A => \3\, B => \1\, Y => \6\ );
            U4 : OR2_NI
                port map( A => \5\, B => \6\, Y => \7\ );
        end behavioral;

NI Multisim 11中“2对1多任务器”电路的仿真实例如图1.2.10所示。

图1.2.10 “2对1多任务器”电路仿真实例

输出波形如图1.2.11所示。

图1.2.11 “2对1多任务器”输出波形