15
Sistemas Digitais
CEFET/MG
5
Sistemas Digitais
CEFET/MG
5
Sistemas Digitais
CEFET/MG
8
Sistemas Digitais
CEFET/MG
8
Sistemas Digitais
CEFET/MG
4
Sistemas Digitais
CEFET/MG
1
Sistemas Digitais
CEFET/MG
1
Sistemas Digitais
CEFET/MG
2
Sistemas Digitais
CEFET/MG
9
Sistemas Digitais
CEFET/MG
Texto de pré-visualização
Digital Design Copyright 2006 Frank Vahid 1 Sistemas Digitais Capítulo 5 Projeto RTL RegisterTransfer Level Slides to accompany the textbook Digital Design First Edition by Frank Vahid John Wiley and Sons Publishers 2007 httpwwwddvahidcom Copyright 2007 Frank Vahid Instructors of courses requiring Vahids Digital Design textbook published by John Wiley and Sons have permission to modify and use these slides for customary courserelated activities subject to keeping this copyright notice in place and unmodified These slides may be posted as unanimated pdf versions on publiclyaccessible course websites PowerPoint source or pdf with animations may not be posted to publiclyaccessible websites but may be posted for students on internal protected sites or distributed directly to students by other electronic means Instructors may make printouts of the slides available to students for a reasonable photocopying charge without incurring royalties Any other use requires explicit permission Instructors may obtain PowerPoint source or obtain special use permissions from Wiley see httpwwwddvahidcom for information Prof Luciano C A Pimenta Tradução e Adaptação para o Português Prof Ricardo de Oliveira Duarte DELT EE UFMG Digital Design Copyright 2006 Frank Vahid 2 Introdução Capítulo 3 Controladores Controla entradassaídas um único bit ou poucos bits representando um evento ou um estado FSM descrevem o comportamento do circuito sequencial implementadas com registradores e lógica combinacional Capítulo 4 Componentes de Caminho de Dados EntradasSaídas de dados Multiplos bits representados em um única entidade Componentes vistos Registradores Somadores ALUs Comparadores Register files etc Nesse capítulo processadores customizados Processador Controlador e componentes de caminho de dados trabalhando juntos para implementar algoritmos 51 Combinational logic n0 s1 s0 n1 bo bi clk State register FSM inputs FSM outputs ALU Comparador Register file Registrador Combinational logic n0 s1 s0 n1 bo bi State register Register file ALU Caminho de Dados Controlador Note Slides with animation are denoted with a small red a near the animated items Digital Design Copyright 2006 Frank Vahid 3 Projeto RTL Identificar o comportamento Converter em um Circuito Relembrando Capítulo 2 Projeto de Circuitos Combinacionais Primeiro passo Identificar o comportamento na forma de equações ou tabelas verdade Passos subsequentes Converter em um circuito Capítulo 3 Projeto de Circuitos Sequenciais Primeiro passo Identificar o comportamento FSM Passos subsequentes Converter em um circuito Projeto RTL método para se criar processadores customizados Primeiro passo Identificar o comportamento usando máquinas de estados finitas de alto nível Passos subsequentes Converter em um circuito Identificar o comportamento Converter em um circuito Digital Design Copyright 2006 Frank Vahid 4 Projeto RTL Método mais detalhado 52 Digital Design Copyright 2006 Frank Vahid 5 Aplicação do Método de Projeto RTL Primeiro Exemplo Máquina de refrigerantes c entrada de 1 bit Ativado quando uma moeda coin for depositada a Uma entrada de 8bits representando o valor da moeda depositada amount s Uma entrada de 8bits representando o preço do refri soda d Saída de 1 bit o processador faz com que d 1 quando o valor total de moedas depositadas é igual ou maior que o custo do refri a s c d 25 1 0 25 1 1 50 0 0 0 0 tot 25 tot 50 Como podemos descrever com precisão o comportamento deste processador a a s c d Máquina de refrigerantes processador Máquina de refrigerantes processador Digital Design Copyright 2006 Frank Vahid 6 Primeiro Exemplo Passo 1 Identificar o comportamento FSM de alto nível Precisaremos de um registrador para armazenar o total parcial tot Estado inicial Init faz com que d0 tot0 Um outro estado que chamaremos de Wait estado de espera por moedas Se recebe moeda vai para estado Add Estado Add Atualiza o registrador com o valor da moeda tot tot a Lembre a é o valor da moeda introduzida Volte para o estado Wait No estado Wait se tot s vá para o estado Dispense Estado Disp Faz com que d1 entrega 1 refrigerante Retorna ao estado Init Entradas c bit a 8 bits s 8 bits Saídas d bit Registradores locais tot 8 bits Wait Add Disp Init d0 tot0 ctots d1 c tottota 8 8 a s c d Soda dispenser processor ctots Digital Design Copyright 2006 Frank Vahid 7 Primeiro Exemplo Passo 2 Monte o Caminho de Dados Precisaremos de 1 registrador tot Precisaremos de um comparador de 8bits para comparar s e tot Precisaremos de um somador de 8bits para realizar tot tot a Conectar os componentes Criar entradassaídas de controle e dar nomes pertinentes a elas ld clr tot 8bit 8bit adder 8 8 8 8 s a Datapath totld totclr totlts Inputs c bit a8 bits s 8 bits Outputs d bit Local registers tot 8 bits Wait Add Disp Init d0 tot0 c tots c tots d1 c tot tota Digital Design Copyright 2006 Frank Vahid 8 Primeiro Exemplo Passo 3 Conectar o Caminho de Dados a Controladora Entradas da controladora Entrada externa c moeda detectada Entrada vinda da saída do comparador do caminho de dados que demos o nome de totlts Saídas da controladora Saídas externas d dispense soda Saídas para carregar load o registrador e limpar clear o registrador tot do caminho de dados totlts totclr totld Controller Datapath s c d a 8 8 ld clr tot 8bit 8bit adder 8 8 8 8 s a Datapath totld totclr totlts Digital Design Copyright 2006 Frank Vahid 9 Primeiro Exemplo Passo 4 Implementar a FSM da Controladora procedimento cap 3 Mesmos estados e transições da FSM de alto nível A diferença é que agora a FSM ativadesativa os sinais de controle para todas as operações e condições de teste realizadas pelo caminho de dados totlts totclr totld Controller Datapath s c d a 8 8 ld clr tpt 8bit 8bit adder 8 8 8 8 s a Datapath totld totclr totlts Inputsctotltsbit Outputsdtotldtotclrbit Wait Disp Init d0 totclr1 c totlts ctotlts d1 c totld1 c d totld totclr totlts Controller Add Digital Design Copyright 2006 Frank Vahid 10 Primeiro Exemplo Completando o projeto Implemente a FSM como visto no cap 3 Registrador e Lógica combinacional Tabela mostrada ao lado d 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 n0 1 1 1 1 1 1 0 0 1 0 n1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 c 0 0 1 1 0 0 1 1 0 0 s1 0 0 0 0 0 0 0 0 1 1 s0 0 0 0 0 1 1 1 1 0 1 totlts totld totclr Init Wait Add Disp Entradas c c totlts bit Saídas dtotldtotclr bit Wait Disp Init d0 totclr1 c totlts ctotlts d1 c totld1 c d totld totclr totlts Controller Add Digital Design Copyright 2006 Frank Vahid 11 Passo 1 Criar uma FSM de alto nível Olharemos para a execução desse passo com maior detalhe Exemplo da máquina de refrigerantes Diferente de uma FSM porque Entradas de dados a e s possuem mais de 1 bit Necessidade de registradores internos tot Operações com os dados tot0 tots tottota FSMs de alto nível Tipos de dados variados Presença de registradores Equações aritméticas e condições de teste Entradas cbit a 8 bits s 8 bits Saídasd bit Registradorestot 8 bits Wait Disp Init d0 tot0 ctots d1 c tottota ctots Digital Design Copyright 2006 Frank Vahid 12 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Exemplo de como criar uma máquina de estado de alto nível para descrever o comportamento do processador desejado Medidor de distancias baseado a laser laser pulsado mede o período de tempo T para detectar a reflexão A luz do laser viaja a velocidade da luz 310 8 mseg Logo a distância é calculada D T seg 310 8 mseg 2 Objeto de interesse D 2D T sec 3108 msec sensor laser T em segundos Digital Design Copyright 2006 Frank Vahid 13 Exemplo de Passo 1 Medidor de distâncias baseado a Laser EntradasSaídas B entrada de 1 bit vinda do botão para iniciar a medição L saída de 1 bit para ativar o laser S entrada de 1 bit acusa a reflexão do feixe de laser refletido D saída de 16bits exibe no display a distância medida sensor laser T em segundos Laserbased distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor Digital Design Copyright 2006 Frank Vahid 14 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Passo1 Criar a FSM de alto nível Comece por declarar entradas e saídas Crie um estado inicial e dê o nome de S0 Inicializar o feixe de laser em modo desligado L0 Inicializar a distância medida com 0 D0 Laser based distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor EntradasB S1 bit cada Saídas L bit D 16 bits S0 L 0 laser desligado D 0 distancia 0 a Digital Design Copyright 2006 Frank Vahid 15 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Adicione um outro estado chameo de S1 que esperará pelo pressionar do botão B fica em S1 continua esperando B vai para um novo estado S2 Entradas B S 1 bit cada Saídas L bit D 16 bits S0 L 0 D 0 S1 B botão não pressionado B botão pressionado S0 Q O que S2 deverá fazer A Ligar o laser a a Laser based distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor Digital Design Copyright 2006 Frank Vahid 16 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Adicione um novo estado S2 responsável por ligar o laser L1 Depois desligue o laser em um novo estado S3 L0 S0 S1 S2 L 0 D 0 L 1 laser ligado S3 L 0 laser desligado B B a Q O que fazer em seguida A Disparar um timer e esperar pelo sensor acusar o recebimento da luz por reflexão a Laser based distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor Entradas B S 1 bit cada Saídas L bit D 16 bits Digital Design Copyright 2006 Frank Vahid 17 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Fique em S3 até acusar a reflexão S Para medir o tempo transcorrido conte o número de períodos que ficou em S3 Para contar use um registrador local que chamaremos de Dctr Incremente Dctr de uma vez a cada evento de clock em S3 Inicialize Dctr com 0 em S1 ou em S2 Registradores Dctr 16 bits S0 S1 S2 S3 L 0 D 0 L 1 L 0 Dctr Dctr 1 incrementa registrador Dctr 0 reset registrador B B S não refletiu S refletiu a Entradas B S 1 bit cada Saídas L bit D 16 bits Laser based distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor Digital Design Copyright 2006 Frank Vahid 18 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Uma vez detectada a reflexão S vá para um novo estado S4 Calcule a distância Assumindo que a frequencia do clock é igual a 3x10 8 Dctr vai armazenar o total da distância em metros logo é só fazer DDctr2 Após S4 volte para S1 para esperar que o botão seja pressionado novamente S0 S1 S2 S3 L 0 D 0 L 1 L0 Dctr Dctr 1 Dctr 0 B S B S D Dctr 2 calcule D S4 a Registradores Dctr 16 bits Entradas B S 1 bit cada Saídas L bit D 16 bits Laser based distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor Digital Design Copyright 2006 Frank Vahid 19 Passo 2 Crie o caminho de dados O caminho de dados deve Implementar o armazenamento de dados registradores Implementar as operações lógicas e aritméticas Olhe para a FSM de alto nível e realize os 3 subpassos subsequentes a Faça com que entradassaídas de dados da FSM sejam as entradassaídas do caminho de dados b Instancie os registradores declarados no passo 1 dentro do caminho de dados também instancie um registrador para cada saída de dados do caminho de dados c Examine cada estado e transição e instancie componentes e com respectivas conexões para realizar as operações com os dados Instanciar é um termo que significa introduzir um novo componente em um projeto Digital Design Copyright 2006 Frank Vahid 20 Exemplo de Passo 2 Medidor de distâncias baseado a Laser a Faça que as entradassaídas de dados sejam as entradassaídas do caminho de dados b Instancie os registradores dentro do caminho de dados também instancie um registrador para cada saída de dados c Examine cada estado e cada transição de estados e instancie componentes adequados ao caminho de dados conectandoos de forma apropriada Datapath Dregclr Dctrclr Dctrcnt Dregld Registradores Dctr 16 bits S0 S1 S2 S3 L 0 D 0 L 1 L0 Dctr Dctr 1 Dctr 0 B S B S D Dctr 2 calculate D S4 load Q I Dreg 16bit register Q Dctr 16bit upcounter 16 D clear clear count a Entradas B S 1 bit cada Saídas L bit D 16 bits Digital Design Copyright 2006 Frank Vahid 21 Exemplo de Passo 2 Medidor de distâncias baseado a Laser c continuação Examine cada estado e cada transição de estados e instancie componentes adequados ao caminho de dados conectandoos de forma apropriada clear count clear load Q Q I Dctr 16bit upcounter Dreg 16bit register 16 D Datapath Dregclr Dctrclr Dctrcnt Dregld 16 16 1 a Registradores Dctr 16 bits S0 S1 S2 S3 L 0 D 0 L 1 L0 Dctr Dctr 1 Dctr 0 B S B S D Dctr 2 calculate D S4 Entradas B S 1 bit cada Saídas L bit D 16 bits Digital Design Copyright 2006 Frank Vahid 22 Passo 2 Exemplo do uso de MUXs Insira um MUX quando a entrada de um componente vier de mais de uma fonte T0 T1 R E F R R G EF G R 16 bits Registradores a E F G A B R addAs0 addBs0 2 1 2 1 d a E F G A B R b E F G A B R c Digital Design Copyright 2006 Frank Vahid 23 Passo 3 Conectando o Caminho de Dados a Controladora Exemplo do medidor de distâncias a laser Para esse caso deve se conectar diretamente os sinais entre o caminho de dados e a controladora 300 MHz Clock D B L S 16 Para o display Do botão Controller Para o laser Do sensor Datapath Dregclr Dregld Dctrclr Dctrcnt clear count clear load Q Q I Dctr 16bit upcounter Dreg 16bit register 16 D Datapath Dregclr Dctrclr Dctrcnt Dregld 16 16 1 Digital Design Copyright 2006 Frank Vahid 24 Passo 4 Implementando a FSM da Controladora FSM deverá seguir a mesma estrutura que a FSM de alto nível EntradasSaídas todos os bits Substitua as operações com os dados por operações com os bits usando o caminho de dados 300 MHz Clock D B L S 16 to display from button Controller to laser from sensor Datapath Dregclr Dregld Dctrclr Dctrcnt Entradas B S Saídas L Dregclr Dregld Dctrclr Dctrcnt S0 S1 S2 S3 L 0 L 1 L 0 L 0 B S B S S4 L 0 Entradas B S 1 bit cada Saídas L bit D 16 bits Registrador Dctr 16 bits S0 S1 S2 S3 L 0 D 0 L 1 L0 Dctr Dctr 1 Dctr 0 B S B S D Dctr 2 cálculo de D S4 a Dregclr 1 Dregld 0 Dctrclr 0 Dctrcnt 0 laser off clear D reg Dregclr 0 Dregld 0 Dctrclr 1 Dctrcnt 0 clear count Dregclr 0 Dregld 0 Dctrclr 0 Dctrcnt 0 laser on Dregclr 0 Dregld 0 Dctrclr 0 Dctrcnt 1 laser off count up Dregclr 0 Dregld 1 Dctrclr 0 Dctrcnt 0 load D reg with Dctr2 stop counting Digital Design Copyright 2006 Frank Vahid 25 Passo 4 Implementando a FSM da Controladora Adote uma representação mais simplificada fazendo com que as saídas da controladora não descritas sejam assumidas iguais a 0 a S0 S1 S2 S3 L 0 L 1 L 0 L 0 B S B S S4 L 0 Dregclr 1 Dregld 0 Dctrclr 0 Dctrcnt 0 laser off clear D reg Dregclr 0 Dregld 0 Dctrclr 1 Dctrcnt 0 clear count Dregclr 0 Dregld 0 Dctrclr 0 Dctrcnt 0 laser on Dregclr 0 Dregld 0 Dctrclr 0 Dctrcnt 1 laser off count up Dregclr 0 Dregld 1 Dctrclr 0 Dctrcnt 0 load D reg with Dctr2 stop counting S0 S1 S2 S3 L 0 L 1 L 0 B S B S laser on S4 Inputs B S Outputs L Dregclr Dregld Dctrclr Dctrcnt Dregclr 1 laser off clear D reg Dctrclr 1 clear count Dctrcnt 1 laser off count up Dregld 1 Dctrcnt 0 load D reg with Dctr2 stop counting Digital Design Copyright 2006 Frank Vahid 26 Passo 4 Implemente a FSM com um registrador de estados e circuito combinacional Cap3 300 MHz Clock D B L S 16 to display from button Controller to laser from sensor Datapath Dregclr S0 S1 S2 S3 L 0 L 1 L 0 B S B S laser on S4 Inputs B S Outputs L Dregclr Dregld Dctrclr Dctrcnt Dregclr 1 laser off clear D reg Dctrclr 1 clear count Dctrcnt 1 laser off count up Dregld 1 Dctrcnt 0 load D reg with Dctr2 stop counting Dregld Dctrclr Dctrcnt clear count clear load Q Q I Dctr 16bit upcounter Dreg 16bit register 16 D Datapath Dregclr Dctrclr Dctrcnt Dregld 16 16 1 Digital Design Copyright 2006 Frank Vahid 27 Exemplo de Projeto RTL e particularidades A seguir outros exemplos de projetos RTL Exemplo Interface de barramentos bus CPU principal Master processor pode ler um registrador de qualquer periférico Per0 Per1 Considere 1 registradorperif Cada registrador possuí um único endereço de 4 bits Considere rd1 Aendereço O periférico endereçado dispõe os dados armazenados em seu registrador no barramento de 32 bits D O endereço do periférico colocado nas entradas Faddr vindas de DIP switches ou outros registradores 53 32 4 A rd D Per0 Per1 Per15 Master processor Faddr 4 A D rd Interface de barramento Parte principal Periférico Q 32 parade barramento do processador 32 4 Digital Design Copyright 2006 Frank Vahid 28 Exemplo RTL Interface de barramento Passo 1 Gerar a FSM de alto nível Estado WaitMyAddress Saída nada por enquanto Z no barramento D armazena o valor Q do registrador do periférico no registrador local Q1 Espera até que o endereço deste periférico seja selecionado AFaddr e que rd1 Estado SendData Faz com que a saída de Q1 ocupe o barramento D espera por rd0 significando que o Master processor leu os dados no barramento D WaitMyAddress Entradas rd bit Q 32 bits A Faddr 4 bits Saídas D 32 bits Registrador Q1 32 bits rd rd SendData D Z Q1 Q A Faddr and rd A Faddr and rd D Q1 Digital Design Copyright 2006 Frank Vahid 29 Exemplo RTL Interface de barramento W W Z D Z Z Q1 Q1 W W W SD SD SD clk Inputs State Outputs rd WaitMyAddress Entradas rd bit Q 32 bits A Faddr 4 bits Saídas D 32 bits Registradores Q1 32 bits rd rd SendData D Z Q1 Q A Faddr and rd A Faddr and rd D Q1 Digital Design Copyright 2006 Frank Vahid 30 Exemplo RTL Interface de barramento WaitMyAddress Entradas rd bit Q 32 bits A Faddr 4 bits Saídas D 32 bits Registrador Q1 32 bits rd rd SendData D Z Q1 Q A Faddr and rd A Faddr and rd D Q1 Passo 2 Gere o caminho de dados a Entradassaídas do caminho de dados b Instancie os registradores c Instancie os componentes do caminho de dados e suas respectivas conexões Caminho de dados Interface de barramento Q1ld ld Q1 F Q addr 4 4 32 A Den AeqFaddr 4bit 32 32 D a Digital Design Copyright 2006 Frank Vahid 31 Exemplo RTL Interface de barramento Passo 3 Conecte o caminho de dados a controladora Passo 4 Implemente a FSM da controladora a WaitMyAddress Inputs rd bit Q 32 bits A Faddr 4 bits Outputs D 32 bits Local register Q1 32 bits rd rd SendData D Z Q1 Q A Faddr and rd A Faddr and rd D Q1 rd Entradas rd AeqFaddr bit Saídas Q1ld Den bit WaitMyAddress rd rd SendData Den 0 Q1ld 1 Den 1 Q1ld 0 AeqFaddr and rd AeqFaddr and rd Caminho de dados Interface de barramento Q1ld ld Q1 Faddr Q 4 4 32 A Den AeqFaddr 4bit 32 32 D Digital Design Copyright 2006 Frank Vahid 32 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas O vídeo é uma série de quadros Ex 30 por seg Maioria dos quadros são semelhantes aos anteriores Principal idéia para os algoritmos de compressão de dados enviar somente a diferença entre o quadro atual e o anterior Quadro 2 digitalizado 1 Mbyte Quadro 2 Quadro 1 digitalizado Quadro 1 1 Mbyte a Quadro 1 digitalizado Quadro 1 1 Mbyte b Única diferença movimento da bola a Diferença entre 2 e 1 001 Mbyte Quadro 2 Só envia a diferença Digital Design Copyright 2006 Frank Vahid 33 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas Necessidade de determinar rapidamente se dois quadros são similares o suficiente para apenas enviar diferença para segundo quadro Compare todos os 16x16 pixels Trate o bloco de 16x16 pixels como um array de 256bytes Calcule o valor absoluto da diferença de cada pixel item do array Some todas as diferenças encontradas se o valor der acima de um limite especificado envie o quadro por completo se der abaixo adotamos o método das diferenças não implementado aqui Quadro 2 Quadro 1 compare Cada um é um pixel assuma que sejam representado como 1 byte na verdade uma imagem colorida pode ter 3 bytes por pixel para a intensidade do vermelho verde azul e componentes x e y do pixel Digital Design Copyright 2006 Frank Vahid 34 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas Desejamos um componente que realize uma soma das diferenças absolutas SAD Quando go1 soma a diferença entre os elementos do array A e B e produz como saída o somatório B A go SAD sad Array de 256bytes Array de 256bytes Inteiro Digital Design Copyright 2006 Frank Vahid 35 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas S0 Espera pelo sinal go S1 Inicializa sum e index S2 Verifica condição i256 S3 Adiciona as diferenças em sum incrementa o índice i S4 Escreve no registrador sadreg B A go SAD sad Entradas A B memória de 256 bytes go bit Saída sad 32 bits Registradores sum sadreg 32 bits i 9 bits go S0 go S1 sum 0 i 0 S3 sumsumabsAiBi ii1 S4 sadreg sum S2 i256 i256 a Digital Design Copyright 2006 Frank Vahid 36 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas Passo 2 Crie o caminho de dados ilt256 iinc iclr sumld sumclr sadregld Datapath sum sadreg sad ABaddr Adata Bdata 256 9 32 8 8 8 8 32 32 32 i abs Entradas A B memória de 256 bytes go bit Saídas sad 32 bits Registradores sum sadreg 32 bits i 9 bits go S0 go S1 sum 0 i 0 S3 sumsumabsAiBi ii1 S4 sadregsum S2 i256 i256 a Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas Passo 3 Conecte a controladora Passo 4 Adapte a FSM de alto nível para implementar a FSM da controladora Digital Design Copyright 2006 Frank Vahid 37 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas Comparando a solução de um SAD customizado em hardware com a solução em software Circuito Dois estados S2 S3 para cada i 256 is 512 períodos de clock Software Loop for i 1 to 256 mas para cada i devemos mover dados da memória para registradores subtrailos computar o valor absoluto adicionálos a uma variável que acumulará a soma incrementar i digamos 6 períodos por cada item do array 2566 1536 períodos Solução por hardware é no mínimo 3 vezes 300 mais rápida Mais a frente veremos como construir circuito SAD que é ainda mais rápido Copyright 2006 Frank Vahid 38 Armadilhas em Projetos a nível de RTL e Boas práticas de projeto RTL Armadilhas comuns Partir do princípio que a atualização do registrador é realizada no estado que ele é escrito Qual o valor final de Q Qual o estado final Respostas Valor de Q desconhecido Estado final é C e não D Por quê Estado A R99 e QR acontecem simultaneamente Estado B R não atualizado com R1 até o próximo evento de clock simultaneamente com o registrador de estados sendo atualizado Digital Design Copyright 2006 Frank Vahid 39 Armadilhas em Projetos a nível de RTL e Boas práticas de projeto RTL Soluções Ler do registrador no próximo estado QR Inserir um estado extra de forma que as condições usem os valores atualizados Outras soluções poderão existir mas dependerão da aplicação Digital Design Copyright 2006 Frank Vahid 40 Armadilhas em Projetos a nível de RTL e Boas práticas de projeto RTL Armadilhas comuns Leitura das saídas Saídas podem somente ser escritas Solução Introduzir um registrador a mais que possa ser escrito e lido Digital Design Copyright 2006 Frank Vahid 41 Armadilhas em Projetos a nível de RTL e Boas práticas de projeto RTL Boa prática Colocar um registrador em todas as saídas de dados Na figura a a saída P produz valores espúrios enquanto a adição é realizada Outro ponto o caminho mais longo de um registrador a outro que determina o período de clock não é conhecido até que a saída seja conectada ao componente destino Na fig b saídas espúrias e o caminho crítico estão definidos Digital Design Copyright 2006 Frank Vahid 42 12 ROM ReadOnly Memory Estrutura lógica interna semelhante à memória RAM sem as linhas de entrada de dados Digital Design Copyright 2006 Frank Vahid 73 Tipos de ROM Se uma ROM pode ser lida somente como os dados os bits são gravados pela primeira vez A gravação de bits em uma ROM é através de programação Existem vários métodos ROM programadas por máscaras Bits são hardwired como 0s ou 1s durante a fabricação do chip As duas células ao lado armazenam respectivamente 10 Um sinal de word enable do decodificador simplesmente deixa passar o valor hardwired através do transistor Digital Design Copyright 2006 Frank Vahid 74 Tipos de ROM ROMs Programáveis a base de Fusíveis FuseBased PROMs Cada célula possui um fusível Um dispositivo apropriado conhecido como programador queima alguns fusíveis aplicando uma tensão acima da voltagem normal de operação Essas células serão lidas como bits 0s Células com fusíveis intactos serão lidos como bits 1s As 2 células ao lado armazenam 10 Conhecidas também como OneTime Programmable OTP ROM Digital Design Copyright 2006 Frank Vahid 75 Tipos de ROM Erasable Programmable ROMs EPROMs Possuem em cada célula de memória um transistor com um terminal gate flutuando Um dispositivo programador especial aplica uma tensão acima que a tensão normal de operação para tornar o gate operante introdução de elétrons Elétrons ficam aprisionados no gate Somente feito para células que deverão armazenar 0 Outras células serão consideradas contendo o valor 1 Exemplo ao lado mostra células com 10 Para apagar luz ultra violeta Permite que os elétrons aprisionados escapem da região de gate Requer que o encapsulamento tenha uma janela para expor o CI a luz UV Digital Design Copyright 2006 Frank Vahid 76 Tipos de ROM ElectronicallyErasable Programmable ROM EEPROM Similar a EPROM Usa transistor de porta flutuante programação eletrônica para aprisionar elétrons em certas células São eletricamente apagáveis não necessita luz UV Apagamento realizado por palavras uma por vez Flash memory Assim como EEPROMs entretanto várias palavras podem ser apagadas simultaneamente Tornaramse muito usadas a partir da década de 90 Ambos são programáveis em funcionamento Podem ser programados com os novos bits a serem armazenados quando estiverem integrados ao sistema em que estarão estão em funcionamento Digital Design Copyright 2006 Frank Vahid 77 Exemplo do uso de ROMs Boneca Falante Já com 4096 amostras 4096x16 ROM A boneca reproduz uma mensagem prégravada quando vibrada A mensagem deverá ficar armazenada sem a necessidade de alimentação pilha Necessitaremos de uma ROM pois é não volátil E porque a mensagem nunca será modificada usaremos uma PROM or OTP ROM Um processador deverá esperar pela vibração v1 em seguida ler as palavras armazenadas na região de memória de 0 a 4095 da ROM escrevendo cada uma para o conversor DA Digital Design Copyright 2006 Frank Vahid 78 Digital Design Copyright 2006 Frank Vahid 43 Projeto RTL predominado por Controle versus Dados Os projetos RTL são categorizados conforme sua predominância em Projetos RTL baseados em Controle e Projetos RTL baseados em Dados Projetos RTL baseados em Controle A controladora contém a parte mais complexa do sistema Projetos RTL baseados em Dados O caminho de dados é a parte mais complexa do sistema Distinção entre um e outro é tênue Não existe uma regra para caracterizar um ou outro tipo de projeto O medidor de distâncias a laser Projetos RTL baseados em Controle Interface de barramento circuito SAD misto de controle e dados Apresentaremos um exemplo de Projetos RTL baseados predominantemente de Dados Digital Design Copyright 2006 Frank Vahid 44 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Conceito do Filtro FIR Suponha que X é um dado vindo do sensor de temperatura com os seguintes valores 180 180 181 240 180 181 um a cada evento de clock A leitura 240 esta provavelmente errada Ruído de qualquer espécie O filtro deverá remover tal medida ruído da sua saída Y Um filtro simples Produz como saída a média aritmética dos N últimos valores lidos Um N pequeno filtra pouco Um N grande permite maior filtragem mas produz uma saída menos acentuada 12 12 Y clk X digital filter Digital Design Copyright 2006 Frank Vahid 45 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Filtro FIR Finite Impulse Response É simplesmente uma soma ponderada de valores de entrada passados yt c0xt c1xt1 c2xt2 Conhecido como FIR de 2a ordem Filtros FIR de ordens maiores são mais úteis FIR geral O usuário define um conjunto de constantes c0 c1 c2 para um filtro FIR Projeto RTL Passo 1 Criar a FSM de alto nível Não há realmente nada a fazer Projeto predominantemente executado pelo Caminho de Dados Vamos direto para o passo 2 12 12 Y clk X Filtro digital yt c0xt c1xt1 c2xt2 Digital Design Copyright 2006 Frank Vahid 46 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Passo 2 Criar o Caminho de Dados Comece criando cadeia de registradores xt para armazenar os valores passados de X 12 12 Y clk X Filtro digital xt0 xt1 xt2 12 12 12 12 xt2 xt1 xt 3tap FIR filter X Y clk yt c0xt c1xt1 c2xt2 180 180 181 180 181 240 Suponha que a sequencia de entrada seja 180 181 240 a Digital Design Copyright 2006 Frank Vahid 47 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Passo 2 Criar o Caminho de Dados cont Instancie os registradores para c0 c1 c2 Instancie os multiplicadores para calcular cx yt c0xt c1xt1 c2xt2 xt0 xt1 xt2 xt2 xt1 xt 3tap FIR filter X Y clk c1 c0 c2 a 12 12 Y clk X Filtro digital Digital Design Copyright 2006 Frank Vahid 48 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Passo 2 Criar o Caminho de Dados cont Instancie os somadores yt c0xt c1xt1 c2xt2 a xt0 xt1 xt2 xt2 xt1 xt 3tap FIR filter X Y clk c0 c1 c2 12 12 Y clk X Filtro digital Digital Design Copyright 2006 Frank Vahid 49 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Passo 2 Criar o Caminho de Dados cont Adicione circuitos para permitir o carregamento de um dos registradores c em especial yt c0xt c1xt1 c2xt2 a 12 12 Y clk X digital filter xt0 xt1 xt2 xt2 xt1 xt 3tap FIR filter X Y clk c0 c1 c2 3 2 1 0 2x4 yreg e Ca1 CL C Ca0 Digital Design Copyright 2006 Frank Vahid 50 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Passos 3 e 4 Conecte o Caminho de Dados ao controlador passo3 Implemente a FSM passo 4 Nenhuma controladora é necessária Exemplo extremo de um Projeto RTL predominantemente baseado em processamento de dados Comparando a solução em hardware do filtro FIR circuito com a versão em sofware Circuito Considere que um somador possua 2 atrasosporta e um multiplicador 20 atrasosporta O caminho mais crítico mais longo vai através de 1 multiplicador e 2 somadores 20 2 2 24atrasosporta Um filtro de ordem 99 100tap filter seguindo o mesmo princípio de projeto do slide anterior teria como caminho crítico 1 multiplicador e 7 somadores como caminho crítico total de 34 atrasosporta Software 100tap filter 100 multiplicações 100 adições Digamos 2 instruções por multiplicação 2 por adição Digamos 10 atrasosporta por instrução 1002 100210 4000 atrasosporta A versão em hardware circuito é mais do que 100 vezes mais rápida do que a versão software 10000 yt c0xt c1xt1 c2xt2 Digital Design Copyright 2006 Frank Vahid 51 Determinando a Frequencia do Clock Projetistas de circuitos digitais frequentemente desejam circuitos com a mais alta performance Significa que desejam circuitos com clocks funcionando na mais alta frequencia possível A frequencia fica limitada pelo mais longo atraso de um registrador a outro registrador Conhecido como caminho crítico Se o clock funcionar numa frequencia mais alta que o limite máximo dados errados poderão ser armazenados nos registradores O caminho crítico no circuito ao lado é de 2 ns Ignorando atrasos inerentes aos fios e tempos de setup e hold dos registradores somente para efeito de simplificação do problema 54 a b c 2 ns delay clk Digital Design Copyright 2006 Frank Vahid 52 Caminho Crítico O exemplo ao lado mostra 4 caminhos De a a c 2 ns De a a d 7 ns De b a d 7 ns De b a d 5 ns O caminho mais longo é portanto 7 ns E a maior frequencia de clock permitida 1 7 ns 142 MHz c d 7 ns 7 ns 5 ns delay 2 ns delay Max 2775 7 ns a b 5 ns 7 ns 7 ns 2 ns Digital Design Copyright 2006 Frank Vahid 53 Caminho Crítico considerando os Atrasos dos fios Fios apresentam atrasos também Devem ser considerados no cálculo do caminho crítico O exemplo ao lado mostra 2 caminhos Cada um vale 05 2 05 3 ns Compromisso 1980s1990s Os atrasos dos fios eram desprezíveis comparados aos atrasos das portas lógicas Entretanto os atrasos em fios não acompanharam a redução do atraso de propagação das portas lógicas Tendencia que continuem a contribuir de forma mais significativa para o cálculo do caminho crítico Devese considerar também o tempo de setup e hold dos registradores no cálculo Depois disso tudo adicionar mais um percentual de segurança mudanças de temperatura etc Ex se o caminho crítico for 3 ns considere 4 ns como margem de segurança a b c 2 ns 3 ns 3 ns 05 ns 05 ns 05 ns clk 3 ns Digital Design Copyright 2006 Frank Vahid 54 Um circuito pode apresentar um número muito grande de caminhos Caminhos aparecem em Caminhos de dados Controladoras Entre controladoras e caminhos de dados Podem ser centenas ou milhares de caminhos Ferramentas de simulação e análise temporal calculam automaticamente os caminhos críticos para os projetistas Combinational logic c totlts clk n1 d totld totlts t otclr s0 s1 n0 State register s 8 8 8 8 a ld clr tot Datapath 8bit 8bit adder c b a Digital Design Copyright 2006 Frank Vahid 55 Projeto em Nível Comportamental Da linguagem em alto nível para portas lógicas C to Gates Exemplo das soma das diferenças absolutas SAD Iniciado com uma máquina de estados finitos de alto nível O código C é um ponto de partida ainda melhor mais fácil de entender 55 go S0 go S1 sum 0 i 0 S3 sumsumabsAiBi ii1 S4 sadreg sum S2 i256 i256 a int SAD byte A256 byte B256 not quite C syntax uint sum short uint I sum 0 i 0 while i 256 sum sum absAi Bi i i 1 return sum Código em linguagem C Digital Design Copyright 2006 Frank Vahid 56 Projeto em Nível Comportamental linguagem C Modifique o primeiro passo do projeto em RTL pelos os 2 passos Identifique o comportamento em C em seguida converta o código em C em uma FSM de alto nível Como converter códigos em C em FSM de alto nível Passo 1A Identifique o comportamento em C Passo 1B Converta para FSM de alto nível a Digital Design Copyright 2006 Frank Vahid 57 Convertendo códigos em C para FSM de alto nível Converta cada construção em C nos estados equivalentes e transições Estruturas de atribuição São convertidas em um estado com uma atribuição Estrutura Ifthen São convertidas em estados com condições de teste acontecendo transição para a estrutura then se a condição de teste for verdadeira do contrário transitará para o estado end then poderia ser convertido em outros estados target expression target expression then stmts if cond then stmts cond cond end a a Digital Design Copyright 2006 Frank Vahid 58 Convertendo códigos em C para FSM de alto nível Ifthenelse São convertidos em estados com condições de teste transitando para a estrutura then se a condição for verdadeira ou para else se a condição for falsa While São convertidos em estados com condição de teste transitando para os estado dentro do loop se verdadeiro ou transitando de volta a condição de teste do loop if cond then stmts else else stmts cond cond end then stmts else stmts while cond while stmts cond cond while stmts end a a Digital Design Copyright 2006 Frank Vahid 59 Convertendo códigos em C para FSM de alto nível Exemplos Exemplo Encontrar o maior de 2 números Convertemos em uma estrutura ifthenelse em estados b Em seguida convertemos estruturas de atribuição em estados c end c XY XY end then stmts else stmts b XY XY MaxX MaxY a Entradas uint X Y Saídas uint Max if X Y else Max X Max Y a a Digital Design Copyright 2006 Frank Vahid 60 Exemplo Convertendo um código em C da SAD em FSM de alto nível Converta cada estrutura em estados Simplifique sempre que possível isto é reduza o número de estados A partir da FSM de alto nível siga os passo de projeto RTL para gerar o circuito sum sum absAi Bi a Inputs byte A256 B256 bit go Output int sad main uint sum short uint I while 1 sum 0 i 0 while go while i 256 i i 1 sad sum d go go sum0 i0 g go go sum0 i0 i256 i256 sad sum sumsum abs i i 1 sum0 i0 b go go c go go e go go sum0 i0 while stmts i256 i256 sad sum f go go sum0 i0 i256 i256 sumsum abs i i 1 a Digital Design Copyright 2006 Frank Vahid 61 Componentes de Memória Projetistas RTL instanciam componentes para formar caminhos de dados que poderão ser controlados por controladoras Alguns outros componentes são frequentemente usados além de controladoras e caminhos de dados Memórias MxN M palavras de largura de N bits cada Existe uma variedade de tipos de memória 56 Nbits Largura de Memória de MN M palavras Digital Design Copyright 2006 Frank Vahid 62 Memórias RAM Random Access Memory RAM Memória de Leitura e Escrita de dados Random access memory Criada há várias décadas para contrastar com as memórias baseadas em acesso de leitura e escrita em seqüência Ex unidades de fita Mesmo funcionamento lógico que um Register File RAMs usualmente possuem uma única porta Register files possuem usualmente 2 ou mais RAM x Register Files RAMs são tipicamente maiores 512 ou 1024 palavras RAM armazenam bits de forma mais eficiente do que flipflops RAM são implementadas em chips com um fator de forma próximo de um quadrado 32 10 data addr rw en 1024 32 RAM 32 4 32 4 Wdata Waddr Wen Rdata Raddr Ren 1632 register file Register file do Cap 4 Símbolo de uma RAM Digital Design Copyright 2006 Frank Vahid 63 Estrutura Interna de uma RAM Estrutura interna similar ao Register File Um decodificador habilita a palavra selecionada através das linhas de endereços entrada addr A entrada de controle rw determina se escreveremos ou leremos da célula de memória Vamos ver o que temos dentro de cada célula de RAM 32 10 data addr rw en 1024x32 RAM addr0 addr1 addrA1 clk en rw A log2M to all cells wdataN1 rdataN1 wdataN2 rdataN2 wdata0 rdata0 bit storage block aka cell word word RAM cell word enable word enable rw data cell data a0 a1 d0 d1 dM1 aA1 e AxM decoder enable Digital Design Copyright 2006 Frank Vahid 64 Ram Estática SRAM Uma célula de RAM Estática 6 transistores lembre inversor 2 transistores Escrevendo nessa célula A entrada word enable virá do decodificador Quando 0 o valor d circulará pelos inversores Esse loop é que mantém o bit armazenado Quando 1 o dado valor do bit entra em loop data é o bit a ser armazenado nessa célula data entra simultaneamente no lado oposto O exemplo mostra um 1 sendo escrito na célula addr0 addr1 addrA1 clk en rw addr Let A log2 M a0 a1 d0 d1 dM1 aA1 e A M decoder word enable to all cells wdataN1 rdataN1 wdataN2 rdataN2 wdata0 rdata0 bit storage block aka cell word cell word enable word enable rw data data a SRAM cell data data d d cell 0 word enable 1 1 1 0 0 32 10 data addr rw en 1024x32 RAM SRAM cell data data d word enable data data d d cell 0 word enable 1 0 a a Digital Design Copyright 2006 Frank Vahid 65 Ram Estática SRAM Uma célula de RAM Estática Operação de leitura Quando a entrada rw é ativada a lógica da memória RAM faz com que ambas as entradas data e data fiquem em 1 O bit armazenado d vai puxar tanto a linha da esquerda ou da direita um pouco para baixo ligeiramente abaixo de 1 Amplificadores detectarão qual lado foi um pouco puxado para baixo addr0 addr1 addrA1 clk en rw addr Let A log2 M a0 a1 d0 d1 dM1 aA1 e A M decoder word enable to all cells wdataN1 rdataN1 wdataN2 rdataN2 wdata0 rdata0 bit storage block aka cell word cell word enable word enable rw data data SRAM cell 32 10 data addr rw en 1024x32 RAM data data d 1 1 1 word enable To sense amplifiers 1 0 1 1 a Digital Design Copyright 2006 Frank Vahid 66 RAM Dinâmicas DRAM Célula de uma DRAM 1 transistor ao invés de 6 da SRAM Depende de grandes capacitores para armazenar os bits Escrita Transistor conduz o nível de tensão do dado carrega o capacitor Leitura Somente habilita a linha do dado d Problema Capacitor descarrega com o passar do tempo Devemos fazer um refresh do dado na memória de tempos em tempos addr0 addr1 addrA1 clk en rw addr Let A log2 M a0 a1 d0 d1 dM1 aA1 e A M decoder word enable to all cells wdataN1 rdataN1 wdataN2 rdataN2 wdata0 rdata0 bit storage block aka cell word cell word enable word enable rw data data DRAM cell 32 10 data addr rw en 1024x32 RAM word enable data cell a b data enable d discharges d capacitor slowly discharging Digital Design Copyright 2006 Frank Vahid 67 Comparando Tipos de Memória Register file Mais rápido São os maiores SRAM Rápidas Mais compactas que Register Files DRAM Mais Lentas Refresh toma muito tempo São as mais compactas Use Regisiter Files para armazenar poucas palavras SRAM para programas e estruturas de dados maiores e DRAM para estruturas de dados enormes MxN Memory implemented as a register file SRAM DRAM Size comparison for same number of bits not to scale Digital Design Copyright 2006 Frank Vahid 68 Lendo e Escrevendo de uma RAM Escrevendo Coloque o endereço no barramento addr dado no barramento data faça com que rw1 e en1 Lendo Coloque o endereço no barramento addr e habilite a entrada en não coloque nada no barramento data Z faça com que rw0 O dado solicitado aparecerá no barramento data Não se esqueça de obedecer os tempos de setup e hold Em suma manter as entradas estáveis antes e depois do evento de clock clk addr data rw en 1 2 9 9 13 999 Z 500 500 3 1 means write RAM9 now equals 500 RAM13 now equals 999 b valid valid Z 500 access time setup time hold time setup time clk addr data rw Digital Design Copyright 2006 Frank Vahid 69 Exemplo de uso de RAM Gravador de Sons Digital Comportamento Gravar Digitalizar o som aramazenálo como uma série de 4096 valores digitais de 12bits na RAM Usaremos uma RAM de 4096x16 RAMs de palavras de 12bits não são comuns Reproduza a música posteriormente Mesmo princípio usado em secretárias eletrônicas brinquedos etc Para gravar o processador deve ler do conversor AD armazenar os valores lidos em palavras sucessivas da RAM Para reproduzir a música o processador deve ler palavras RAM sucessivamente e habilitar o conversor DA wire speaker microphone wire analogto digital converter digitalto analog converter adld dald Ra Rrw Ren 12 16 processor adbuf data addr rw en 4096 16 RAM Digital Design Copyright 2006 Frank Vahid 70 Exemplo de uso de RAM Gravador de Sons Digital Projeto RTL do processador Crie uma FSM de alto nível Comece com o comportamento da operação de gravação record Reserve um registrador local a Armazena o endereço atual varia entre 0 e 4095 logo precisaremos de 12 bits Crie a FSM que conta de 0 a 4095 usando a Para cada a Leia do conversor AD adld1 adbuf1 Escreva no endereço a da RAM Raa Rrw1 Ren1 adld1 adbuf1 Raa Rrw1 Ren1 S a0 aa1 a4095 a4095 T U Local register a 12 bits analogto digital converter digitalto analog converter adld dald Ra Rw Ren 12 16 processor adbuf 4096x16 RAM a Record behavior Digital Design Copyright 2006 Frank Vahid 71 Exemplo de uso de RAM Gravador de Sons Digital Agora projete o comportamento de reprodução play Use um registrador a projete a FSM que conta de 0 a 4095 novamente Para cada valor em a Leia da RAM Escreva para o conversor DA Obs Deverá escrever no DA um ciclo após ter lido da RAM quando o dado estiver disponível no barramento de dados As máquinas de estado de gravação e reprodução seriam partes de uma máquina de estados maior controlando sinais que determinam quando a gravação ou reprodução deveriam acontecer a dald1 adbuf0 Raa Rrw0 Ren1 V a0 aa1 a4095 a4095 W X Local register a 12 bits Play behavior data bus analogto digital converter digitalto analog converter adld dald Ra Rw Ren 12 16 processor adbuf 4096x16 RAM Digital Design Copyright 2006 Frank Vahid 72 ROM ReadOnly Memory Memórias que podem ser somente lidas O barramento de dados é uma saída Desnecessário a entrada rw Vantagens sobre a RAM Compacta São um pouco menores Não voláteis Mantém o dado armazenado mesmo quando não alimentadas energizadas Velocidade São um pouco mais rápidas se comparadas a DRAMs Baixo consumo Não necessitam de fonte de energia para manter os dados armazenados Quando escolher ROM ao invés de memórias RAM dados armazenados não vão mudar ou não vai mudar com frequência Por exemplo uma tabela de conversão de Celsius para Fahrenheit em um termômetro digital 32 10 data addr rw en 1024 32 RAM RAM block symbol 32 10 data addr en 1024x32 ROM ROM block symbol Digital Design Copyright 2006 Frank Vahid 79 Exemplo do uso de ROMs Boneca Falante FSM de alto nível Projete uma FSM que espere por v1 e em seguida conte de 0 a 4095 com um registrador a Para cada a leia da ROM escreva em um conversor DA 4096x16 ROM processor Ra 16 Ren dald digitalto analog converter v S a0 dald1 aa1 a4095 a4095 T U Raa Ren1 Local register a 12 bits v v a Digital Design Copyright 2006 Frank Vahid 80 Exemplo uso de ROMs Secretária Eletrônica com Memória Flash Queremos gravar uma mensagem personalizada Quando rec1 grave o som digitalizado em 0 até 4095 Quando play1 reproduza o som armazenado para um conversor DA Qual tipo de memória usar Deve manter dado armazenado sem fonte de alimentação ROM e não RAM Tem que ser possível de ser programável no circuito sistema EEPROM ou Flash não EPROM OTP ROM ou PROM Sempre apagará a memória inteira quando reprogramada Flash melhor que EEPROM analogto digital converter digitalto analog converter adld dald Rrw Ren er bu Ra 12 16 processor adbuf busy 4096x16 Flash rec play record microphone speaker Were not home Digital Design Copyright 2006 Frank Vahid 81 Exemplo uso de ROMs Secretária Eletrônica com Memória Flash FSM de alto nível Uma vez que rec1 comece a apagar a memória flash fazendo com que er1 Espere pela memória flash terminar o processo de apagamento esperando por bu0 Faça um laço que leia de do registrador local a da posição de memória 0 a 4095 lendo do conversor AD e escrevendo na flash em cada endereço de a analogto digital converter digitalto analog converter adld dald Rrw Ren er bu Ra 12 16 processor adbuf 4096x16 Flash rec play record microphone speaker T er0 bu bu er1 rec S Local register a 13 bits a4096 a4096 U V adld1 adbuf1 Raa Rrw1 Ren1 aa1 a0 a Digital Design Copyright 2006 Frank Vahid 82 Distinção tênue entre ROMs e RAMs Dissemos que RAM podem ser lidas e escritas ROM podem ser lidas somente Entretanto algumas ROMs funcionam da mesma forma que RAMs EEPROM e Flash são programáveis pelo no próprio sistema que as usa insystem programmable Essencialmente significa que as escritas são mais lentas O número de operações de escrita também é limitado algumas centenas de milhares E ainda algumas RAMs comportamse com ROMs RAMs não voláteis Pode manter seus dados sem a necessidade de energia One type Builtin battery may work for up to 10 years Another type Includes ROM backup for RAM controller writes RAM contents to ROM before turning off Novas tecnologias de memória atuais que unem os benefícios de memórias RAM e ROM Ex MRAM FRAM etc EEPROM ROM Flash NVRAM RAM a Digital Design Copyright 2006 Frank Vahid 83 Filas Uma fila é um outro componente por vezes utilizado durante um projeto RTL Fila Uma lista que é escrita no fim mas é lida no seu início Funciona como uma lista de espera em restaurantes A operação de escrita é chamada push a leitura de pop O primeiro item escrito em uma fila será o primeiro item lido Essa fila é também chamada de FIFO firstinfirstout 57 início fim Escreve itens No fim da fila Lê e remove Itens do início Da fila Digital Design Copyright 2006 Frank Vahid 84 Filas Filas possuem endereços e dois ponteiros ponteiro para o fim r e ponteiro para o início f Inicialmente embos apontam para o endereço 0 Push escrita Item escrito no endereço apontado por r r incrementado Pop leitura Item lido do endereço apontado por f f incrementado Se r ou f chegar a 7 o próximo valor após o incremento deverá ser igual a 0 para uma fila com endereços de 0 a 7 r f 0 1 2 3 4 5 6 7 f r 0 A 1 2 3 4 5 6 7 A f r 0 A B 1 2 3 4 5 6 7 B f r 0 B 1 2 3 4 5 6 7 A a a a Digital Design Copyright 2006 Frank Vahid 85 Filas Considere a memória implementada na forma circular Se f ou r alcançar 7 o próximo valor após o incremento deverá ser 0 Duas condições especiais Fila cheia sem espaço para novos itens Em uma fila de 8 entradas significará que existem 8 elementos presentes na mesma Nenhuma operação de push deverá ser permitida até que ocorra alguma operação de pop Força fr Fila vazia sem nenhum item Nenhuma operação de pop será permitida até que ocorra alguma operação de push Força fr Amabas condições forçam f r Para detectar se f r representa uma ou outra condição acima necessitase de uma FSM que detecte se a operação anterior foi push ou pop acionando uma saída que informará se a fila esta cheia ou vazia respectivamente f r 0 B 1 2 3 4 5 6 7 A B 1 7 2 6 3 5 4 0 f rr a Digital Design Copyright 2006 Frank Vahid 86 Implementação de Filas Podem ser implementadas como banco de registradores register files ou como elementos de memória Implemente os ponteiros f e r usando contadores ascendentes r é usado como o endereço de escrita no banco de registradores e f como o endereço de leitura Uma controladora simples gera os sinais de controle para as operações de push e pop e também detecta as situações de fila cheia e vazia FSM da controladora não está mostrado na figura ao lado 8 16 register file clr 3bit up counter 3bit up counter inc clr inc rear front wr rd reset wdata rdata 16 16 3 3 wdata waddr wr rdata raddr rd eq Controller full empty 8word 16bit queue Digital Design Copyright 2006 Frank Vahid 87 Aplicações onde se usa Filas Teclados de computadores Faça um push de uma tecla pressionada na fila enquanto isso faça um pop de uma tecla e envie para o computador Gravadores de vídeos Faça um push de um quadro capturado enquanto isso faça um pop de outro quadro comprimao e armazeneo Roteadores Faça um push dos pacotes que chegam no roteador na fila enquanto isso faça um pop dos pacotes já existentes na fila processe a informação de destino e reencaminhe cada pacote através da porta apropriada do roteador Digital Design Copyright 2006 Frank Vahid 88 Exemplo de uso de uma Fila O exemplo mostra uma série de operações de push e pop Observe com r e f se movem Observe que a operação de pop não remove o dado da pilha mas tal dado não fica mais acessível Observe como r e f circula pelos endereços de 7 a 0 Observe fazendo um push em uma fila cheia provoca uma mensagem de erro O mesmo acontece quando se faz um pop em uma fila vazia r f 0 1 2 3 4 5 6 7 f r 0 1 2 3 4 5 6 9 5 8 5 7 2 3 7 f r 0 1 2 3 4 5 6 7 f r 0 1 2 3 4 5 6 7 9 5 8 5 7 2 3 9 5 8 5 7 2 3 6 r f 0 1 2 3 4 5 6 7 data 9 full 3 5 8 5 7 2 3 6 ERROR Pushing a full queue results in unknown state Initially empty queue 1After pushing 9 5 8 5 7 2 3 2After popping 3After pushing 6 4After pushing 3 5After pushing 4 Digital Design Copyright 2006 Frank Vahid 89 Hierarquia Um conceito importante de Projeto de Sistemas Digitais Hierárquia Uma organização com poucos itens no nível mais alto com cada item decomposto em itens menores mais detalhes Analogia Um país 1 item no nível mais alto ou topo o país Item país pode ser decomposto em estados Cada estado pode ser decomposto em várias cidades Hierárquia nos permite gerenciar a complexidade do projeto Para ir de transistores à portas lógicas muxes decodificadores registradores ULA controladores centrais de dados memórias filas etc Imagine tentar compreender uma controladora e um caminho de dados ao nível de portas lógicas 58 CityF Country A Province 1 Province 2 Province 3 Province 1 Province 2 Province 3 Map showing all levels of hierarchy Map showing just top two levels of hierarchy CityG CityE CityD CityA CityB CityC Country A Digital Design Copyright 2006 Frank Vahid 90 Hierárquia e Abstração Abstração Hierarquia muitas vezes não envolve apenas agrupar itens em um novo item mas também a associação do comportamento de um nível mais alto em um novo item Isso é o conceito de abstração ie um somador de 8 bits possuí um comportamento em alto nível bem definido somar dois números binários de 8 bits cada Libera o projetista de ter que lembrar ou mesmo de ter que entender o detalhe de implementação de um nível inferior a7 a0 b7 b0 s7 s0 co Somador de 8 bits ci Digital Design Copyright 2006 Frank Vahid 91 Hierarquia e Composição de Componentes maiores a partir de versões menores Uma tarefa comum quando se projeta SD é formar componentes maiores a partir de componentes menores usados como base Portas lógicas Suponha que você tenha um número muito grande portas lógicas AND de 3 entradas mas necessirta de um AND de 9 entradas Formaremos a porta desejada com ANDs de 3 entradas Muxes Suponha que temos MUXs 4x1 e 2x1 muxes e necessitamos de um MUX 8x1 s2 vai selecionar o MUX 4x1 do alto ou de baixo s1s0 seleciona uma entrada qualquer do MUX 4x1 4 1 2 1 d d i0 i1 i1 i0 i2 i3 i0 i1 i2 i3 i4 i5 i6 i7 s1 s0 s0 4 1 d i0 i1 i2 i3 s1 s0 s1 s0 s2 a Digital Design Copyright 2006 Frank Vahid 92 Hierarquia e Composição de Componentes maiores a partir de versões menores Formar memórias maiores Fazendo com que as memórias armazenem palavras maiores Coloquem componentes de memória lado a lado até que a largura da palavra desejada seja obtida Compartilhe as linhas de endereço e controle concatene as linhas de dados Exemplo Forme ROMS 1024x32 a partir de ROMs 1024x8 1024x32 ROM 1024x8 ROM data addr en data 8 8 32 8 10 10 data310 1024x8 ROM addr en data 1024x8 ROM addr en data 1024x8 ROM addr en data 8 Digital Design Copyright 2006 Frank Vahid 93 Hierarquia e Composição de Componentes maiores a partir de versões menores Formando memórias com mais palavras Coloque componentes de memória empilhados até o alcançar o número de palavras desejado Use um decodificador para selecionar uma entre as memórias empilhadas Exemplo Forme uma memória 2048x8 a partir de memórias de 1024x8 Provin ce 2 Provin ce 1 1024x8 ROM addr en data 1024x8 ROM addr en data 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 a0 a10a9a8 a10 just chooses which memory to access Para criar uma memória com mais palavras e palavras maiores podemos primeiramente formar uma memória com palavras o suficiente e em seguida aumentar o tamanho da palavra a a 2048x8 ROM data 8 11 11 1024x8 ROM addr en data 8 1024x8 ROM addr en data 8 a9a0 a10 d0 d1 en addr 1x2 dcd i0 e
15
Sistemas Digitais
CEFET/MG
5
Sistemas Digitais
CEFET/MG
5
Sistemas Digitais
CEFET/MG
8
Sistemas Digitais
CEFET/MG
8
Sistemas Digitais
CEFET/MG
4
Sistemas Digitais
CEFET/MG
1
Sistemas Digitais
CEFET/MG
1
Sistemas Digitais
CEFET/MG
2
Sistemas Digitais
CEFET/MG
9
Sistemas Digitais
CEFET/MG
Texto de pré-visualização
Digital Design Copyright 2006 Frank Vahid 1 Sistemas Digitais Capítulo 5 Projeto RTL RegisterTransfer Level Slides to accompany the textbook Digital Design First Edition by Frank Vahid John Wiley and Sons Publishers 2007 httpwwwddvahidcom Copyright 2007 Frank Vahid Instructors of courses requiring Vahids Digital Design textbook published by John Wiley and Sons have permission to modify and use these slides for customary courserelated activities subject to keeping this copyright notice in place and unmodified These slides may be posted as unanimated pdf versions on publiclyaccessible course websites PowerPoint source or pdf with animations may not be posted to publiclyaccessible websites but may be posted for students on internal protected sites or distributed directly to students by other electronic means Instructors may make printouts of the slides available to students for a reasonable photocopying charge without incurring royalties Any other use requires explicit permission Instructors may obtain PowerPoint source or obtain special use permissions from Wiley see httpwwwddvahidcom for information Prof Luciano C A Pimenta Tradução e Adaptação para o Português Prof Ricardo de Oliveira Duarte DELT EE UFMG Digital Design Copyright 2006 Frank Vahid 2 Introdução Capítulo 3 Controladores Controla entradassaídas um único bit ou poucos bits representando um evento ou um estado FSM descrevem o comportamento do circuito sequencial implementadas com registradores e lógica combinacional Capítulo 4 Componentes de Caminho de Dados EntradasSaídas de dados Multiplos bits representados em um única entidade Componentes vistos Registradores Somadores ALUs Comparadores Register files etc Nesse capítulo processadores customizados Processador Controlador e componentes de caminho de dados trabalhando juntos para implementar algoritmos 51 Combinational logic n0 s1 s0 n1 bo bi clk State register FSM inputs FSM outputs ALU Comparador Register file Registrador Combinational logic n0 s1 s0 n1 bo bi State register Register file ALU Caminho de Dados Controlador Note Slides with animation are denoted with a small red a near the animated items Digital Design Copyright 2006 Frank Vahid 3 Projeto RTL Identificar o comportamento Converter em um Circuito Relembrando Capítulo 2 Projeto de Circuitos Combinacionais Primeiro passo Identificar o comportamento na forma de equações ou tabelas verdade Passos subsequentes Converter em um circuito Capítulo 3 Projeto de Circuitos Sequenciais Primeiro passo Identificar o comportamento FSM Passos subsequentes Converter em um circuito Projeto RTL método para se criar processadores customizados Primeiro passo Identificar o comportamento usando máquinas de estados finitas de alto nível Passos subsequentes Converter em um circuito Identificar o comportamento Converter em um circuito Digital Design Copyright 2006 Frank Vahid 4 Projeto RTL Método mais detalhado 52 Digital Design Copyright 2006 Frank Vahid 5 Aplicação do Método de Projeto RTL Primeiro Exemplo Máquina de refrigerantes c entrada de 1 bit Ativado quando uma moeda coin for depositada a Uma entrada de 8bits representando o valor da moeda depositada amount s Uma entrada de 8bits representando o preço do refri soda d Saída de 1 bit o processador faz com que d 1 quando o valor total de moedas depositadas é igual ou maior que o custo do refri a s c d 25 1 0 25 1 1 50 0 0 0 0 tot 25 tot 50 Como podemos descrever com precisão o comportamento deste processador a a s c d Máquina de refrigerantes processador Máquina de refrigerantes processador Digital Design Copyright 2006 Frank Vahid 6 Primeiro Exemplo Passo 1 Identificar o comportamento FSM de alto nível Precisaremos de um registrador para armazenar o total parcial tot Estado inicial Init faz com que d0 tot0 Um outro estado que chamaremos de Wait estado de espera por moedas Se recebe moeda vai para estado Add Estado Add Atualiza o registrador com o valor da moeda tot tot a Lembre a é o valor da moeda introduzida Volte para o estado Wait No estado Wait se tot s vá para o estado Dispense Estado Disp Faz com que d1 entrega 1 refrigerante Retorna ao estado Init Entradas c bit a 8 bits s 8 bits Saídas d bit Registradores locais tot 8 bits Wait Add Disp Init d0 tot0 ctots d1 c tottota 8 8 a s c d Soda dispenser processor ctots Digital Design Copyright 2006 Frank Vahid 7 Primeiro Exemplo Passo 2 Monte o Caminho de Dados Precisaremos de 1 registrador tot Precisaremos de um comparador de 8bits para comparar s e tot Precisaremos de um somador de 8bits para realizar tot tot a Conectar os componentes Criar entradassaídas de controle e dar nomes pertinentes a elas ld clr tot 8bit 8bit adder 8 8 8 8 s a Datapath totld totclr totlts Inputs c bit a8 bits s 8 bits Outputs d bit Local registers tot 8 bits Wait Add Disp Init d0 tot0 c tots c tots d1 c tot tota Digital Design Copyright 2006 Frank Vahid 8 Primeiro Exemplo Passo 3 Conectar o Caminho de Dados a Controladora Entradas da controladora Entrada externa c moeda detectada Entrada vinda da saída do comparador do caminho de dados que demos o nome de totlts Saídas da controladora Saídas externas d dispense soda Saídas para carregar load o registrador e limpar clear o registrador tot do caminho de dados totlts totclr totld Controller Datapath s c d a 8 8 ld clr tot 8bit 8bit adder 8 8 8 8 s a Datapath totld totclr totlts Digital Design Copyright 2006 Frank Vahid 9 Primeiro Exemplo Passo 4 Implementar a FSM da Controladora procedimento cap 3 Mesmos estados e transições da FSM de alto nível A diferença é que agora a FSM ativadesativa os sinais de controle para todas as operações e condições de teste realizadas pelo caminho de dados totlts totclr totld Controller Datapath s c d a 8 8 ld clr tpt 8bit 8bit adder 8 8 8 8 s a Datapath totld totclr totlts Inputsctotltsbit Outputsdtotldtotclrbit Wait Disp Init d0 totclr1 c totlts ctotlts d1 c totld1 c d totld totclr totlts Controller Add Digital Design Copyright 2006 Frank Vahid 10 Primeiro Exemplo Completando o projeto Implemente a FSM como visto no cap 3 Registrador e Lógica combinacional Tabela mostrada ao lado d 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 n0 1 1 1 1 1 1 0 0 1 0 n1 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 c 0 0 1 1 0 0 1 1 0 0 s1 0 0 0 0 0 0 0 0 1 1 s0 0 0 0 0 1 1 1 1 0 1 totlts totld totclr Init Wait Add Disp Entradas c c totlts bit Saídas dtotldtotclr bit Wait Disp Init d0 totclr1 c totlts ctotlts d1 c totld1 c d totld totclr totlts Controller Add Digital Design Copyright 2006 Frank Vahid 11 Passo 1 Criar uma FSM de alto nível Olharemos para a execução desse passo com maior detalhe Exemplo da máquina de refrigerantes Diferente de uma FSM porque Entradas de dados a e s possuem mais de 1 bit Necessidade de registradores internos tot Operações com os dados tot0 tots tottota FSMs de alto nível Tipos de dados variados Presença de registradores Equações aritméticas e condições de teste Entradas cbit a 8 bits s 8 bits Saídasd bit Registradorestot 8 bits Wait Disp Init d0 tot0 ctots d1 c tottota ctots Digital Design Copyright 2006 Frank Vahid 12 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Exemplo de como criar uma máquina de estado de alto nível para descrever o comportamento do processador desejado Medidor de distancias baseado a laser laser pulsado mede o período de tempo T para detectar a reflexão A luz do laser viaja a velocidade da luz 310 8 mseg Logo a distância é calculada D T seg 310 8 mseg 2 Objeto de interesse D 2D T sec 3108 msec sensor laser T em segundos Digital Design Copyright 2006 Frank Vahid 13 Exemplo de Passo 1 Medidor de distâncias baseado a Laser EntradasSaídas B entrada de 1 bit vinda do botão para iniciar a medição L saída de 1 bit para ativar o laser S entrada de 1 bit acusa a reflexão do feixe de laser refletido D saída de 16bits exibe no display a distância medida sensor laser T em segundos Laserbased distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor Digital Design Copyright 2006 Frank Vahid 14 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Passo1 Criar a FSM de alto nível Comece por declarar entradas e saídas Crie um estado inicial e dê o nome de S0 Inicializar o feixe de laser em modo desligado L0 Inicializar a distância medida com 0 D0 Laser based distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor EntradasB S1 bit cada Saídas L bit D 16 bits S0 L 0 laser desligado D 0 distancia 0 a Digital Design Copyright 2006 Frank Vahid 15 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Adicione um outro estado chameo de S1 que esperará pelo pressionar do botão B fica em S1 continua esperando B vai para um novo estado S2 Entradas B S 1 bit cada Saídas L bit D 16 bits S0 L 0 D 0 S1 B botão não pressionado B botão pressionado S0 Q O que S2 deverá fazer A Ligar o laser a a Laser based distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor Digital Design Copyright 2006 Frank Vahid 16 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Adicione um novo estado S2 responsável por ligar o laser L1 Depois desligue o laser em um novo estado S3 L0 S0 S1 S2 L 0 D 0 L 1 laser ligado S3 L 0 laser desligado B B a Q O que fazer em seguida A Disparar um timer e esperar pelo sensor acusar o recebimento da luz por reflexão a Laser based distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor Entradas B S 1 bit cada Saídas L bit D 16 bits Digital Design Copyright 2006 Frank Vahid 17 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Fique em S3 até acusar a reflexão S Para medir o tempo transcorrido conte o número de períodos que ficou em S3 Para contar use um registrador local que chamaremos de Dctr Incremente Dctr de uma vez a cada evento de clock em S3 Inicialize Dctr com 0 em S1 ou em S2 Registradores Dctr 16 bits S0 S1 S2 S3 L 0 D 0 L 1 L 0 Dctr Dctr 1 incrementa registrador Dctr 0 reset registrador B B S não refletiu S refletiu a Entradas B S 1 bit cada Saídas L bit D 16 bits Laser based distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor Digital Design Copyright 2006 Frank Vahid 18 Exemplo de Passo 1 Medidor de distâncias baseado a Laser Uma vez detectada a reflexão S vá para um novo estado S4 Calcule a distância Assumindo que a frequencia do clock é igual a 3x10 8 Dctr vai armazenar o total da distância em metros logo é só fazer DDctr2 Após S4 volte para S1 para esperar que o botão seja pressionado novamente S0 S1 S2 S3 L 0 D 0 L 1 L0 Dctr Dctr 1 Dctr 0 B S B S D Dctr 2 calcule D S4 a Registradores Dctr 16 bits Entradas B S 1 bit cada Saídas L bit D 16 bits Laser based distance measurer 16 Do botão Para o display S L D B Para o laser Do sensor Digital Design Copyright 2006 Frank Vahid 19 Passo 2 Crie o caminho de dados O caminho de dados deve Implementar o armazenamento de dados registradores Implementar as operações lógicas e aritméticas Olhe para a FSM de alto nível e realize os 3 subpassos subsequentes a Faça com que entradassaídas de dados da FSM sejam as entradassaídas do caminho de dados b Instancie os registradores declarados no passo 1 dentro do caminho de dados também instancie um registrador para cada saída de dados do caminho de dados c Examine cada estado e transição e instancie componentes e com respectivas conexões para realizar as operações com os dados Instanciar é um termo que significa introduzir um novo componente em um projeto Digital Design Copyright 2006 Frank Vahid 20 Exemplo de Passo 2 Medidor de distâncias baseado a Laser a Faça que as entradassaídas de dados sejam as entradassaídas do caminho de dados b Instancie os registradores dentro do caminho de dados também instancie um registrador para cada saída de dados c Examine cada estado e cada transição de estados e instancie componentes adequados ao caminho de dados conectandoos de forma apropriada Datapath Dregclr Dctrclr Dctrcnt Dregld Registradores Dctr 16 bits S0 S1 S2 S3 L 0 D 0 L 1 L0 Dctr Dctr 1 Dctr 0 B S B S D Dctr 2 calculate D S4 load Q I Dreg 16bit register Q Dctr 16bit upcounter 16 D clear clear count a Entradas B S 1 bit cada Saídas L bit D 16 bits Digital Design Copyright 2006 Frank Vahid 21 Exemplo de Passo 2 Medidor de distâncias baseado a Laser c continuação Examine cada estado e cada transição de estados e instancie componentes adequados ao caminho de dados conectandoos de forma apropriada clear count clear load Q Q I Dctr 16bit upcounter Dreg 16bit register 16 D Datapath Dregclr Dctrclr Dctrcnt Dregld 16 16 1 a Registradores Dctr 16 bits S0 S1 S2 S3 L 0 D 0 L 1 L0 Dctr Dctr 1 Dctr 0 B S B S D Dctr 2 calculate D S4 Entradas B S 1 bit cada Saídas L bit D 16 bits Digital Design Copyright 2006 Frank Vahid 22 Passo 2 Exemplo do uso de MUXs Insira um MUX quando a entrada de um componente vier de mais de uma fonte T0 T1 R E F R R G EF G R 16 bits Registradores a E F G A B R addAs0 addBs0 2 1 2 1 d a E F G A B R b E F G A B R c Digital Design Copyright 2006 Frank Vahid 23 Passo 3 Conectando o Caminho de Dados a Controladora Exemplo do medidor de distâncias a laser Para esse caso deve se conectar diretamente os sinais entre o caminho de dados e a controladora 300 MHz Clock D B L S 16 Para o display Do botão Controller Para o laser Do sensor Datapath Dregclr Dregld Dctrclr Dctrcnt clear count clear load Q Q I Dctr 16bit upcounter Dreg 16bit register 16 D Datapath Dregclr Dctrclr Dctrcnt Dregld 16 16 1 Digital Design Copyright 2006 Frank Vahid 24 Passo 4 Implementando a FSM da Controladora FSM deverá seguir a mesma estrutura que a FSM de alto nível EntradasSaídas todos os bits Substitua as operações com os dados por operações com os bits usando o caminho de dados 300 MHz Clock D B L S 16 to display from button Controller to laser from sensor Datapath Dregclr Dregld Dctrclr Dctrcnt Entradas B S Saídas L Dregclr Dregld Dctrclr Dctrcnt S0 S1 S2 S3 L 0 L 1 L 0 L 0 B S B S S4 L 0 Entradas B S 1 bit cada Saídas L bit D 16 bits Registrador Dctr 16 bits S0 S1 S2 S3 L 0 D 0 L 1 L0 Dctr Dctr 1 Dctr 0 B S B S D Dctr 2 cálculo de D S4 a Dregclr 1 Dregld 0 Dctrclr 0 Dctrcnt 0 laser off clear D reg Dregclr 0 Dregld 0 Dctrclr 1 Dctrcnt 0 clear count Dregclr 0 Dregld 0 Dctrclr 0 Dctrcnt 0 laser on Dregclr 0 Dregld 0 Dctrclr 0 Dctrcnt 1 laser off count up Dregclr 0 Dregld 1 Dctrclr 0 Dctrcnt 0 load D reg with Dctr2 stop counting Digital Design Copyright 2006 Frank Vahid 25 Passo 4 Implementando a FSM da Controladora Adote uma representação mais simplificada fazendo com que as saídas da controladora não descritas sejam assumidas iguais a 0 a S0 S1 S2 S3 L 0 L 1 L 0 L 0 B S B S S4 L 0 Dregclr 1 Dregld 0 Dctrclr 0 Dctrcnt 0 laser off clear D reg Dregclr 0 Dregld 0 Dctrclr 1 Dctrcnt 0 clear count Dregclr 0 Dregld 0 Dctrclr 0 Dctrcnt 0 laser on Dregclr 0 Dregld 0 Dctrclr 0 Dctrcnt 1 laser off count up Dregclr 0 Dregld 1 Dctrclr 0 Dctrcnt 0 load D reg with Dctr2 stop counting S0 S1 S2 S3 L 0 L 1 L 0 B S B S laser on S4 Inputs B S Outputs L Dregclr Dregld Dctrclr Dctrcnt Dregclr 1 laser off clear D reg Dctrclr 1 clear count Dctrcnt 1 laser off count up Dregld 1 Dctrcnt 0 load D reg with Dctr2 stop counting Digital Design Copyright 2006 Frank Vahid 26 Passo 4 Implemente a FSM com um registrador de estados e circuito combinacional Cap3 300 MHz Clock D B L S 16 to display from button Controller to laser from sensor Datapath Dregclr S0 S1 S2 S3 L 0 L 1 L 0 B S B S laser on S4 Inputs B S Outputs L Dregclr Dregld Dctrclr Dctrcnt Dregclr 1 laser off clear D reg Dctrclr 1 clear count Dctrcnt 1 laser off count up Dregld 1 Dctrcnt 0 load D reg with Dctr2 stop counting Dregld Dctrclr Dctrcnt clear count clear load Q Q I Dctr 16bit upcounter Dreg 16bit register 16 D Datapath Dregclr Dctrclr Dctrcnt Dregld 16 16 1 Digital Design Copyright 2006 Frank Vahid 27 Exemplo de Projeto RTL e particularidades A seguir outros exemplos de projetos RTL Exemplo Interface de barramentos bus CPU principal Master processor pode ler um registrador de qualquer periférico Per0 Per1 Considere 1 registradorperif Cada registrador possuí um único endereço de 4 bits Considere rd1 Aendereço O periférico endereçado dispõe os dados armazenados em seu registrador no barramento de 32 bits D O endereço do periférico colocado nas entradas Faddr vindas de DIP switches ou outros registradores 53 32 4 A rd D Per0 Per1 Per15 Master processor Faddr 4 A D rd Interface de barramento Parte principal Periférico Q 32 parade barramento do processador 32 4 Digital Design Copyright 2006 Frank Vahid 28 Exemplo RTL Interface de barramento Passo 1 Gerar a FSM de alto nível Estado WaitMyAddress Saída nada por enquanto Z no barramento D armazena o valor Q do registrador do periférico no registrador local Q1 Espera até que o endereço deste periférico seja selecionado AFaddr e que rd1 Estado SendData Faz com que a saída de Q1 ocupe o barramento D espera por rd0 significando que o Master processor leu os dados no barramento D WaitMyAddress Entradas rd bit Q 32 bits A Faddr 4 bits Saídas D 32 bits Registrador Q1 32 bits rd rd SendData D Z Q1 Q A Faddr and rd A Faddr and rd D Q1 Digital Design Copyright 2006 Frank Vahid 29 Exemplo RTL Interface de barramento W W Z D Z Z Q1 Q1 W W W SD SD SD clk Inputs State Outputs rd WaitMyAddress Entradas rd bit Q 32 bits A Faddr 4 bits Saídas D 32 bits Registradores Q1 32 bits rd rd SendData D Z Q1 Q A Faddr and rd A Faddr and rd D Q1 Digital Design Copyright 2006 Frank Vahid 30 Exemplo RTL Interface de barramento WaitMyAddress Entradas rd bit Q 32 bits A Faddr 4 bits Saídas D 32 bits Registrador Q1 32 bits rd rd SendData D Z Q1 Q A Faddr and rd A Faddr and rd D Q1 Passo 2 Gere o caminho de dados a Entradassaídas do caminho de dados b Instancie os registradores c Instancie os componentes do caminho de dados e suas respectivas conexões Caminho de dados Interface de barramento Q1ld ld Q1 F Q addr 4 4 32 A Den AeqFaddr 4bit 32 32 D a Digital Design Copyright 2006 Frank Vahid 31 Exemplo RTL Interface de barramento Passo 3 Conecte o caminho de dados a controladora Passo 4 Implemente a FSM da controladora a WaitMyAddress Inputs rd bit Q 32 bits A Faddr 4 bits Outputs D 32 bits Local register Q1 32 bits rd rd SendData D Z Q1 Q A Faddr and rd A Faddr and rd D Q1 rd Entradas rd AeqFaddr bit Saídas Q1ld Den bit WaitMyAddress rd rd SendData Den 0 Q1ld 1 Den 1 Q1ld 0 AeqFaddr and rd AeqFaddr and rd Caminho de dados Interface de barramento Q1ld ld Q1 Faddr Q 4 4 32 A Den AeqFaddr 4bit 32 32 D Digital Design Copyright 2006 Frank Vahid 32 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas O vídeo é uma série de quadros Ex 30 por seg Maioria dos quadros são semelhantes aos anteriores Principal idéia para os algoritmos de compressão de dados enviar somente a diferença entre o quadro atual e o anterior Quadro 2 digitalizado 1 Mbyte Quadro 2 Quadro 1 digitalizado Quadro 1 1 Mbyte a Quadro 1 digitalizado Quadro 1 1 Mbyte b Única diferença movimento da bola a Diferença entre 2 e 1 001 Mbyte Quadro 2 Só envia a diferença Digital Design Copyright 2006 Frank Vahid 33 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas Necessidade de determinar rapidamente se dois quadros são similares o suficiente para apenas enviar diferença para segundo quadro Compare todos os 16x16 pixels Trate o bloco de 16x16 pixels como um array de 256bytes Calcule o valor absoluto da diferença de cada pixel item do array Some todas as diferenças encontradas se o valor der acima de um limite especificado envie o quadro por completo se der abaixo adotamos o método das diferenças não implementado aqui Quadro 2 Quadro 1 compare Cada um é um pixel assuma que sejam representado como 1 byte na verdade uma imagem colorida pode ter 3 bytes por pixel para a intensidade do vermelho verde azul e componentes x e y do pixel Digital Design Copyright 2006 Frank Vahid 34 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas Desejamos um componente que realize uma soma das diferenças absolutas SAD Quando go1 soma a diferença entre os elementos do array A e B e produz como saída o somatório B A go SAD sad Array de 256bytes Array de 256bytes Inteiro Digital Design Copyright 2006 Frank Vahid 35 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas S0 Espera pelo sinal go S1 Inicializa sum e index S2 Verifica condição i256 S3 Adiciona as diferenças em sum incrementa o índice i S4 Escreve no registrador sadreg B A go SAD sad Entradas A B memória de 256 bytes go bit Saída sad 32 bits Registradores sum sadreg 32 bits i 9 bits go S0 go S1 sum 0 i 0 S3 sumsumabsAiBi ii1 S4 sadreg sum S2 i256 i256 a Digital Design Copyright 2006 Frank Vahid 36 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas Passo 2 Crie o caminho de dados ilt256 iinc iclr sumld sumclr sadregld Datapath sum sadreg sad ABaddr Adata Bdata 256 9 32 8 8 8 8 32 32 32 i abs Entradas A B memória de 256 bytes go bit Saídas sad 32 bits Registradores sum sadreg 32 bits i 9 bits go S0 go S1 sum 0 i 0 S3 sumsumabsAiBi ii1 S4 sadregsum S2 i256 i256 a Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas Passo 3 Conecte a controladora Passo 4 Adapte a FSM de alto nível para implementar a FSM da controladora Digital Design Copyright 2006 Frank Vahid 37 Exemplo RTL Compressão de Vídeo Soma das Diferenças Absolutas Comparando a solução de um SAD customizado em hardware com a solução em software Circuito Dois estados S2 S3 para cada i 256 is 512 períodos de clock Software Loop for i 1 to 256 mas para cada i devemos mover dados da memória para registradores subtrailos computar o valor absoluto adicionálos a uma variável que acumulará a soma incrementar i digamos 6 períodos por cada item do array 2566 1536 períodos Solução por hardware é no mínimo 3 vezes 300 mais rápida Mais a frente veremos como construir circuito SAD que é ainda mais rápido Copyright 2006 Frank Vahid 38 Armadilhas em Projetos a nível de RTL e Boas práticas de projeto RTL Armadilhas comuns Partir do princípio que a atualização do registrador é realizada no estado que ele é escrito Qual o valor final de Q Qual o estado final Respostas Valor de Q desconhecido Estado final é C e não D Por quê Estado A R99 e QR acontecem simultaneamente Estado B R não atualizado com R1 até o próximo evento de clock simultaneamente com o registrador de estados sendo atualizado Digital Design Copyright 2006 Frank Vahid 39 Armadilhas em Projetos a nível de RTL e Boas práticas de projeto RTL Soluções Ler do registrador no próximo estado QR Inserir um estado extra de forma que as condições usem os valores atualizados Outras soluções poderão existir mas dependerão da aplicação Digital Design Copyright 2006 Frank Vahid 40 Armadilhas em Projetos a nível de RTL e Boas práticas de projeto RTL Armadilhas comuns Leitura das saídas Saídas podem somente ser escritas Solução Introduzir um registrador a mais que possa ser escrito e lido Digital Design Copyright 2006 Frank Vahid 41 Armadilhas em Projetos a nível de RTL e Boas práticas de projeto RTL Boa prática Colocar um registrador em todas as saídas de dados Na figura a a saída P produz valores espúrios enquanto a adição é realizada Outro ponto o caminho mais longo de um registrador a outro que determina o período de clock não é conhecido até que a saída seja conectada ao componente destino Na fig b saídas espúrias e o caminho crítico estão definidos Digital Design Copyright 2006 Frank Vahid 42 12 ROM ReadOnly Memory Estrutura lógica interna semelhante à memória RAM sem as linhas de entrada de dados Digital Design Copyright 2006 Frank Vahid 73 Tipos de ROM Se uma ROM pode ser lida somente como os dados os bits são gravados pela primeira vez A gravação de bits em uma ROM é através de programação Existem vários métodos ROM programadas por máscaras Bits são hardwired como 0s ou 1s durante a fabricação do chip As duas células ao lado armazenam respectivamente 10 Um sinal de word enable do decodificador simplesmente deixa passar o valor hardwired através do transistor Digital Design Copyright 2006 Frank Vahid 74 Tipos de ROM ROMs Programáveis a base de Fusíveis FuseBased PROMs Cada célula possui um fusível Um dispositivo apropriado conhecido como programador queima alguns fusíveis aplicando uma tensão acima da voltagem normal de operação Essas células serão lidas como bits 0s Células com fusíveis intactos serão lidos como bits 1s As 2 células ao lado armazenam 10 Conhecidas também como OneTime Programmable OTP ROM Digital Design Copyright 2006 Frank Vahid 75 Tipos de ROM Erasable Programmable ROMs EPROMs Possuem em cada célula de memória um transistor com um terminal gate flutuando Um dispositivo programador especial aplica uma tensão acima que a tensão normal de operação para tornar o gate operante introdução de elétrons Elétrons ficam aprisionados no gate Somente feito para células que deverão armazenar 0 Outras células serão consideradas contendo o valor 1 Exemplo ao lado mostra células com 10 Para apagar luz ultra violeta Permite que os elétrons aprisionados escapem da região de gate Requer que o encapsulamento tenha uma janela para expor o CI a luz UV Digital Design Copyright 2006 Frank Vahid 76 Tipos de ROM ElectronicallyErasable Programmable ROM EEPROM Similar a EPROM Usa transistor de porta flutuante programação eletrônica para aprisionar elétrons em certas células São eletricamente apagáveis não necessita luz UV Apagamento realizado por palavras uma por vez Flash memory Assim como EEPROMs entretanto várias palavras podem ser apagadas simultaneamente Tornaramse muito usadas a partir da década de 90 Ambos são programáveis em funcionamento Podem ser programados com os novos bits a serem armazenados quando estiverem integrados ao sistema em que estarão estão em funcionamento Digital Design Copyright 2006 Frank Vahid 77 Exemplo do uso de ROMs Boneca Falante Já com 4096 amostras 4096x16 ROM A boneca reproduz uma mensagem prégravada quando vibrada A mensagem deverá ficar armazenada sem a necessidade de alimentação pilha Necessitaremos de uma ROM pois é não volátil E porque a mensagem nunca será modificada usaremos uma PROM or OTP ROM Um processador deverá esperar pela vibração v1 em seguida ler as palavras armazenadas na região de memória de 0 a 4095 da ROM escrevendo cada uma para o conversor DA Digital Design Copyright 2006 Frank Vahid 78 Digital Design Copyright 2006 Frank Vahid 43 Projeto RTL predominado por Controle versus Dados Os projetos RTL são categorizados conforme sua predominância em Projetos RTL baseados em Controle e Projetos RTL baseados em Dados Projetos RTL baseados em Controle A controladora contém a parte mais complexa do sistema Projetos RTL baseados em Dados O caminho de dados é a parte mais complexa do sistema Distinção entre um e outro é tênue Não existe uma regra para caracterizar um ou outro tipo de projeto O medidor de distâncias a laser Projetos RTL baseados em Controle Interface de barramento circuito SAD misto de controle e dados Apresentaremos um exemplo de Projetos RTL baseados predominantemente de Dados Digital Design Copyright 2006 Frank Vahid 44 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Conceito do Filtro FIR Suponha que X é um dado vindo do sensor de temperatura com os seguintes valores 180 180 181 240 180 181 um a cada evento de clock A leitura 240 esta provavelmente errada Ruído de qualquer espécie O filtro deverá remover tal medida ruído da sua saída Y Um filtro simples Produz como saída a média aritmética dos N últimos valores lidos Um N pequeno filtra pouco Um N grande permite maior filtragem mas produz uma saída menos acentuada 12 12 Y clk X digital filter Digital Design Copyright 2006 Frank Vahid 45 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Filtro FIR Finite Impulse Response É simplesmente uma soma ponderada de valores de entrada passados yt c0xt c1xt1 c2xt2 Conhecido como FIR de 2a ordem Filtros FIR de ordens maiores são mais úteis FIR geral O usuário define um conjunto de constantes c0 c1 c2 para um filtro FIR Projeto RTL Passo 1 Criar a FSM de alto nível Não há realmente nada a fazer Projeto predominantemente executado pelo Caminho de Dados Vamos direto para o passo 2 12 12 Y clk X Filtro digital yt c0xt c1xt1 c2xt2 Digital Design Copyright 2006 Frank Vahid 46 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Passo 2 Criar o Caminho de Dados Comece criando cadeia de registradores xt para armazenar os valores passados de X 12 12 Y clk X Filtro digital xt0 xt1 xt2 12 12 12 12 xt2 xt1 xt 3tap FIR filter X Y clk yt c0xt c1xt1 c2xt2 180 180 181 180 181 240 Suponha que a sequencia de entrada seja 180 181 240 a Digital Design Copyright 2006 Frank Vahid 47 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Passo 2 Criar o Caminho de Dados cont Instancie os registradores para c0 c1 c2 Instancie os multiplicadores para calcular cx yt c0xt c1xt1 c2xt2 xt0 xt1 xt2 xt2 xt1 xt 3tap FIR filter X Y clk c1 c0 c2 a 12 12 Y clk X Filtro digital Digital Design Copyright 2006 Frank Vahid 48 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Passo 2 Criar o Caminho de Dados cont Instancie os somadores yt c0xt c1xt1 c2xt2 a xt0 xt1 xt2 xt2 xt1 xt 3tap FIR filter X Y clk c0 c1 c2 12 12 Y clk X Filtro digital Digital Design Copyright 2006 Frank Vahid 49 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Passo 2 Criar o Caminho de Dados cont Adicione circuitos para permitir o carregamento de um dos registradores c em especial yt c0xt c1xt1 c2xt2 a 12 12 Y clk X digital filter xt0 xt1 xt2 xt2 xt1 xt 3tap FIR filter X Y clk c0 c1 c2 3 2 1 0 2x4 yreg e Ca1 CL C Ca0 Digital Design Copyright 2006 Frank Vahid 50 Exemplo de Projeto RTL predominantemente baseado em processamento de dados Filtro FIR Passos 3 e 4 Conecte o Caminho de Dados ao controlador passo3 Implemente a FSM passo 4 Nenhuma controladora é necessária Exemplo extremo de um Projeto RTL predominantemente baseado em processamento de dados Comparando a solução em hardware do filtro FIR circuito com a versão em sofware Circuito Considere que um somador possua 2 atrasosporta e um multiplicador 20 atrasosporta O caminho mais crítico mais longo vai através de 1 multiplicador e 2 somadores 20 2 2 24atrasosporta Um filtro de ordem 99 100tap filter seguindo o mesmo princípio de projeto do slide anterior teria como caminho crítico 1 multiplicador e 7 somadores como caminho crítico total de 34 atrasosporta Software 100tap filter 100 multiplicações 100 adições Digamos 2 instruções por multiplicação 2 por adição Digamos 10 atrasosporta por instrução 1002 100210 4000 atrasosporta A versão em hardware circuito é mais do que 100 vezes mais rápida do que a versão software 10000 yt c0xt c1xt1 c2xt2 Digital Design Copyright 2006 Frank Vahid 51 Determinando a Frequencia do Clock Projetistas de circuitos digitais frequentemente desejam circuitos com a mais alta performance Significa que desejam circuitos com clocks funcionando na mais alta frequencia possível A frequencia fica limitada pelo mais longo atraso de um registrador a outro registrador Conhecido como caminho crítico Se o clock funcionar numa frequencia mais alta que o limite máximo dados errados poderão ser armazenados nos registradores O caminho crítico no circuito ao lado é de 2 ns Ignorando atrasos inerentes aos fios e tempos de setup e hold dos registradores somente para efeito de simplificação do problema 54 a b c 2 ns delay clk Digital Design Copyright 2006 Frank Vahid 52 Caminho Crítico O exemplo ao lado mostra 4 caminhos De a a c 2 ns De a a d 7 ns De b a d 7 ns De b a d 5 ns O caminho mais longo é portanto 7 ns E a maior frequencia de clock permitida 1 7 ns 142 MHz c d 7 ns 7 ns 5 ns delay 2 ns delay Max 2775 7 ns a b 5 ns 7 ns 7 ns 2 ns Digital Design Copyright 2006 Frank Vahid 53 Caminho Crítico considerando os Atrasos dos fios Fios apresentam atrasos também Devem ser considerados no cálculo do caminho crítico O exemplo ao lado mostra 2 caminhos Cada um vale 05 2 05 3 ns Compromisso 1980s1990s Os atrasos dos fios eram desprezíveis comparados aos atrasos das portas lógicas Entretanto os atrasos em fios não acompanharam a redução do atraso de propagação das portas lógicas Tendencia que continuem a contribuir de forma mais significativa para o cálculo do caminho crítico Devese considerar também o tempo de setup e hold dos registradores no cálculo Depois disso tudo adicionar mais um percentual de segurança mudanças de temperatura etc Ex se o caminho crítico for 3 ns considere 4 ns como margem de segurança a b c 2 ns 3 ns 3 ns 05 ns 05 ns 05 ns clk 3 ns Digital Design Copyright 2006 Frank Vahid 54 Um circuito pode apresentar um número muito grande de caminhos Caminhos aparecem em Caminhos de dados Controladoras Entre controladoras e caminhos de dados Podem ser centenas ou milhares de caminhos Ferramentas de simulação e análise temporal calculam automaticamente os caminhos críticos para os projetistas Combinational logic c totlts clk n1 d totld totlts t otclr s0 s1 n0 State register s 8 8 8 8 a ld clr tot Datapath 8bit 8bit adder c b a Digital Design Copyright 2006 Frank Vahid 55 Projeto em Nível Comportamental Da linguagem em alto nível para portas lógicas C to Gates Exemplo das soma das diferenças absolutas SAD Iniciado com uma máquina de estados finitos de alto nível O código C é um ponto de partida ainda melhor mais fácil de entender 55 go S0 go S1 sum 0 i 0 S3 sumsumabsAiBi ii1 S4 sadreg sum S2 i256 i256 a int SAD byte A256 byte B256 not quite C syntax uint sum short uint I sum 0 i 0 while i 256 sum sum absAi Bi i i 1 return sum Código em linguagem C Digital Design Copyright 2006 Frank Vahid 56 Projeto em Nível Comportamental linguagem C Modifique o primeiro passo do projeto em RTL pelos os 2 passos Identifique o comportamento em C em seguida converta o código em C em uma FSM de alto nível Como converter códigos em C em FSM de alto nível Passo 1A Identifique o comportamento em C Passo 1B Converta para FSM de alto nível a Digital Design Copyright 2006 Frank Vahid 57 Convertendo códigos em C para FSM de alto nível Converta cada construção em C nos estados equivalentes e transições Estruturas de atribuição São convertidas em um estado com uma atribuição Estrutura Ifthen São convertidas em estados com condições de teste acontecendo transição para a estrutura then se a condição de teste for verdadeira do contrário transitará para o estado end then poderia ser convertido em outros estados target expression target expression then stmts if cond then stmts cond cond end a a Digital Design Copyright 2006 Frank Vahid 58 Convertendo códigos em C para FSM de alto nível Ifthenelse São convertidos em estados com condições de teste transitando para a estrutura then se a condição for verdadeira ou para else se a condição for falsa While São convertidos em estados com condição de teste transitando para os estado dentro do loop se verdadeiro ou transitando de volta a condição de teste do loop if cond then stmts else else stmts cond cond end then stmts else stmts while cond while stmts cond cond while stmts end a a Digital Design Copyright 2006 Frank Vahid 59 Convertendo códigos em C para FSM de alto nível Exemplos Exemplo Encontrar o maior de 2 números Convertemos em uma estrutura ifthenelse em estados b Em seguida convertemos estruturas de atribuição em estados c end c XY XY end then stmts else stmts b XY XY MaxX MaxY a Entradas uint X Y Saídas uint Max if X Y else Max X Max Y a a Digital Design Copyright 2006 Frank Vahid 60 Exemplo Convertendo um código em C da SAD em FSM de alto nível Converta cada estrutura em estados Simplifique sempre que possível isto é reduza o número de estados A partir da FSM de alto nível siga os passo de projeto RTL para gerar o circuito sum sum absAi Bi a Inputs byte A256 B256 bit go Output int sad main uint sum short uint I while 1 sum 0 i 0 while go while i 256 i i 1 sad sum d go go sum0 i0 g go go sum0 i0 i256 i256 sad sum sumsum abs i i 1 sum0 i0 b go go c go go e go go sum0 i0 while stmts i256 i256 sad sum f go go sum0 i0 i256 i256 sumsum abs i i 1 a Digital Design Copyright 2006 Frank Vahid 61 Componentes de Memória Projetistas RTL instanciam componentes para formar caminhos de dados que poderão ser controlados por controladoras Alguns outros componentes são frequentemente usados além de controladoras e caminhos de dados Memórias MxN M palavras de largura de N bits cada Existe uma variedade de tipos de memória 56 Nbits Largura de Memória de MN M palavras Digital Design Copyright 2006 Frank Vahid 62 Memórias RAM Random Access Memory RAM Memória de Leitura e Escrita de dados Random access memory Criada há várias décadas para contrastar com as memórias baseadas em acesso de leitura e escrita em seqüência Ex unidades de fita Mesmo funcionamento lógico que um Register File RAMs usualmente possuem uma única porta Register files possuem usualmente 2 ou mais RAM x Register Files RAMs são tipicamente maiores 512 ou 1024 palavras RAM armazenam bits de forma mais eficiente do que flipflops RAM são implementadas em chips com um fator de forma próximo de um quadrado 32 10 data addr rw en 1024 32 RAM 32 4 32 4 Wdata Waddr Wen Rdata Raddr Ren 1632 register file Register file do Cap 4 Símbolo de uma RAM Digital Design Copyright 2006 Frank Vahid 63 Estrutura Interna de uma RAM Estrutura interna similar ao Register File Um decodificador habilita a palavra selecionada através das linhas de endereços entrada addr A entrada de controle rw determina se escreveremos ou leremos da célula de memória Vamos ver o que temos dentro de cada célula de RAM 32 10 data addr rw en 1024x32 RAM addr0 addr1 addrA1 clk en rw A log2M to all cells wdataN1 rdataN1 wdataN2 rdataN2 wdata0 rdata0 bit storage block aka cell word word RAM cell word enable word enable rw data cell data a0 a1 d0 d1 dM1 aA1 e AxM decoder enable Digital Design Copyright 2006 Frank Vahid 64 Ram Estática SRAM Uma célula de RAM Estática 6 transistores lembre inversor 2 transistores Escrevendo nessa célula A entrada word enable virá do decodificador Quando 0 o valor d circulará pelos inversores Esse loop é que mantém o bit armazenado Quando 1 o dado valor do bit entra em loop data é o bit a ser armazenado nessa célula data entra simultaneamente no lado oposto O exemplo mostra um 1 sendo escrito na célula addr0 addr1 addrA1 clk en rw addr Let A log2 M a0 a1 d0 d1 dM1 aA1 e A M decoder word enable to all cells wdataN1 rdataN1 wdataN2 rdataN2 wdata0 rdata0 bit storage block aka cell word cell word enable word enable rw data data a SRAM cell data data d d cell 0 word enable 1 1 1 0 0 32 10 data addr rw en 1024x32 RAM SRAM cell data data d word enable data data d d cell 0 word enable 1 0 a a Digital Design Copyright 2006 Frank Vahid 65 Ram Estática SRAM Uma célula de RAM Estática Operação de leitura Quando a entrada rw é ativada a lógica da memória RAM faz com que ambas as entradas data e data fiquem em 1 O bit armazenado d vai puxar tanto a linha da esquerda ou da direita um pouco para baixo ligeiramente abaixo de 1 Amplificadores detectarão qual lado foi um pouco puxado para baixo addr0 addr1 addrA1 clk en rw addr Let A log2 M a0 a1 d0 d1 dM1 aA1 e A M decoder word enable to all cells wdataN1 rdataN1 wdataN2 rdataN2 wdata0 rdata0 bit storage block aka cell word cell word enable word enable rw data data SRAM cell 32 10 data addr rw en 1024x32 RAM data data d 1 1 1 word enable To sense amplifiers 1 0 1 1 a Digital Design Copyright 2006 Frank Vahid 66 RAM Dinâmicas DRAM Célula de uma DRAM 1 transistor ao invés de 6 da SRAM Depende de grandes capacitores para armazenar os bits Escrita Transistor conduz o nível de tensão do dado carrega o capacitor Leitura Somente habilita a linha do dado d Problema Capacitor descarrega com o passar do tempo Devemos fazer um refresh do dado na memória de tempos em tempos addr0 addr1 addrA1 clk en rw addr Let A log2 M a0 a1 d0 d1 dM1 aA1 e A M decoder word enable to all cells wdataN1 rdataN1 wdataN2 rdataN2 wdata0 rdata0 bit storage block aka cell word cell word enable word enable rw data data DRAM cell 32 10 data addr rw en 1024x32 RAM word enable data cell a b data enable d discharges d capacitor slowly discharging Digital Design Copyright 2006 Frank Vahid 67 Comparando Tipos de Memória Register file Mais rápido São os maiores SRAM Rápidas Mais compactas que Register Files DRAM Mais Lentas Refresh toma muito tempo São as mais compactas Use Regisiter Files para armazenar poucas palavras SRAM para programas e estruturas de dados maiores e DRAM para estruturas de dados enormes MxN Memory implemented as a register file SRAM DRAM Size comparison for same number of bits not to scale Digital Design Copyright 2006 Frank Vahid 68 Lendo e Escrevendo de uma RAM Escrevendo Coloque o endereço no barramento addr dado no barramento data faça com que rw1 e en1 Lendo Coloque o endereço no barramento addr e habilite a entrada en não coloque nada no barramento data Z faça com que rw0 O dado solicitado aparecerá no barramento data Não se esqueça de obedecer os tempos de setup e hold Em suma manter as entradas estáveis antes e depois do evento de clock clk addr data rw en 1 2 9 9 13 999 Z 500 500 3 1 means write RAM9 now equals 500 RAM13 now equals 999 b valid valid Z 500 access time setup time hold time setup time clk addr data rw Digital Design Copyright 2006 Frank Vahid 69 Exemplo de uso de RAM Gravador de Sons Digital Comportamento Gravar Digitalizar o som aramazenálo como uma série de 4096 valores digitais de 12bits na RAM Usaremos uma RAM de 4096x16 RAMs de palavras de 12bits não são comuns Reproduza a música posteriormente Mesmo princípio usado em secretárias eletrônicas brinquedos etc Para gravar o processador deve ler do conversor AD armazenar os valores lidos em palavras sucessivas da RAM Para reproduzir a música o processador deve ler palavras RAM sucessivamente e habilitar o conversor DA wire speaker microphone wire analogto digital converter digitalto analog converter adld dald Ra Rrw Ren 12 16 processor adbuf data addr rw en 4096 16 RAM Digital Design Copyright 2006 Frank Vahid 70 Exemplo de uso de RAM Gravador de Sons Digital Projeto RTL do processador Crie uma FSM de alto nível Comece com o comportamento da operação de gravação record Reserve um registrador local a Armazena o endereço atual varia entre 0 e 4095 logo precisaremos de 12 bits Crie a FSM que conta de 0 a 4095 usando a Para cada a Leia do conversor AD adld1 adbuf1 Escreva no endereço a da RAM Raa Rrw1 Ren1 adld1 adbuf1 Raa Rrw1 Ren1 S a0 aa1 a4095 a4095 T U Local register a 12 bits analogto digital converter digitalto analog converter adld dald Ra Rw Ren 12 16 processor adbuf 4096x16 RAM a Record behavior Digital Design Copyright 2006 Frank Vahid 71 Exemplo de uso de RAM Gravador de Sons Digital Agora projete o comportamento de reprodução play Use um registrador a projete a FSM que conta de 0 a 4095 novamente Para cada valor em a Leia da RAM Escreva para o conversor DA Obs Deverá escrever no DA um ciclo após ter lido da RAM quando o dado estiver disponível no barramento de dados As máquinas de estado de gravação e reprodução seriam partes de uma máquina de estados maior controlando sinais que determinam quando a gravação ou reprodução deveriam acontecer a dald1 adbuf0 Raa Rrw0 Ren1 V a0 aa1 a4095 a4095 W X Local register a 12 bits Play behavior data bus analogto digital converter digitalto analog converter adld dald Ra Rw Ren 12 16 processor adbuf 4096x16 RAM Digital Design Copyright 2006 Frank Vahid 72 ROM ReadOnly Memory Memórias que podem ser somente lidas O barramento de dados é uma saída Desnecessário a entrada rw Vantagens sobre a RAM Compacta São um pouco menores Não voláteis Mantém o dado armazenado mesmo quando não alimentadas energizadas Velocidade São um pouco mais rápidas se comparadas a DRAMs Baixo consumo Não necessitam de fonte de energia para manter os dados armazenados Quando escolher ROM ao invés de memórias RAM dados armazenados não vão mudar ou não vai mudar com frequência Por exemplo uma tabela de conversão de Celsius para Fahrenheit em um termômetro digital 32 10 data addr rw en 1024 32 RAM RAM block symbol 32 10 data addr en 1024x32 ROM ROM block symbol Digital Design Copyright 2006 Frank Vahid 79 Exemplo do uso de ROMs Boneca Falante FSM de alto nível Projete uma FSM que espere por v1 e em seguida conte de 0 a 4095 com um registrador a Para cada a leia da ROM escreva em um conversor DA 4096x16 ROM processor Ra 16 Ren dald digitalto analog converter v S a0 dald1 aa1 a4095 a4095 T U Raa Ren1 Local register a 12 bits v v a Digital Design Copyright 2006 Frank Vahid 80 Exemplo uso de ROMs Secretária Eletrônica com Memória Flash Queremos gravar uma mensagem personalizada Quando rec1 grave o som digitalizado em 0 até 4095 Quando play1 reproduza o som armazenado para um conversor DA Qual tipo de memória usar Deve manter dado armazenado sem fonte de alimentação ROM e não RAM Tem que ser possível de ser programável no circuito sistema EEPROM ou Flash não EPROM OTP ROM ou PROM Sempre apagará a memória inteira quando reprogramada Flash melhor que EEPROM analogto digital converter digitalto analog converter adld dald Rrw Ren er bu Ra 12 16 processor adbuf busy 4096x16 Flash rec play record microphone speaker Were not home Digital Design Copyright 2006 Frank Vahid 81 Exemplo uso de ROMs Secretária Eletrônica com Memória Flash FSM de alto nível Uma vez que rec1 comece a apagar a memória flash fazendo com que er1 Espere pela memória flash terminar o processo de apagamento esperando por bu0 Faça um laço que leia de do registrador local a da posição de memória 0 a 4095 lendo do conversor AD e escrevendo na flash em cada endereço de a analogto digital converter digitalto analog converter adld dald Rrw Ren er bu Ra 12 16 processor adbuf 4096x16 Flash rec play record microphone speaker T er0 bu bu er1 rec S Local register a 13 bits a4096 a4096 U V adld1 adbuf1 Raa Rrw1 Ren1 aa1 a0 a Digital Design Copyright 2006 Frank Vahid 82 Distinção tênue entre ROMs e RAMs Dissemos que RAM podem ser lidas e escritas ROM podem ser lidas somente Entretanto algumas ROMs funcionam da mesma forma que RAMs EEPROM e Flash são programáveis pelo no próprio sistema que as usa insystem programmable Essencialmente significa que as escritas são mais lentas O número de operações de escrita também é limitado algumas centenas de milhares E ainda algumas RAMs comportamse com ROMs RAMs não voláteis Pode manter seus dados sem a necessidade de energia One type Builtin battery may work for up to 10 years Another type Includes ROM backup for RAM controller writes RAM contents to ROM before turning off Novas tecnologias de memória atuais que unem os benefícios de memórias RAM e ROM Ex MRAM FRAM etc EEPROM ROM Flash NVRAM RAM a Digital Design Copyright 2006 Frank Vahid 83 Filas Uma fila é um outro componente por vezes utilizado durante um projeto RTL Fila Uma lista que é escrita no fim mas é lida no seu início Funciona como uma lista de espera em restaurantes A operação de escrita é chamada push a leitura de pop O primeiro item escrito em uma fila será o primeiro item lido Essa fila é também chamada de FIFO firstinfirstout 57 início fim Escreve itens No fim da fila Lê e remove Itens do início Da fila Digital Design Copyright 2006 Frank Vahid 84 Filas Filas possuem endereços e dois ponteiros ponteiro para o fim r e ponteiro para o início f Inicialmente embos apontam para o endereço 0 Push escrita Item escrito no endereço apontado por r r incrementado Pop leitura Item lido do endereço apontado por f f incrementado Se r ou f chegar a 7 o próximo valor após o incremento deverá ser igual a 0 para uma fila com endereços de 0 a 7 r f 0 1 2 3 4 5 6 7 f r 0 A 1 2 3 4 5 6 7 A f r 0 A B 1 2 3 4 5 6 7 B f r 0 B 1 2 3 4 5 6 7 A a a a Digital Design Copyright 2006 Frank Vahid 85 Filas Considere a memória implementada na forma circular Se f ou r alcançar 7 o próximo valor após o incremento deverá ser 0 Duas condições especiais Fila cheia sem espaço para novos itens Em uma fila de 8 entradas significará que existem 8 elementos presentes na mesma Nenhuma operação de push deverá ser permitida até que ocorra alguma operação de pop Força fr Fila vazia sem nenhum item Nenhuma operação de pop será permitida até que ocorra alguma operação de push Força fr Amabas condições forçam f r Para detectar se f r representa uma ou outra condição acima necessitase de uma FSM que detecte se a operação anterior foi push ou pop acionando uma saída que informará se a fila esta cheia ou vazia respectivamente f r 0 B 1 2 3 4 5 6 7 A B 1 7 2 6 3 5 4 0 f rr a Digital Design Copyright 2006 Frank Vahid 86 Implementação de Filas Podem ser implementadas como banco de registradores register files ou como elementos de memória Implemente os ponteiros f e r usando contadores ascendentes r é usado como o endereço de escrita no banco de registradores e f como o endereço de leitura Uma controladora simples gera os sinais de controle para as operações de push e pop e também detecta as situações de fila cheia e vazia FSM da controladora não está mostrado na figura ao lado 8 16 register file clr 3bit up counter 3bit up counter inc clr inc rear front wr rd reset wdata rdata 16 16 3 3 wdata waddr wr rdata raddr rd eq Controller full empty 8word 16bit queue Digital Design Copyright 2006 Frank Vahid 87 Aplicações onde se usa Filas Teclados de computadores Faça um push de uma tecla pressionada na fila enquanto isso faça um pop de uma tecla e envie para o computador Gravadores de vídeos Faça um push de um quadro capturado enquanto isso faça um pop de outro quadro comprimao e armazeneo Roteadores Faça um push dos pacotes que chegam no roteador na fila enquanto isso faça um pop dos pacotes já existentes na fila processe a informação de destino e reencaminhe cada pacote através da porta apropriada do roteador Digital Design Copyright 2006 Frank Vahid 88 Exemplo de uso de uma Fila O exemplo mostra uma série de operações de push e pop Observe com r e f se movem Observe que a operação de pop não remove o dado da pilha mas tal dado não fica mais acessível Observe como r e f circula pelos endereços de 7 a 0 Observe fazendo um push em uma fila cheia provoca uma mensagem de erro O mesmo acontece quando se faz um pop em uma fila vazia r f 0 1 2 3 4 5 6 7 f r 0 1 2 3 4 5 6 9 5 8 5 7 2 3 7 f r 0 1 2 3 4 5 6 7 f r 0 1 2 3 4 5 6 7 9 5 8 5 7 2 3 9 5 8 5 7 2 3 6 r f 0 1 2 3 4 5 6 7 data 9 full 3 5 8 5 7 2 3 6 ERROR Pushing a full queue results in unknown state Initially empty queue 1After pushing 9 5 8 5 7 2 3 2After popping 3After pushing 6 4After pushing 3 5After pushing 4 Digital Design Copyright 2006 Frank Vahid 89 Hierarquia Um conceito importante de Projeto de Sistemas Digitais Hierárquia Uma organização com poucos itens no nível mais alto com cada item decomposto em itens menores mais detalhes Analogia Um país 1 item no nível mais alto ou topo o país Item país pode ser decomposto em estados Cada estado pode ser decomposto em várias cidades Hierárquia nos permite gerenciar a complexidade do projeto Para ir de transistores à portas lógicas muxes decodificadores registradores ULA controladores centrais de dados memórias filas etc Imagine tentar compreender uma controladora e um caminho de dados ao nível de portas lógicas 58 CityF Country A Province 1 Province 2 Province 3 Province 1 Province 2 Province 3 Map showing all levels of hierarchy Map showing just top two levels of hierarchy CityG CityE CityD CityA CityB CityC Country A Digital Design Copyright 2006 Frank Vahid 90 Hierárquia e Abstração Abstração Hierarquia muitas vezes não envolve apenas agrupar itens em um novo item mas também a associação do comportamento de um nível mais alto em um novo item Isso é o conceito de abstração ie um somador de 8 bits possuí um comportamento em alto nível bem definido somar dois números binários de 8 bits cada Libera o projetista de ter que lembrar ou mesmo de ter que entender o detalhe de implementação de um nível inferior a7 a0 b7 b0 s7 s0 co Somador de 8 bits ci Digital Design Copyright 2006 Frank Vahid 91 Hierarquia e Composição de Componentes maiores a partir de versões menores Uma tarefa comum quando se projeta SD é formar componentes maiores a partir de componentes menores usados como base Portas lógicas Suponha que você tenha um número muito grande portas lógicas AND de 3 entradas mas necessirta de um AND de 9 entradas Formaremos a porta desejada com ANDs de 3 entradas Muxes Suponha que temos MUXs 4x1 e 2x1 muxes e necessitamos de um MUX 8x1 s2 vai selecionar o MUX 4x1 do alto ou de baixo s1s0 seleciona uma entrada qualquer do MUX 4x1 4 1 2 1 d d i0 i1 i1 i0 i2 i3 i0 i1 i2 i3 i4 i5 i6 i7 s1 s0 s0 4 1 d i0 i1 i2 i3 s1 s0 s1 s0 s2 a Digital Design Copyright 2006 Frank Vahid 92 Hierarquia e Composição de Componentes maiores a partir de versões menores Formar memórias maiores Fazendo com que as memórias armazenem palavras maiores Coloquem componentes de memória lado a lado até que a largura da palavra desejada seja obtida Compartilhe as linhas de endereço e controle concatene as linhas de dados Exemplo Forme ROMS 1024x32 a partir de ROMs 1024x8 1024x32 ROM 1024x8 ROM data addr en data 8 8 32 8 10 10 data310 1024x8 ROM addr en data 1024x8 ROM addr en data 1024x8 ROM addr en data 8 Digital Design Copyright 2006 Frank Vahid 93 Hierarquia e Composição de Componentes maiores a partir de versões menores Formando memórias com mais palavras Coloque componentes de memória empilhados até o alcançar o número de palavras desejado Use um decodificador para selecionar uma entre as memórias empilhadas Exemplo Forme uma memória 2048x8 a partir de memórias de 1024x8 Provin ce 2 Provin ce 1 1024x8 ROM addr en data 1024x8 ROM addr en data 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 a0 a10a9a8 a10 just chooses which memory to access Para criar uma memória com mais palavras e palavras maiores podemos primeiramente formar uma memória com palavras o suficiente e em seguida aumentar o tamanho da palavra a a 2048x8 ROM data 8 11 11 1024x8 ROM addr en data 8 1024x8 ROM addr en data 8 a9a0 a10 d0 d1 en addr 1x2 dcd i0 e