FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 1
Projecto de Circuitos e Sistemas Digitais
(MEEC1078)
Mestrado em Engenharia Electrotécnica e de Computadores
(Informática Industrial)
Faculdade de Engenharia da Universidade do Porto Departamento de Engenharia Electrotécnica e de Computadores
Edição 2004/05
António José Duarte Araújo
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Sistemas Digitais
• Importância crescente
– Cada vez mais áreas de aplicação • Comunicações móveis • Automóvel
• Computação pessoal – Custo cada vez mais baixo
• PCs, telemóveis, equipamentos domésticos, ... – Tamanho físico reduzido
• densidade do processo 0.18µ ≈100.000 gates/mm2
– Consumo de energia cada vez menor
• alimentação eléctrica com baterias, telemóveis, computadores portáteis
• Projectar um SD
– “if it wasn’t hard they wouldn’t call it hardware”, J.F. Wakerly
– Ferramentas computacionais automatizam partes do projecto... – ...mas a concepção e o desenho têm de ser feitos “à mão”
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 3
Fluxo de projecto (típico)
Ideia
sistema
(algoritmo)circuito
(RTL ou lógico)Síntese
(mapeamento tecnológico)Validação
funcional
Validação
temporal
implementação
teste
D Q DQ um controlador de intensidade luminoas para ligar e desligar luzes de casa sempre que anguem entra ou sai da casota do cao que se chama bobi e tem tambem um gato que se chama tareco1 - receptor 2 - um cpu para calcular a luz 3 - interface de potência interface processador memória CI /dev/nullvalidação
funcional
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Concepção do sistema
• Tecnologias de implementação
– Como vai ser construído o sistema? Um ASIC ou CIs off-the-shelf? – Que tecnologia de montagem a usar nas cartas de circuito impresso? – A decidir o mais cedo possível no ciclo de projecto
• Particionamento
– um sistema pode não “caber” num único CI – divisão da funcionalidade em diferentes dispositivos
memória A/D co-proc. CPU I/O
?
funcionalidade rapidez disponibilidade número de pinos encapsulamento fabricante(s)?
PCB COB MCM wire-wrapASIC
RAM
µPA/D
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 5
Fabricar um CI: que tecnologia ?
• Critérios a ter em conta
– acessibilidade às ferramentas e bibliotecas
– custo de projecto e fabrico (prototipagem e produção)
– fiabilidade
– rapidez (ns / NAND, frequência máxima de clock)
– tamanho (área, número de gates ou transistores)
– consumo de energia
– dissipação térmica
– compatibilidade electromagnética
– resistência mecânica (do encapsulamento)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Ferramentas computacionais
(no fluxo de projecto de circuitos integrados)
• CAD/CAE
(Computer Aided Design/Computer Aided Engineering) – fundamentais para projectar em tempo útil circuitos complexos• vários problemas de optimização combinatória (NP-difíceis) – geralmente não atingem soluções óptimas
• baseadas em processos de optimização do tipo shake&hope
– para problemas de dimensão reduzida, um projectista pode fazer melhor • mas à custa de mais tempo; justifica-se apenas para partes pequenas
• Ferramentas CAD/CAE para projecto de sistemas digitais
– trabalham com representações electrónicas de SDs (modelos) – alguns tipos de ferramentas...
• captura esquemática (é mais do que desenhar um circuito lógico...) • síntese (lógica, RTL, alto nível)
• mapeamento tecnológico
• desenho físico (layout), verificação de regras geométricas • simulação lógica, verificação funcional, verificação temporal • análise temporal
• análise eléctrica, análise térmica
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 7
Modelos de circuitos digitais
• Representações electrónica de SDs
– usadas e transformadas por ferramentas CAD/CAE
• Um modelo é uma aproximação!
– que pode ser boa e pode ser má…
– rigor ⇒
detalhe ⇒
aproximação da tecnologia
– a simulação de um modelo nunca é igual ao seu funcionamento real
• Modelos
(mais frequentemente)
tratados por humanos
– modelos estruturais (esquemáticos)
• detalham a estrutura do circuito, interligando “componentes” entre si
– modelos comportamentais (HDLs, state charts, tabelas de verdade)
• descrevem o comportamento do sistema mas • não contêm informação estrutural
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Classificação de modelos: Y- chart
comportamental
estrutural
físico
placas, MCMs módulos, chips células layout de transistores transistores portas lógicas registos, muxs processadores, memórias fluxogramas, algoritmos transferências entre registos expressões booleanas funções de transistores dispositivo lógico RTL sistemaníveis de abstracção
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 9
Especificação de um SD
• Tradicionalmente…
– captura esquemática (modelo estrutural)
• interligação de portas lógicas, flip-flops, componentes RTL,… • bibliotecas de componentes específicas de uma tecnologia • anotação do desenho com atributos
– nomes, parâmetros de componentes, restrições para implementação • captura a estrutura (física) do circuito
– tabelas de verdade, expressões booleanas (modelo comportamental)
• conveniente para blocos de lógica combinatória ou FSMs – minimização lógica
– codificação de estados
• representação textual, tradução automática para circuitos lógicos • independente da tecnologia alvo de implementação
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Especificação de um SD
• ... e actualmente
– projecto a níveis de abstracção mais elevados
• representações comportamentais ao nível RTL e algorítmico • linguagens normalizadas para descrição de hardware
– suportadas por ferramentas de síntese automática – combinam modelação estrutural com comportamental
– permitem ao projectista abstrair-se da tecnologia alvo (mas não totalmente!) – Portabilidade, facilidade de manutenção e documentação
• redução do ciclo de projecto
– permite explorar diversas alternativas com diferentes compromissos
– comparando com a programação de computadores...
código máquina assembly C, Pascal layout portas lógicas HDLs nível de abstracção crescente
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 11
Projecto estruturado
• Hierarquia e modularidade
– conceitos semelhantes aos empregues em programação estruturada
– objectivos:
• reutilização de componentes (sub-circuitos) • facilitar a verificação do projecto
• simplificar a produção da documentação (geralmente esquecida!)
– quantos níveis de hierarquia? que granulosidade?
• critérios principais:
– funcionalidade e complexidade dos módulos
• uma diferença importante da hierarquia usada em software: – não significa reduzir a complexidade do circuito.
– geralmente “desaparece” durante as várias fases do projecto
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Metodologias de projecto
• Abordagens típicas
– bottom-up (capture-and-simulation)
• hierarquia criada de baixo para cima (lógico
⇒
RTL⇒
sistema) • ciclo de projecto:– desenhar os circuitos mais simples (ou usá-los se já existirem) – validar esses circuitos por simulação
– usá-los na construção de outros circuitos mais complexos
– top-down (describe-and-synthesize)
• hierarquia criada de cima para baixo (sistema
⇒
RTL⇒
lógico) • ciclo de projecto:– especificar o sistema de forma comportamental
– sintetizar e avaliar as soluções resultantes de diferentes restrições
– na prática: top-down + bottom-up = meet-in-the-middle
manual
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 13
Validação do projecto
• Simulação funcional
– verificação de uma especificação a um nível abstracto
• geralmente usados modelos unit-delay ou zero-delay • verificar que é satisfeita a funcionalidade desejada • se não funciona? detecção e depuração de erros (debug) • problemas:
– como definir os vectores de simulação? – como se sabe que o resultado é correcto? – quão exaustivo é o teste?
– fontes de erro comuns
• especificações incompletas, ligações erradas ou nomes trocados • uso incorrecto de ferramentas de síntese automática
• distração... (Save before quit? ou Quit without save?)
• é bom lembrar: os computadores não erram, os humanos sim… • ...e que: são humanos que criam as ferramentas de software!
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Validação do projecto
• Verificação temporal
– circuitos lógicos introduzem atrasos
• O modelo do circuito ainda funciona considerando os atrasos? • qual é o desempenho (atrasos, frequência de relógio)? • o que limita o desempenho? Como se pode aumentar?
– modelos de atrasos
• específicos de uma tecnologia
• dependem do circuito em que um componente se insere (fan-out) • quanto mais completo é o modelo, mais complexa é a simulação
– tpLH, tpHL, tr, tf(mínimos, típicos e máximos)
• interligações também introduzem atrasos
– função do comprimento e da forma (30ps/cm no vazio)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 15
Teste
• Teste do circuito fabricado
– testar para quê?
• minimizar (→ 0%) o número de circuitos defeituosos vendidos • detectar e diagnosticar defeitos de fabrico
• melhorar o sistema ou o processo produtivo
– como testar?
• construir um modelo de faltas do circuito
• criar vectores de simulação que as consigam detectar – gerando saídas diferentes na presença ou ausência da falta – ferramentas para ATPG - Automatic Test Pattern Generation
– o teste é uma fatia importante do custo de produção
• projecto orientado para a testabilidade (DfT - Design for Testability) • auto-teste (BIST - Built-in Self Test)
• teste de PCB (boundary scan test, normas IEEE 1149.1 e IEEE1149.4)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Linguagens de descrição de hardware
• Modelação de um circuito (digital) com HDL
– descrições comportamentais permitem níveis elevados de abstracção
• definir a funcionalidade de um sistema sem detalhar a sua estrutura
– fluxo de projecto seguindo uma metodologia top-down
• descrição em HDL, validação, síntese automática (RTL+lógica)
– representação textual
• facilita a portabilidade, edição e documentação
– duas perspectivas de modelação no desenvolvimento de um projecto
• construir modelos sintetizáveis do circuito a fabricar
– subsets das HDLs e regras de modelação dependem das ferramentas • por exemplo, $monitor()não é sintetizável!
– um modelo sintetizável deve descrever “bem” o seu funcionamento • construir modelos não sintetizáveis para validar o projecto (testbench)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 17
Modelação com HDLs
circuito
a
fabricar
geração de estímulos análise de respostas modelo sintetizável (vai ser o circuito lógico)modelo não sintetizável (testbench) clock reset memórias A/D e D/A interfaces ficheiros ... simula o comportamento de dispositivos externos
analisa respostas para verificar a correcção do modelo
ficheiros registos de texto waveforms ...
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verilog e VHDL
- história
• VHDL
– ‘80: por necessidade de normalização, documentação e portabilidade, e DOD funda projecto para criar linguagem de “programação” para descrever hardware
– ‘83: início do desenvolvimento do VHDL (IBM, Texas, Intermetrics)
– ‘87: o DOD impõe que todos os SDs fossem descritos em VHDL; standard IEEE 1076; os sistemas electrónicos do F-22 foram um dos primeiros projectos em VHDL
– ‘93: VHDL é revisto e adoptado como o standard IEEE 1076 ’93
– ‘96: adopção generalizada por ferramentas EDA; package para ferramentas de síntese (IEEE 1076.3); modelação de bibliotecas para ASIC e FPGA (IEEE 1076.4)
• Verilog
– ‘81: Gateway Design Automation, Philip Moorby cria GenRad HDL e o simulador HILO – ‘83: Gateway lançou a linguagem Verilog HDL e um simulador de Verilog
– ‘85: linguagem e simulador são enriquecidos (Verilog-XL)
– ‘87: Synopsys adopta Verilog como formato de entrada para ferramentas de síntese – ‘89/’90: Cadence compra Gateway e separa o simulador da linguagem; a linguagem é
libertada para o domínio público; é criado o OVI (Open Verilog International) – ‘93: neste ano, de todos os circuitos submetidos a fundições de silício, 85% foram
desenvolvidos em Verilog.
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 19
Verilog e VHDL
- comparação
• capacidade de modelação
– é semelhante para modelos estruturais
– VHDL oferece melhor suporte para modelos abstractos e modelos de atrasos – Verilog tem melhores construções para modelar ao nível lógico e switch level
• tipos de dados
– VHDL suporta tipos de dados abstractos (por exemplo estruturas)
– em Verilog os tipos são muito simples e mais próximos do hw (wire e reg)
• sintaxe e aprendizagem
– VHDL é fortemente tipada, mais verbosa e requer mais tempo para aprendizagem – Verilog é mais simples, com uma sintaxe próxima da linguagem C
• parameterização
– VHDL tem construções para parametrizar número de bits, replicar estruturas e configurar modelos
– Verilog suporta apenas modelos com parâmetros e instanciação com redefinição de parâmetros
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Modelação em HDLs
(recomendações gerais)
• Antes de iniciar a construção do modelo
– definir a arquitectura e estruturação do projecto (particionamento)
– ferramentas de síntese não processam bem circuitos infinitamente
grandes!
• Escrever o código de modo a reflectir a arquitectura
– estruturado em módulos e funções, ter em mente a reusabilidade
– favorecer a legibilidade: nomes, comentários, parêntesis, parâmetros...
• Garantir a precisão da simulação
– deve traduzir fielmente o comportamento do hardware gerado
– modelar correctamente o comportamento das partes não sintetizáveis
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 21
Verilog HDL
• Linguagem de descrição de hardware digital
– representação textual e estruturada de circuitos lógicos
– originalmente para modelação e simulação de circuitos digitais
– actualmente usada também como fonte para síntese automática
– interligação de modelos estruturais com modelos comportamentais
– não é uma linguagem de programação!
• Unidade básica de um modelo em Verilog:
– module: sub-circuito definido por:
• interface (entradas, saídas ou sinais bidireccionais) • implementação (modelo do circuito digital)
preset clear q qbar q qbar preset clear
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verilog - introdução
• Modelo de um full-adder
module full_adder(a, b, cin, s, cout); input a, b, cin;
output s, cout; wire t1, t2, t3;
xor xor_1( s, a, b, cin );
and and_1( t1, a, b ), and_2( t2, a, cin), and_3( t3, b, cin); or or_1( cout, t1, t2, t3); endmodule interface implementação instância saída entradas primitivas lógicas
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 23
Verilog –
modelos estruturais
• Modelo de um somador de 4 bits
– usando o full-adder anterior
module four_bit_adder(a, b, cin, s, cout); input [3:0] a, b;
input cin; output [3:0] s; output cout; wire [2:0] cy;
full_adder fa_0( a[0], b[0], cin, s[0], cy[0] ),
fa_1( a[1], b[1], cy[0], s[1], cy[1] ), fa_2( a[2], b[2], cy[1], s[2], cy[2] ), fa_3( a[3], b[3], cy[2], s[3], cout );
endmodule
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verilog –
verificação funcional
• Modelo completo do somador de 4 bits
– reunião dos módulos full_adder e four_bit_adder
• Verificação funcional do somador de 4 bits
(módulo testbench)module four_bit_adder_testbench; reg [3:0] a, b;
reg cin; wire [3:0] s; wire cout;
four_bit_adder adder4(a, b, cin, s, cout);
initial begin
$monitor($time, “ ci=%b, a=%d, b=%d, s=%d, co=%b”, cin, a, b, s, cout);
cin=0; a=2; b=4; #10 a=0; #10 a=4’b1111; b=0 #10 $stop; end endmodule o circuito a testar monitor de sinais
alguns estímulos de simulação registos (seguram valores)
fios (propagam valores)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 25
Verilog –
verificação funcional
• Verificação exaustiva do somador de 4 bits
• se fosse de 32 bits, e gastando apenas 1ns para cada vector, seria necessário 1170 anos!
module four_bit_adder_testbench; reg [3:0] a, b;
reg cin; wire [3:0] s; wire cout;
four_bit_adder adder4(a, b, cin, s, cout);
initial begin
$monitor($time, “ ci=%b, a=%d, b=%d, s=%d, co=%b", cin, a, b, s, cout);
cin = 0; for(a=0;a<15;a=a+1) for(b=0;b<15; b=b+1) #10 b=b; $stop; end endmodule
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verilog –
modelos comportamentais
• Modelo comportamental do full-adder
module full_adder_comp(a, b, cin, s, cout); input a, b, cin; output s, cout; reg cout; assign s = a ^ b ^ cin; always @( a or b or cin ) begincout = (a & b) | (a & cin) | (b & cin);
end endmodule modela um bloco combinacional sempre que... liga s à expressão operadores lógicos
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 27
Verilog
– modelos comportamentais
• Modelo comportamental do somador de 4 bits
module four_bit_adder_c(a, b, cin, s, cout); input [3:0] a, b;input cin; output [3:0] s; output cout; reg cout;
reg [5:0] ta, tb, ts; // “registos” temporários
always @( a or b or cin or ta or tb or ts ) begin ta = { 1’b0, a, 1’b1 }; tb = { 1’b0, b, cin }; ts = ta + tb; cout = ts[5]; s = ts[4:1]; end endmodule sempre que... {...}é concatenação de bits o somador extrair os resultados
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verilog –
circuitos síncronos
• o elemento mais simples: um flip-flop tipo D
module my_DFF(clk, d, q); input clk, d; output q; reg q; always @( negedge clk ) begin q <= d; end endmodule modela um bloco síncrono com clk sempre que clk q“segura” um valor lógico
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 29
Verilog –
um contador up/down
`timescale 1ns/100psmodule updown_counter(clk, reset, enable, down, dout, end_count); input clk, reset, enable, down;
output [3:0] dout; reg [3:0] dout; output end_count;
assign end_count = enable & (down ? (dout==0) : (dout==15) );
always @( posedge clk or posedge reset) begin if ( reset ) dout <= 0 else begin if ( enable ) if ( down ) dout <= dout – 1; else dout <= dout + 1; end end endmodule síncrono com clk reset síncrono combinacional unidade de tempo do simulador / precisão
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verilog –
testbench para o contador
`timescale 1ns/100psmodule updown_counter_testbench; reg clk, reset, enable, down; wire [3:0] dout;
wire end_count;
updown_counter count_1(clk, reset, enable, down, dout, end_count);
initial begin
clk = 0; down = 0; reset = 0; enable = 1; # 2 reset = 1; // apply reset
# 6 reset = 0; // release reset
# 300 // count up 30 clock cycles enable = 0; // disable counter # 40
down = 1; // count down # 100
enable = 1; // enable counter # 300
$stop; // stop simulation end
always #5 clk = ~clk; // 10ns clock period
endmodule
estímulos de simulação instância do contador
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 31
Modelação em Verilog
• Modelos estruturais
– instanciação de módulos ou primitivas
• primitivas lógicas: and, or, nand, nor, xor, xnor not, buf
– ligação de sinais por posição ou nome
module xpto(a,b,c); input a,b; output c; ... endmodule module top; wire x1,x2; reg k1,k2; xpto xpto_1(k1,k2,x1), xpto_2(.c(x2),.a(x1),.b(k2)); endmodule xpto_1 xpto_2 a b c a b c k1 k2 x1 x2 primeiro sinal é saída, restantes são entradas
primeiro sinal é entrada, restantes são saídas
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verilog
- modelos comportamentais
• Entidade básica: processo
– processo: um componente que realiza uma acção
• síncrono com um relógio, assíncrono ou combinacional • activado por eventos abstractos (por exemplo dump da memória)
• Um sistema
– vários processos que operam concorrentemente
– comunicam entre si através dos sinais que os interligam
• Construções:
always statement; always trigger_event statement; @(a or b or c) @(posedge clock) @(modulename.event) wait(rqst == 1) initial statement; simula statement uma vez quando o simulador iniciaFEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 33
Verilog
- modelos comportamentais
• Instruções condicionais
if (condition) statement1 else statement2 case (expression) expr1: statement1; expr2: statement2; default: statement3; endcase; (expression)?(true):(false)if (a[2:0]==3’b010 && cy) ...
casez
casex
(Zé considerado don’t care)
(Ze X são don’t cares)
case (ir[7:4]) 4’b0001: ... 4’b0010: ... default: ... endcase; casex (ir[7:4]) 4’bxx01: ... 4’bxx10: ... default: ... endcase; acc=(ir[7:0]==4’b0011) ? 0 : 255; if (a[2:0]===3’b01z && cy) ...
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verilog
- modelos comportamentais
• Ciclos
for(start;end_expr;update) statement; forever statement; for(i=0;i<8;i=i+1) x[i] = x[i+1] repeat(loop_count) statement; repeat(10) begin a[i]=a[i+1]; i=i+1; end; forever a = b; while(i<8) begin ... end while(condition) statement;FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 35
Verilog
- modelos comportamentais
• task
– equivalente a um procedimento – pode chamar-se a si próprio
usando os mesmos registos locais
• function
– equivalente a uma função
– retorna um valor
– não pode conter instruções
com temporizações ou eventos
• Estruturação em “subrotinas”
multiply(a,b,acc); ... task multiply input [15:0] a, b; output [31:0] prod; begin ... end endtask if (testDF(d1,d2)==2’b00) ... function [1:0] testDF; input [1:0] Duab, Dvab;begin ...
testDF=2’b01; end
endfunction
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verilog
- modelos comportamentais
• Atribuição procedimental
• Atribuição non-blocking
begin a1=in0+in1-acc; y1=a1+b1; z1=y1+a1; end begin a1<=in0+in1-acc; y1<=a1+b1; z1<=y1+a1; endAdmitindo que in0=4,in1=4,acc=1 a1=4, b1=4, y1=8 a1 = 4+4-1 = 7; y1 = 7+4 = 11; z1 = 11+7 = 18; a1 = 7; y1 = 4+4 = 8; z1 = 8+4 = 12;
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 37
Verilog
- modelos comportamentais
• Atribuição contínua
– modela um bloco de lógica combinacional
– modelação de atrasos
assign #delay one_wire = expression, other_wire = expression; #delay #(d1,d2,d3) #(d1m:d1t:d1M, d2m:d2t:d2M, d3m:d3t:d3M) delay: atraso d1:atraso de 0 - 1 d2:atraso de 1 - 0 d3:atraso para HiZ
mínimo típico máximo
assign #5
sum= a^b^ci, cout = a & b |
a & ci | b & ci; wire #delay one_wire = expression,
other_wire = expression; wire [7:0] #10 sum = a + b;
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verilog
- modelos comportamentais
• Módulos com parâmetros
• Tasks do sistema
(para testbenches)
– $display(); imprime quando é invocado – $monitor(); só um activo no modelo – $time; tempo de simulação – $finish; termina a simulação – $stop; interrompe a simulação
module my_multiply(...); parameter size=16, delay=5; ...
endmodule
my_multiply #(8,2) mult1(...);
valores por omissão
valores atribuídos à instânciamult1
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 39
Construção de modelos sintetizáveis
(em Verilog, para Synopsys FPGA Express)
– Atrasos são sempre ignorados
• o seu uso pode tornar incoerente a simulação e o comportamento do circuito
– Sinais do tipo
reg• nem sempre são traduzidos em registos
• podem ser traduzidos emwire, D-flip-flops ou latches transparentes
– Atribuição contínua (
assign sum=a^b^cin;)
• traduzida para um bloco de lógica combinacional
– Operadores aritméticos e lógicos
• apenas para inteiros sem sinal, dimensão dos resultados depende dos operandos • são gerados circuitos combinacionais que os implementam
• podem ou não ser partilhados para diferentes operações do mesmo tipo • os operadores /e %só podem ser usados com operandos constantes (V 2001.08-FE3.6.1)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Construção de modelos sintetizáveis
(em Verilog, para Synopsys FPGA Express)
– always
- duas formas
• always @(posedge ...): os sinais tiporegsão traduzidos para Dffs
always @(posedge clock or negedge reset) begin if (!reset) acc = 8’b00000000; else acc = data_in; end
• always @(a or b or ...): sinais do tiporegsão latches ouwires reset assíncrono;
tem de ser avaliado no primeiroif(...)
always @(a or b or sel) begin if (sel) out = a; else out = b; end
outé uma latch outé uma função combinacional de sel, a e b lista de sensibilidades pode ser omitida só para síntese
always @(a or sel) begin
if (sel) out = a; end
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 41
Construção de modelos sintetizáveis
(em Verilog, para Synopsys FPGA Express)
– inferência de latches em construções
always- regra geral
• latches são geradas para sinais do tiporegque não sejam completamente especificados para todos os casos de instruções condicionais (por exemploif (sel) out = a;e quandosel==0? ) • no caso contrário é apenas gerado um circuito combinacional sem
elementos de memória
– latches são (geralmente) indesejáveis e fatais num circuito síncrono
• como podem afectar o funcionamento de um circuito síncrono?!
– ferramentas de síntese ignoram a lista de sensibilidades
• em construções do tipo always @( enable or bus_a or bus_b)
• o simulador só avalia o bloco quando algum sinal muda de estado
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Construção de modelos sintetizáveis
(em Verilog, para Synopsys FPGA Express)
– inferência de buffers de 3-estados
• atribuindo za um sinal (do tiporeg)
module three_state(in, out, en); input in, en;
output out; reg out; always @( in or en) if (en) out = in; else out = 1’bz; endmodule assign out = en ? in : 1’bz;
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 43
Construção de modelos sintetizáveis
(em Verilog, para Synopsys FPGA Express)
– ciclos
• for(...): só são suportadas 4 formas:
– crescente ou decrescente de passo constante (...;index=index±step) – condição de terminação com <, >, <= ou >=
• while (...): cria um ciclo combinacional; deve ser quebrado com @(posedge clock)
always @( a or b or carry ) for(i=0;i<=31;i=i+1) begin
s[i] = a[i]^b[i]^carry;
carry = a[i]&b[i] | a[i]&carry | b[i]&carry; end
always @( posedge clock ) while (x<y)
begin
@(posedge clock); x=x+z;
end
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Modelação de máquinas de estados
• FSM (Finite State Machine)
– sequência determinada de estados, síncrono com relógio
– estrutura geral
saída próximo estado registo de estado entradas saídas (Mealy) reset (assíncrono) reset (síncrono) clock saídas (Moore) saídas (Moore) saídaFEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 45
Máquinas de estados
- especificação
• Tabela de transição de estados
• Diagrama de transição de estados
00 01 10 0X/1 0 1X/0 1 1 X1/0 X0/1 XX/1 S0 S1 S2 i1/Yme i1/Yme Ymo Ymo i2/Yme Yme i2/Yme entradas estado próximo saídas
i1 i2 corrente estado Yme Ymo 0 X 00 (S0) 00 (S0) 1 0 1 X 00 (S0) 01 (S1) 0 0 X 1 01 (S1) 00 (S0) 0 1 X 0 01 (S1) 10 (S2) 1 1 X X 10 (S2) 00 (S0) 1 1 saídas Mealy saídas Moore i1 i2/Yme Ymo
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Máquinas de estados
- modelação em Verilog
• Modelo incorrecto
module FSM_mal(clock, i1, i2, Yme, Ymo); input clock, i1, i2;
output Yme, Ymo; reg Yme, Ymo; reg [1:0] state; always @(posedge clock)
case (state) 2’b00: begin Ymo=0; if (i1) begin state=2’b01; Yme=0; end else Yme=1; end 2’b01: begin Ymo=1; if (i2) begin state=2’b00; Yme=0; end else begin state=2’b10; Yme=1; end end 2’b10: begin
Ymo=1; state=2’b00; Yme=1; end endcase endmodule 00 01 10 0X/1 0 1X/0 1 1 X1/0 X0/1 XX/1 i1 i2/Yme Ymo Funciona? Quais são os erros?
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 47
Máquinas de estados
- modelação em Verilog
• Modelo incorrecto
module FSM_mal(clock, i1, i2, Yme, Ymo); input clock, i1, i2;
output Yme, Ymo; reg Yme, Ymo; reg [1:0] state; always @(posedge clock)
case (state) 2’b00: begin Ymo=0; if (i1) begin state=2’b01; Yme=0; end else Yme=1; end 2’b01: begin Ymo=1; if (i2) begin state=2’b00; Yme=0; end else begin state=2’b10; Yme=1; end end 2’b10: begin
Ymo=1; state=2’b00; Yme=1; end
endcase endmodule
• falta de reset (síncrono e/ou assíncrono) • um só processo para próximo estado e saídas • todas as saídas são registadas
• Yme não é saída Mealy • não é definido o estado inicial • falta o estado2’b11 00 01 10 0X/1 0 1X/0 1 1 X1/0 X0/1 XX/1 i1 i2/Yme Ymo
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Máquinas de estados
- modelação em Verilog
• Modelo correcto
always @(state or i1 or i2) begin case (state) 2’b00: begin nextstate=2’b00; Ymo=0; if (i1) begin nextstate=2’b01; Yme=0; end else Yme=1; end 2’b01: begin Ymo=1; if (i2) begin nextstate=2’b00; Yme=0; end else begin nextstate=2’b10; Yme=1; end end 2’b10: begin
Ymo=1; nextstate=2’b00; Yme=1; end
default: begin
Ymo=0; nextstate=2’b00; Yme=1; end
endcase end endmodule module FSM_bem(reset, clock,
i1, i2, Yme, Ymo); input reset, clock, i1, i2; output Yme, Ymo;
reg Yme, Ymo;
reg [1:0] state, nextstate; always @(posedge clock)
if (reset) state<=2’b00; else state<=nextstate; 00 01 10 0X/1 0 1X/0 1 1 X1/0 X0/1 XX/1 i1 i2/Yme Ymo
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 49
Máquinas de estados
- modelação em Verilog
• Separação da lógica do próximo estado das saídas
always @(state or i1 or i2) begin case (state) 2’b00: if (i1) nextstate=2’b01; else nextstate=2’b00; 2’b01: begin if (i2) nextstate=2’b00; else nextstate=2’b10; end 2’b10: nextstate=2’b00; default: nextstate=2’b00; endcase end endmodule
always @(state or i1 or i2) begin case (state) 2’b00: begin Ymo=0; if (i1) Yme=0; else Yme=1; end 2’b01: begin Ymo=1; if (i2) Yme=0; else Yme=1; end 2’b10: begin Ymo=1; Yme=1; end default: begin Ymo=0; Yme=1; end endcase end endmodule
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Máquinas de estados
- modelação em Verilog
• Combinando estado corrente e próximo estado
always @(posedge clock or negedge reset) begin if (!reset) state <= 2’b00; else case (state) 2’b00: if (i1) state<=2’b01; else state<=2’b00; 2’b01: begin if (i2) state<=2’b00; else state<=2’b10; end 2’b10: begin state<=2’b00; end default: begin state<=2’b00; end endcase end endmodule
modelando Ymocomo saída síncrona:
always @(posedge clock or negedge reset) begin if (!reset) begin Ymo<=0; state <= 2’b00; end else case (state) 2’b00: if (i1) begin Ymo<=1; state<=2’b01; end else begin Ymo<=0; state<=2’b00; end ...
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 51
Síntese do datapath
• S.D. - controlo e processamento de informação
– unidade de processamento (datapath)
• processamento e comunicação de dados
– registos, ALUs, outros operadores dedicados (FUs), barramentos
– controlo
• activa os elementos do datapath, define as operações a realizar – FSMs, controladores microprogramados
• Control dominated
– sistemas onde predominam as estruturas de controlo
• controlador de microondas, semáforos, microprocessador, ...
• Data flow dominated
– sistemas onde predomina o datapath, controlo reduzido
• aplicações de DSP, unidades de cálculo dedicadas
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Sistemas Digitais síncronos
• Sistema síncrono
– simplicidade em separar o controlo do datapath
– todos os registos têm o mesmo sinal de relógio
– o datapath efectua operações de registo a registo
• transferências entre registos na transição de relógio
– em cada ciclo de relógio o controlador define:
• que registos são carregados
• agulhamento de barramentos e multiplexers • operações a realizar pelas unidades funcionais
+ * / sqrt and or R
mux mux mux
R R mux mux clk controlo FUs registos
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 53
Datapath síncrono
• Lógica combinatória entre registos
freq. clock < 1 / max(Tdelay1,Tdelay2,Tdelay3)
– frequência de relógio
– controlo do datapath também condiciona o desempenho
controlo datapath
clock
Tdelay1 Tdelay2 Tdelay3
clock saída assíncrona saída síncrona entrada síncrona entrada assíncrona
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Datapath síncrono
• todos os registos têm o mesmo relógio
– elevado fanout: necessário buffers para distribuir o relógio
• problemas
– clock skew: variação da fase do relógio em diferentes registos
• atrasos introduzidos pelas interligações, só conhecidos após routing • circuitos dedicados para distribuir relógio (p.ex. em FPGAs)
– carregamento condicional de registos (abilitação ou enable)
• não usar gated clocks (depende da tecnologia de implementação) • flip-flops com controlo clock enable síncrono
• necessário garantir tempos de hold e setup dos flip-flops
– tratamento de entradas assíncronas (p.ex. interrupções)
• análise de metaestabilidade • sincronização com o relógio
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 55
Datapath síncrono
- clock skew
• variação da fase do relógio em diferentes registos
atraso R1 R2 clk clk1 clk clk1 R1 b c R2 b c a atraso x R1 R2 clk clk R1 b c R2 a b a x
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Datapath síncrono
- clock skew
• Motivado por assimetria do circuito de relógio
– características físicas das ligações (comprimento, RC)
– diferente fanout
– lógica combinatória no caminho do relógio
R1 R2 clk clk1 R1 R2 clk clk1 R3 R4 R1 R1 R2 clk clk1 ce gated clock
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 57
Datapath síncrono
- clock skew
• Em FPGAs
– as interligações programáveis introduzem atrasos importantes
• difícil (mas não impossível) equilibrar os atrasos de diferentes nets
– rede de interligações dedicadas para distribuir sinais de relógio
• também servem para outros sinais com elevado fanout
– exemplo: na família XC4000E (consultar o databook…)
• 4 buffers primários (BUFGP) e 4 buffers secundários (BUFGS) • um par de buffers em cada canto do die (TL, TR, BL e BR)
• cada buffer pode alimentar as entradas clk de todos os FFs com skew mínimo • não utilizar um desses buffers para distribuir o relógio é FATAL!
• no ambiente de síntese da XILINX (Foundation+Express)
– são identificados os sinais de relógio: sinais que alimentam entradas clk de FFs – é alocado um buffer global (BUFGP ou BUFGS) para cada um
– não podem existir mais de 8 sinais de relógio diferentes
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Datapath síncrono
- gated clock
• Carregamento condicional de um registo
– solução errada: usar um AND para deixar ou não passar o clock
ce.clk clk
R1 a b ?
ce
R1 é carregado duas vezes ! Só funciona se ce ocorrer antes de clk. Como é possível garantir?
Se ce é produzido por uma máquina de estados síncrona com clk, ce é mudado sempre após clk. Problema adicional: o atraso
introduzido pela porta AND R
clk ce.clk ce
– clock enable síncrono
– flip-flops primitivos
com controlo clock enable
–
solução correcta
R clk ce 0 1FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 59
Datapath síncrono
- gated clock
• Solução (mais) segura para um gated clock
clk clk gclk1 gclk2 ce1 ce2 controlo gclk = ce.clk clk ce clk
• portas NAND com atrasos idênticos • atrasos iguais de clk até cada NAND... • … e de cada NAND até aos buffers • garante clock skew mínimo
• sinais ce gerados na unidade de controlo • unidade de controlo síncrona com clk • em FPGA requer routing cuidado
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
• Outra solução segura: registar os sinais enable
Datapath síncrono
- gated clock
clk en1 en2 controlo D Q D Q gclk1 gclk2 ens1 ens2 gclk clk en ens
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 61
Síntese do datapath
- pipelining
• datapath síncrono
(não-pipelined vs. pipelined)
– não-pipelined: uma operação por ciclo de relógio: f
clkoper/s
– pipelined: partir o circuito lógico e inserir registos
clk
di0 di1 di2 di3 di4 do0 do1 do2 do3 do4 X reg in reg out Tdelay di Tdelay clk lógica combinatória
reg in reg out do di Tpdelay max clk lógica combinatória
reg in reg out
do
reg1
reg0
clk
di0 di1 di2 di3 di4
d0 d1 d2 d3 d4 X reg in reg0 Tpdelay max reg1 reg out d0 d1 d2 d3 X
do0 do1 do2 X
X
X X
Latência: 3 ciclos clk
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Síntese do datapath
- pipelining
• No circuito pipelined
– Tp
delay maxmenor do que T
delay• Tpdelay maxé o maior atraso de uma partição do circuito combinatório
• define uma frequência de clk maior do que para o circuito combinatório
– 3
xTp
delay maxmaior do que T
delay• para além da lógica combinatória há atrasos introduzidos pelos registos • um resultado demora 3 períodos de clk a aparecer na saída
– é consumido um dado e produzido um resultado em cada clk
• aumento de desempenho para sequências de operações iguais • mas não compensa para realizar uma única operação.
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 63
Verificação do projecto
• Importância da verificação
(multi-million gate ASICs)
– consome 70% do esforço do projecto
– N Engs para projecto RTL mas 2N para verificação
– os testbenches representam até 80% do volume total de código
– verificação está no caminho crítico de um projecto
• Reduzir o custo da verificação
– explorar paralelismo
– criar testbenches a níveis de abstracção elevados (>RTL)
– minimizar o factor humano (a fonte de erros!)
• automatização do processo
• introduzir redundância no processo (2 projectos independentes)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verificação funcional
Testbench
processo para demonstrar a correcção funcional do modelo
de um circuito a fabricar
estímulos
saídas
DUV
Design Under Verification
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 65
Verificação - factor humano
Especificação Interpretação Codificação RTL Verificação Modelo RTL Factor humano um projectista
A verificação pode ser “viciada” por existir uma só interpretação
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verificação - redundância
Especificação Interpretação A Codificação RTL Verificação Modelo RTL Interpretação B Projectista A Projectista BFEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 67
Prototipagem
• Verificação por prototipagem
(DUV é hardware físico)
– como construir um protótipo de um ASIC?
• componentes off-the-shelf (os velhinhos 74xxx...) • protótipo a que nível? funcional, RTL ou lógico?
• sistemas baseados em FPGAs (oferecem actualmente milhões de gates)
– o testbench é hardware (fontes de sinal, analisadores lógicos...)
– características eléctricas e dinâmicas são diferentes da tecnologia alvo
• o processo de validação tem conseguir “absorver” essas diferenças
– funcionamento em tempo real (ou quase)
– possibilita verificação com estímulos complexos de sistemas físicos
• disponíveis em tempo real, mas difíceis de modelar • exemplo: sistemas de controlo de processos físicos
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Simulação
• Verificação por simulação
(DUV é um modelo informático)
– menor rapidez mas maior flexibilidade
• observar o estado de qualquer nó ou componente • forçar sinais a estados desejados
• parar e reiniciar a simulação em qualquer estado
• controlar de forma precisa a temporização de eventos assíncronos
– verificação funcional realiza-se em diferentes estágios do projecto
• RTL, pós-síntese, pós-layout (verificação temporal)
– diferentes modelos de atrasos
• fornecidos nas bibliotecas que caracterizam a tecnologia alvo
– simulação de faltas
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 69
Verificação formal
• Verificação da equivalência
(equivalence checking)
– verifica que dois modelos são funcionalmente equivalentes
• compara dois netlists modificados automaticamente ou manualmente • compara um modelo RTL com o netlist resultante
• compara dois modelos RTL
– pequenas alterações para melhorar o desempenho da síntese
• Verificação do modelo
(model checking)
– verifica que o modelo satisfaz condições definidas na especificação
• exemplos:
– todos os estados de uma FSM são atingidos? – não há estados isolados?
– um interface não entra em deadlock?
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Verificação funcional
• Verifica a funcionalidade do projecto
– a tradução da especificação para o modelo RTL é manual
• especificações são descrições informais em linguagens naturais • sujeita a interpretações incorrectas
– compara o modelo RTL com a especificação
• pode mostrar que o projecto satisfaz a especificação mas não o pode provar!
• Outros objectivos...
– verificar a independência do estado inicial dos elementos de memória
– se é garantida insensibilidade a variações dos atrasos dos componentes
– se não há contenções, oscilações, entradas ilegais ou estado suspensos
– avaliar compromissos de custo e desempenho e de alterações ao projecto
– produzir documentação
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 71
Simulação
- problemas
• Como se constróem estímulos ?
– não há procedimentos formais para gerar estímulos
– processo heurístico, baseado na intuição e conhecimento do sistema
– não é praticável a verificação exaustiva
• um circuito com 75 entradas
⇒
275testes (1.2x109anos@1µs/teste)• Como se sabe se os resultados são correctos ?
– só verifica a funcionalidade exercitada pelos estímulos
• Estímulos para verificação e para teste
– verificação: detectar e diagnosticar erros de projecto
• não é possível enumerar todos os erros de projecto
– teste: detectar e diagnosticar defeitos de fabrico
• defeitos de fabrico (faltas) são modelados como erros lógicos
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Simulador compiled code
• simulação compilada
– executa um modelo compilado do circuito
• o circuito é traduzido em instruções executáveis por um processador • simulador oferece suporte para fornecer estímulos de simulação • orientada para verificação funcional, não suporta análise temporal • o comportamento de componentes é modelado por instruções máquina
ou subrotinas
• adequado para simular o comportamento de sistemas síncronos
– exemplo (modelo estrutural):
MOV AL,A AND AL,B MOV Y,AL MOV AL,B AND AL,Y NOT AL MOV Z,AL MOV F,AL
para cada transição de clk (código x86):
D Q A B F Y clk Z
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 73
Simulador event-driven
• simulação de eventos
– usa um modelo do circuito para gerar e propagar eventos
• eventos nas entradas primárias são produzidos pelos estímulos
• eventos nos restantes nós são propagados pela avaliação dos componentes
– um evento é uma mudança do estado de um sinal num tempo dado
• os componentes que usam esse sinal são activados e avaliados • as mudanças resultantes das avaliações geram novos eventos • outros eventos: controlo do simulador, monitorização de sinais
– em Verilog: $finish, $display(...), $monitor(...)
– permite processar estímulos e sinais assíncronos
• análise do comportamento com os atrasos dos componentes
• avaliação do funcionamento com eventos não sincronizados (interrupções)
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Simulação event-driven
- fluxograma
avançar tempode simulação
fim não há eventos extrair eventos
para este tempo até ao primeiro evento pendente actualiza sinais activos propaga mudanças dos sinais avalia componentes activados introduz os novos eventos na lista actualiza o valor dos
sinais modificados pelos eventos deste tempo propaga o valor dos sinais activos até aos componentes que os usam e activa esses componentes
a avaliação dos componentes activados produz novos eventos em tempo futuro (atrasos dos componentes) ou no mesmo tempo todos os eventos produzidos pelos
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 75
Simulação
- o valor lógico desconhecido
• Quando um circuito lógico é ligado,
– memórias e flip-flops ficam com valores lógicos não definidos
– é necessário prever um mecanismo de iniciação (reset)
• geralmente associado ao power-up
• iniciar os conteúdos de elementos de memória
• Valor lógico desconhecido: u
– representa o estado de sinais lógicos não iniciados resultantes de
• não iniciação de registos e memórias
• indefinição do estado de entradas primárias do circuito a simular
– é processado juntamente com os valores lógicos 0 e 1
• operadores lógicos são generalizados para tratar o valor lógico u
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
Simulação
- o valor lógico desconhecido
• Tabelas de verdade para AND, OR e NOT
AND 0 1 u 0 0 0 0 1 0 1 u u 0 u u OR 0 1 u 0 0 1 u 1 1 1 1 u u 1 u NOT 0 1 u 1 0 u
• Perda de informação propagando o valor lógico u
0 1 u u u u udesconhecidos, mas sempre com valores contrários
é sempre 1!
não, não é factorial...
não serve usar u e u u Q Q Q Q u u u 1 desconhecido
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003
José Carlos Alves 77
Simulação
- o valor lógico Z
• Modelação de buffers com saída tristate
I O
E
se E=1, O=I se E=0, O=Z
• Um sinal com o nível lógico Z
– pode ser forçado com 1 ou 0 (pull-up ou pull-down)
– é sempre interpretado como u por uma entrada
Tabela de verdade: I E 0 1 u 0 Z 0 {0,Z} 1 Z 1 {1,Z} u Z u {u,Z} a b o a b 0 1 Z u 0 0 u 0 u 1 u 1 1 u Z 0 1 Z u u u u u u Tabela de verdade de um barramento com 2 entradas
em que casos pode ocorrer contenção no barramento ?
FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003