Professional Documents
Culture Documents
Autor
PLD
FPGA
PAL
PLA
PML
LUT
(Look-Up Table)
MUX
Portas
FPGA
"Off-the-shelf" Baixo custo de desenvolvimento "Time to market" curto
Reconfigurabilidade
Sntese
ar a pe ogi a M nol c Te
clb 1 clb 2
Colocar e Rotear
Block RAMs
Sntese
Simulao Ps-sntese
Que Verilog?
Verilog para Especificao Verilog para Simulao (Icarus Verilog ou Xilinx Webpack)
Nvel Algortmico
Nvel de Transferncia de registo
Lgica Combinatria
Lgica Combinatria
Registos (Flip-Flops)
dataflow
Instrues concorrentes
estrutural
Componentes e interligaes
comportamental
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
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
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
ATENO
G alguns simuladores usam mais do que aqueles 4 valores. O Verilog permite faz-lo em algumas situaes.
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
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
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...
"Testbenches"
Sadas Simuladas
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
G $display() espcie de printf() - $display (Hello, world %h, hexvalue) mostra contedo da varivel hexvalue usando dgitos hexdecimais (0-9,A-F)
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
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
Como?
G Voc escreve a descrio abstracta da lgica em Verilog G A ferramenta de sntese gera implementaes alternativas restries
sntese
ou
biblioteca
Don Thomas (Portuguese by JSA), 1998, 26 26
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
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
Modelao Comportamental
Usam-se instrues Procedimentais
G Descries usando a construo always do Verilog G Pode-se especificar quer circuitos combinatrios quer sequentiais
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)
"Instrues" Comportamentais
As descries comportamentais so introduzidas por instrues initial e always
Instruo Aspecto Comeo Como funciona Usada em Sntese?
initial
always
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
'Instrues'
G Lado esquerdo = lado direito G Lado esquerdo deve ser 'register' G Lgica de 4 valores
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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.
always @ (D) begin yadda yadda end always @ (F) begin yadda yadda b = D; end
Ser executado?
Ser executado?
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.
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!
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
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?
Observao
G Os elementos no diagrama no tm de ser portas lgicas G O SimCity um simulador por acontecimentos discretos, o Verilog tambm
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
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.
Modelao comportamental
G O sistema representado por uma 'espcie' de linguagem de programao
Mod. comportamental
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
set
g1
reset
g2
qBar
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
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
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
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
(resumido)
Isto executado
B A C
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