43
Microeletrônica q Professor: Fernando Gehm Moraes http://www.inf.pucrs.br/moraes/microel q Livro texto: Digital Integrated Circuits a Design Perspective - Rabaey CMOS VLSI Design - Weste 1 Revisão das lâminas : 13/janeiro/2020

PUCRS - Portal - Microeletrônicamoraes/microel/microel_slides...Conceitos básicos para multiplicação qproduct of 2 n-bit numbers is an 2n-bit number •sum of n n-bit partial products

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

  • Microeletrônicaq Professor: Fernando Gehm Moraes

    http://www.inf.pucrs.br/moraes/microel

    q Livro texto: Digital Integrated Circuits a Design Perspective - RabaeyCMOS VLSI Design - Weste

    1Revisão das lâminas: 13/janeiro/2020

    http://www.inf.pucrs.br/moraes/microel

  • Sumário da aulas teóricasUNIDADE 1

    #1 à Introdução e Dispositivos MOS#2 à Inversor - comportamento estático e dinâmico#3 à Portas lógicas estáticas#4 à Dimensionamento de Portas Lógicas #5 à Portas lógicas dinâmicas #6 à Processo de fabricação CMOS

    UNIDADE 2#7 à Circuitos sequenciais estáticos #8 à Circuitos sequenciais dinâmicos#9 à Circuitos aritméticos#10 à Multiplicação e Divisão: conceitos básicos#11 à Metodologias de projeto

    2

  • Conceitos básicos para multiplicação

    q product of 2 n-bit numbers is an 2n-bit number• sum of n n-bit partial products

    q unsigned

    multiplicand

    multiplier

    1101 (13)

    1011 (11)

    1101

    1101

    0000

    1101

    *

    10001111 (143)

    Partial products

    3

  • Multiplicação

    A0

    B0

    A0 B0

    A1

    B1

    A1 B0

    A0 B1

    A2

    B2

    A2 B0

    A1 B1

    A0 B2

    A3

    B3

    A2 B0

    A2 B1

    A1 B2

    A0 B3

    A3 B1

    A2 B2

    A1 B3

    A3 B2

    A2 B3A3 B3

    S6 S5 S4 S3 S2 S1 S0S7

    um carry propagado

    dois carrys propagados

    Quanto maior o número de produtos parciais a somar maior o número de bits de vai-um gerados

    PROBLEMA

    4

  • Multiplicador “array”

    [Rab96] p.409[WE92] p547

    HA FA FA HA

    X3 X2 X1 X0 Y1

    X3 X2 X1 X0 Y0

    Z0

    FA FA FA HA

    X3 X2 X1 X0 Y2 Z1

    FA FA FA HA

    X3 X2 X1 X0 Y3 Z2

    Z3Z4Z5Z6Z7

    C

    S

    PROBLEMA?

    Tempo de propagação do vai-um

    5

  • Carry-save Additionq Speeding up multiplication is a

    matter of speeding up the summing of the partial products.

    q “Carry-save” addition can help.q Carry-save addition passes

    (saves) the carries to the output, rather than propagating them.

    q Example: sum three numbers,310 = 0011, 210 = 0010, 310 = 0011

    310 0011+ 210 0010

    c 0100 = 410s 0001 = 110

    310 0011c 0010 = 210s 0110 = 610

    1000 = 810

    carry-save add

    carry-propagate add

    • In general, carry-save addition takes in 3 numbers and produces 2.• Whereas, carry-propagate takes 2 and produces 1.• With this technique, we can avoid carry propagation until final addition

    6

  • Carry-save Addition

    q Fazer a soma 7 + 3 + 4

    0 1 1 1 70 0 1 1 3

    0 carrysoma

    0 1 0 0 40 carry

    somaresultado

    carry-save add

    carry-save add

    7

  • Carry-save Circuits

    q When adding sets of numbers, carry-save can be used on all but the final sum.

    q Standard adder (carry propagate) is used for final sum.

    FA FA FA FA FA FA FA FA 0

    CSA

    s cs cs cs cs cs cs cs cc

    CSA

    CPA

    CSA

    CSA

    x0

    x1

    x2

    8

  • CSA

    Carry-Save Adder: structureq Postpone the “carry propagation” operation to the last stage

    HA HA HA HA

    HA FA FA FA

    HA FA FA FA

    HA FA FA HA[Rab96] p.411

    Vector merging stageHA FA FA HA

    Todos os valores chegam juntos no somador de propagação

    9

  • Implementação do multiplicador

    A3 B0

    SCA2 B0

    SCA1 B0

    SCA0 B0

    SC

    A3 B1

    SC

    A2 B1

    SC

    A1 B1

    SC

    A0 B1

    SC

    A3 B2

    SCA2 B2

    SCA1 B2

    SCA0 B2

    SC

    A3 B3

    SCA2 B3

    S

    A1 B3

    S

    A0 B3

    S

    B0

    B1

    B2

    B3

    P7 P6 P5 P4 P3 P2 P1 P0

    A3 A2 A1 A0

    Building block: full adder + and

    4 x 4 array of building blocks

    AddCPA

    F A

    A(i)

    B

    A B

    S CI CO

    Cin Sum In

    Sum Out Cout

    10

  • architecture Mult_CSAdder of Mult_CSAdder is

    type mat4x4 is array(0 to 3) of std_logic_vector(3 downto 0);

    signal soma : mat4x4;signal vaium : mat4x4;signal andab : mat4x4;

    signal co: std_logic_vector(3 downto 0);

    begin

    --- primeira camada de geração de produtos parciais (substituí os FA por uma porta AND) ----

    bits0: for j in 0 to 3 generate soma(0)(j)

  • F A

    A(i)

    B

    A B

    S CI CO

    Cin Sum In

    Sum Out Cout

    A3 B0

    SCA2 B0

    SCA1 B0

    SCA0 B0

    SC

    A3 B1

    SC

    A2 B1

    SC

    A1 B1

    SC

    A0 B1

    SC

    A3 B2

    SCA2 B2

    SCA1 B2

    SCA0 B2

    SC

    A3 B3

    SCA2 B3

    S

    A1 B3

    S

    A0 B3

    S

    B0

    B1

    B2

    B3

    P7 P6 P5 P4 P3 P2 P1 P0

    A3 A2 A1 A0

    linhas: for i in 1 to 3 generate bits: for j in 0 to 3 generate

    andab(i)(j) vaium(i-1)(j),

    c=>soma(i-1)(j+1), S=>soma(i)(j), Cout=>vaium(i)(j) );end generate;

    g2: if j=3 generate Adder2: entity FullAdder port map( a=>andab(i)(j), b=>vaium(i-1)(j), c=>'0',

    S=>soma(i)(j), Cout=>vaium(i)(j) );end generate;

    end generate bits; end generate linhas;

    12

  • A3 B0

    SCA2 B0

    SCA1 B0

    SCA0 B0

    SC

    A3 B1

    SC

    A2 B1

    SC

    A1 B1

    SC

    A0 B1

    SC

    A3 B2

    SCA2 B2

    SCA1 B2

    SCA0 B2

    SC

    A3 B3

    SCA2 B3

    S

    A1 B3

    S

    A0 B3

    S

    B0

    B1

    B2

    B3

    P7 P6 P5 P4 P3 P2 P1 P0

    A3 A2 A1 A0

    -- primeiros bits da multiplicação são obtidos diretamente dos carry-save adders---P(3 downto 0) soma(3)(1), b=>vaium(3)(0), c=>'0', S=>P(4), Cout=>co(0) );

    fa_last: for j in 1 to 3 generateg3: if jP(4+j), Cout=>co(j) );end generate;

    g4: if j=3 generate entity FullAdder PORT MAP( '0‘, vaium(3)(j), co(j-1), S=>P(4+j), Cout=>co(j) );

    end generate;

    end generate fa_last;

    end Mult_CSAdder;

    13

  • Simulação e atrasos

    14

  • Carry-save AdditionCSA is associative and communitive. For example:

    (((X0 + X1) + X2 ) + X3 ) = ((X0 + X1) +( X2 + X3 ))

    • A balanced tree can be used to reduce the logic delay.

    • This structure is the basis of the Wallace Tree Multiplier.

    • Partial products are summed with the CSA tree. Fast CPA (ex: CLA) is used for final sum.

    • Multiplier delay a log3/2N + log2NCSA

    CPA

    CSA

    CSA

    x0x1x2

    CSA

    CSACSA

    x3x4x5x6x7

    log3/2N

    log2N

    15

  • 16

    O somador carry save, utilizado nos multiplicadores, serve pararealizar a soma quando há várias parcelas a seremadicionadas.

    Dados os seguintes valores:A = 001101 (1310)B = 000101 (510)C = 001011 (1110)D = 001010 (1010)E = 000111 (710)F = 001100 (1210)

    Mostre a obtenção e os valores de (C1/S1), (C2/S2), (C3/S3),(C4/S4) e a soma final (S5).

    Carry Save

    Carry Save

    Carry Save

    Carry Save

    Carry Propagate

    C1 S1 C2 S2

    C3 S3

    C4 S4

    S5

    F E D C B A

    A 0 0 1 1 0 1 B 0 0 0 1 0 1 C 0 0 1 0 1 1

    S2 C2 S1 S3 C3 C1 S4 C4

    Soma

    D 0 0 1 0 1 0 E 0 0 0 1 1 1 F 0 0 1 1 0 0

    S1 C1

  • 17

    Multiplicação. Apresenta-se abaixo o diagrama lógico de ummultiplicador de 4 bits.

    a)Explique como o carry é propagado no interior do circuito. Qual avantagem deste esquema de propagação de carry?

    b)Considere: A=1011 e B=1101. Desenhe sobre o circuito osvalores booleanos correspondentes, verificando se o valor obtidopela multiplicação é o correto.

    HAB A

    Cout S

    HAB A

    Cout S

    HAB A

    Cout S

    FAC AB

    Cout S

    FAC AB

    Cout S

    FAC AB

    Cout S

    FAC AB

    Cout S

    FAC AB

    Cout S

    FAC AB

    Cout S

    FAC

    C

    B

    S

    FAC B

    S

    HAB A

    CoutS

    C CoutCout

    B3 A0 B2 A0 B1 A0 B0 A0

    B3 A1 B2 A1 B1 A1 B0 A1

    B3 A2 B2 A2 B1 A2 B0 A2

    B3 A3 B2 A3 B1 A3 B0 A3

    P7 P6 P5 P4 P3 P2 P1 P0

  • Multiplicação serialÆ Solução natural para a*b: somas sucessivas n passos

    Æ Inicialmente, P=0, A=a, B=b. Cada passo, duas partes:§ soma carregada em P;§ P & A deslocado um bit para a direita.

    +

    P A

    Bn

    nn

    DeslocamentoVai-um

    18

  • A = 11011 (27)B = 00101 (5)

    Multiplicação A*B

    P Apasso 0 0 0 0 0 0 1 1 0 1 1

    0 0 0 1 0 1 1 1 0 1 11

    2

    3

    4

    5

    0 0 0 1 0 1 1 1 0 100 0 1 1 1 1 1 1 0 10

    0 0 1 1 1 1 1 1 0000 0 1 1 1 1 1 1 000

    0 0 1 1 1 1 1 10001 1 0 1 1 1 1 1000

    1 1 0 1 1 1 100000 0 0 1 1 1 10100

    0 0 0 1 1 101000

    135 è 100 00111

    19

  • ➨ Solução para a/b: subtrações sucessivas, n passos

    ➨ Algoritmo: 1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub

  • A = 11011 (27)B = 00101 (5)

    Divisão A/B

    P (conterá o resto) A (conterá a divisão)passo 0 0 0 0 0 0 1 1 0 1 1

    0 0 0 0 0 1 1 0 1 1 010 0 0 0 0 1 1 0 1 1 0

    2

    3

    4

    5

    21

    1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub

  • A = 11011 (27)B = 00101 (5)

    P (conterá o resto) A (conterá a divisão)passo 0 0 0 0 0 0 1 1 0 1 1

    0 0 0 0 0 1 1 0 1 1 010 0 0 0 0 1 1 0 1 1 00 0 0 0 1 1 0 1 1 0 020 0 0 0 1 1 0 1 1 0 0

    3

    4

    5

    Divisão A/B

    22

    1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub

  • A = 11011 (27)B = 00101 (5)

    P (conterá o resto) A (conterá a divisão)passo 0 0 0 0 0 0 1 1 0 1 1

    0 0 0 0 0 1 1 0 1 1 010 0 0 0 0 1 1 0 1 1 00 0 0 0 1 1 0 1 1 0 020 0 0 0 1 1 0 1 1 0 00 0 0 1 1 0 1 1 0 0 030 0 0 0 0 1 1 1 0 0 1

    4

    5

    Divisão A/B

    00110 - 00101 = 001

    23

    1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub

  • A = 11011 (27)B = 00101 (5)

    P (conterá o resto) A (conterá a divisão)passo 0 0 0 0 0 0 1 1 0 1 1

    0 0 0 0 0 1 1 0 1 1 010 0 0 0 0 1 1 0 1 1 00 0 0 0 1 1 0 1 1 0 020 0 0 0 1 1 0 1 1 0 00 0 0 1 1 0 1 1 0 0 030 0 0 0 0 1 1 1 0 0 10 0 0 0 1 1 1 0 0 1 040 0 0 0 1 1 1 0 0 1 0

    5

    Divisão A/B

    24

    1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub

  • A = 11011 (27)B = 00101 (5)

    P (conterá o resto) A (conterá a divisão)passo 0 0 0 0 0 0 1 1 0 1 1

    0 0 0 0 0 1 1 0 1 1 010 0 0 0 0 1 1 0 1 1 00 0 0 0 1 1 0 1 1 0 020 0 0 0 1 1 0 1 1 0 00 0 0 1 1 0 1 1 0 0 030 0 0 0 0 1 1 1 0 0 10 0 0 0 1 1 1 0 0 1 040 0 0 0 1 1 1 0 0 1 00 0 0 1 1 1 0 0 1 0 050 0 0 0 1 0 0 0 1 0 1

    Resto = 2 resultado=5

    Divisão A/B1) desloca P&A p/ esq 1 bit; sub ß P-B; 2) if (sub

  • Shift and Rotate Operations

    q Used in:§ Microprocessors§ Encryption algorithms

    q If fixed shift, simply wire the inputs to the correct output positions

    q Variable shift§ One-bit shifter§ Barrel shifter§ Logarithmic shifter

  • One-bit Shifter

    Ai-1

    Ai

    Right NOP Left

    Bi-1

    Bi

    Bit-slice i

    27

  • n-bit Shifter (barrel shifter)

    q Quadratic number of transistorsq One switch per path

    in3 in2 in1 in0out0

    out1

    out2

    out3

    28

    RR1RR1

    Rotacioando 1 bit para direita:rotate 1 right(1100) 0110

    ß in1

    ß in2

    ßin3

    ßin0

  • n-bit Shifter (barrel shifter)

    in3 in2 in1 in0out0

    out1

    out2

    out3

    29

    RR2

    RR2

    Rotacioando 2 bits para direita:rotate 1 right(1100) 0 0 11

    ß in2

    ß in3

    ßin0

    ßin1

  • n-bit Shifter (barrel shifter)

    in3 in2 in1 in0out0

    out1

    out2

    out3

    30

    RR2

    RR2RR1

    RR1

    Circuito completo:

    RR0 RR3

    RR3

  • q Deslocamento lógico10001 à 1 bit para a direita 01000

    1 bit para a esquerda 00010

    q Deslocamento aritmético00100 à 1 bit para a direita 00010 (de 4 para 2) 10100 à 1 bit para a direita 11010 (de -12 para -6)

    31

    Deslocamento Aritmético

  • B3

    B2

    B1

    B0

    A3

    A2

    A1

    A0

    Sh3Sh2Sh1Sh0

    Sh3

    Sh2

    Sh1

    32

    ß A3

    ß A3

    ßA2

    ßA1

    SH1 ß 1

    Area dominated by wiring

    Bit 3 wrapped around

  • B3

    B2

    B1

    B0

    A3

    A2

    A1

    A0

    Sh3Sh2Sh1Sh0

    Sh3

    Sh2

    Sh1

    33

    ß A3

    ß A3

    ßA3

    ßA2

    SH2 ß 1

  • Exemplo de Circuito Complexo

    34

  • 35

  • 36

  • Flip-flops utilizados no circuito

    37

  • 38

    Q

    QSET

    CLR

    DQ1

    clockQ

    QSET

    CLR

    DQ2

    clock

    Latch (atraso interno 1 ns) Mestre escravo (atraso interno 1 ns)

    Clk

    Q1

    Q2

    t

    t

    t 0 5 10 15 20 25 30 35 40 45

    Para os circuitos de memória abaixo, com valor inicial do Q1=’0’ e Q2=’0’, determine o comportamento de ambos os circuitos, completando os diagramas de tempo abaixo. Não desenhe apenas os diagramas de tempo, explique-os. O “atraso interno” refere-se ao tempo do inversor mais o do circuito de memória.

    Exercício 1/6

  • 39

    clock IN clock

    o1 Q3

    Considere o circuito representado abaixo, preenchendo a forma de onda parao sinal Q3. Considere níveis lógicos perfeitos (0 e vcc) – sem distorções devidoao efeito de VTH.

    a) O circuito, para armazenamento da entrada IN, é sensível ao nível ou à borda do sinalclock? Se for sensível ao nível do sinal clock, para qual nível o circuito é transparente,ou se for sensível à borda, para qual borda o circuito armazena a informação.

    b) De que forma este circuito mantém a informação armazenada, dado que não há laçode realimentação no mesmo?

    Q3

    Exercício 2/6

  • 40

    Exercício 3/6

    Prova P2 Disciplina: Microeletrônica T 590 Professor: Fernando Gehm Moraes

    Aluno: 19/Junho/2017

    1. (1,5) Explique a operação de portas lógicas dinâmicas utilizando o exemplo abaixo (NAND). Apresente no diagrama de tempos 1 transição válida e 1 transição inválida nas entradas A e B. Para cada transição, indique a mesma no diagrama de tempos e explique porque ela é válida e inválida, mostre o estado da saída S.

    Para implementar um contador de 4 bits, o projetista resolveu substituir os flip-flops D mestre-escravo por latches D, com o objetivo de reduzir o número de transistores do circuito. Para o primeiro bit, este projetista utilizou um clock na forma de pulso (glitch clock). Pede-se:

    a) Porque o projetista decidiu utilizar um clock na forma de pulso estreito ao invés de um sinal de clock com duty cycle de 50%?

    b) Explique o comportamento deste novo circuito, dizendo se o mesmo vai operar como um contador ou não.

    c) Apresente as formas de onda para clock (glitch), e o que se obtém nos sinais Q0 e Q1 [Q2 e Q3 são opcionais].

    Circuitos aritméticos de soma. Apresenta-se abaixo o diagrama de um bloco do somador carry-select. Pede-se: d) Explique o princípio lógico de funcionamento deste somador, e como é obtido um somador de 32 bits

    utilizado estágios de 4 bits? Porque este somador é mais rápido que o ripple carry? e) Considerando apenas o tempo do FA (full adder) (1,2 ns) e o tempo do multiplexador (0,4 ns), qual o tempo

    de pior caso para a soma do carry-select, e qual o tempo de pior caso para o ripple carry, considerando soma de 32 bits. Apresente como o resultado foi obtido.

    f) Considerando o número de transistores para o FA igual a 28 transistores, qual o número total de transistores para cada um dos somadores de 32 bits? (o número de transistores do multiplexador deve ser determinado na questão – não é fornecido)

    S

    A

    B

    ck

    ck

    A

    B

    S

    D Q

    Qck

    LATCHD Q

    Qck

    LATCHD Q

    Qck

    LATCHD Q

    Qck

    LATCH

    GLITCHClock

    Q0 Q1 Q2 Q3

    FA

    b3 a3

    FA

    s3

    FA

    b2 a2

    FA

    s2

    FA

    b1 a1

    FA

    s1

    FA

    b0 a0

    FA

    s0

    cout

    cin

    ‘0’

    ‘1’

  • 41

    Prova P2 Disciplina: Microeletrônica T 590 Professor: Fernando Gehm Moraes

    Aluno: 19/Junho/2017

    1. (1,5) Explique a operação de portas lógicas dinâmicas utilizando o exemplo abaixo (NAND). Apresente no diagrama de tempos 1 transição válida e 1 transição inválida nas entradas A e B. Para cada transição, indique a mesma no diagrama de tempos e explique porque ela é válida e inválida, mostre o estado da saída S.

    Para implementar um contador de 4 bits, o projetista resolveu substituir os flip-flops D mestre-escravo por latches D, com o objetivo de reduzir o número de transistores do circuito. Para o primeiro bit, este projetista utilizou um clock na forma de pulso (glitch clock). Pede-se:

    a) Porque o projetista decidiu utilizar um clock na forma de pulso estreito ao invés de um sinal de clock com duty cycle de 50%?

    b) Explique o comportamento deste novo circuito, dizendo se o mesmo vai operar como um contador ou não.

    c) Apresente as formas de onda para clock (glitch), e o que se obtém nos sinais Q0 e Q1 [Q2 e Q3 são opcionais].

    Circuitos aritméticos de soma. Apresenta-se abaixo o diagrama de um bloco do somador carry-select. Pede-se: d) Explique o princípio lógico de funcionamento deste somador, e como é obtido um somador de 32 bits

    utilizado estágios de 4 bits? Porque este somador é mais rápido que o ripple carry? e) Considerando apenas o tempo do FA (full adder) (1,2 ns) e o tempo do multiplexador (0,4 ns), qual o tempo

    de pior caso para a soma do carry-select, e qual o tempo de pior caso para o ripple carry, considerando soma de 32 bits. Apresente como o resultado foi obtido.

    f) Considerando o número de transistores para o FA igual a 28 transistores, qual o número total de transistores para cada um dos somadores de 32 bits? (o número de transistores do multiplexador deve ser determinado na questão – não é fornecido)

    S

    A

    B

    ck

    ck

    A

    B

    S

    D Q

    Qck

    LATCHD Q

    Qck

    LATCHD Q

    Qck

    LATCHD Q

    Qck

    LATCH

    GLITCHClock

    Q0 Q1 Q2 Q3

    FA

    b3 a3

    FA

    s3

    FA

    b2 a2

    FA

    s2

    FA

    b1 a1

    FA

    s1

    FA

    b0 a0

    FA

    s0

    cout

    cin

    ‘0’

    ‘1’

    Exercício 4/6

  • 42

    Exercício 5/6

    1. Circuitos de rotação e deslocamento. Apresentar uma matriz de transistores capaz de realizar deslocamentos para a direita para palavras de 4 bits, onde o bit mais significativo recebe ‘0’ (gnd). A tabela abaixo ilustra os valores que os bits de saída (B3 a B0) devem receber em função dos bits de entrada (A3 a A0).

    Ação Comando B3 B2 B1 B0 Não desloca SR0 A3 A2 A1 A0 Deslocamento de 1 bit a direita SR1 0 A3 A2 A1 Deslocamento de 2 bits a direita SR2 0 0 A3 A2 Deslocamento de 3 bits a direita SR3 0 0 0 A3

  • 43

    Exercício 6/6

    1. (2,0) Armazenamento. Considere o circuito flip-flop D mestre-escravo sensível à borda de descida representado abaixo.

    a) (0,5 pt) Desenhe o circuito equivalente para cada nível do clock (ck=0 e ck=1).

    b) (1,5 pt) Complete a tabela abaixo, explicando o comportamento de cada sinal [amostrando um determinado sinal (qual?), pré-carga em determinado valor (qual?), mantendo o valor anterior, recebendo novo valor, ‘0’, ‘1’].

    Comportamento do sinal de clock (ck)

    Sinal interno X Sinal interno Y Sinal interno Z Saída Q

    Em nível lógico ‘1’

    Mudando de ‘1’ para ‘0’ D-=’1’ D-=’0’

    D-è valor da entrada D antes da borda de clock, respeitando tempo de setup.

    Vcc Vcc Vcc

    D ck

    ck

    ck

    ckQ

    X

    Y Z

    M1

    M2

    M3

    M4

    M5

    M6

    M7

    M8

    M9