400 likes | 545 Views
COMP541 Combinational Logic - I. Montek Singh Jan 14, 2010. Today. Basics of digital logic (review) Basic functions Boolean algebra Gates to implement Boolean functions. Binary Logic. Binary variables Can be 0 or 1 (T or F, low or high) Variables named with single letters in examples
E N D
COMP541Combinational Logic - I Montek Singh Jan 14, 2010
Today • Basics of digital logic (review) • Basic functions • Boolean algebra • Gates to implement Boolean functions
Binary Logic • Binary variables • Can be 0 or 1 (T or F, low or high) • Variables named with single letters in examples • Really use words when designing circuits
Logic Gates • Perform logic functions: • inversion (NOT), AND, OR, NAND, NOR, etc. • Single-input: • NOT gate, buffer • Two-input: • AND, OR, XOR, NAND, NOR, XNOR • Multiple-input
NAND is Universal • Can express any Boolean Function • Equivalents below
Using NAND as Invert-OR • Also reverse inverter diagram for clarity
NOR Also Universal • Dual of NAND
Representation: Boolean Algebra • More on this next time
Representation: Truth Table • 2n rows: where n # of variables
Schematic Diagrams • Can you design a Pentium or a graphics chip that way? • Well, yes, but diagrams are overly complex and hard to enter • These days people represent the same thing with text (code)
Hardware Description Languages • Main ones are Verilog and VHDL • Others: Abel, SystemC, Handel • Origins as testing languages • To generate sets of input values • Levels of use from very detailed to more abstract descriptions of hdw • Think about C++ from assembly level description to very abstract HLL
Design w/ HDL • Two leading HDLs: • Verilog • developed in 1984 by Gateway Design Automation • became an IEEE standard (1364) in 1995 • VHDL • Developed in 1981 by the Department of Defense • Became an IEEE standard (1076) in 1987 • Most (all?) commercial designs built using HDLs • We’ll use Verilog
Uses of HDL • Simulation • Defines input values are applied to the circuit • Outputs checked for correctness • Millions of dollars saved by debugging in simulation instead of hardware • Synthesis • Transforms HDL code into a netlist describing the hardware (i.e., a list of gates and the wires connecting them) IMPORTANT: • When describing circuits using an HDL, it’s critical to think of the hardware the code should produce.
Verilog Module • Code always organized in modules • Represent a logic “box” • With inputs and outputs
Example module example(input a, b, c, output y); *** HDL CODE HERE *** endmodule
Levels of Verilog Several different levels (or “views”) • Structural • Dataflow • Conditional • Behavioral Look at first three today
Example 1 • Output is 1 when input < 011
Structural Verilog • Explicit description of gates and connections • Textual form of schematic • Specifying netlist
Example 1 in Structural Verilog module example_1(X,Y,Z,F); input X; input Y; input Z; output F; //wire X_n, Y_n, Z_n, f1, f2; not g0(X_n, X), g1(Y_n, Y), g2(Z_n, Z); nand g3(f1, X_n, Y_n), g4(f2, X_n, Z_n), g5(F, f1, f2); endmodule Can also be input X, Y, Z;
Slight Variation – Gates not named module example_1_c(X,Y,Z,F); input X; input Y; input Z; output F; not(X_n, X); not(Y_n, Y); not(Z_n, Z); nand(f1, X_n, Y_n); nand(f2, X_n, Z_n); nand(F, f1, f2); endmodule
Explanation • Each of these gates is an instance • Like object vs class • In first example, they had names not g0(X_n, X), • In second example, no name not(X_n, X); • Later see why naming can be useful
Gates • Standard set of gates available • and, or, not • nand, nor • xor, xnor • buf
Dataflow Description • Basically a logical expression • No explicit gates module example_1_b(X,Y,Z,F); input X; input Y; input Z; output F; assign F = (~X & ~Y) | (~X & ~Z); endmodule
Conditional Description module example_1_c(input [2:0] A, output F); assign F = (A > 3’b011) ? 0 : 1; endmodule Notice alternate specification
Abstraction • Using the digital abstraction we’ve been thinking of the inputs and outputs as • True or False • 1 or 0 • What are they really?
Logic Levels • Define discrete voltages to represent 1 and 0 • For example, we could define: • 0 to be ground or 0 volts • 1 to be VDD or 5 volts • What about 4.99 volts? Is that a 0 or a 1? • What about 3.2 volts?
Logic Levels • Define a range of voltages to represent 1 and 0 • Define different ranges for outputs and inputs to allow for noise in the system • What is noise?
What is Noise? • Anything that degrades the signal • E.g., resistance, power supply noise, coupling to neighboring wires, etc. • Example: a gate (driver) could output a 5 volt signal but, because of resistance in a long wire, the signal could arrive at the receiver with a degraded value, for example, 4.5 volts
The Static Discipline • Given logically valid inputs, every circuit element must produce logically valid outputs • Discipline ourselves to use limited ranges of voltages to represent discrete values
Noise Margins NMH = VOH – VIH NML = VIL – VOL
DC Transfer Characteristics Ideal Buffer: Real Buffer: NMH , NML < VDD/2 NMH = NML = VDD/2
VDD Scaling • Chips in the 1970’s and 1980’s were designed using VDD = 5 V • As technology improved, VDD dropped • Avoid frying tiny transistors • Save power • 3.3 V, 2.5 V, 1.8 V, 1.5 V, 1.2 V, 1.0 V, …
Reading • Textbook Ch. 2.1 – 2.6