上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输入偶同位产生器”输出波形