Digital Integrated Circuits A Design Perspective EE141 Digital Integrated Circuits A Design Perspective Jan M. Rabaey Anantha Chandrakasan Borivoje Nikolic Arithmetic Circuits January, 2003 (contém alterações feitas no âmbito da PSI-2452))
A Generic Digital Processor EE141 A Generic Digital Processor
Building Blocks for Digital Architectures EE141 Building Blocks for Digital Architectures Arithmetic unit - Bit-sliced datapath (adder, multiplier, shifter, comparator, etc.) Memory - RAM, ROM, Buffers, Shift registers Control - Finite state machine (PLA, random logic.) - Counters Interconnect - Switches - Arbiters - Bus
An Intel Microprocessor EE141 An Intel Microprocessor Itanium has 6 integer execution units like this
EE141 Bit-Sliced Design
EE141 Bit-Sliced Datapath
Itanium Integer Datapath EE141 Itanium Integer Datapath Fetzer, Orton, ISSCC’02
EE141 Adders
EE141 Full-Adder
EE141 The Binary Adder
EE141 The Binary Adder Como é a implementação CMOS? Mãos à Obra !
Características da célula somador completo: EE141 Características da célula somador completo: PMOS em série CL muito alta (em Cout) Inversor no caminho do carry A soma não é tão importante quanto o carry
The Ripple Carry-Adder EE141 The Ripple Carry-Adder Como é a implementação CMOS? Esquematizar um somador de 4 bits e computar o caminho crítico (diagrama de atrasos)
The Ripple-Carry Adder EE141 The Ripple-Carry Adder Worst case delay linear with the number of bits td = O(N) mais importante otimizar tcarry tadder = (N-1)tcarry + tsum Goal: Make the fastest possible carry path circuit
EE141 Inversion Property
Minimize Critical Path by Reducing Inverting Stages EE141 Minimize Critical Path by Reducing Inverting Stages Exploit Inversion Property
Express Sum and Carry as a function of P, G, D EE141 Express Sum and Carry as a function of P, G, D Define 3 new variable which ONLY depend on A, B Generate (G) = AB Propagate (P) = A B Delete = A B Can also derive expressions for S and C based on D and P o Note that we will be sometimes using an alternate definition for Propagate (P) = A B
EE141 Full-Adder P G D 0 0 1 1 0 0 0 1 0
CMOS Binary Adder with P and G Generate (G) = AB Propagate (P) = A B 28 transistors
A Better Structure: The Mirror Adder EE141 A Better Structure: The Mirror Adder
EE141 The Mirror Adder The NMOS and PMOS chains are completely symmetrical. A maximum of two series transistors can be observed in the carry- generation circuitry. When laying out the cell, the most critical issue is the minimization of the capacitance at node Co. The reduction of the diffusion capacitances is particularly important. The capacitance at node Co is composed of four diffusion capacitances, two internal gate capacitances, and six gate capacitances in the connecting adder cell . The transistors connected to Ci are placed closest to the output. Only the transistors in the carry stage have to be optimized for optimal speed. All transistors in the sum stage can be minimal size.
Transmission Gate Full Adder EE141 Transmission Gate Full Adder
Manchester Carry Gates EE141 Manchester Carry Gates
Manchester Carry Chain EE141 Manchester Carry Chain Tempo de propagação: tP = 0.69N(N+1)RC/2
EE141 Carry-Bypass Adder Also called Carry-Skip
Carry-Bypass Adder (cont.) EE141 Carry-Bypass Adder (cont.) tadder = tsetup + Mtcarry + (N/M-1)tbypass + (M-1)tcarry + tsum
Carry Ripple versus Carry Bypass EE141 Carry Ripple versus Carry Bypass
EE141 Carry-Select Adder
Carry Select Adder: Critical Path EE141 Carry Select Adder: Critical Path
EE141 Linear Carry Select
Square Root Carry Select EE141 Square Root Carry Select
Adder Delays - Comparison EE141 Adder Delays - Comparison
EE141 Multipliers
EE141 Shifters
EE141 The Binary Shifter
EE141 The Barrel Shifter Area Dominated by Wiring
EE141 4x4 barrel shifter Widthbarrel ~ 2 pm M
EE141 Logarithmic Shifter
0-7 bit Logarithmic Shifter EE141 0-7 bit Logarithmic Shifter A 3 Out3 A 2 Out2 A 1 Out1 A Out0
EE141 Conclusões Existem muitos módulos funcionais de processadores que podem ser descritos através de “geradores de módulos”. Mas, não todos. Exemplos: somadores, shifters, memórias, multiplicadores, registrador de deslocamento, multiplexadores, ....... Estes módulos podem ser disponibilizados de duas formas: módulos hard do tipo bit-slice (leiaute pré- determinado) ou módulos soft através de descrições comportamentais utilizando o comando generate. Ambos permitem acelerar o projeto de CI´s complexos