410 likes | 453 Views
Explore the fundamentals of combinational logic, Boolean algebra, logic gates, and HDL design in digital systems. Learn about Verilog and VHDL, simulation, synthesis, and hardware abstraction levels for efficient circuit design. Practice writing Verilog code to implement logic functions at different levels. Understand logic levels and noise margins for reliable circuit operation.
E N D
COMP541Combinational Logic - I Montek Singh Jan 11, 2012
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