Transcript Chapter 5
Chapter 6 Combinational Logic Functions Basic Decoder • Decoder: A digital circuit designed to detect the presence of a particular digital state. • Can have one output or multiple outputs. • Example: 2-Input NAND Gate detects the presence of ‘11’ on the inputs to generate a ‘0’ output. 2 Single-Gate Decoders • Uses single gates (AND/NAND) and some Inverters. • Example: 4-Input AND detects ‘1111’ on the inputs to generate a ‘1’ output. • Inputs are labeled D3, D2, D1, and D0, with D3 the MSB (most significant bit) and D0 the LSB (least significant bit). 3 Single-Gate Decoders 4 Single-Gate Examples • If the inputs to a 4-Input NAND are given as D1, D2, D3, D4, then the NAND detects the code 0001. The output is a 0 when the code 0001 is detected. • This type of decoder is used in Address Decoding for a PC System Board. 5 Multiple Output Decoders • Decoder circuit with n inputs can activate m = 2n load circuits. • Called a n-line-to-m-line decoder, such as a 2-to-4 or a 3-to-8 decoder. G • Usually has an active low enable that enables the decoder outputs. 6 Truth Table for a 3-to-8 Decoder G D2 D1 D0 Y0 Y1 Y2 Y3 Y4 Y 5 Y6 Y7 1 0 X X X 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 7 Truth Table for a 3-to-8 Decoder 8 Simulation • Simulation: The verification of a digital design using a timing diagram before programming the design in a CPLD. • Used to check the Output Response of a design to an Input Stimulus using a timing diagram. 9 Simulation 10 VHDL Binary Decoder • Use select signal assignment statements constructs or conditional signal assignment statements constructs. 11 2-to-4 Decoder VHDL Entity • Using a select signal assignment statement: LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY decode3 IS PORT( d : IN STD_LOGIC_VECTOR (1 downto 0); y : OUT STD_LOGIC_VECTOR (3 downto 0)); END decode3; 12 Selected Signal Entity • In the previous slide, the Entity used a STD LOGIC Array for Inputs and Outputs. • The Y : OUT STD_LOGIC_VECTOR(3 downto 0) is equal to Y3, Y2, Y1, Y0. • The STD_LOGIC Data Type is similar to BIT but has added state values such as Z, X, H, and L instead of just 0 and 1. 13 Selected Signal Assignments • Uses a VHDL Architecture construct called WITH SELECT. • Format is: – WITH (signal input(s)) SELECT. – Signal input states are used to define the output state changes. 14 2-to-4 Decoder VHDL Architecture ARCHITECTURE decoder BEGIN WITH d SELECT y <= “0001” WHEN “0010 WHEN “0100” WHEN “1000” WHEN “0000” WHEN END decoder; OF decode3 IS “00”, “01”, “10”, “11”, others; 15 Decoder Architecture • The decoder Architecture used a SELECT to evaluate d to determine the Output y. • Both d and y are defined as an Array (or bus or vector) Data Type. • The last state for WHEN OTHERS is added for the other logic states (Z, X, H, L, etc.). 16 Seven-Segment Displays • Seven-Segment Display: An array of seven independently controlled LEDs shaped like an 8 that can be used to display decimal digits. 17 Seven-Segment Displays 18 Seven-Segment Displays 19 Common Anode Display • Common Anode Display (CA): A sevensegment display where the anodes of all the LEDs are connected together to VCC and a ‘0’ turns on a segment (a to g). 20 Common Cathode Display • Common Cathode Display (CC): A seven-segment display where all the cathodes are connected and tied to ground, and a ‘1’ turns on a segment. 21 Common Cathode Display 22 Common Cathode Display 23 Seven-Segment Decoder/Driver – 1 • Receives a BCD (Binary Coded Decimal) 4-Bit input, outputs a BCD digit 0000 – 1001 (0 through 9). • Generates Outputs (a–g) for each of the display LEDs. • Requires a current limit series resistor for each segment. 24 Seven-Segment Decoder/Driver – 2 • Decoders for a CC-SS have active high outputs while decoders for a CA-SS have active low outputs (a to g). • The outputs generated for the binary input combinations of 1010 to 1111 are “don’t cares”. • The decoder can be designed with VHDL or MSI Logic (7447, 7448). 25 SS Decoder/Driver Truth Table Digit 0 1 2 3 4 5 6 7 8 9 D3 D2 D1 D0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 a 0 1 0 0 1 0 1 0 0 0 b 0 0 0 0 0 1 1 0 0 0 c 0 0 1 0 0 0 0 0 0 0 d 0 1 0 0 1 0 0 1 0 1 e 0 1 0 1 1 1 0 1 0 1 f 0 1 1 1 0 0 0 1 0 0 g 1 1 0 0 0 0 0 1 0 0 26 SS Decoder/Driver Truth Table 27 Decoder/Driver Entity (CA) ENTITY bcd_7seg IS PORT( d3, d2, d1, d0 a, b, c, d, e, f, g END bcd_7seg; : IN BIT; : OUT BIT; 28 Decoder/Driver Architecture – 1 ARCHITECTURE seven_segment OF bcd_7seg IS SIGNAL input : BIT_VECTOR (3 downto 0); SIGNAL output : BIT_VECTOR (6 downto 0); BEGIN input <= d3 & d2 & d1 & d0; -- Uses two intermediate signals called input and output (internal no pins) -- Creates an array by using the concatenate operator (&) In this case input(3) <= d3, input(2) <= d2, etc. 29 Decoder/Driver Architecture – 2 WITH input SELECT output <= “0000001” WHEN “0000”, “1001111” WHEN “0001”, “0010010” WHEN “0010”, “0000110“ WHEN “0011”, • • • • • • • • • “1111111” WHEN others; 30 Decoder/Driver Architecture – 3 a <= output(6); b <= output(5); c <= output(4); d <= output(3); e <= output(2); f <= output(1); g <= output(0); END seven_segment 31 SS VHDL File Description • In the preceding example file, a concurrent select signal assignment was used (WITH (signals) SELECT. • The intermediate output signals were mapped to the segments (a to g). • Example: when Input (D3 – D0) is 0001, the decoder sets a=d=e=f=g=1, b=c=0.32 Ripple Blanking – 1 • Ripple Blanking: A technique used in a multiple-digit display that suppresses leading/trailing zeros but allows internal zeros to be displayed. • Uses a RBI (active-LOW) Input and a RBO (active-LOW) output. • When D0 – D3 = 0000 and RBO= 0, the display is blank. 33 Ripple Blanking – 2 • When D0 – D3 = 0000 and RBI = 1, the display shows a ‘0’ (zero). • If RBI = 1 or D0 – D3 0000, then RBO = 1. • To suppress leading zeros, connect RBI of MS Digit to Gnd, and RBOto RBI of the next least significant display. 34 Sequential Process in VHDL • A VHDL Process is a construct that encloses sequential statements that are executed when a signal in a sensitivity list changes. 35 Sequential Process Basic Format • Basic Format: PROCESS(Sensitivity List) BEGIN Sequential Statements; END PROCESS; 36 Ripple Blanking VHDL – 1 ENTITY sevsegrb IS PORT( - - Use separate I/O’s, not bus nRBI, d3, d2, d1, d0: IN BIT; a, b, c, d, e, f, g, nRBO : OUT BIT; END sevsegrb; 37 Ripple Blanking VHDL – 2 ARCHITECTURE seven_segment OF sevsegrb IS SIGNAL input : BIT_VECTOR (3 downto 0); SIGNAL output : BIT_VECTOR (6 downto 0); BEGIN input <= d3 & d2 & d1 & d0; 38 Ripple Blanking VHDL – 3 -- process statement PROCESS (input, nRBI) BEGIN IF(nRBI = ‘0’ and input = “0000”) THEN output <= “1111111”; - - 0 supressed nRBO <= ‘0’; - - Next 0 suppressed ELSE nRBO <= ‘1’; - - Next 0 displayed 39 Ripple Blanking VHDL – 4 CASE input IS WHEN “0000” => output <= “0000001”; - - A zero is displayed. WHEN “0001” => output <= “1001111”; - - A one is displayed. • • • • • • • • • • • • WHEN others => output <= “1111111”; - - Blank. END CASE END IF; END PROCESS assign_out; 40 CASE Statement • In the RB Design, we replaced the Selected Signal Assignment (With Select) with a Case Statement to generate the outputs for the SS Display. • The Process Steps are evaluated in sequence: – First the IF statements, then the Case, and so on. 41 IF THEN ELSE • The IF THEN ELSE Statements were used for conditional testing of some inputs (the data and RBI). • IF the data is this value THEN do these statements ELSE do this. • This is a very simple statement that is used a great deal in sequential logic. 42 Encoders • Encoder: A digital circuit that generates a specific code at its outputs in response to one or more active inputs. • It is complementary in function to a decoder. • Output codes are usually Binary or BCD. 43 Priority Encoders • Priority Encoder: An encoder that generates a code based on the highestpriority input. • For example, if input D3 = input D5, then the output is 101, not 011. D5 has a higher priority than D3 and the output will respond accordingly. 44 8-to-3 Encoder Truth Table ActiveHigh Inputs D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 1 Q2 Q1 Q0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 1 1 45 8-to-3 Encoder Truth Table 46 Priority Encoder Equations Q2 D7 D6 D5 D4 Q1 D7 D6 D5 D4 D3 D5 D4 D2 Q0 D7 D6 D5 D6 D4 D3 D6 D4 D2 D1 47 Priority Encoder VHDL Entity -- hi_pri8a.vhd ENTITY hi_pri8a IS PORT( d q END hi_pri8a; : IN BIT_VECTOR (7 downto 0); : OUT BIT_VECTOR (2 downto 0)); 48 Priority Encoder VHDL Architecture ARCHITECTURE a OF hi_pri8a IS BEGIN -- Concurrent Signal Assignments q(2) <= d(7) or d(6) or d(5) or d(4); q(1) <= d(7) or d(6) or ((not d(5)) and (not d(4)) and d(3)) or ((not d(5)) and (not d(4)) and d(2)); q(0) END a; <= -- in a similar fashion 49 Another VHDL Encoder – 1 -- hi_pri8b.vhd ENTITY hi_pri8a IS PORT( d q END hi_pri8b; : IN BIT_VECTOR (7 downto 0); : OUT INTEGER RANGE 0 TO 7); 50 Another VHDL Encoder – 2 ARCHITECTURE a OF hi_pri8b IS BEGIN encoder; q <= 7 WHEN d(7) = ‘1’ ELSE 6 WHEN d(6) = ‘1’ ELSE 5 WHEN d(5) = ‘1’ ELSE 4 WHEN d(4) = ‘1’ ELSE 3 WHEN d(3) = ‘1’ ELSE 2 WHEN d(2) = ‘1’ ELSE 1 WHEN d(1) = ‘1’ ELSE 0; END a; 51 Basic Multiplexers (MUX) • (MUX): A digital circuit that directs one of several inputs to a single output based on the state of several select inputs. • A MUX is called a m-to-1 MUX. • A MUX with n select inputs will require m = 2n data inputs (e.g., a 4-to-1 MUX requires 2 select inputs S1 and S0). 52 Basic Multiplexers (MUX) 53 Basic Multiplexers (MUX) 54 4-to-1 Multiplexers Truth Table S1 0 0 1 1 S0 0 1 0 1 Y D0 D1 D2 D3 55 Multiplexer Logic • Boolean expression for a 4-to-1 MUX is Y D0 S1 S0 D1 S1 S0 D2 S1 S0 D3 S1 S0 • This expression can be expanded to any size MUX so the VHDL architecture could use a very long concurrent Boolean statement. 56 Double Subscript Notation • Naming convention in which variables are bundled in numerically related groups, the elements of which are themselves numbered. • The first subscript identifies the group that a variable belongs to (D01, D00). • The second subscript indicates which element of the group a variable represents. 57 Truth Table for a 4-to-1 4-bit Bus MUX S1 0 0 1 1 S0 0 1 0 1 Y3 Y2 Y1 Y0 D03 D02 D01 D00 D13 D12 D11 D10 D23 D22 D21 D20 D33 D32 D31 D30 58 Truth Table for a 4-to-1 4-bit Bus MUX 59 VHDL Constructs For MUXs • The following three VHDL constructs can be used to describe the Multiplexer: – Concurrent Signal Assignment Statement – Select Signal Assignment Statement – CASE Statement 60 PROCESS and Sensitivity List • PROCESS: A VHDL construct that contains statements that are executed if a signal in its sensitivity list changes. • Sensitivity list: A list of signals in a PROCESS statement that are monitored to determine whether the Process should be executed. 61 Case Statement • A case statement is a VHDL construct in which there is a choice of statements to be executed, depending on the value of a signal or variable. 62 Case VHDL Template CASE __expression IS WHEN __constant_value => __statement; __statement; WHEN __constant_value => __statement; __statement; WHEN OTHERS => __statement; __statement; END CASE; 63 MUX 4-to-1 VHDL – 1 • Basic Entity declaration for a 4-to-1 MUX: ENTITY mux4case IS PORT( d0, d1, d2, d3 s y END mux4case; : IN BIT; : IN BIT_VECTOR (1 downto 0); : OUT BIT); 64 MUX 4-to-1 VHDL – 2 ARCHITECTURE mux4to1 OF mux4case IS BEGIN -- Monitor select inputs and execute if they change PROCESS(s) BEGIN CASE s IS 65 MUX 4-to-1 VHDL – 3 WHEN "00" WHEN "01" WHEN "10" WHEN "11" WHEN others END CASE; END PROCESS; END mux4to1; => => => => => y y y y y <= <= <= <= <= d0; d1; d2; d3; '0'; 66 Multiplexer Applications • Used in directing multiple data sources to a single processing element such as multiple CD Player Streams to a DSP. • Used in Time Division Multiplexing (TDM) by the Phone Service to multiplex multiple voice channels on a single coax line (or fiber). 67 Time Division Multiplexing (TDM) • Each user has a specific time slot in a TDM data frame. Each frame has 24 users. • TDM requires a time-dependent (counter) source to synchronize the select lines. • Each user’s time slot repeats on the next frame for more data. • The links are called T-Carriers (such as a T1 Line). 68 TDM Data Streams • Two methods in which data is transmitted: – Bit Multiplexing: One bit is sent at a time from the channel during the channel’s assigned time slot – Word Multiplexing: One byte is sent at a time from the channel during the channel’s assigned time slot 69 TDM Data Streams 70 TDM Data Streams 71 TDM Data Streams 72 Demultiplexer Basics – 1 • Demultiplexer: A digital circuit that uses a decoder to direct a single input (from a MUX) to one of several outputs. • A DEMUX performs the reverse operation of a MUX. • The selected output is chosen by the Select Inputs (as in a MUX). 73 Demultiplexer Basics – 2 • Designated as a 1-to-n DEMUX that requires m select inputs such that n outputs = 2m select inputs. • 1-to-4 DEMUX Equations: Y( 0 ) D0 S1 S0 ; Y( 1) D0 S1 S0 ; Y( 2 ) D0 S1 S0 ; Y( 3 ) D0 S1 S0. • They are similar to a MUX and can be designed using CASE Statements. 74 Demultiplexer Basics – 3 75 Demultiplexer Basics – 4 76 Demultiplexer Basics – 5 77 Demultiplexer VHDL Entity ENTITY dmux8 IS PORT( s : IN STD_LOGIC_VECTOR (2 downto 0); d : IN STD_LOGIC; y : OUT STD_LOGIC_VECTOR (0 to 7)); END dmux8; 78 Demultiplexer VHDL Architecture ARCHITECTURE a OF dmux8 IS SIGNAL inputs : STD_LOGIC_VECTOR (3 downto 0); BEGIN inputs <= d & s; WITH inputs select Y <= “01111111” WHEN “0000”, “10111111” WHEN “0001”, • • • • • • “11111111” WHEN others; END a; 79 Demultiplexer VHDL Architecture 80 Analog MUX/DEMUX • Uses a CMOS Switch or Transmission Gate that will allow a signal to Pass in two directions for + and – Voltages. • Some commercial types such as a CD4066 or 74HC4066. • Multiplexes 4 CMOS Switches to a single output (Y) for analog multiplexing. 81 Analog MUX/DEMUX 82 Analog MUX/DEMUX 83 Magnitude Comparators – 1 • Magnitude Comparator: A digital circuit that compares two n-Bit Binary Numbers and indicates if they are equal or which is greater. • A very simple One-Bit Magnitude Comparator is the Two-Input XNOR Gate: – When both inputs are equal, the output is a 1; if they are not, it is a 0. 84 Magnitude Comparators – 2 • Multiple Bit Comparisons AEQB ( An- 1 Bn- 1) • ( An- 2 Bn- 2 ) . • Also adds A > B (AGTB) and A < B (ALTB) Outputs. • For A > B, start with the MSB: – If An–1 > Bn–1, then AGTB = 1 • If not, then try the next most significant bit. 85 VHDL 4-Bit Magnitude Comparator – 1 ENTITY compare4 IS PORT( a, b agtb, aeqb, altb END compare4; : IN INTEGER RANGE 0 to 15; : OUT STD_LOGIC); 86 VHDL 4-Bit Magnitude Comparator – 2 ARCHITECTURE a OF compare4 IS SIGNAL compare :STD_LOGIC_VECTOR (2 downto 0); BEGIN PROCESS (a, b) BEGIN IF a<b THEN compare <= “110”; ELSIF a = b THEN compare <= “101”; 87 VHDL 4-Bit Magnitude Comparator – 3 ELSIF a > b THEN compare <= “011”; ELSE compare <= “111”; END IF; agtb <= compare(2); aeqb <= compare(1); altb <= compare(0); END PROCESS END a; 88 Parity Basics – 1 • Parity: A digital system that checks for errors in a n-Bit Binary Number or Code. • Even Parity: A parity system that requires the binary number and the parity bit to have an even # of 1s. • Odd Parity: A parity system that requires the binary number and the parity bit to have an Odd # of 1s. 89 Parity Basics – 2 • Parity Bit: A bit appended on the end of a binary number or code to make the # of 1s odd or even depending on the type of parity in the system. • Parity is used in transmitting and receiving data by devices in a PC called UARTs, that are on the COM Port. 90 Parity Basics – 3 91 Parity Calculation • N1 = 0110110: – It has four 1s (an even number). – If Parity is ODD, the Parity Bit = 1 to make it an odd number (5). – If Parity is EVEN, the Parity Bit = 0 to keep it an even number (4). • N2 = 1000000: – One 1 in the data. – Podd = 0. – Peven = 1. 92 Parity Generation HW – 1 • A basic two-bit parity generator can be constructed from a XOR Gate. • When the two inputs are 01 or 10, the output is a 1 (so this is even parity). • When the two inputs are 00 or 11, the output is a 0. • For a parity generator of n bits, add more gates. 93 Parity Generator HW – 2 • Cascading a long chain of XOR gates could cause excessive propagation delays. • To check for a Parity error, the receiver (RX) just generates a new Parity Bit (P1) based on the received parallel data and then compares it to the parity bit transmitted (P2). 94 Parity Generator HW – 3 • If there is an error, the two bits (P1 and P2) will not be equal, and we can use a two-bit magnitude comparator to check this (an XOR gate). • This check is called syndrome. – If there are no errors, the syndrome output (Perr) is 0. • Parity is not a foolproof system. – If two bits are in error, the error is not detected. 95 Parity Generator HW – 4 96 VHDL GENERATE Statement __generate_label: FOR __index_variable IN __range GENERATE __statement; __statement; END GENERATE; 97 4-Bit Parity VHDL Code – 1 LIBRARY ieee; USE ieee.std_logic1164.ALL; ENTITY parity4_gen IS PORT( d : IN STD_LOGIC_VECTOR (0 to 3); pe ; OUT STD_LOGIC); END parity4_gen; 98 4-Bit Parity VHDL Code – 2 ARCHITECTURE parity OF parity4_gen IS SIGNAL p : STD_LOGIC_VECTOR (1 to 3); BEGIN p(1) <= d(0) xor d(1); parity_generate: FOR i IN 2 to 3 GENERATE p(i) <= p(i-1) xor d(i); END GENERATE; pe <= p(3); END parity; 99