74
Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática -UFPE

Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Embed Size (px)

Citation preview

Page 1: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Projetando Sistemas Digitais com SystemVerilog

Edna BarrosGrupo de Engenharia da Computação

Centro de Informática -UFPE

Page 2: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Especificação

Diagrama de Gajski

Page 3: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Definição das portas do circuito• A definição dos terminais de um módulo é feita da seguinte

forma.

module teste ( input logic A,B, input C, output logic S1, output logic S2 );endmodule

Definindo Entidades

3

Page 4: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Exemplo: no código abaixo está descrito um somador de 1 bit

module somador1Bit ( input A, B, output Soma, Carry);

always_comb Soma <= A ^ B; //A xor Balways_comb Carry <= A & B; //A and B

endmodule

Definindo Entidades

4

Page 5: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Para valores inteiros, SystemVerilog possui uma boa diversidade de definições.

• Os bits dos tipos abaixo podem assumir apenas valores zero ou um.

– shortint: inteiro sinalizado de 16 bits.

– int: inteiro sinalizado de 32 bits.

– longint: inteiro sinalizado de 64 bits.

Principais Tipos

5

Page 6: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Temos ainda o tipo integer o qual seus bits podem assumir valor 1, 0, Z e X.

• integer: inteiro sinalizado de 64 bits.

Os tipos podem ser forçados a serem sinalizados ou não-sinalizados. Para isso deve-se usar as palavras signed ou unsigned.

int unsigned valor;int signed valor;

Principais Tipos

6

Page 7: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

O tipo byte representa um conjunto de oito bits que podem ser interpretados como um inteiro sinalizado ou um caractere ASCII.

byte valor;byte unsigned valor;

O tipo bit é usado basicamente na definição de vetores e pode assumir apenas valores 0 e 1.

Principais Tipos

7

Page 8: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

O tipos logic também é usado na definição de vetores . Seus bits podem assumir valor 0, 1, Z e X. Por padrão os terminais de entrada e saída dos módulos possuem esse tipo.

SystemVerilog possui ainda os tipos real (64 bits) e shortreal (32 bits). Esses ainda não são sintetizáveis.

real valor;shortreal valor;

Principais Tipos

8

Page 9: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Temos também o tipo string que representa uma cadeia de caracteres. Esse tipo possui um bom conjunto de métodos definidos. Deve ser delimitado por aspas duplas e pode ter até 1024 caracteres.

string nome = “String”;byte a = “A” //Atribui A para abit [10:0] c = “41” //Atribui 000_0100_0001 a C

Principais Tipos

9

Page 10: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Com SystemVerilog podemos trabalhar com números decimais, hexadecimais e binários. Para tanto, devem ser declarados o tamanho em bits do número e seu tipo.

6'd33 8'hA6 8'b1000_1101

• Obs: os números podem ser explicitamente sinalizados através do uso de - ou +

Trabalhando com Números

10

Page 11: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Para a definição de vetores de bits procedemos das formas apresentadas abaixo.

• Vetor unidimensionallogic [msb: lsb] nome_vetor;

• Vetor bidimensionallogic [msb: lsb] nome_vetor [minimo :máximo];

• Vetor tridimensionallogic [msb:lsb] [máximo:mínimo] nome_vetor[mínimo: máximo]

Vetores de Bits

11

Page 12: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Exemplos

• Abaixo é definido um vetor de oito bits.logic [7:0] vetor;

• No próximo exemplo temos um vetor de 64 posições, sendo cada uma de 4 bits.

logic [3:0] matriz [0:63];

• Nessa construção temos 10 entradas de matrizes 4x8. Configurando assim uma matriz tridimensional.

logic [3:0] [7:0] matriz [0:10];

Vetores de Bits

12

Page 13: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

O acesso aos elementos do vetor são demonstrados nos exemplos abaixo.

string [4:0] vet = { “H”, ”P”, ”C”, ”I”, “n”};vet[3] = vet[2];

logic [7:0] matriz [0:4];matriz [0] = 8’b1010_0011;matriz [0] [7] = 1’b0;

logic [3:0] [7:0] matriz [0:7];matriz [0] = 8'b1010_0011;matriz [0][2][7] = 1'b1;

Vetores de Bits

13

Page 14: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Os operadores de SystemVerilog são parecidos com os da linguagem C. Nesta apresentação é demonstrado apenas um subconjunto dos operadores da linguagem.

• Temos os seguintes operadores unários lógicos

~ : negação bit a bit ! : negação lógica + : positivo - : negativo

Operadores

14

Page 15: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

• Operadores lógicos binários>> : deslocamento lógico para a direita.<< : deslocamento para a esquerda.== : verifica a igualdade entre os operandos.!= : verifica e diferença entre dois operandos.=< : menor ou igual>= : maior ou igual.> : maior.< : menor.| ou || : ou lógico.^ : ou exclusivo.& ou && : and lógico.? : operador condicional

<condição> ? <expressão_verdadeira> :<expressão_falsa> ;

Operadores

15

Page 16: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

• Operadores de atribuição

= : atribuição simples+= : atribuição com soma-= : atribuição com subtração*= : atribuição com multiplicação/= : atribuição com divisão %= : atribuição do resto

Operadores

16

Page 17: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

• Operadores Aritméticos

* : multiplicação./ : divisão.%: resto da divisão.+ : soma.- : subtração.

– Observação: em operações lógicas o valor Z é tratado como X.

– Observação: em operações aritméticas a presença de um bit Z ou X torna todo o resultado X.

Operadores

17

Page 18: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Com SystemVerilog podemos construir circuitos síncronos e assíncronos com o uso das construções always_ff e always_comb.

always_ff é usado para criar um bloco síncrono de código.

always_comb é usado para a descrição de lógica puramente combinacional.

Circuitos Síncronos e Assíncronos

19

Page 19: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

No caso da construção always_ff a definição de quais os valores irão sincronizar o bloco de código é feita através das palavras posedge e negedge.

• posedge indica que a partir da subida de um determinado sinal o bloco síncrono será ativado.

• negedge indica que a partir da descida de um determinado sinal o bloco síncrono será ativado.

Circuitos Síncronos e Assíncronos

20

Page 20: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

O exemplo abaixo demonstra a forma de declaração da construção always_ff

always_ff @ ( posedge clk or posedge rst or negedge neg )begin

local para a descrição da lógica síncrona.

end

Circuitos Síncronos e Assíncronos

21

Page 21: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Para circuitos assíncronos é usado o bloco always_comb. Tal bloco será sensível à mudança de qualquer sinal nele contido.

always_combbegin

local para a descrição da lógica assíncrona.

end

Circuitos Síncronos e Assíncronos

22

Page 22: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Em SystemVerilog temos basicmente duas formas de efetuar tomadas de decisões.

Uma delas é feita através da construção if, else if e else.

Outra forma é através do comando case.

Diferentemente de VHDL, em que existem construções diferentes para circuitos síncronos e assíncronos, SystemVerilog apresenta essas duas formas de construir tomadas de decisões para ambos tipos de lógica.

Decisões

23

Page 23: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Construção if else

if ( condição )begin//Local para a inserção de comandos.end

else if ( condição )beginif ( condição ) begin //Local para a inserção de comandos. endelse begin //Local para a inserção de comandos. endend

elsebegin //Local para a inserção de comandos.end

Decisões

Os comandos if podem ser encadeados e anihados. Caso exista uma cláusula else e nenhum dos testes condicionais se confirme ela será executada.

24

Page 24: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Construção Case

• Na construção case um teste de valor é executado e de acordo com o resultado um conjunto de operações é executado.

case (X) 2’b00: Y = A + B; 2’b01: Y = A – B; 2’b10: Y = A / B; default: Y = 0;endcase

Decisões

25

Page 25: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Multiplexador 4x1

Exemplos

module mux_4bits ( input [3:0] a, b, c,

d, input [1:0] sel, output logic [3:0] y); always_comb case (sel) 2’b00: y <= a; 2’b01: y <= b; 2’b10: y <= c; default: y <= d; endcaseendmodule

sel[1:0]

a[3:0]

y[3:0]b[3:0]c[3:0]d[3:0]

26

Page 26: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Registrador de deslocamento do quatro bits.

Exemplos

module Shift_reg4 ( input Data_in, clock, reset, output logic Data_out); logic [3:0] Data_reg; always_comb Data_out = Data_reg[0]; always_ff @ (negedge reset or posedge clock) begin if (reset == 0) Data_reg <= 0; else Data_reg <= {Data_in, Data_reg[3:1]}; endendmodule

27

Page 27: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Construa o contador indicado abaixo

Prática

O contador é trigado na subida do clock.O valor de Data_in deverá ser carragado quando load = 1.O contador conta quando counter_on = 1.Caso cont_up = 1 o contador é incrementado, Caso count_up = 0 o contador é decrementado.O reset deve ser assíncrono.

28

Page 28: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Formas de Descrição de Circuitos

Em SystemVerilog temos quatro formas diferentes de descrever circuitos.

• Forma Estrutural• Fluxo de Dados• Forma Comportamental• RTL

Page 29: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Formas de Descrição de Circuitos

Forma Estrutural• Representa circuitos lógicos usando primitivas

da linguagem.

– Exemplo

not n1(sel_n, sel); and a1(sel_b, b, sel_b); and a2(sel_a, a, sel); or o1(out, sel_b, sel_a);

selb

a outsel_n

sel_b

sel_a

n1 a1

a2

o1

Page 30: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Formas de Descrição de Circuitos

Forma Estrutural• Os comandos são executados de forma

concorrente.

module or_nand_1 ( input enable, x1, x2, x3, x4, output logic y); logic w1, w2; or (w1, x1, x2); or (w2, x3, x4); nand (y, w1, w2, enable);endmodule

Page 31: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Formas de Descrição de Circuitos

Fluxo de Dados• Representa sinais de saída em função de sinais

de entrada.

always_comb out <= (sel & a) | (~sel & b);

sel

b

a

outsel_n

sel_b

sel_a

Page 32: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Formas de Descrição de Circuitos

Fluxo de Dados• Todas as atribuições permanentes executam

concorrentemente.• A ordem das atribuições no arquivo não importa.

module or_nand_2 ( input enable, x1, x2, x3, x4, output logic y); always_comb y <= !(enable & (x1 | x2) & (x3 | x4));endmodule

Page 33: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Formas de Descrição de Circuitos

Forma Comportamental• Representa o comportamento na forma de um

algoritmo.

module mux_2x1(input a, b, sel, output logic out);

always_comb if (sel == 1) out = a;

else out = b;

endmodule

ab

sel

outBlack Box

2x1 MUX

Page 34: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Formas de Descrição de Circuitos

Forma Comportamental• As duas principais formas de descrição

comportamental são initial e always_comb.

– initial: determina um bloco não sintetizável que será executado apenas uma vez no início da simulação.

– always_comb: determina um bloco sintetizável que ira executar de forma repetida.

Page 35: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Formas de Descrição de Circuitos

Descrição Comportamental• Exemplo: initial e always_comb

…initial begin Soma = 0; Carry = 0;end…

…always_comb begin Soma = A ^ B; Carry = A & B;end…

Page 36: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Formas de Descrição de Circuitos

Decrição RTL (Register Transfer Level)

• Descreve o que acontece a cada transição ativa do sinal de relógio.

– Exemplo:

always_ff @(posedge clock) beginpisca <= ~pisca;

end

Page 37: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Mapeamento de Portas

Após criar vários módulos componentes de um mesmo circuito, SystemVerilog nos permite ligá-los em um módulo maior de três formas diferentes.

• Conexão por Posição• Conexão Explícita.• Conexão por Casamento

Page 38: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Mapeamento de Portas

Conexão por Posição

• As conexões são dadas através da posição das portas do módulo filho.

• A ordem de ligação das portas é significativa.

Page 39: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Mapeamento de Portas

Conexão por Posição• Exemplo:

module modulo_Filho( input sig_a, sig_b, output logic sig_c,sig_d);

// descrição do module

endmodule

module modulo_Pai(...);

logic [3:0] g;

child_mod U1(g[3],g[1], g[0],g[2]);

endmodule

modulo_Pai

Page 40: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Mapeamento de Portas

Conexão Explícita

• Neste caso os sinais de ligação internos são explicitamente ligados às portas dos módulos componentes.

• A ordem de ligação das portas não é significativa.

Page 41: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Mapeamento de Portas

Conexão Explícitamodule modulo_Filho(

input sig_a, sig_b, output logic sig_c,sig_d);// descrição do module

endmodule

module modulo_Pai( ... );logic [3:0] g;

modulo_Filho U1( .sig_c(g[0]), .sig_b(g[1]),

.sib_d(g[2]), .sig_a(g[3]) );endmodule

modulo_Pai

Page 42: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Mapeamento de Portas

Conexão por Casamento

• Neste caso a conexão se dá de forma totalmente implícita.

• Sinais internos ao módulo pai são declarados com o mesmo nome das portas dos módulos filhos. A conexão se dá de forma automática.

• Esse tipo de conexão está muito sujeita a erros.

Page 43: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Mapeamento de Portas

Conexão por casamento

module modulo_Filho( input a, b, output logic c,d);

// descrição do moduleendmodule

module modulo_Pai(...);

logic a,b,c,d;

child_mod U1( .* );

endmodule

a b c dmodulo_Filho

a b c d

modulo_Pai

Page 44: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Projetando um sistema digital

Estrutura: controle + processamento

4

2

4

4

Z

NALU

L1

L3

L2

A B

C

F

L1

L2

entity sistema isport(...)end sistema;

architecture estrut of sistema issignal ...component processamentoport(...)component controleport(...)beginU0: controle portmap(...);U1: processamento portmap(...);end estrut;

L3

Page 45: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Projeto: Implementação Multi-ciclo

Shiftleft 2

P CMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signex tend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWriteControl

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

32

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 46: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Compondo a Unidade de Processamento:

f operação descrição flags afetados000 S = A Z,N001 S = A+B Soma Z,N,O010 S = A-B Subtração Z,N,O011 S = A and B And lógico Z100 S = A xor B Ou exclusivo Z101 S = not A Complemento a 1Z110 S = inc A Incremento Z, N, O111 S = A comp B Comparação EQ,GT,LT

A B

S

ZN

OEQ

LTGT

ALU

32 32

32

ALU: Unidade Lógico-Aritmética

Page 47: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Compondo a Unidade de Processamento....

Permitir que a saída da ALU seja deslocada• Registrador de deslocamento

– Load e shift síncronos (descida)– Clear assíncrono– Deslocamentos (n vezes):

• Esquerda– Entrada: 0

• Direita (lógico e aritmético)– Entrada: 0 ou MSB (Bit mais significativo)

• Rotação (direita ou esquerda):– Entrada: LSB, MSB– Saída: MSB, LSB (Bit Menos Significativo)

Page 48: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Compondo a Unidade de Execução...

Desl. Esquerda n vezes

ALU

Reg. desl

f

ck shift3

NZ

O

nreset

eq, gt, lt

Saída_execução

Entrada A Entrada B

3

Rotação esquerda n vezes110

Load (no shift)001

Rotação direita n vezes 101

Desl. Direita aritmético n vezes100

Desl. Direita Lógico n vezes011

010

descriçãoshift

nada000

Desl. Esquerda n vezes

Page 49: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Projetando a Unidade de Controle

Máquinas de estados finitosFSM

Page 50: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Máquinas de estado - FSMComputador = Processamento + Controle

RegistradoresUnidades FuncionaisCombinacionais ( ALU)Barramento

FSM gera sequencias de sinais de controle Instrui ao processamento o que fazer

Status

Controle

Controle

Processamento

Estado

Sinais de controle(saída)

Statuse entradas

Page 51: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Executando um programa

Busca instrução

Executa instrução

Busca operando

Decodifica instrução

Armazena resultado

Incrementa PC

Page 52: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Metodologia de projeto

Seis passos

1. Entender especificação informal do problema

2. Obter especificação abstrata da FSM

3. Minimização de estados

4. Codificação de estados

5. Escolher tipos de FF para implementação do reg. de estados

6. Implementar a FSM

Page 53: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Exemplo: Máquina de vendas autom.

Comportamento:entrega pacote de bombom a cada 15 centavos depositado

slot para moedas

não dá troco

Diagrama de Blocos

Passo 1: Entendendo o problema:

Vending Machine

FSM

N

D

Reset

Clk

OpenCoin Sensor Gum

Release Mechanism

10¢

Page 54: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Moedas típicas:3 moedas de R$0.101 moeda de R$0.05 e uma moeda de R$0.101 moeda de R$0.10 e uma moeda de R$0.052 moedas de R$0.102 moedas de R$0.05 e uma de R$0.10

Diagrama de estados:

Entradas: , , reset

Saída: open

Passo 2. Especificação abstrata

Reset

[open]

[open] [open] [open]

S0

S1 S2

S3 S4 S5 S6

S8

[open]

S7

10¢

10¢

10¢

10¢

5¢ 10¢

Page 55: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Passo3: Minimização de Estados

Reset

N

N

N, D

[open]

15¢

10¢

D

D

reutilizar estadossempre que possível Tabela de estados simbólicos

Present State

10¢

15¢

D

0 0 1 1 0 0 1 1 0 0 1 1 X

N

0 1 0 1 0 1 0 1 0 1 0 1 X

Inputs Next State

0¢ 5¢ 10¢ X 5¢ 10¢ 15¢ X

10¢ 15¢ 15¢ X

15¢

Output Open

0 0 0 X 0 0 0 X 0 0 0 X 1

Page 56: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Passo 4: Codificação de estados

Next State D 1 D 0

0 0 0 1 1 0 X X 0 1 1 0 1 1 X X 1 0 1 1 1 1 X X 1 1 1 1 1 1 X X

Present State Q 1 Q 0

0 0

0 1

1 0

1 1

D

0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

N

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Inputs Output Open

0 0 0 X 0 0 0 X 0 0 0 X 1 1 1 X

Page 57: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Passo 5. Escolha do FF para implementaçãoD FF

D1 = Q1 + D + Q0 N

D0 = N Q0 + Q0 N + Q1 N + Q1 D

OPEN = Q1 Q0

8 GatesCLK

OPEN

CLK

Q 0

D

R

Q

Q

D

R

Q

Q

\ Q 1

\reset

\reset

\ Q 0

\ Q 0

Q 0

Q 0

Q 1

Q 1

Q 1 Q 1

D

D

N

N

N

\ N

D 1

D 0

K-map for OpenK-map for D0 K-map for D1

Q1 Q0D N

Q1

Q0

DN

Q1 Q0D N

Q1

Q0

DN

Q0

Q1 Q0D N

Q1

DN

Page 58: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Passo 5. Escolha de FF para implementaçãoJ-K FF

Next State D 1 D 0

0 0 0 1 1 0 X X 0 1 1 0 1 1 X X 1 0 1 1 1 1 X X 1 1 1 1 1 1 X X

Present State Q 1 Q 0

0 0

0 1

1 0

1 1

D

0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

N

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Inputs K 1

X X X X X X X X 0 0 0 X 0 0 0 X

K 0

X X X X 0 1 0 X X X X X 0 0 0 X

J 1

0 0 1 X 0 1 1 X X X X X X X X X

J 0

0 1 0 X X X X X 0 1 1 X X X X X

Page 59: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Passo 6: Implementação:

K-map for K1K-map for J1

Q1 Q0D N

Q1

Q0

DN

Q1 Q0D N

Q1

Q0

DN

K-map for K0K-map for J0

Q1 Q0D N

Q1

Q0

DN

Q1 Q0D N

Q1

Q0

DN

J1 = D + Q0 N

K1 = 0

J0 = Q0 N + Q1 D

K0 = Q1 N

7 Gates

OPEN Q 1

\ Q 0

N

Q 0 J

K R

Q

Q

J

K R

Q

Q

Q 0

\ Q 1

\ Q 1

\ Q 0

Q 1

\reset

D

D

N

N

CLK

CLK

Page 60: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Metodologia de projeto

Seis passos

1. Entender especificação informal do problema

2. Obter especificação abstrata da FSM

3. Minimização de estados

4. Codificação de estados

5. Escolher tipos de FF para implementação do reg. de estados

6. Implementar a FSM

Page 61: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Máquinas Moore e Mealy

Máquinas Moore

Saídas como função somente do estado

corrente

Saídas são alteradas sincronamente com

mudança de estados

Máquinas Mealy

Saídas dependem dos estados e entradas

Mudanças na entrada causa mudanças

imediatas nas saídas

Sinais assincronos

State Register ClockState

Feedback

Combinational Logic for

Outputs and Next State

X Inputs

i Z Outputs

k

Clo c k

s ta te fe e d b a c k

Co m b in a tio n a l L o g ic fo r

Ne x t Sta te (F l ip -flo p In p u ts )

Sta te Re g is te r

Co m b . L o g ic fo r Ou tp u ts

Z Ou tp u ts

k

X In p u ts

i

Page 62: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Diagramas de Estados

Saídas associadas com estados

Saídas associadas com transições

Reset/0

N/0

N/0

N+D/1

15¢

10¢

D/0

D/1

(N D + Reset)/0

Reset/0

Reset/1

N D/0

N D/0

MooreMachine

Reset

N

N

N+D

[1]

15¢

10¢

D

[0]

[0]

[0]

D

N D + Reset

Reset

Reset

N D

N D

MealyMachine

Page 63: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Representando uma FSM

Notação algorítmica Linguagens de Descrição de Hardware:

• VHDL• Verilog• SystemC• SystemVerilog

Page 64: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Máquinas de Estados Uma máquina de estados em SystemVerilog possui o

seguinte formato.

module nome_modulo ( input … , output … );

enum logic [tamanho-1: 0] {estado_0, estado_1, ... } estado; always_ff @ (negedge reset or posedge clk)

if (reset == 1'b0) state <= state_0; else case (estado)

estado_0: estado <= estado_1; estado_1: ... ... default: estado <= estado_0;

endcase always_comb ...

endmodule66

Page 65: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Tipo Enumerados

O programador SystemVerilog tem a possibilidade de criar novos tipos enumerados. Para tanto, deve usar o modelo abaixo.

• enum logic [tamanho-1: 0] {estado_0, estado_1, ... } estado;

– O comando acima define uma enumeração onde o estado poderá assumir qualquer valor entre os declarados entre chaves.

– Os parâmetros entre colchetes define número de bits necessários para representar o conjunto de estados.

67

Page 66: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Tipo Enumerados

Outra forma de declarar tipos enumerados é mostrada abaixo.

• enum {estado_0,estado_1, ... } estados;

– Neste caso a definição é simplificada porém a ferramenta de síntese usa um tamanho padrão para representar o conjunto de estados.

– Possivelmente serão usados vetores de 32 bits para representar o conjunto de estados. Isso poderá gerar grande disperdício de componentes.

68

Page 67: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Tipo Enumerados

Exemplos de uso:

enum logic [1:0]{busca, decodifica, opera, reset} cont;cont <= busca;

enum { verde, branco, grena } verdadeiro_tricolor;verdadeiro_tricolor <= verde;

69

Page 68: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Implementação do bloco que determinará o próximo estado da máquina

Page 69: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Implemntação do bloco que determinará a saída

Page 70: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Projeto: ArquiteturaInstrução Opcode Funct Descrição

Nop 000000 00000 No operation (todos os outros campos são zero) lw reg, desl(reg_base)

100011 Carrega palavra localizada a partir do endereço dado por (reg_base+desl) no registrador reg

sw reg, desl(reg_base)

101011 Escreve registrador reg a partir do endereço de memória dado por (reg_base+end)

lb reg, desl(reg_base) 100000 Carrega byte localizado no endereço dado por (reg_base+desl) no byte menos significativo do registrador reg. O sinal deve ser expandido.

lh reg, desl(reg_base) 100001 Carrega meia palavra localizada a partir do endereço ((reg_base) + desl) na parte menos significativa do registrador reg. O sinal deve ser extendido.

sb reg, desl(reg_base)

101000 Escreve byte menos significativo do registrador reg no endereço de memória dado por (reg_base+desl). Somente um byte é escrito na memória

sh reg, desl(reg_base)

101001 Escreve meia palavra menos significativa do registrador reg a partir do endereço de memória dado por (reg_base+desl). Somente dois bytes são escritos na memória

lui reg, constante 001111 Carrega valor constante na parte mais significativa do registrador reg = constante, os demais bits são iguais a zero.

mfhi rd 000000 010000 Carrega reg_hi para rd mflo rd 000000 010010 Carrega reg_lo para rd add regi, regj,regk 000000 100000 Regi. <- Regj. + Regk (com overflow) addi regi, regj, cte 001000 Regi = regj + cte (com overflow) sub regi, regj, regk 000000 100010 Regi. <- Regj. – Regk (com overflow) addu regi, regj,regk 000000 100001 Regi. <- Regj. + Regk (sem overflow) addiu regi, regj, cte 001001 Regi = regj + cte subu regi, regj, regk 000000 100011 Regi. <- Regj. – Regk and regi, regj,regk 000000 100100 Regi. <- Regj. And Regk andi regi, regj, cte 001101 Regi = regj and cte xor regi, regj, regk 000000 100110 Regi. <- Regj. xor Regk xori regi, regj, cte 001110 Regi = regj xor cte mult rs, rt 000000 011000 Reg_hi e Reg_lo = rs * rt div rs, rt 000000 011010 Reg_hi = rs/rt (quociente) e Reg_lo= resto da divisão sra regd, regs, n 000000 000011 Desloca registrador regs para dir. n vezes (aritmético), armazena valor deslocado em

registrador regd. srl regd, regs, n 000000 000010 Desloca registrador regs para esq. n vezes (lógico), armazena valor deslocado em registrador

regd. sll regd, regs, n 000000 000000 Desloca registrador regs para esquerda n vezes, armazena valor deslocado em registrador

regd. beq regi, regj, desl 000100 PC=PC + (desl*4) se regi = regj bne regi, regj, end 000101 PC = PC + (desl*4) se regi <> regj slt regi, regj, regk 000000 101010 Regi =1 se regj < regk senão regi=0 slti regi, regj, cte 001010 Regi =1 se regj < cte senão regi=0 j end 000010 Desvio para end jr regi 000000 001000 PC = (regi) jal end 000011 R31 = PC; PC = end rte 010000 010000 Retorno de Exceção Break 000000 001101 Para a execução do programa

5

Opcode

6

rs1 Rs2 rd

5

F1 count

16

deslocamentoOpcode rb

56

F2 rd

5

55

26

endereçoOpcode

6

F3

funct

6

Page 71: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Projeto: Implementação Multi-ciclo

Shiftleft 2

P CMux

0

1

RegistersWriteregister

Writedata

Readdata 1

Readdata 2

Readregister 1

Readregister 2

Instruction[15– 11]

Mux

0

1

Mux

0

1

4

Instruction[15– 0]

Signex tend

3216

Instruction[25– 21]

Instruction[20– 16]

Instruction[15– 0]

Instructionregister

ALUcontrol

ALUresult

ALUZero

Memorydata

register

A

B

IorD

MemRead

MemWrite

MemtoReg

PCWriteCond

PCWrite

IRWrite

ALUOp

ALUSrcB

ALUSrcA

RegDst

PCSource

RegWriteControl

Outputs

Op[5– 0]

Instruction[31-26]

Instruction [5– 0]

Mux

0

2

Jumpaddress [31-0]Instruction [25– 0] 26 28

Shiftleft 2

PC [31-28]

1

1 Mux

0

32

Mux

0

1ALUOut

Memory

MemData

Writedata

Address

Page 72: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

Diagrama de estados

s0

s2s1 s3 s4 s5

s6

...

busca instrução

Executainstrução

próxima instrução

Page 73: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

The FPGA Design Process

Design entry Test Development

Synthesis

Devicemapping

Functional simulation

Timing simulation

Device

Page 74: Cin - CENTRO DE INFORMÁTICA UFPE GRECO Projetando Sistemas Digitais com SystemVerilog Edna Barros Grupo de Engenharia da Computação Centro de Informática

Cin - CENTRODE INFORMÁTICA

UFPE

GRECO

O ambiente Quartus

Editor de texto

Editor de waveform

Editor gráfico

Editor de símbolos

Compilador

Timeextractor

Assembler

Partitioner Fitter

Logicsynthesizer

Databasebuilder

Design doctor

Netlistwriter

Editor de floorplan

Simulador Editorwaveform

Timiniganalyzer

Deviceprogram.

Messageprocessor

& Hierarchy

display

Design entry Processing

Verification Programming