You are on page 1of 36

Verilog uma Linguagem de Descrio de Hardware

Autor

Professor Don Thomas Carnegie Mellon University (CMU)


thomas@ece.cmu.edu http://www.ece.cmu.edu/~thomas Adaptado por

Jos Soares Augusto Dep. Fsica da Fac. Cincias da Un. de Lisboa


jasa@fisica.fc.ul.pt http://calypso.inesc-id.pt/jasa.html
Don Thomas (Portuguese by JSA), 1998, 1

Simulao de Sistemas Digitais


Porqu a simulao?
G O que faz para testar software (ou programas) que escreve? - Injecta dados e verifica se so processados como pretende - Aps test-lo, h alguma garantia de que o programa no tem erros (i. e., bug free)? NO! (muitas vezes o nmero de entradas possveis virtualmente infinito) - Mas, tanto quanto foi possvel, concluu que o programa faz o que era suposto fazer G A simulao testa um modelo do sistema que se quer construir - O projecto est correcto? Implementa a funco pretendida correctamente? Por exemplo, funciona como uma UART?
Injecte um byte e veja se o modelo da UART o envia, correctamente, em srie

Alm do mais, o projecto escolhido o mais acertado?


A UART poderia implementar outras funes?

Don Thomas (Portuguese by JSA), 1998, 2

Don Thomas, 1998, Page 1

Simulao de Sistemas Digitais


A simulao verifica duas propriedades do circuito
G A correco funcional a lgica est correcta? - projecto correcto, e projecto corrigido G A correco temporal a temporizao da lgica/interligaes est correcta? - e.g. os tempos de setup so satisfeitos?

Tem todas as limitaes do teste de software


G Todos os casos foram tentados? G Foram exercitados todos os caminhos? Todas as opes?

Don Thomas (Portuguese by JSA), 1998, 3

O "Mundo" dos Circuitos Integrados Circuitos Integrados


'Full-Custom' ASICs 'Semi-Custom' ASICs Programveis pelo utilizador

PLD

FPGA

PAL

PLA

PML

LUT
(Look-Up Table)

MUX

Portas

Don Thomas (Portuguese by JSA), 1998, 4

Don Thomas, 1998, Page 2

FPGAs vs. ASICs


ASIC
Alto desempenho

FPGA
"Off-the-shelf" Baixo custo de desenvolvimento "Time to market" curto

Baixa Potncia Baixo custo (s em grande volume)

Reconfigurabilidade

Don Thomas (Portuguese by JSA), 1998, 5

Metodologia de Projecto Moderna


A Simulao e a Sntese so etapas da metodologia de projecto always always pim pim pam pam pum pum blah, blah, Verilog sintetzvel

Sntese

ar a pe ogi a M nol c Te

Portas, portas, portas,

clb 1 clb 2

Colocar e Rotear

Don Thomas (Portuguese by JSA), 1998, 6

Don Thomas, 1998, Page 3

O que uma FPGA?


(CLBs) Blocos Lgicos Configurveis Blocos I/O Bloco de RAM
Block RAMs
Projecte e implemente uma unidade simples para acelerar a cifra na norma RC5 com conjunto de chaves fixo num microcontrolador 8031... module RC5_core (clock, reset, encr_decr,data_input,data_output, out_full,key_input,key_read); input clock, reset, encr_decr; input [31:0] data_input; output [31:0] data_output; input out_full; input [31:0] key_input; output key_read; ..................... endmodule;

Fluxo de projecto com FPGA (1)

Especificao (Experincias no Lab) Descrio Verilog ('Source Files') Simulao Funcional

Block RAMs

Don Thomas (Portuguese by JSA), 1998, 7

Sntese

Simulao Ps-sntese

Don Thomas (Portuguese by JSA), 1998, 8

Don Thomas, 1998, Page 4

Fluxo de projecto com FPGA (2)

Implementao Simulao Temporal

Configurao Teste 'on chip'

Don Thomas (Portuguese by JSA), 1998, 9

Que Verilog?
Verilog para Especificao Verilog para Simulao (Icarus Verilog ou Xilinx Webpack)

Verilog para Sntese (Xilinx Webpack, Altera Quartus Web Ed.)

Don Thomas (Portuguese by JSA), 1998, 10 10

Don Thomas, 1998, Page 5

Nveis de descrio de projecto

Nvel Algortmico
Nvel de Transferncia de registo

Nvel de descrio mais adequado sntese

Nvel Lgico (porta) Nvel de Circuito (transstor) Nvel Fsico ('layout')

Don Thomas (Portuguese by JSA), 1998, 11 11

Descrio de Projecto a Nvel de Transferncia de Registo (RTL)

Lgica Combinatria

Lgica Combinatria

Registos (Flip-Flops)

Don Thomas (Portuguese by JSA), 1998, 12 12

Don Thomas, 1998, Page 6

Estilos de Projecto Verilog


Verilog -- estilos de projecto
'Testbenches'

dataflow
Instrues concorrentes

estrutural
Componentes e interligaes

comportamental

Instrues Sequenciais Registos Mquinas de estado

Subconjunto adequado para sntese


Don Thomas (Portuguese by JSA), 1998, 13 13

Representao: Modelos Estruturais


Modelos Estruturais
G Construdos com primitivas de portas e/ou outros mdulos G Descrevem o circuito com portas lgicas semelhante ao que se v na implementao de um circuito - Os circuitos bsicos podem ser descritos desta forma

Identificar:
G Instncias de portas, nomes de wires, atrasos de a ou b at f. module mux (f, a, b, sel); output f; input a, b, sel; f b sel and #5 g1 (f1, a, nsel), g2 (f2, b, sel); or #5 g3 (f, f1, f2); not g4 (nsel, sel); endmodule
Don Thomas (Portuguese by JSA), 1998, 14 14

Don Thomas, 1998, Page 7

Representao: Modelos a Nvel de Porta


Nas portas tem de se modelar:
G Funo G Atraso

Funo
G Geralmente as HDLs tm primitivas intrnsecas a nvel de portas - o Verilog tem os NAND, NOR, AND, OR, XOR, XNOR, BUF, NOT e algumas outras G As portas operam sobre os valores nas entradas, gerando a sada - em Verilog a instanciao tpica de uma porta a seguinte: opcional muitos

and #delay instance-name (out, in1, in2, in3, );

Don Thomas (Portuguese by JSA), 1998, 15 15

Lgica a 4 Valores
Verilog Valores Lgicos
G A representao de dados subjacente permite que os bits tenham um de 4 valores G 1, 0, x (desconhecido), z (alta impedncia) G x pode representarr: 1, 0, z, ou um estado de transio G z sada em alta impedncia de uma porta tri-state

Qual a realidade destes valores?


G 0, 1 sem dvida so reais G z a porta tri-state coloca ou 0 ou 1 na sada. Se isso no acontece, a sua sada est em alta impedncia (z). As portas tristate so dispositivos reais e z um efeito elctrico real G x no um valor real. No h portas reais que imponham x num fio (n). x usado como ajuda na depurao ('debug'). x significa que o simulador no consegue determinar a resposta vlida e voc deve preocupar-se pois certamente haver um erro!

ATENO
G alguns simuladores usam mais do que aqueles 4 valores. O Verilog permite faz-lo em algumas situaes.

Don Thomas (Portuguese by JSA), 1998, 16 16

Don Thomas, 1998, Page 8

Lgica a 4 Valores
Lgica com valores lgicos multi-nvel
G A lgica com estes 4 valores faz sentido - 0 NAND qualquer coisa d 1. Isto inclui o caso em que h um x ou um z na outra entrada. a natureza da porta NAND - x NAND x d x na sada G Nota: z tratada como um x na entrada. As respectivas linhas e colunas so iguais G Se no se ligar uma entrada ser considerada como z G No incio da simulao tudo x Entrada B Nand 0 1 x z 0 1 1 1 1 1 1 0 x x x 1 x x x z 1 x x x Entrada A Tabela de verdade de uma NAND de duas entradas em lgica de 4 valores

Don Thomas (Portuguese by JSA), 1998, 17 17

Como construir e testar um mdulo


Construa um test bench para o seu projecto
G Desenvolva o sistema hierrquico num mdulo que tem portos de entrada e de sada input/output -- (chamado projecto aqui) G Desenvolva um mdulo separado (teste) para gerar os testes para aquele mdulo (projecto) G Ligue-os, em conjunto, dentro do mdulo (testbench)

module testbench (); wire l, m, n; projecto d (l, m, n); teste t (l, m); initial begin //monitor e display

module projecto (a, b, c); input a, b; output c; module teste (q, r); output q, r; initial begin //coloca sinais nas sadas
Don Thomas (Portuguese by JSA), 1998, 18 18

Don Thomas, 1998, Page 9

Outra perspectiva do slide anterior


3 mdulos de Verilog, um para cada bloco

O TESTBENCH o hardware de nvel superior que liga o PROJECTO e o TESTE fazendo com que os sinais do gerador se dirijam ao mdulo que pretende testar...

Outra pea de hardware, chamada TESTE, para gerar entradas interessantes

O seu hardware, chamado PROJECTO

Don Thomas (Portuguese by JSA), 1998, 19 19

"Testbenches"

Ambiente do Testbench Estimular todas as entradas do DUT

Processos no TB a gerar estmulos

'Design Under Test' (DUT)

Sadas Simuladas

Don Thomas (Portuguese by JSA), 1998, 20 20

Don Thomas, 1998, Page 10

Exemplo de Projecto
O mdulo testAdd gera entradas para o mdulo halfAdd e mostra os sinais. O mdulo halfAdd o projecto
module tBench; wire su, co, a, b; halfAdd ad(su, co, a, b); testAdd tb(a, b, su, co); endmodule module testAdd(a, b, sum, cOut); input sum, cOut; output a, b; reg a, b; initial begin $monitor ($time,, a=%b, b=%b, sum=%b, cOut=%b, a, b, sum, cOut); a = 0; b = 0; #10 b = 1; #10 a = 1; #10 b = 0; #10 $finish; end endmodule
Don Thomas (Portuguese by JSA), 1998, 21 21

module halfAdd (sum, cOut, a, b); output sum, cOut; input a, b; xor #2 and #2 endmodule (sum, a, b); (cOut, a, b);

O Mdulo de Teste
o gerador do teste $monitor
G escreve a 'string' quando executa G depois, a 'string' escrita quando um dos valores na lista muda G s um 'monitor' pode estar activo num dado instante G Imprime a 'string' no final do actual tempo de simulao module testAdd(a, b, sum, cOut); input sum, cOut; output a, b; reg a, b; initial begin $monitor ($time,, a=%b, b=%b, sum=%b, cOut=%b,a, b, sum, cOut); a = 0; b = 0; #10 b = 1; #10 a = 1; #10 b = 0; #10 $finish; end endmodule

Funo deste testador


G em t=0, imprime valores e impe a=b=0 G aps 10 unidades de tempo b=1 G aps mais 10 u.t., faz a=1 G aps mais 10 u.t., faz b=0 G mais outras 10 u.t e acaba

Don Thomas (Portuguese by JSA), 1998, 22 22

Don Thomas, 1998, Page 11

Outras coisas que o Verilog pode fazer


Mais do que modelar hardware
G $monitor d-se-lhe uma lista de variveis. Quando uma delas muda, imprime a informao. S se pode ter um activo em cada instante. e.g.: - $monitor ($time,,, a=%b, b=%b, sum=%b, cOut=%b,a, b, sum, cOut); vrgulas extra imprime espaos %b binrio (tambm, %h, %d e outros)

aquela instruo imprimir: 2 a=0, b=0, sum=0, cOut=0<return>

E se o que imprime tem o valor x ou z?

G $display() espcie de printf() - $display (Hello, world %h, hexvalue) mostra contedo da varivel hexvalue usando dgitos hexdecimais (0-9,A-F)

newline automaticamente includo

Don Thomas (Portuguese by JSA), 1998, 23 23

Modelos Estruturais vs. Comportamentais


Modelo Estrutural
G Especifica somente primitivas do tipo porta e descreve wires G I.e., a estrutura de um diagrama lgico G Basicamente voc j sabe fazer isto

Modelo Comportamental
G Como um procedimento numa linguagem de programao G Ainda se especifica um mdulo Verilog, com entradas e sadas... G ...mas dentro do mdulo escreve-se cdigo para descrever o funcionamento pretendido, NO quais as portas que so ligadas G I.e., especifica-se o comportamento pretendido, no a estrutura fsica para descrever esse comportamento

Porqu usar modelos comportamentais?


G Para usar nos mdulos testbench que testam projectos estruturais G Para escrever especificaes de alto nvel que possam ser sintetizadas com ferramentas avanadas de sntese lgica
Don Thomas (Portuguese by JSA), 1998, 24 24

Don Thomas, 1998, Page 12

Como se adequam modelos Comportamentais?


Como funcionam com a lista de acontecimentos e o agendador ('scheduler')?
G initial (e always) comeam a execuo em t=0, por uma ordem arbitrria G vo sendo executados at ser encontrado um operador #delay G ento suspendem, sendo colocados na lista de acontecimentos 10 unid. de tempo no futuro (no exemplo direita) G 10 unidades de tempo no futuro, retomaro a execuo onde tinham parado.

module testAdd(a, b, sum, cOut); input sum, cOut; output a, b; reg a, b; initial begin $monitor ($time,, a=%b, b=%b, sum=%b, cOut=%b, a, b, sum, cOut); a = 0; b = 0; #10 b = 1; #10 a = 1; #10 b = 0; #10 $finish; end endmodule

Alguns detalhes omitidos


G ...continua

Don Thomas (Portuguese by JSA), 1998, 25 25

O que se Entende por Sntese?


Sntese lgica
G Um programa que projecta circuitos lgicos/digitais a partir de descries abstractas da lgica - pondera restries (e.g. tamanho, velocidade) - usa uma biblioteca (e.g. porta de 3 entradas)

Como?
G Voc escreve a descrio abstracta da lgica em Verilog G A ferramenta de sntese gera implementaes alternativas restries

Verilog blah blah blah

sntese

ou

biblioteca
Don Thomas (Portuguese by JSA), 1998, 26 26

Don Thomas, 1998, Page 13

Um exemplo
O que fixe?
G Voc escreve Verilog, a sntese d-lhe as portas G Usa uma biblioteca diferente da sua (s portas com 2 entradas) G Uma descrio suficiente para uma variedade de implementaes alternativas!

Hmmm
G ... mas assume-se que voc conhece uma implementao a nvel de porta isso no uma descrio Verilog abstracta. module moduleporta porta(f, (f,a, a,b, b,c); c); output output f; f; input input a, a,b, b,c; c; and and A A(a1, (a1,a, a,b, b,c), c), B B(a2, (a2,a, a,~b, ~b,~c), ~c), C C(a3, (a3,~a, ~a,o1); o1); or or D D(o1, (o1,b, b,c), c), E E(f, (f,a1, a1,a2, a2,a3); a3); endmodule endmodule

a b c f

Don Thomas (Portuguese by JSA), 1998, 27 27

O Que Se Pretende...?
Objectivo
G Especificar um circuito combinatrio, entradas => sadas G em Verilog que a ferramenta de sntese leia correctamente G e que seja usada para "construir" a lgica certa

E...
G Sabemos a funo que queremos, e pode-se especific-la 'a la C'... G mas no se sabe quais as portas necessrias; a ferramenta far isto!

A B C Lgica Combinatria F

Don Thomas (Portuguese by JSA), 1998, 28 28

Don Thomas, 1998, Page 14

Modelao Comportamental
Usam-se instrues Procedimentais
G Descries usando a construo always do Verilog G Pode-se especificar quer circuitos combinatrios quer sequentiais

Normalmente os 'procedimentos' no so lgica


G Parecem-se com C: mistura de ifs, cases, atribuies G mas h uma interpretao semntica que tem que ser-lhes dada para que possam ser usados na simulao e na sntese (com resultados equivalentes)

Tecnologia actual
G Pode-se fazer projecto combinatrio (e, mais tarde, sequencial) G Projectos reais podem levar horas dias a executar G As companhias pagam $50K - 80K por cpia deste software - No o Windows ou o Linux ;-) G O software que iremos usar valeria $10-15K (bem, aqui borla)

Don Thomas (Portuguese by JSA), 1998, 29 29

"Instrues" Comportamentais
As descries comportamentais so introduzidas por instrues initial e always
Instruo Aspecto Comeo Como funciona Usada em Sntese?

initial

initial begin end always begin end

always

Comea quando a simulao inicia

Executa uma vez e pra Ciclo contnuo while (power on) do statements;

No usada em sntese

Usada em sntese

Observaes:
G Todas elas executam concorrentemente G Contm instrues comportamentais, tais como if-then-else, case, ciclos, funes,
Don Thomas (Portuguese by JSA), 1998, 30 30

Don Thomas, 1998, Page 15

Instrues, Registers ('registos') e Wires ('fios')


Registers
G Definem memorizao ('storage'), podem ser multi-bit G S podem ser mudados com atribuies de valores no lado esquerdo de uma expresso comportamental module silly (q, r); reg [3:0] a, b; wire [3:0] q, r; always begin a = (b & r) | q; q = b; end endmodule Multi-bit registers e wires

Wires (na verdade ns)


G Fazem ligaes elctricas G Podem ser usados no lado direito de uma expresso - Assim, pode-se ligar portas primitivas e blocos comportamentais!

Lgica com registers e wires

'Instrues'
G Lado esquerdo = lado direito G Lado esquerdo deve ser 'register' G Lgica de 4 valores

No pode fazer porqu?

Don Thomas (Portuguese by JSA), 1998, 31 31

Instrues ('Statements') Comportamentais


if-then-else
G Comporta-se como esperado, excepto que usada lgica de 4 valores. 1 interpretado como 'True'; 0, x, e z so 'False' if (select == 1) f = in1; else f = in0;

case
G Comporta-se como esperaria, excepto que se est a usar lgica de 4 valores G O selector do case tem 2 bits, h 42 possibilidades no case para seleccionar G No h instruo break assumida por defeito

Constantes giras?
G O Verilog permite escrever constantes em lgica de 4 valores de dimenso arbitrria G O 1 nmero o nmero de bits, a letra a base do nmero seguinte, que ser convertido em bits. 8b00x0zx10

case (selector) 2b00: a = b + c; 2b01: q = r + s; 2bx1: r = 5; default: r = 0; endcase assuma que f, a, q, e r so registers neste slide

Don Thomas (Portuguese by JSA), 1998, 32 32

Don Thomas, 1998, Page 16

Instrues Comportamentais
Ciclos ('loops')
G H restries ao seu uso para sntese no use G So estudados para que os possa usar em mdulos de teste

Dois importantes for e while


G Como em C G H tambm repeat e forever veja o(s) livro(s) reg [3:0] testOutput, i; for (i = 0; i <= 15; i = i + 1) begin testOutput = i; #20; end reg [3:0] testOutput, i; i = 0; while (i <= 15)) begin testOutput = i; #20 i = i + 1; end

Importante: os ciclos devem ter um operador de atraso (ou, como veremos depois, um @ ou wait(FALSE)). De outra forma, o simulador nunca pra a sua execuo.
Don Thomas (Portuguese by JSA), 1998, 33 33

Mdulo Test (continuao)


Selecco de bits e Seleco de partes
G Esta expresso extrai bits ou gamas de bits de um wire ou register Os bits individuais do register i so disponibilizados nos portos. Estes so depois ligados aos wires individuais de entrada no mdulo design. module testgen (i[3], i[2], i[1], i[0]); reg [3:0] i; output i; always for (i = 0; i <= 15; i = i + 1) testOutput = i; #20; endmodule module testgen (i); reg [3:0] i; output i; always for (i = 0; i <= 15; i = i + 1) testOutput = i; #20; endmodule Alternativa: module top; wire w0, w1, w2, w3; testgen t (w0, w1, w2, w3); design d (w0, w1, w2, w3); end module design (a, b, c, d); input a, b, c, d; mumble, mumble, blah, blah; end module top; wire [3:0] w; testgen t (w); design d (w[0], w[1], w[2], w[3]); end Don Thomas (Portuguese by JSA), 1998, 34 34

Don Thomas, 1998, Page 17

Construes Concorrentes
J vimos #delay Outras
G @ Espera-se por uma mudana num valor usada em sntese - @ (var) w = 4; - Indica para esperar at que var mude. Quando isso acontece, continua a execuo da instruo fazendo w = 4. G Wait Espera-se at que um valor atinja um certo nvel no usada em sntese - wait (f == 0) q = 3; - Quando f for igual a zero continua-se a execuo fazendo q = 3. - Mas se f diferente de zero, suspende-se a execuo at que seja zero, e quando isso acontecer teremos q = 3.

Porque so construes concorrentes?


G Porque o acontecimento em estado de espera s pode ocorrer como resultado da execuo concorrente doutro bloco always/initial ou porta. G So executados em concorrncia
Don Thomas (Portuguese by JSA), 1998, 35 35

FAQs: execuo do modelo comportamental


Quando comeam as instrues always ou initial?
G Isso acontece no incio da simulao por ordem arbitrria

Uma vez em execuo, o que as pra?


G A execuo de um #delay, @event, ou wait(FALSE). G Todos os blocos always tm de ter pelo menos um deles. Caso contrrio, o simulador nunca pra de executar o modelo -- ( um ciclo infinito!)

Quanto tempo permanecem parados?


G At que a condio que os parou seja resolvida - #delay at que o atraso seja atingido - @(var) at que var mude - wait(var) at que var seja TRUE (1) O tempo passa quando o modelo comportamental executa? G No. As instrues (if, case, etc) executam-se instantaneamente. G O tempo passa quando o modelo pra para #, @, ou wait.

Um always pra em alguma situao?


G No. Mas o initial s executado uma vez.
Don Thomas (Portuguese by JSA), 1998, 36 36

Don Thomas, 1998, Page 18

Um Circuito Combinatrio
Usando instrues comportamentais
G A lgica dum simples MUX especificada procedimentalmente G Este exemplo sintetizvel Leia-se Leia-seda daseguinte seguinteforma: forma: module mux (f, sel, b, c); Espere por uma Espere por umamudana mudanaem ema, a,b, b, output f; ou c, ento execute o bloco ou c, ento execute o bloco input sel, b, c; begin-end begin-endque quecontm contmo oif. if. Ento, Ento, reg f; espere esperepor poroutra outramudana. mudana. always @ (sel or b or c) if (sel == 1) f = b; else f = c; endmodule Este Este if ifdescreve descreveo oMUX MUXfuncionalmente funcionalmente c b Lgica sintetizada sel
Don Thomas (Portuguese by JSA), 1998, 37 37

(sel (selor orb bor orc) c) a alista listade desensibilidades sensibilidades

Isto est mesmo certo?


Problema?
G Onde est o register? A ferramenta de sntese infere que este um circuito combinatrio. Assim, no precisa de um register. O register um artifcio das descrices as variveis do lado esquerdo tm de ser registers. G Como infere a ferramenta que o bloco combinatrio? - A sada funo apenas das entradas (e no de valores anteriores) - Sempre que uma entrada muda, a sada recalculada G Pense no mdulo como sendo uma caixa preta - Podia dizer que h l um register? c b f

module mux (f, sel, b, c); output f; input sel, b, c; reg f; always @ (sel or b or c) if (sel == 1) f = b; else f = c; endmodule

Don Thomas (Portuguese by JSA), 1998, 38 38

Don Thomas, 1998, Page 19

Padres ('Templates') para Sntese


Instrues procedimentais em Verilog
G A lgica especificada em blocos always (no so permitidos blocos Initial). G Cada bloco always traduzido para funes Booleans Tem Temde dedeclarar declararas assadas sadascombinatrias combinatrias desta forma para fazer desta forma para fazersntese, sntese,i.e., i.e.,a a ferramenta ferramentatem temde depensar pensarque quevoc vocest esta a colocar as sadas calculadas algures colocar as sadas calculadas algures Tem Temde deenumerar enumerartodas todasas asentradas entradasdo do bloco aqui na lista de sensibilidades bloco aqui na lista de sensibilidades Escreva Escrevaa algica lgicaaqui. aqui.H Halgumas algumasregras regras de escrita subtis para assegurar de escrita subtis para assegurarque quea a sntese sntese correcta correctaveremos veremoscomo como
Don Thomas (Portuguese by JSA), 1998, 39 39

module blah (f, a, b, c); output f; input a, b, c; reg f; always @ (a or b or c) begin stuff... stuff... stuff... end endmodule

Como? Algumas Definies


H algumas restries na especificao
G Conjunto de entrada de um always o conjunto de todas as variveis que so usadas no lado direito de atribuies procedimentais ou em condices. i.e. tudo o que funcione como fonte. G A Lista de Sensibilidade de um always o conjunto de todos os nomes que aparecem na lista do acontecimento (@). module mux (f, sel, b, c); output f; input sel, b, c; reg f; always @ (sel or b or c) if (sel == 1) f = b; else f = c; endmodule
Don Thomas (Portuguese by JSA), 1998, 40 40

Don Thomas, 1998, Page 20

Mais Definies...

G Um percurso de controlo (control path) de um bloco always uma sequncia de operaes seguida na execuo do bloco (podem haver vrios percursos por causa dos ifs ou dos cases) G Sada combinatria de um always a varivel (ou variveis) que so calculadas em quaisquer percursos module mux (f, sel, b, c); output f; input sel, b, c; reg f; always @ (sel or b or c) if (sel == 1) f = b; else f = c; endmodule
Don Thomas (Portuguese by JSA), 1998, 41 41

Regras Bsicas
Regras de especificao de lgica combinatria usando instrues procedimentais
G Todos os elementos do conjunto de entrada tm de constar da lista de sensibilidade G A sada combinatria dever ser calculada em todos os percursos de controle module mux (f, sel, b, c); output f; input sel, b, c; reg f; always @ (sel or b or c) if (sel == 1) f = b; else f = c; endmodule Estamos Estamosa adizer dizerque quese sehouver houver qualquer qualqueralterao alteraonuma numadas das entradas, entradas,ento entoa asada sadaser ser recalculada. recalculada. Esta Esta a adefinio definio de lgica combinatria! de lgica combinatria! Se Seconseguir conseguircaminhar caminharsobre sobre esta estalinha linhaestreita, estreita,vai vaiconseguir conseguir especificar especificare esintetizar sintetizarlgica lgica combinatria combinatria

Don Thomas (Portuguese by JSA), 1998, 42 42

Don Thomas, 1998, Page 21

E se Fizer Asneira?
Se no seguir as regras... carne para canho!
G O Verilog pensa que est a fazer gracinhas com a temporizao G legal, mas no combinatrio G As regras para a funo descrita fazem sentido -- mas no para ns

module bad (f, g, a, b, c); output f, g; input a, b, c; reg f, g; always @ (a or b or c) if (a == 1) f = b; else g = c; endmodule

Isto Istosignifica: significa:enquanto enquantoa==1, a==1,ento entoff segue segueb. b.(i.e. (i.e.quando quandob bmuda, muda,tambm tambm muda mudaf.) f.) Mas Masquando quandoa==0, a==0,fflembra-se lembra-se do dovalor valorantigo antigode deb. b. Circuitos Circuitoscombinatrios combinatriosno nomemorizam! memorizam! O Oque queest esterrado? errado? ffno noaparece apareceem emtodos todosos ospercursos percursosde de controlo do always (nem sequer controlo do always (nem sequerg!). g!).
Don Thomas (Portuguese by JSA), 1998, 43 43

Estilo Combinatrio Tpico


O Verilog para circuitos combinatrios ser assim:
module blah (<sadas>, <entradas>); output < sadas >; input < entradas >; reg < sadas >; always @ (<nomes de todas as entradas >) begin < LHS = RHS atribuies > < instrues if ... else > < instrues case > end endmodule

Pois um subconjunto bastante restrito do Verilog

Don Thomas (Portuguese by JSA), 1998, 44 44

Don Thomas, 1998, Page 22

Dificuldade
Atribuio em todos os percursos de controlo
G Se a funo fr complexa, pode no ser possvel saber se so calculadas as sadas em todos os percursos de controlo. G Atribui-se um valor (zero no exemplo) a todas as sadas e escreve-se o cdigo para atribuir outros valores sempre que necessrio. G As ferramentas de sntese descobrem isto. always @(coke or cola) begin if (coke) blah1 = 1; else if (cola > 2b01) blah2 = coke; else if ( end always @(coke or cola) begin blah1 = 0; blah2 = 0; if (coke) blah1 = 1; else if (cola > 2b01) blah2 = coke; else if ( end

Don Thomas (Portuguese by JSA), 1998, 45 45

Uso da Instruo case


Tabela de verdade
G Listar todas as combinaes de entradas G Clculo da(s) sada(s) em todas as opes do case module fred (f, a, b, c); output f; input a, b, c; reg f; always @ (a or b or c) case ({a, b, c}) 3b000: f = 1b0; 3b001: f = 1b1; 3b010: f = 1b1; 3b011: f = 1b1; 3b100: f = 1b1; 3b101: f = 1b0; 3b110: f = 1b0; 3b111: f = 1b1; endcase endmodule Verifique as regras
Don Thomas (Portuguese by JSA), 1998, 46 46

Concatenao
G {a, b, c} concatena a, b, e c, considerando-os um nico tem G Exemplo a = 4b0111 b = 6b 1x0001 c = 2bzx ento {a, b, c} = 12b01111x0001zx

Don Thomas, 1998, Page 23

Reduo do Case
Eis outra verso ...
module fred (f, a, b, c); output f; input a, b, c; reg f; always @ (a or b or c) case ({a, b, c}) 3b000: f = 1b0; 3b001: f = 1b1; 3b010: f = 1b1; 3b011: f = 1b1; 3b100: f = 1b1; 3b101: f = 1b0; 3b110: f = 1b0; 3b111: f = 1b1; endcase endmodule Verifique as regras

Podia pr uma funo aqui

module fred (f, a, b, c); output f; input a, b, c; reg f; always @ (a or b or c) case ({a, b, c}) 3b000: f = 1b0; 3b101: f = 1b0; 3b110: f = 1b0; default: f = 1b1; endcase endmodule
Don Thomas (Portuguese by JSA), 1998, 47 47

Importante: todos os percursos de controlo so especificados

Tratamento de X's na Sntese


Regras
G No se pode dizer if (a == 1bx) tem significado em simulao, mas no em sntese. G Contudo, um X escrito no lado direito interpretado como um "dont care".

module exemploCase(f, a, b, c); output f; input a, b, c; reg f; always @ (a or b or c) case ({a, b, c}) 3b001: f = 1b1; 3b010: f = 1b1; 3b011: f = 1b1; 3b100: f = 1b1; 3b111: f = 1b1; 3b110: f = 1b0; default: f = 1bx; endcase endmodule

a b ~c ab c 00 01 11 10 0 1 x 1 1 1 0 1 1 x f

Foi implementada a funo inversa; xs considerados como uns.


Don Thomas (Portuguese by JSA), 1998, 48 48

Don Thomas, 1998, Page 24

Alternativamente
module fred1 (f, a, b, c); output f; input a, b, c; reg f; always @ (a or b or c) f = ~(a & b & ~c); endmodule

G Estes no so exactamente equivalentes ao slide anteriorporqu?


module fred3 (f, a, b, c); output f; input a, b, c; reg f; always @ (a or b or c) begin if (c ==0) f = a~&b; else f = 1b1; end endmodule
Don Thomas (Portuguese by JSA), 1998, 49 49

ab c 00 01 11 10 0 1 x 1 1 1 0 1 1 x

module fred2 (f, a, b, c); output f; input a, b, c; reg f; always @ (a or b or c) f = ~a | c | ~b; endmodule

Duas entradas, trs sadas


reg [1:0] newJ; reg out; input i, j; always @(i or j) case (j) 2b00: begin newJ = (i == 0) ? 2b00 : 2b01; out = 0; end 2b01 : begin newJ = (i == 0) ? 2b10 : 2b01; out = 1; end 2b10 : begin newJ = 2b00; out = 0; end default: begin newJ = 2b00; out = 1'bx; end endcase

Semelhante Semelhanteao ao operador operadorcondicional condicional em emC. C. (expr) (expr)? ?a a::b; b; Se Seexpr expr verdade, verdade, ento entoo oresultado resultado a; a; caso casocontrrio, contrrio, b. b.

Don Thomas (Portuguese by JSA), 1998, 50 50

Don Thomas, 1998, Page 25

Sensibilidade no Modelo Comportamental


Exemplo rpido
G A sada da porta A muda, as portas B e C so avaliadas para verificar se as respectivas sadas iro mudar. Em caso positivo, as suas portas de fanout tambm iro ser avaliadas G O modelo comportamental s executado se estiver espera de uma mudana na entrada D G Por que ordem se executam as portas e o modelo comportamental? B A C D Modelo Comportamental

always @ (D) begin yadda yadda end always @ (F) begin yadda yadda b = D; end

Ser executado?

Ser executado?

Don Thomas (Portuguese by JSA), 1998, 51 51

E ento o atraso?
Pode-se especificar o mdulo desta maneira?
G Note os atrasos. H atrasos diferentes relativamente entrada b e entrada c. G Esta descrio vlida! module mux (f, sel, b, c); output f; input sel, b, c; reg f; always @ (sel or b or c) if (sel == 1) #5 f = b; else #88 f = c; endmodule

Mas,
G As ferramentas de sntese ignoram os atrasos G Em geral, tentam minimizar o tempo de propagao desde qualquer entrada combinatria at qualquer sada combinatria na implementao do circuito.

Don Thomas (Portuguese by JSA), 1998, 52 52

Don Thomas, 1998, Page 26

Organizao do Modelo
Aqui temos uma bloco always para uma funo combinatria.
G Que funes Booleanas pode modelar? G Pode haver mais do que um destes blocos always num mdulo? Sim G A funo f pode ser calculada em dois always separados? No module xyzzy (portos); always @(b1 or b2 or b3) begin f = yadda; end always @(r1 or r2 or r3) begin f = yadda yadda; end always @(b1 or b2 or b3) begin yadda yadda . end S as que tm entradas b1, b2, e b3 (ou um subconjunto) module xyzzy (portos); always @(b1 or b2 or b3) begin q = b1 b2 b3 r = b2 b3 end always @(r1 or r2 or r3) begin s = yadda yadda yadda end
Don Thomas (Portuguese by JSA), 1998, 53 53

No!

Compromisso na Organizao do Modelo


A partio dos mdulos pode afectar a optimizao lgica
G Aqui temos dois mdulos G A sada de blob1 est ligada a blob2 G A ferramenta de sntese optimiza-os separadamente - Nenhuns implicantes primos, etc, sero partilhados ou optimizados entre os dois mdulos. module blob2(inputs, outputs2) always @(inputs) outputs2 = blah & inputs; endmodule module blob1_2(inputs, outputs) always @(inputs) outputs1 = blah & inputs; always @(outputs1) outputs = blah & outputs1; endmodule

module blob1(inputs, outputs1) always @(inputs) outputs1 = blah & inputs; endmodule G Alternativa - Pr tudo num mdulo - Agora h a possibilidade de optimizao conjunta em vrias funes

Don Thomas (Portuguese by JSA), 1998, 54 54

Don Thomas, 1998, Page 27

Reviso do Verilog
O Verilog uma linguagem concorrente
G Destinada a modelar hardware optimizada para isso! G Como outras linguagens de especificao de hardware (HDLs): - Permite especificar actividades concorrentes - projectada para que parea que as actividades concorrentes se deram num mesmo instante
Porqu?

Suporta especificaes temporais bastante intrincadas

Uma linguagem concorrente permite:


G Mltiplos elementos concorrentes G que um acontecimento num elemento cause actividade noutro. (Acontecimento a mudana numa sada ou estado, num dado instante) - baseada na interligao dos portos dos elementos G Atrasar execuo de blocos - At que um acontecimento especfico ocorra

Don Thomas (Portuguese by JSA), 1998, 55 55

Simulao por Acontecimentos Discretos


Examplo breve
G A sada da porta A muda. Isto causa a avaliao das portas B e C A - Mas como veremos, A no chama B e C (como na chamada de uma funo) - Em vez disso, so avaliadas porque esto ligadas B

Observao
G Os elementos no diagrama no tm de ser portas lgicas G O SimCity um simulador por acontecimentos discretos, o Verilog tambm

Simulao por Acontecimentos Discretos


G Os acontecimentos mudanas no estado do-se em instantes discretos. E despoletam outros acontecimentos G O tempo avana em passos discretos (no contnuos)

Don Thomas (Portuguese by JSA), 1998, 56 56

Don Thomas, 1998, Page 28

Contraste
Simulao por acontecimentos no-discreta
G Sistemas contnuos todos os elementos, e o estado, so actualizados em todos os instantes de simulao G Poderia tambm fazer circuitos lgicos assim? - G e.g. circuitos analgicos, integrao numrica - Equaes diferenciais para resolver

Don Thomas (Portuguese by JSA), 1998, 57 57

Simulao por Acontecimentos Discretos


Modelos bsicos no existentes no C
G Nvel de porta modelos internos para AND, OR, - Quando uma entrada para um deles muda, o modelo executado para se verificar se a sua sada ir mudar G Nvel comportamental espcie de programa em C mas com alguns operadores extra - Executa at ser bloqueado por uma de trs razes #delay, wait(nvel), or @(acontecimento) quando a razo do bloqueio ultrapassada, continua a execuo - O C tem noo destes aspectos? G Os modelos de porta e comportamentais podem fazer o tempo avanar

Don Thomas (Portuguese by JSA), 1998, 58 58

Don Thomas, 1998, Page 29

Como que mantm a noo de tempo?


Explicitamente
G Os acontecimentos so guardados numa lista de acontecimentos (na verdade uma lista 2-D) ordenada cronologicamente G Os acontecimentos executam-se num instante e possivelmente agendam mudanas futuras nas sadas (novos acontecimentos) G Se no h mais acontecimentos no instante actual, avana-se G Acontecimentos num instante so executados por ordem arbitrria
time a

event

event

event 1 A 1 C B

time a+75

event

time a+75492

Digamos Digamosque queA A muda para muda para0 0 aqui. aqui.B Be eC Ctm tm atraso atrasode de2. 2.

Don Thomas (Portuguese by JSA), 1998, 59 59

Abordagem de Simulao de um Sistema


Dois blocos numa simulao
G O modelo uma especificao executvel incluindo temporizao, interligaes e vectores de entrada - Escrito numa linguagem como o Verilog ou o VHDL - O que o VHDL? G O agendador ('scheduler') da simulao - monitoriza quando os acontecimentos iro ocorrer, - comunica acontecimentos s partes do modelo apropriadas, - executa o modelo dessas partes, e - como resultado, possivelmente agenda mais acontecimentos para instantes futuros

Mantm o tempo simulado na lista de acontecimentos.

Don Thomas (Portuguese by JSA), 1998, 60 60

Don Thomas, 1998, Page 30

Nveis de Abstraco no Verilog


Modelao de portas
G O sistema representado em termos de portas primitivas e das suas interligaes - NANDs, NORs,

Modelao comportamental
G O sistema representado por uma 'espcie' de linguagem de programao

always @posedge clock Q = #5 D

Mod. a nvel de porta

Mod. comportamental

Don Thomas (Portuguese by JSA), 1998, 61 61

Mistura de Nveis
Geralmente h mistura de nveis num modelo
G e.g., parte do sistema descrito a nvel de porta e outra parte descrito a nvel comportamental. G Porqu? - No incio da fase de projecto, poder no dispr de modelos completamente detalhados voc no conhece, em detalhe, todas as implementaes das portas, multiplicadores, somadores, registos - Poder querer projectar num nvel conceptual, antes de fazer todo o trabalho que conduzir implementao com portas - Poderia estar planeada uma famlia de implementaes G Nveis interruptor (switch), porta (gate), bloco funcional (e.g. ALUs), transferncia de registo (RTL), comportamental (behavioral) - Por agora, lidamos com os modelos de porta e comportamental G Todos so modelados como sistemas discretos no h modelao contnua de comportamento analgico

Don Thomas (Portuguese by JSA), 1998, 62 62

Don Thomas, 1998, Page 31

Um Modelo a Nvel de Porta


Descrio Verilog de um latch (trinco) SR

set

g1

reset

g2

qBar

Don Thomas (Portuguese by JSA), 1998, 63 63

Um Modelo a Nvel de Porta


Descrio Verilog de um latch (trinco) SR
definido um mdulo nome do mdulo o mdulo tem portos

module nandLatch (q, qBar, set, reset); output q, qBar; os portos input set, reset; tm tipo nand #2 g1 (q, qBar, set), g2 (qBar, q, reset); endmodule tipo e atraso das portas

set

g1

reset

g2

qBar

portas primitivas com nomes e interligaes

Don Thomas (Portuguese by JSA), 1998, 64 64

Don Thomas, 1998, Page 32

Um Modelo a Nvel de Porta


Aspectos relevantes:
G No parece executvel sem ciclos for loops, if-then-else, etc. - No tem aspecto de 'programa: em vez disso descreve uma interligao de elementos G Um novo mdulo, feito de outros mdulos, foi definido - Relao com engenharia de software esconde-se o detalhe module nandLatch (q, qBar, set, reset); output q, qBar; input set, reset; nand #2 g1 (q, qBar, set), g2 (qBar, q, reset); endmodule

Don Thomas (Portuguese by JSA), 1998, 65 65

Modelo de Execuo
Mas h um modelo de execuo Modelo temporal a nvel de porta
G Modelo temporal como que o tempo avana, o que dispara um novo processamento do modelo G Aqui quando qualquer das entradas de uma porta primitiva muda, a sada recalculada. Se h um novo resultado, passado para as portas adiante no respectivo 'fanout'. module nandLatch (q, qBar, set, reset); output q, qBar; input set, reset; nand #2 g1 (q, qBar, set), g2 (qBar, q, reset); endmodule
Don Thomas (Portuguese by JSA), 1998, 66 66

Don Thomas, 1998, Page 33

Modelao Comportamental
Porque no se descreve a funo e o atraso de um mdulo usando uma linguagem como o C?
G Parece giro, aqui vai module d_type_FF (q, clock, data); output q; reg q; input clock, data; always @(negedge clock) q = #10 data; endmodule reg reg declara declaraum umregisto registode de um umbit. bit.Pode Podeser servisto vistocomo como uma umavarivel varivelnuma numalinguagem linguagem de programao. de programao.Ateno: Ateno: cada cadainstanciao instanciaodeste deste mdulo mduloter terum umregisto registoq q prprio. prprio. always always while whileTRUE TRUE executa executacontinuamente continuamentea a instruo instruoseguinte. seguinte.

@ @ espera esperapelo peloflanco flanconegativo negativodo dorelgio, relgio,calcula calculadata dataagora agorae e espera espera10 10unidades unidadesde detempo. tempo. Ento Entoatribui atribuiesse essevalor valora aq qe eespera esperapelo pelo prximo prximonegedge negedge
Don Thomas (Portuguese by JSA), 1998, 67 67

Comportamental vs. Estrutural


Comparao
G Estes dois modelos so intermutveis qualquer deles poderia ter sido instanciado para realizar um registo - portos na mesma ordem - = atraso de clock at q module d_type_FF (q, clock, data); input clock, data; - um abstracto e claro output q; - um especfico wire q, qBar, r, s, r1, s1; - h diferenas subtis module d_type_FF (q, clock, data); output q; reg q; input clock, data; always @(negedge clock) q = #10 data; endmodule Comportamental nor #10 a (q, qBar, r); nor b (qBar, q, s), c (s, r, clock, s1), d (s1, s, data), e (r, r1, clock), f (r1, s1, r); endmodule Estrutural
Don Thomas (Portuguese by JSA), 1998, 68 68

Don Thomas, 1998, Page 34

primeira vista, parece-se muito com C


A maioria dos operadores so como os do C
G ^ o XOR, etc. G torna-se fcil de ler

Mas h diferenas importantes (eis uma lista rpida, haveremos de discuti-las em detalhe)
G Instrues como #delay, @event, wait(nvel) - a linguagem concorrente pode-se especificar muitos componentes que podem mudar ao mesmo tempo. G Lgica de 4 valores (1, 0, x, z) e os operadores associados G Especificao de n de bits arbitrria G H atribuies procedimentais (=, <=) com diferenas subtis G Um modelo temporal diferente

Don Thomas (Portuguese by JSA), 1998, 69 69

Modelo Temporal Comportamental

(resumido)

Como avana o tempo no modelo comportamental?


G # atrasando uma quantidade de tempo especfica G @ atrasando at que se d um acontecimento (posedge, negedge, ou qualquer mudana) - Isto comportamento sensvel a flanco (edge) G wait atrasando at que se d um acontecimento (wait (f == 0)) - Isto comportamento sensvel a nvel (level)

O modelo comportamental sensvel a qu?


G Qualquer mudana em qualquer entrada? No G Qualquer acontecimento que se segue, digamos a palavra posedge - e.g. @posedge clock - Na verdade no tambm aqui. nem sempre

Don Thomas (Portuguese by JSA), 1998, 70 70

Don Thomas, 1998, Page 35

Modelos Comportamentais Sensveis a qu?


Exemplo rpido
G A porta A muda a sada, as portas B e C so executadas para verificar se as suas sadas iro mudar. Se mudarem, os seus fanouts so tambm seguidos G O modelo comportamental s seria executado se estivesse espera de uma mudana na entrada A always @(A) begin B = ~A; end A
Modelo Comportamental

Isto executado

B A C

always @(posedge clock) Q <= A; Isto no

Don Thomas (Portuguese by JSA), 1998, 71 71

Ordem de Execuo
Por que ordem so executados os modelos?
G Assuma que A muda. B, ou C, ou o modelo comportamental que executado primeiro? - Resposta: a ordem definida para ser arbitrria G Todos os acontecimentos agendados para um determinado instante so executados por ordem arbitrria. G O simulador tentar fazer com que eles ocorram simultaneamente B A C A always @(A) begin yadda yadda end

Modelo Comportamental

Don Thomas (Portuguese by JSA), 1998, 72 72

Don Thomas, 1998, Page 36

You might also like