• Nenhum resultado encontrado

Treinamento em Projeto de Sistemas Digitais

N/A
N/A
Protected

Academic year: 2021

Share "Treinamento em Projeto de Sistemas Digitais"

Copied!
87
0
0

Texto

(1)

Treinamento em Projeto de Sistemas Digitais

(2)

Projetando Sistemas

Digitais com

SystemVerilog

Edna Barros

Grupo de Engenharia da Computação Centro de Informática -UFPE

Treinamento em Projeto de Sistemas Digitais

(3)

Agenda

• RTL Design

• Simulando circuitos digitais • Descrevendo Testbenches • Módulos parametrizados • Especificando Portas

• Modelando Circuitos Combinacionais • Circuitos sequenciais

• Máquinas de estado

– Modelos esquemático e RTL

Treinamento em Projeto de Sistemas Digitais

(4)

Tutorial - Simulação

RTL Design

• Sistemas digitais possuem milhões de portas lógicas e transistores

– Necessidade de ferramentas EDA (Electronic Design Automation)

– Especificação em linguagem específica (HDL – Hardware Description Language)

– Nível de abstração – RTL (Register Transfer Level)

• Circuitos combinacionais • Registradores

(5)

Fluxo de Projeto

Tutorial - Simulação • Nível de abstração – RTL (Register Transfer Level) • Circuitos combinacionais • Registradores • Máquinas de estado (controle)

(6)

Simulador

Tutorial - Simulação

• Programa que prediz o comportamento de um sistema físico em função do tempo

– Previsão climática: simulador do comportamento do clima

– Modelagem em função do tempo de um sistema digital

(7)

Simulador

Tutorial - Simulação

• SystemVerilog

– Linguagem que modela um sistema digital

• Por exemplo: portas lógicas conectadas

• Simulador que executa o comportamento do sistema modelado em SystemVerilog

– Como os valores das saídas variam em função dos valores das entradas no tempo – Permite verificar se o modelo do sistema

(8)

SystemVerilog

• Permite modelar um sistema digital considerando: – Modelo da interconexão – Modelo de tempo – Modelo da funcionalidade • Modelagem em vários níveis de abstração Tutorial - Simulação

(9)

Nível Portas Lógicas – Gate Level

• Module: bloco básico

– Nome – Interface

– Estrutura interna: conjunto de portas lógicas conectadas

(10)

Nível Portas Lógicas – Gate Level

– Portas lógicas: blocos básicos da linguagem – Conexão por fios

• Tipo lógico: 0, 1, X. Z (desconectado)

– Retardo (delay) das portas

Tutorial - Simulação

Delay = 2 unidades de tempo

(11)

Nível Portas Lógicas – Gate Level

– Retardo (delay) das portas

• Delay default

(12)

Simulação do Modelo

• Como simular um modelo? • Modelo:

– Conexão de componentes (pode ser em qualquer ordem)

– Execução do comportamento de cada componente como função das entradas

(13)

Execução do Modelo

• Cada módulo é executável

• Simulador executa os módulos que tiveram os valores em suas portas de entrada

alterados

• A alteração na saída é propagada para outros módulos que estão

interconectados considerando o

retardo da porta

(14)

Execução do Modelo

• Cada módulo é executável

• Simulador executa os módulos que tiveram os valores em suas portas de entrada

alterados

• A alteração na saída é propagada para outros módulos que estão

interconectados considerando o retardo da porta Tutorial - Simulação Execução em qualquer ordem

(15)

Como Verificar se o projeto está correto?

• Modelo do circuito digital

– Composto de vários módulos

• Gerador de sinais para as entradas • Visualizador dos sinais nas saídas

(16)

Simulando Sistemas Digitais

• Testbench: módulos que vão gerar sinais de entrada para simular um módulo em desenvolvimento e monitorar os sinais de saída do módulo

(17)

Simulando Sistemas Digitais

• Testbench: módulos que vão gerar sinais de entrada para simular um módulo em desenvolvimento e monitora os sinais de saída do módulo

(18)

Simulando Sistemas Digitais

• DUT: Device Under Test Tutorial - Simulação Top DUT Testbench

(19)

Simulando Sistemas Digitais

Tutorial - Simulação

Top

DUT

(20)

Especificando Hierarquia

(21)

Especificando Hierarquia

(22)

Mapeamento

de Portas

Treinamento em Projeto de Sistemas Digitais

(23)

Mapeamento

de Portas

Treinamento em Projeto de Sistemas Digitais

(24)

Um Testbench para o Mux

• Como gerar estímulos de forma automática e exaustiva?

Tutorial - Simulação

Gerador

(25)

Um Testbench para o Mux

Tutorial - Simulação

Gerador

(26)

Um Testbench para o Mux

Tutorial - Simulação

Gerador

(27)

Um testbench mais

inteligente

Tutorial - Simulação Como saber se a especificação está correta?

(28)

Um testbench mais

inteligente

Tutorial - Simulação

(29)

Resumo

• Foram apresentados os principais conceitos de simulação baseada em eventos

• Tempo e ação concorrente

– Modelagem do tempo de simulação

– Modelagem de componentes que são ativados concorrentemente

• Módulos, Instanciação e Hierarquia

– Modelos de partes (componentes de hardware) – Projeto Bottom-Up

• Modelos estruturais e Procedurais

– Estrutura: interconexão de componentes – Procedural: Comportamento do Testbench

(30)

Projetando Circuitos

Combinacionais

Treinamento em Projeto de Sistemas Digitais

(31)

Circuitos Combinacionais

• Lógica combinacional:

–Saída: função booleana das

entradas

• F: I -> O

• Retardo de propagação: tempo para o valor da saída ficar estável em função de mudança nos valores de entrada.

Treinamento em Projeto de Sistemas Digitais

(32)

Circuitos Combinacionais

• Especificação em SystemVerilog Always_comb Assign comportamemto comportamento Treinamento em Projeto de Sistemas Digitais

(33)

Circuitos Combinacionais

• Especificação em SystemVerilog

Assign múltiplas saídas

Treinamento em Projeto de Sistemas Digitais

(34)

Circuitos Combinacionais

• Especificação em SystemVerilog

Hierarquia

Treinamento em Projeto de Sistemas Digitais

(35)

Circuitos Combinacionais

• Porque o circuito abaixo não é combinacional?

A saída não está especificada para todas as entradas

Necessidade de latchs para guardar o valor Treinamento em Projeto de Sistemas Digitais

(36)

Circuitos Combinacionais

• Formalizando.... • always_comb statement – always_comb sum=b+c – always_comb begin sum=b+c; dif = b-c; end

• Executa repetidas vezes enquanto valores mudam

Treinamento em Projeto de Sistemas Digitais

(37)

Circuitos Combinacionais

• Formalizando....

• assign statement

– assign sum=b+c

– assign sum=b+c, dif = b-c;

• Cada expressão (lado direito) é avaliada continuamente

Treinamento em Projeto de Sistemas Digitais

(38)

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

• assign f = (a & b) | (b & c) | (a & c)

Treinamento em Projeto de Sistemas Digitais

(39)

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

Concatenação

Constante com tam. Pré definido

Treinamento em Projeto de Sistemas Digitais

(40)

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

Valores default

Treinamento em Projeto de Sistemas Digitais

(41)

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

Facilitando comparação

Treinamento em Projeto de Sistemas Digitais

(42)

Especificando Testbenches

• Papel do testbench:

– Modelar ambiente – Depurar o projeto

• Não é sintetizável

• Visualização dos sinais

– $ monitor – S display – $ strobe

Treinamento em Projeto de Sistemas Digitais

(43)

Especificando Testbenches

Treinamento em Projeto de Sistemas Digitais

(44)

Especificando Testbenches

Treinamento em Projeto de Sistemas Digitais

(45)

Exemplo Testbench Básico

Instancia do DUV testbench Resultado Treinamento em Projeto de Sistemas Digitais

(46)

Exemplo Testbench Básico

Adicionador 1 bit Adicionador 4 bits

Treinamento em Projeto de Sistemas Digitais

(47)

Exemplo Testbench Básico

testbench

Treinamento em Projeto de Sistemas Digitais

(48)

Tipos de Dados - Principais

Treinamento em Projeto de Sistemas Digitais

(49)

Tipos de Dados - Principais

Treinamento em Projeto de Sistemas Digitais

(50)

Tipos de Dados - Principais

Treinamento em Projeto de Sistemas Digitais

(51)

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

– Vetor unidimensional

logic [msb: lsb] nome_vetor;

– Vetor bidimensional

logic [msb: lsb] nome_vetor [minimo :máximo];

– Vetor tridimensional

logic [msb:lsb] [máximo:mínimo] nome_vetor[mínimo: máximo]

Vetores de Logics

Treinamento em Projeto de Sistemas Digitais

(52)

• Maneira de usar constantes de forma controlada

Enumeration

Treinamento em Projeto de Sistemas Digitais

(53)

• Maneira de usar constantes de forma controlada

Enumeration

Treinamento em Projeto de Sistemas Digitais

(54)

Resumo

• Especificação RTL e Simulação de Sistemas Digitais

• Modelando Circuitos Combinacionais

– Assign – Always_comb • Construtores procedurais • Tipos de Dados Treinamento em Projeto de Sistemas Digitais

(55)

Circuitos Combinacionais

• Formalizando.... • always_comb statement – always_comb sum=b+c – always_comb begin sum=b+c; dif = b-c; end

• Executa repetidas vezes enquanto valores mudam

Treinamento em Projeto de Sistemas Digitais

(56)

Circuitos Combinacionais

• Formalizando....

• assign statement

– assign sum=b+c

– assign sum=b+c, dif = b-c;

• Cada expressão (lado direito) é avaliada continuamente

Treinamento em Projeto de Sistemas Digitais

(57)

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

• assign f = (a & b) | (b & c) | (a & c)

Treinamento em Projeto de Sistemas Digitais

(58)

Circuitos Combinacionais

• Construtores de linguagens de programação

• If, if-else, case

• f = (a . b) + (b . c) + (a . c)

Concatenação

Constante com tam. Pré definido

Treinamento em Projeto de Sistemas Digitais

(59)

Projetando Circuitos

Sequenciais

(60)

Circuitos Sequenciais

• O que é um elemento

sequencial?

–Um flip flop

–Um latch

• São usados para armazenar

informação do Sistema:

(61)

Circuitos Sequenciais

• Como especificar elementos

sequenciais em uma descrição

RTL?

• Elementos sequenciais não são

especificados

Explicitamente

• Eles são

inferidos

a partir de

(62)

Circuitos Sequenciais

• Circuitos sequenciais juntamente com

circuitos combinacionais permitem a

implementação de uma máquina de

estados FSM

– Sinais de sincronização • Clock • Reset – Estados – Entradas e saídas

(63)

Flip-Flop tipo D

• Flip-flop tipo D

– Armazenam 1 bit

– Copia a entrada na transição positiva do clock – Reseta a saída na transição negativa do reset

(64)

Especificando um Flip-Flop

• Flip-flops que são edge-triggered

– Informado pelo uso do simbolo @ com a palavra posedge ou negedge

• Efeito:

– Todas as varíaveis que estão no lado esquerdo da atribuíção com “<=” serão implementadas com Flip-flops trigados na transição do clock ou reset.

– Reset é assíncrono – <= atribuição concorrente Modelo Flip-flop: loop contínuo – mudanças nos sinais após @

(65)

Especificando um Registrador

• Registrador: – Concatenação de vários flip-flops Entradas e saídas de 8 bits Tamanho parametriza do Instanciação

(66)

Máquina de Estados Finitos FSM

• Definidas formalmente como um conjunto de estados, reset e clock.

• Conjunto de combinações das entradas.

– Não necessariamente todas as 2n são possíveis

devido aos don’t-cares

• Combinações das saídas

– Não necessariamente todas as 2n serão possíveis

• Função do próximo estado (δ) e função da saída (λ) são combinacionais

• Clock

(67)

Máquina de Estados Finitos FSM

Modelo de Computação: iniciando no estado de reset, uma transição

positiva do clock causa o Sistema mudar para

outro (ou mesmo)

estado como definido

(68)

Máquina de Estados Finitos FSM

Modelo de

Implementação

(69)

FSM em SystemVerilog

Modelo de

(70)

FSM em SystemVerilog

Always_ff

Always_comb ou assign

(71)

FSM em SystemVerilog

Atribuições concorrentes

(72)

FSM em SystemVerilog

Comportamento similar

(73)

FSM em SystemVerilog

Atribuições concorrentes

Atribuições não concorrentes

(74)

<= vs. =

b c

(75)

Modelando FSM como Diagramas de

Estado

Reset state. One state is always labeled as the reset state using an "R" and an arrow

pointing to the reset state.

State name. A unique and

meaningful name is given to each state. The actual state

assignment is normally only shown in the SystemVerilog model.

Transition expression. An Boolean expression is shown by an arc that represents the next state if the

(76)

Modelando FSM como Diagramas de

Estado

Saídas dependem do estado Saídas dependem do estado e da entrada

(77)

Modelando FSM como Diagramas de

Estado

Estados simbólicos e entrada e saída como

variáveis

(78)

Modelando FSM como Diagramas de

Estado

Mudança do estado Mudança da saída ~z

(79)

Mudança do estado Mudança da saída Calculo do próximo estado

Modelando FSM como Diagramas de

Estado

(80)

Projetando um sistema digital

• Estrutura: controle + processamento

4 2 4 4 Z N ALU L1 L3 L2 A B C F L1 L2 L3

(81)

Projeto: Implementação Multi-ciclo

Shift left 2 PC M u x 0 1 Registers Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Instruction [15– 11] M u x 0 1 M u x 0 1 4 Instruction [15– 0] Sign extend 32 16 Instruction [25– 21] Instruction [20– 16] Instruction [15– 0] Instruction register ALU control ALU result ALU Zero Memory data register A B IorD MemRead MemWrite MemtoReg PCWriteCond PCWrite IRWrite ALUOp ALUSrcB ALUSrcA RegDst PCSource RegWrite Control Outputs Op [5– 0] Instruction [31-26] Instruction [5– 0] M u x 0 2 Jump address [31-0] Instruction [25– 0] 26 28 Shift left 2 PC [31-28] 1 1 M u x 0 3 2 M u x 0 1 ALUOut Memory MemData Write data Address

(82)

Projeto

• Projetar CPU que implementa repertório de uma CPU similar ao MIPS

• Dados módulos em Verilog para cada

componente da Unidade de processamento (ALU, Banco de Registradores, PC, Memória, etc...)

• Projetar unidade de processamento pela interligação dos módulos

(83)

Compondo a Unidade de

Processamento:

f operação descrição flags afetados

000 S = A Z,N

001 S = A+B Soma Z,N,O

010 S = A-B Subtração Z,N,O

011 S = A and B And lógico Z

100 S = A xor B Ou exclusivo Z

101 S = not A Complemento a 1Z

110 S = inc A Incremento Z, N, O

111 S = A comp B Comparação EQ,GT,LT

A B S Z N O EQ LT GT ALU 32 32 32 ALU: Unidade Lógico-Aritmética

(84)

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

(85)

Unidade de Busca...

Mem Read Mem Write MorD IRWrite Unidade Controle

(86)

Resumo

• Circuitos sequenciais – Armazenamento do estado • Elementos Sequenciais – dFF – Clock e reset – Registrador Infra-estrutura Hardware

(87)

Resumo

• Conceitos de Máquinas de Estados

• Modelando FSM usando SystemVerilog • Atribuições concorrentes

• Modelando Diagramas de Estados em System Verilog

– FSMs explícitas

• Algumas otimizações

Referências

Documentos relacionados

[...] testamento de Rosa e o resumo conciso da obra de uma vida inteira [...] Permanece a ideia, sempre defendida por ela, de que o socialismo é obra dos próprios trabalhadores e

O loop (laço) for é usado para repetir um comando, ou bloco de comandos, diversas vezes, de maneira que se possa ter um bom controle sobre o loop. O melhor modo de se entender o

Em cada ambiente realizou-se o experimento simulando três níveis de situações estressantes para os espécimes: a aproximação do observador em direção ao recinto, a preensão do

a exploração das propriedades constitutivas das TDIC permite a reconstrução do currículo na prática pedagógica, por meio da.. expressão de ideias; a interação

Nesta perspectiva, a escola não seria o centro do conhecimento e do saber, mas segundo Orozco-Gómez (2011), ela conservará sua função de instituição educativa

Rosa. Integrante do Projeto de Pesquisa “República e Democracia no Estado de Direito”.. Ao longo da História, houve sucessivas mudanças na organização

GUILHERME TORRES AFFONSO LUCAS ALMEIDA GONÇALVES MATEUS PEREIRA DOS SANTOS RICARDO LAURINDO PEREIRA ALEXANDRE DE SOUZA FERREIRA RICARDO SILVA PEREIRA DA CRUZ FELIPE GARCIA DOS

No período de tempo considerado foram revistos 43 casos com diagnóstico de síndroma de Cushing ACTH- -dependente, sendo quatro secundários a secreção ectópica por