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

2.2 同位产生器

二进制数据在传输的时候若被噪声干扰会有位发生错误,为了知道是否有数据传输错误,可在数据发送端接上一个奇同位产生器,即送出信号有奇数个1,并在数据接收端接上奇同位核对器,若在接收端发现偶数个1则为错误的数据。同理若数据发送端接上一偶同位产生器,即送出的信号有偶数个1。下面以偶同位产生器作为范例,此范例偶同位产生器输入数据为4个位,输出数据为5个位,第5个位是用来调整数据1的个数,使输出数据永远位偶数个1。

NI Multisim 11中“4输入偶同位产生器”电路如图1.2.6所示。

图1.2.6 “4输入偶同位产生器”电路

NI Multisim 11中产生的“4输入偶同位产生器”的VHDL代码如下所示。

        ---------------------------------------------------
        -- Source File: E:\_uc3300a57fa4e8e~1\_uc34e0a7bc757fa~1\_
        uc37b2c4e8c7ae0~1\_uc356db540c4f4d~1.MS1
        -- Sheet: _uc5540c4f4d4ea7751f5668
        -- RefDes: PLD1
        --Part Number:
        --Generated By: NI Multisim
        --
        --Author: ni
        --Date: Thursday, August 26 19:57:59,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._uc656db540c4f4d4ea7751f5668_pkg.ALL;
        entity\_uc_uc5540c4f4d4ea7751f5668\is
            port(
              IO1: in std_logic;
              IO2: in std_logic;
              IO3: in std_logic;
              IO4: in std_logic;
              OUT01: out std_logic;
              OUT02: out std_logic;
              OUT03: out std_logic;
              OUT04: out std_logic;
              OUT05: out std_logic
            );
        end\_uc_uc5540c4f4d4ea7751f5668\;
        architecture behavioral of\_uc_uc5540c4f4d4ea7751f5668\is
            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_NI
                port (
            A : in STD_LOGIC := ' X' ;
            Y : out STD_LOGIC := ' U'
          );
            end component;
            component XOR2_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;
            signal \8\ : std_logic;
            signal \9\ : std_logic;
            signal \10\ : std_logic;
            signal \11\ : std_logic;
        begin
            IO1_AUTOBUF : AUTO_IBUF
                port map( I => IO1, O => \6\ );
            IO2_AUTOBUF : AUTO_IBUF
                port map( I => IO2, O => \4\ );
            IO3_AUTOBUF : AUTO_IBUF
                port map( I => IO3, O => \2\ );
            IO4_AUTOBUF : AUTO_IBUF
                port map( I => IO4, O => \1\ );
            U1 : BUF_NI
                port map( Y => \8\, A => \6\ );
            U2 : BUF_NI
                port map( Y => \9\, A => \4\ );
            U3 : BUF_NI
                port map( Y => \10\, A => \2\ );
            U4 : BUF_NI
                port map( Y => \11\, A => \1\ );
            U5 : XOR2_NI
                port map( A => \1\, B => \2\, Y => \3\ );
            U6 : XOR2_NI
                port map( A => \3\, B => \4\, Y => \5\ );
            U7 : XOR2_NI
                port map( A => \5\, B => \6\, Y => \7\ );
            OUT01_AUTOBUF : AUTO_OBUF
                port map( I => \8\, O => OUT01 );
            OUT02_AUTOBUF : AUTO_OBUF
                port map( I => \9\, O => OUT02 );
            OUT03_AUTOBUF : AUTO_OBUF
                port map( I => \10\, O => OUT03 );
            OUT04_AUTOBUF : AUTO_OBUF
                port map( I => \11\, O => OUT04 );
            OUT05_AUTOBUF : AUTO_OBUF
                port map( I => \7\, O => OUT05 );
          end behavioral;

NI Multisim 11中“4输入偶同位产生器”电路的仿真实例如图1.2.7所示。

图1.2.7 “4输入偶同位产生器”的仿真实例电路

输出波形如图1.2.8所示。

图1.2.8 “4输入偶同位产生器”输出波形