• Nenhum resultado encontrado

Projecto de Circuitos e Sistemas Digitais (MEEC1078) Mestrado em Engenharia Electrotécnica e de Computadores. (Informática Industrial)

N/A
N/A
Protected

Academic year: 2021

Share "Projecto de Circuitos e Sistemas Digitais (MEEC1078) Mestrado em Engenharia Electrotécnica e de Computadores. (Informática Industrial)"

Copied!
39
0
0

Texto

(1)

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”

(2)

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/null

validaçã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-wrap

ASIC

RAM

µP

A/D

(3)

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

(4)

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 sistema

níveis de abstracção

(5)

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

(6)

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

(7)

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)

(8)

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)

(9)

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.

(10)

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

(11)

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

(12)

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)

(13)

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 ) begin

cout = (a & b) | (a & cin) | (b & cin);

end endmodule modela um bloco combinacional sempre que... liga s à expressão operadores lógicos

(14)

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

(15)

FEUP/DEEC, Projecto de Circuitos e Sistemas Digitais, 2002/2003

José Carlos Alves 29

Verilog –

um contador up/down

`timescale 1ns/100ps

module 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/100ps

module 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

(16)

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 inicia

(17)

FEUP/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;

(18)

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; end

Admitindo 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;

(19)

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

(20)

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

(21)

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;

(22)

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ída

(23)

FEUP/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?

(24)

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

(25)

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 ...

(26)

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

(27)

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

(28)

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

(29)

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 1

(30)

FEUP/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

(31)

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

clk

oper/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 max

menor 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

x

Tp

delay max

maior 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.

(32)

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

(33)

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 B

(34)

FEUP/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

(35)

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

(36)

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

(37)

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 tempo

de 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

(38)

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 u

desconhecidos, 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

(39)

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

Simulação

- modelos de atrasos

• atraso de transporte

– um atraso na propagação do nível lógico

• atrasos de subida e de descida

– diferentes atrasos para as transições 0-1 e 1-0

• atrasos ambíguos

– mínimos e máximos para os atrasos 0-1 e 1-0

• atraso inercial

– duração mínima de uma entrada para ser propagada para a saída

• setup time e hold time

(em flip-flops)

– setup time: tempo mínimo para D estar estável antes de clock

– hold time: tempo mínimo para D permanecer estável após clock

Referências

Documentos relacionados

Câmara Temática de Mobilidade a Pé São Paulo 2015 - atual Cidadeapé participação social; legislação Câmara criada dentro do CMTT estabelece diálogo entre poder público

Este trabalho identificou os fatores de risco para o seu desenvolvimento, que incluem: história de exposição a bisfosfonatos, sua via de administração e tempo de

20-A a 20-D institui-se Gratificação de Desempenho de Atividade Técnico-Administrativa em Regulação – GDATR, devida aos ocupantes de cargos de Analista Administrativo e Técnico

Em relação ao ambiente, para compor esse breve panorama sobre a atuação do terapeuta ocupacional foram usados os autores: Martins, Barbosa e Gonzaga (2002) e

 Qualidade e Melhoria contínua – Os seus colaboradores são activamente sensibilizados para a importância que o Sistema de Gestão da Qualidade (SGQ) assume na actividade e sucesso

Neste trabalho n´ os obtemos condi¸c˜ oes para a existˆ encia e unicidade de solu¸c˜ oes brandas assintoticamente quase peri´ odicas para equa¸c˜ oes diferenciais abstratas

Quem não defende erros está a caminho do certo e quem pensa na renovação da sua própria vida, tendo como instrumento o Evangelho, despertou para a libertação e está de posse da luz

Desta forma é possível verificar que os efeitos do stress em contexto laboral de forma continuada e excessiva tornam deficitária a saúde desses profissionais,