Cin - CENTRODE INFORMÁTICA
UFPE
GRECO
Projetando Sistemas Digitais com SystemVerilog
Edna BarrosGrupo de Engenharia da Computação
Centro de Informática -UFPE
Cin - CENTRODE INFORMÁTICA
UFPE
GRECO
Especificação
Diagrama de Gajski
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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…
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
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
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.
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
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.
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
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.
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
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
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
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
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)
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
Cin - CENTRODE INFORMÁTICA
UFPE
GRECO
Projetando a Unidade de Controle
Máquinas de estados finitosFSM
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
Cin - CENTRODE INFORMÁTICA
UFPE
GRECO
Executando um programa
Busca instrução
Executa instrução
Busca operando
Decodifica instrução
Armazena resultado
Incrementa PC
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
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¢
5¢
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
5¢
5¢
5¢
5¢
10¢
10¢
10¢
10¢
5¢ 10¢
Cin - CENTRODE INFORMÁTICA
UFPE
GRECO
Passo3: Minimização de Estados
Reset
N
N
N, D
[open]
15¢
0¢
5¢
10¢
D
D
reutilizar estadossempre que possível Tabela de estados simbólicos
Present State
0¢
5¢
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
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
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
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
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
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
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
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¢
0¢
5¢
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¢
0¢
5¢
10¢
D
[0]
[0]
[0]
D
N D + Reset
Reset
Reset
N D
N D
MealyMachine
Cin - CENTRODE INFORMÁTICA
UFPE
GRECO
Representando uma FSM
Notação algorítmica Linguagens de Descrição de Hardware:
• VHDL• Verilog• SystemC• SystemVerilog
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
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
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
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
Cin - CENTRODE INFORMÁTICA
UFPE
GRECO
Implementação do bloco que determinará o próximo estado da máquina
Cin - CENTRODE INFORMÁTICA
UFPE
GRECO
Implemntação do bloco que determinará a saída
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
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
Cin - CENTRODE INFORMÁTICA
UFPE
GRECO
Diagrama de estados
s0
s2s1 s3 s4 s5
s6
...
busca instrução
Executainstrução
próxima instrução
Cin - CENTRODE INFORMÁTICA
UFPE
GRECO
The FPGA Design Process
Design entry Test Development
Synthesis
Devicemapping
Functional simulation
Timing simulation
Device
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
Top Related