·
Engenharia de Controle e Automação ·
Sistemas Digitais
Send your question to AI and receive an answer instantly
Recommended for you
Preview text
Digital Design Copyright © 2006 Frank Vahid 1 Sistemas Digitais Slides to accompany the textbook Digital Design, First Edition, by Frank Vahid, John Wiley and Sons Publishers, 2007. http://www.ddvahid.com Copyright © 2007 Frank Vahid Instructors of courses requiring Vahid's Digital Design textbook (published by John Wiley and Sons) have permission to modify and use these slides for customary course-related activities, subject to keeping this copyright notice in place and unmodified. These slides may be posted as unanimated pdf versions on publicly-accessible course websites.. PowerPoint source (or pdf with animations) may not be posted to publicly-accessible 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 http://www.ddvahid.com for information. Material traduzido e adaptado para o Português pelo Prof. Ricardo O. Duarte e revisado pelos Prof. Luciano Pimenta e Hermes Magalhães DELT – EEUFMG (Rev. 4c) Capítulo 5: Projeto RTL (Register-Transfer Level) Digital Design Copyright © 2006 Frank Vahid 2 • Capítulo 3: Controladores – Controla entradas/saí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 – Entradas/Saídas de dados: Múltiplos bits representados em um única entidade. – Componentes vistos: Registradores, Somadores, ALUs, Comparadores, Bancos de Registradores, etc. • Nesse capítulo: processadores customizados – Processador = Controlador e componentes de caminho de dados trabalhando juntos para implementar algoritmos. 5.1 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 Introdução 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 finitos 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 5.2 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 8-bits, representando o valor da moeda depositada (amount). – s: Uma entrada de 8-bits, representando o preço do refrigerante (soda). – d: Saída de 1 bit, o processador faz com que d = 1 (dispenser) quando o valor total de moedas depositadas é igual ou maior que o custo do refrigerante. 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 a s c d 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 d=0, tot=0 • 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 Disp(ense) • Estado Disp: Faz com que d=1 (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 I nit d=0 tot=0 c’*(tot<s) d=1 c tot=tot+a 8 8 a s c d Soda dispenser processor c’*(tot<s)’ 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 8-bits para comparar s e tot • Precisaremos de um somador de 8-bits para realizar tot = tot + a • Conectar os componentes • Criar entradas/saídas de controle e dar nomes pertinentes a elas ld clr tot 8-bit < 8-bit adder 8 8 8 8 s a Datapath tot_ld tot_clr tot_lt_s I nputs : c (bit), a(8 bits) , s (8 bits) O utputs : d (bit) L ocal r e g is t ers : t ot (8 bits) W ait A dd Disp I nit d=0 t ot=0 c ‘ ( t ot<s) ‘ c ‘ * ( t ot<s) d=1 c t ot= t ot+a Digital Design Copyright © 2006 Frank Vahid 8 Primeiro Exemplo: Passo 3 – Conectar o Caminho de Dados à 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 tot_lt_s • 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 tot_lt_s tot_clr tot_ld Controller Datapath s c d a 8 8 ld clr t ot 8-bit < 8-bit adder 8 8 8 8 s a D a tap a th t ot_ld t ot_clr t ot_lt_s 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 ativa/desativa os sinais de controle para todas as operações e condições de teste realizadas pelo caminho de dados. tot_lt_s tot_clr tot_ld Controller Datapath s c d a 8 8 ld clr tpt 8-bit < 8-bit adder 8 8 8 8 s a Datapath tot_ld tot_clr tot_lt_s Inputs: : c , tot_lt_s (bit) Outputs: d , tot_ld , tot_clr (bit) W ait Disp I nit d=0 tot_clr=1 c ’ * tot_lt_s d=1 c tot_ld=1 c d tot_ld tot_clr tot_lt_s 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 tot_lt_s tot_ld tot_clr Init Wait Add Disp Entradas: : c , c, tot_lt_s (bit) Saídas: d , tot_ld , tot_clr (bit) W ait Disp I nit d=0 tot_clr=1 c ’ * tot_lt_s d=1 c tot_ld=1 c d tot_ld tot_clr tot_lt_s 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 de baixo nível porque: • Entradas de dados a e s possuem mais de 1 bit • Necessidade de registradores internos: tot • Operações com os dados: tot=0, tot<s, tot=tot+a. – FSMs de alto nível: • Tipos de dados variados • Presença de registradores • Equações aritméticas e condições de transição de alto nível. Entradas: : c (bit), a (8 bits) , s (8 bits) Saídas : d (bit) Registradores : t ot (8 bits) W ait Disp I nit d=0 t ot=0 c’ ( t ot<s ) d=1 c t ot= t ot+a c’ ( t ot<s )’ Digital Design Copyright © 2006 Frank Vahid 12 Exemplo de Passo 1: Medidor de distâncias baseado em LASER • Exemplo de como criar uma máquina de estado de alto nível para descrever o comportamento do processador desejado • Medidor de distâncias baseado em LASER (Light Amplification by Stimulated Emission of Radiation) – LASER pulsado: mede o período de tempo T para detectar a reflexão. – A luz do LASER “viaja” à velocidade da luz, 3*108 m/s – Logo a distância é calculada por: D = T (seg) * 3*108 (m/s) / 2 Objeto de interesse D 2D = T sec * 3*108 m/sec sensor laser T (em segundos) Digital Design Copyright © 2006 Frank Vahid 13 Exemplo de Passo 1: Medidor de distâncias baseado em LASER • Entradas/Saí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 16-bits, exibe no display a distância medida sensor laser T (em segundos) LASER-based distance measurer 16 Vem do botão Vai p/ o display S L D B Vai p/ feixe LASER Vem do sensor de luz Digital Design Copyright © 2006 Frank Vahid 14 Exemplo de Passo 1: Medidor de distâncias baseado em 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 (L=0) – Inicializar a distância medida com 0 (D=0) 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) 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 em LASER • Adicione um outro estado, chame-o 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 em LASER • Adicione um novo estado S2 responsável por ligar o LASER (L=1) • Depois desligue o LASER em um novo estado S3 (L=0) 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 até 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 em 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 LASER Do sensor Digital Design Copyright © 2006 Frank Vahid 18 Exemplo de Passo 1: Medidor de distâncias baseado em LASER • Uma vez detectada a reflexão (S), vá para um novo estado S4 – Calcule a distância – Assumindo que a frequência do clock é igual a 3x108, Dctr vai armazenar o total da distância em metros, logo é só fazer: D=Dctr/2 • 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 L=0 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 sub-passos subsequentes: – (a) Faça com que entradas/saídas de dados da FSM sejam as entradas/saí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 em LASER (a) Faça com que as entradas/saídas de dados sejam as entradas/saí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, conectando-os de forma apropriada D a tap a th D r eg_clr D c tr_clr D c tr_c n t D r eg_ld Registradores: Dctr (16 bits) S0 S1 S2 S3 L = 0 D = 0 L = 1 L=0 Dctr = Dctr + 1 Dctr = 0 B ‘ S ‘ B S D = Dctr / 2 (calculate D) S4 load Q I D r eg: 16-bit r e g is t er Q D c t r : 16-bit u p - c ou n t er 16 D clear clear c ou n t 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 em LASER (c) (continuação) Examine cada estado e cada transição de estados e instancie componentes adequados ao caminho de dados, conectando-os de forma apropriada clear c ou n t clear load Q Q I D c t r : 16-bit u p - c ou n t er D r eg: 16-bit r e g is t er 16 D D a tap a th D r eg_clr D c tr_clr D c tr_c n t D r eg_ld 16 16 >>1 a Registradores: Dctr (16 bits) S0 S1 S2 S3 L = 0 D = 0 L = 1 L=0 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 (para compartilhar o componente) T0 T1 R = E + F R = R + G E , F , G, R (16 bits) Registradores : ( a ) a E F G A B + R ( b ) E F G A B + R ( c ) E F G A B + R SelA_is_R SelB_is_F 2 1 2 1 ( d ) × × 0 0 1 1 Digital Design Copyright © 2006 Frank Vahid 23 Passo 3: Conectando o Caminho de Dados à Controladora • Exemplo do medidor de distâncias a LASER • Para esse caso devem- se conectar diretamente os sinais entre o caminho de dados e a controladora 300 M H z Clock D B L S 16 Para o display Do botão Controller Para o LASER Do sensor Datapath Dreg_clr Dreg_ld Dctr_clr Dctr_cnt clear c ou n t clear load Q Q I D c t r : 16-bit u p - c ou n t er D r eg: 16-bit r e g is t er 16 D D a tap a th D r eg_clr D c tr_clr D c tr_c n t D r eg_ld 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 – Entradas/Saídas, todos os bits. – Substitua as operações com os dados por operações com os bits usando o caminho de dados 300 M H z Clock D B L S 16 t o displ a y f r om but t on C o n t r oller t o laser f r om sensor D a tap a th D r eg_clr D r eg_ld D c tr_clr D c tr_c n t Entradas: B, S Saídas: L, Dreg_clr, Dreg_ld, Dctr_clr, Dctr_cnt 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 L=0 Dctr = Dctr + 1 Dctr = 0 B’ S’ B S D = Dctr / 2 (cálculo de D) S4 a Dreg_clr = 1 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 0 (laser off) (clear D reg) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 1 Dctr_cnt = 0 (clear count) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 0 (laser on) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 1 (laser off) (count up) Dreg_clr = 0 Dreg_ld = 1 Dctr_clr = 0 Dctr_cnt = 0 (load D reg with Dctr/2) (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 Dreg_clr = 1 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 0 (laser off) (clear D reg) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 1 Dctr_cnt = 0 (clear count) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 0 (laser on) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 1 (laser off) (count up) Dreg_clr = 0 Dreg_ld = 1 Dctr_clr = 0 Dctr_cnt = 0 (load D reg with Dctr/2) (stop counting) S0 S1 S2 S3 L = 0 L = 1 L = 0 B’ S’ B S (laser on) S4 Inputs: B, S Outputs: L, Dreg_clr, Dreg_ld, Dctr_clr, Dctr_cnt Dreg_clr = 1 (laser off) (clear D reg) Dctr_clr = 1 (clear count) Dctr_cnt = 1 (laser off) (count up) Dreg_ld = 1 Dctr_cnt = 0 (load D reg with Dctr/2) (stop counting) Digital Design Copyright © 2006 Frank Vahid 26 Passo 4 • Implemente a FSM com um registrador de estados e circuito combinacional (Cap.3) 300 MHz Clock D B L S 16 to display from button Controller to laser from sensor Datapath Dreg_clr S0 S1 S2 S3 L = 0 L = 1 L = 0 B’ S’ B S (laser on) S4 Inputs: B, S Outputs: L, Dreg_clr, Dreg_ld, Dctr_clr, Dctr_cnt Dreg_clr = 1 (laser off) (clear D reg) Dctr_clr = 1 (clear count) Dctr_cnt = 1 (laser off) (count up) Dreg_ld = 1 Dctr_cnt = 0 (load D reg with Dctr/2) (stop counting) Dreg_ld Dctr_clr Dctr_cnt clear c ou n t clear load Q Q I D c t r : 16-bit u p - c ou n t er D r eg: 16-bit r e g is t er 16 D D a tap a th D r eg_clr D c tr_clr D c tr_c n t D r eg_ld 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 interface) – CPU principal (Master processor) pode ler um registrador de qualquer periférico (Per0, Per1, …) • Considere um registrador por perif. • Cada registrador possui um único endereço de 4 bits – Considere: rd=1, A=endereço no barramento (escolhe o periférico) – O periférico endereçado dispõe os dados armazenados em seu registrador no barramento 32 bits (D) • O endereço do periférico é “fixo” e atribuído a ele nas entradas Faddr (vindas de chaves DIP ou outros registradores). 5.3 32 4 A r d D Per0 Per1 Per15 Master processor Faddr 4 A D r d Interface de barramento Parte principal Periférico Q 32 para/de 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 (A=Faddr) e que rd=1 – Estado SendData • Faz com que a saída de Q1 ocupe o barramento D, espera por rd=0 (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 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) Entradas/saí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 Q1_ld ld Q1 F Q addr 4 4 32 A D_en A_eq_ F addr = (4-bit) 32 32 D a Digital Design Copyright © 2006 Frank Vahid 31 Exemplo RTL: Interface de barramento • Passo 3: Conecte o caminho de dados à 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, A_eq_Faddr (bit) Saídas: Q1_ld, D_en (bit) W ait M y A dd r ess r d ‘ r d S endD a ta D_en = 0 Q1_ld = 1 D_en = 1 Q1_ld = 0 A_eq_ F addr and r d ( A_eq_ F addr and r d) ‘ Caminho de dados Interface de barramento Q1_ld ld Q1 Faddr Q 4 4 32 A D_en A_eq_Faddr = (4-bit) 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 é semelhante 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 0.01 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 256-bytes – 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 representados 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 go=1, 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 256-bytes Array de 256-bytes 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 (i>=256) • S3: Adiciona as diferenças em sum, incrementa o índice (i) • S4: Escreve no registrador sad_reg B A go SAD sad Entradas: A, B (memória de 256 bytes); go (bit) Saída: sad (32 bits) Registradores: sum, sad_reg (32 bits); i (9 bits) !go S0 go S1 sum = 0 i = 0 S3 sum=sum+abs(A[i]-B[i]) i=i+1 S4 sad_ r eg = sum S2 i<256 (i<256)’ 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 i_lt_256 i_inc i_clr sum_ld sum_clr sad_reg_ld Datapath sum sad_reg sad AB_addr A_data B_data <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, sad_reg (32 bits); i (9 bits) !go S0 go S1 sum = 0 i = 0 S3 sum=sum+abs(A[i]-B[i]) i=i+1 S4 sad_ reg=sum S2 i<256 (i<256)’ a Digital Design Copyright © 2006 Frank Vahid 37 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 S0 S1 S2 S3 S4 go’ go go AB_ r d sum=0 i=0 i<256 sum=sum+abs(A[i]-B[i]) i=i+1 sad_reg=sum Controladora i_lt_256 i_inc i_clr sum_ld sum_clr sad_reg_ld sum sad_reg sad AB_addr A_data B_data <256 9 32 8 8 8 8 32 32 32 i – + abs a (i<256)’ sum_ld=1; AB_rd=1 sad_reg_ld=1 i_inc=1 i_lt_256 i_clr=1 sum_clr=1 i_lt_256’ Digital Design Copyright © 2006 Frank Vahid 38 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 i’s 512 períodos de clock – Software: Loop (for i = 1 to 256), mas para cada i, devemos mover dados da memória para registradores, subtraí-los, 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 256*6 = 1536 períodos – Solução por hardware é no mínimo 3 vezes (300%) mais rápida – Mais à frente, veremos como construir . circuito SAD que é ainda mais rápido S3 sum=sum+abs(A[i]-B[i]) i=i+1 S2 i<256 (i<256)’ Digital Design Copyright © 2006 Frank Vahid 39 Armadilhas em Projetos no nível RTL e Boas práticas de projeto RTL • Armadilhas comuns: assumir que a atualização do registrador é realizada no estado em 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: R=99 e Q=R acontecem simultaneamente • Estado B: R não atualizado com R+1 até o próximo evento de clock, simultaneamente com o registrador de estados sendo atualizado Digital Design Copyright © 2006 Frank Vahid 40 Armadilhas em Projetos no nível RTL e Boas práticas de projeto RTL • Soluções – Ler do registrador no próximo estado (Q=R) – 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 41 Armadilhas em Projetos no nível 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 T S P=P+B P=A ( a ) Entradas: A, B (8 bits) Saídas: P (8 bits) Entradas: A, B (8 bits) Saídas: P (8 bits) Registradores: R (8 bits) T S P=R+B R=A P=A ( b ) Digital Design Copyright © 2006 Frank Vahid 42 Armadilhas em Projetos no nível 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. + R B P (a) + R Preg B P (b) 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 com predomínio do Controle e Projetos RTL com predomínio dos Dados – Projetos RTL predominantes em Controle – A controladora contém a parte mais complexa do sistema. – Projetos RTL predominantes 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 – Projeto RTL baseado em Controle – Interface de barramento, circuito SAD – misto de controle e dados. – Apresentaremos um exemplo de Projeto RTL baseado predominan- . temente em 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 está provavelmente errada! • Um ruído qualquer. – 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 mais suavizada 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 – y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) • Conhecido como FIR de 2a ordem • Filtros FIR de ordens maiores são mais úteis. • FIR geral – O usuário define um conjunto de coeficientes 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 y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) 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 x(k) para armazenar os valores passados de x 12 12 y clk x Filtro digital y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) 180 180 181 180 181 240 Suponha que a sequência 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 c*x y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) x t0 x t1 x t2 x( t -2) x( t -1) x(t) 3-tap 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 y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) a x t0 x t1 x t2 x( t -2) x( t -1) x(t) 3-tap 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 circuito para permitir o carregamento dos coeficientes nos registradores c0, c1 e c2 y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) a 12 12 Y clk X digital filter xt0 xt1 xt2 x(t-2) x(t-1) x(t) 3-tap 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 atrasos-porta e um multiplicador 20 atrasos-porta • O caminho mais crítico (mais longo) vai através de 1 multiplicador e 2 somadores – 20 + 2 + 2 = 24-atrasos-porta • Um filtro de ordem 99 (100-tap 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 atrasos-porta. – Software • 100-tap filter: 100 multiplicações, 100 adições. Digamos 2 instruções por multiplicação, 2 por adição. Digamos 10 atrasos-porta por instrução. • (100*2 + 100*2)*10 = 4000 atrasos-porta – A versão em hardware (circuito) é mais do que 100 vezes mais rápida do que a versão software (10000%). y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) Digital Design Copyright © 2006 Frank Vahid 51 Determinando a Frequência do Clock • Projetistas de circuitos digitais frequentemente desejam circuitos com a mais alta performance – Significa que desejam circuitos com clocks funcionando na mais alta frequência possível • A frequência fica limitada pelo mais longo atraso de um registrador a outro registrador – Conhecido como caminho crítico – Se o clock funcionar numa frequência 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 5.4 a + b c 2 ns del a y clk • Estamos aqui ignorando atrasos inerentes aos fios e tempos de setup e hold dos registradores somente para efeito de simplificação do problema Digital Design Copyright © 2006 Frank Vahid 52 Caminho Crítico • O exemplo ao lado mostra 4 caminhos: – De a até c: 2 ns – De a até d: 7 ns – De b até d via somador e multiplicador: 7 ns – De b até d via multiplicador: 5 ns • O caminho mais longo é portanto 7 ns • E a maior frequência de clock permitida (em teoria): – 1 / 7 ns = 142 MHz + * c d 7 ns 7 ns 5 ns delay 2 ns delay Max (2,7,7,5) = 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: 0.5 + 2 + 0.5 = 3 ns • Compromisso: – 1980s/1990s: 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! • Deve-se considerar também o tempo de setup e hold dos registradores no cálculo a + b c 2 ns 3 ns 3 ns 0.5 ns 0.5 ns 0.5 ns clk 3 ns • 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 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 tot_lt_s clk n1 d tot_ld tot_lt_s t ot_clr s0 s1 n0 State register s 8 8 8 8 a ld clr tot Datapath 8-bit < 8-bit 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! 5.5 !go S0 go S1 sum = 0 i = 0 S3 sum=sum+abs(A[i]-B[i]) i=i+1 S4 sad_ r eg = sum S2 i<256 (i<256)’ a i n t SAD (byte A[256], byte B[256]) // not quite C syntax { uint sum; short uint I; sum = 0; i = 0; while (i < 256) { sum = sum + abs(A[i] – B[i]); 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 2 passos a seguir: – 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 • Estruturas de atribuição – São convertidas em um estado com uma atribuição • Estrutura If-then – 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 • Converta cada construção em C nos estados equivalentes e transições Digital Design Copyright © 2006 Frank Vahid 58 Convertendo códigos em C para FSM de alto nível • If-then-else – 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 o estado dentro do loop se verdadeiro, e transitando de volta à 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 uma estrutura if-then-else em estados (b) – Em seguida convertemos estruturas de atribuição em estados (c) (end) (c) X>Y !(X>Y) (end) (then stmts) (else stmts) (b) X>Y !(X>Y) Max=X Max=Y (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 passos de projeto RTL para gerar o circuito sum = sum + abs(A[i] - B[i]); (a) Inputs: byte A[256], B[256] 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 sum=0 i=0 (g) !go go sum=0 i=0 !(i<256) i<256 sad = sum sum=sum + abs i = i + 1 sum=0 i=0 (b) !(!go) !go (c) !go go (e) !go go sum=0 i=0 while stmts !(i<256) i<256 sad = sum (f) !go go sum=0 i=0 !(i<256) i<256 sum=sum + 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 N bits cada • Existe uma variedade de tipos de memória! 5.6 N-bits Largura: Memória de M × N 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 Banco de Registradores (Register File) • RAMs usualmente possuem uma única porta; Register files possuem usualmente 2 ou mais. – RAM x Banco de Registrdores (Register Files) • RAM são tipicamente maiores que 512 ou 1024 palavras • RAM armazenam bits de forma mais eficiente do que flip-flops. • RAM são implementadas em chips com um “fator de forma” (form factor) próximo de um quadrado 32 10 data addr r w en 1024 × 32 R A M 32 4 32 4 W_data W_addr W_en R_data R_addr R_en 16 × 32 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 r w en 1024x32 RAM addr0 addr1 addr(A-1) clk en r w A = log2M to all cells wdata(N-1) rdata(N-1) wdata(N-2) rdata(N-2) wdata0 rdata0 bit storage block (aka “cell”) w o r d word RAM cell word enable word enable r w data cell data a0 a1 d0 d1 d(M-1) a(A-1) 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 (rw = “write”) • 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 a SRAM cell data data’ d’ d cell 0 word enable 1 1 1 0 0 32 10 data addr r w 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 (rw=“read”) • Quando a entrada rw pede leitura, o circuito da memória RAM faz com que ambas as entradas data e data’ fiquem em 1 (pré-carga ou pre-charge) e liga o word enable. • Um dos lados da célula estará em 0, “carregando” um pouco mais o circuito desse lado, fazendo diminuir a tensão (neste exemplo: data’) para um valor um pouco menor que o valor de tensão referente ao valor lógico do outro lado (neste exemplo: lado data) SRAM cell 32 10 data addr r w en 1024x32 RAM data data’ d 1 1 1 word enable To sense amplifiers 1 0 1 <1 a • Amplificadores de tensão conectados em data e data’ detectam qual lado foi mais carregado que o outro, completando a leitura. 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 DRAM cell 32 10 data addr r w en 1024x32 RAM word enable data c ell ( a ) ( b ) data enable d discharges d capacitor slowly discharging – O circuito da DRAM deve fazer um “refresh” (automático) do dado na memória, periodicamente Digital Design Copyright © 2006 Frank Vahid 67 Comparando Tipos de Memória • Banco de registradores (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 de tamanho intermediário e usadas mais frequentemente 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 em uma RAM • Escrevendo – Coloque o endereço no barramento addr, dado no barramento data, faça com que rw=1 e en=1 – 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 • Lendo – Coloque o endereço no barramento addr e habilite a entrada en=1, não coloque nada no barramento data (Z), pois a RAM irá colocar, faça rw=0 (= ler). clk addr data r w en 1 2 9 9 13 999 Z 500 500 3 1 means write RAM[9] now equals 500 RAM[13] now equals 999 ( b ) valid valid Z 500 access time setup time hold time setup time clk addr data r w – O dado solicitado aparecerá no barramento data e você poderá lê- lo, respeitando o tempo de acesso ou access time (tempo de estabilização do dado no barramento). Digital Design Copyright © 2006 Frank Vahid 69 Exemplo de uso de RAM: Gravador de Sons Digital • Comportamento – Gravar: Digitalizar o som, armazená-lo como uma série de 4096 valores digitais de 12-bits na RAM • Usaremos uma RAM de 4096x16 (RAMs de palavras de 12-bits 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 A/D, armazenar os valores lidos em palavras sucessivas da RAM wire speaker microphone wire analog-to- digital converter digital-to- analog converter ad_ld da_ld Ra Rrw Ren 12 16 processor ad_buf data addr rw en 4096×16 RAM – Para reproduzir a música, o processador deve ler palavras RAM sucessivamente e habilitar o conversor D/A. 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: • “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 A/D » ad_ld=1, ad_buf=1 – Escreva no endereço “a” da RAM » Ra=a, Rrw=1, Ren=1 ad_ld=1 ad_buf=1 Ra=a Rrw=1 Ren=1 S a=0 a=a+1 a=4095 a<4095 T U Local register: a (12 bits) analog-to- digital converter digital-to- analog converter ad_ld da_ld Ra Rw Ren 12 16 processor ad_buf 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 D/A • Obs.: Deverá escrever no D/A 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 da_ld=1 ad_buf=0 Ra=a Rrw=0 Ren=1 V a=0 a=a+1 a=4095 a<4095 W X Local register: a (12 bits) Play behavior data bus analog-to- digital converter digital-to- analog converter ad_ld da_ld Ra Rw Ren 12 16 processor ad_buf 4096x16 RAM Digital Design Copyright © 2006 Frank Vahid 72 ROM = Read-Only 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 às 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 vão mudar com frequência) – Por exemplo, uma tabela de conversão de Celsius para Fahrenheit em um termômetro digital 32 10 data addr r w en 1024 × 32 R A M RAM block symbol 32 10 data addr en 1024x32 ROM ROM block symbol Digital Design Copyright © 2006 Frank Vahid 73 ROM - Read-Only Memory • Estrutura lógica interna semelhante à memória RAM, sem as linhas de entrada de dados 32 10 data addr en 1024x32 ROM ROM block symbol ROM cell addr0 addr1 addr(A-1) clk en Let A = log2M a0 a1 d0 d1 d(M-1) a(A-1) e AxM decoder word enable rdata(N-1) rdata(N-2) rdata0 bit storage block (aka “cell”) w o r d word enable word enable data data Digital Design Copyright © 2006 Frank Vahid 74 Tipos de ROM • Se uma ROM pode ser somente lida, 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 • Hardwired = conectado por fio cell cell word enable data line data line 0 1 Digital Design Copyright © 2006 Frank Vahid 75 Tipos de ROM • ROMs Programáveis à base de Fusíveis (Fuse-Based PROMs) – Cada célula possui um fusível – Um dispositivo apropriado, conhecido como programador, queima alguns fusíveis (aplicando uma tensão acima da tensão 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 One-Time Programmable (OTP) ROM cell cell word enable data line data line 1 1 blown fuse fuse a Digital Design Copyright © 2006 Frank Vahid 76 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 da 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 eletrons aprisionados escapem da região de gate • Requer que o encapsulamento tenha uma janela para expor o CI a luz UV. c ell c ell word enable data line data line e Ð e Ð trapped electrons 0 1 floating-gate transistor Digital Design Copyright © 2006 Frank Vahid 77 Tipos de ROM • Electronically-Erasable Programmable ROM (EEPROM) – Similar à 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 necessitam luz UV – Apagamento realizado por palavras (uma por vez) • Flash memory – Assim como EEPROMs, entretanto várias palavras podem ser apagadas simultaneamente – Tornaram-se muito usadas (a partir da década de 90) • Ambas são programáveis em funcionamento – Podem ser programados com os novos bits a serem armazenados, mesmo quando estiverem integrados ao sistema e até mesmo com o sistema em pleno funcionamento. 32 10 data addr en write busy 1024x32 EEPROM Digital Design Copyright © 2006 Frank Vahid 78 Exemplo do uso de ROMs: Boneca Falante • 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 (v=1), em seguida ler as palavras armazenadas na região de memória de 0 a 4095 da ROM, escrevendo cada uma para o conversor D/A 4096x16 ROM processor Ra 16 Ren da_ld digital-to- analog converter v speaker vibration sensor “Hello there!” “Hello there!” audio divided into 4096 samples, stored in ROM “Hello there!” a 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 v=1, e em seguida conte de 0 a 4095 com um registrador a – Para cada a, leia da ROM, escreva em um conversor D/A 4096x16 ROM processor Ra 16 Ren da_ld digital-to- analog converter v S a=0 da_ld=1 a=a+1 a=4095 a<4095 T U R a=a R en=1 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 rec=1, grave o som digitalizado em 0 até 4095 – Quando play=1, reproduza o som armazenado para um conversor D/A • 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 analog-to- digital converter digital-to- analog converter ad_ld da_ld Rrw Ren er bu Ra 12 16 processor ad_buf busy 4096x16 Flash rec play record microphone speaker “We’re 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 rec=1, comece a apagar a memória flash fazendo com que er=1 – Espere pela memória flash terminar o processo de apagamento esperando por bu=0 – Faça um laço que leia do registrador local “a” da posição de memória 0 a 4095, lendo do conversor A/D e escrevendo na flash em cada endereço de “a” analog-to- digital converter digital-to- analog converter ad_ld da_ld Rrw Ren er bu Ra 12 16 processor ad_buf 4096x16 Flash rec play record microphone speaker T er=0 bu bu’ er=1 r ec S Local register: a (13 bits) a=4096 a<4096 U V ad_ld=1 ad_buf=1 Ra=a Rrw=1 Ren=1 a=a+1 a=0 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 (in- system 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 comportam-se como ROMs – RAMs não voláteis: Podem manter seus dados sem a necessidade de energia • One type: Built-in 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 (first-in-first-out) 5.7 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 : rear) e ponteiro para o início (f : front) – Inicialmente ambos 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 • No exemplo mostrado (fila com endereços de 0 a 7), se r ou f chegarem a 7, o próximo valor após o incremento deverá ser igual a 0: – Conceito de Fila circular! 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çarem 7, o valor após o próximo 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 • Condição f = r – Fila vazia – sem nenhum item • Nenhuma operação de pop será permitida até que ocorra alguma operação de push. • Condição f = r – Ambas condições são identificadas como f = r • Para detectar se f = r representa uma ou outra condição acima, necessita-se 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 r r 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! Digital Design Copyright © 2006 Frank Vahid 87 Aplicações onde se usam 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, comprima-o e armazene-o. • 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 como (r) e (f) se movem. – (r) e (f) circulam pelos endereços de 7 a 0 • Observe: – A operação de pop não remove o dado da fila, mas tal dado não fica mais acessível (virou lixo)! – Fazendo um push em uma fila cheia provoca uma mensagem de erro – Um erro também acontece quando se faz um pop em uma fila vazia Digital Design Copyright © 2006 Frank Vahid 89 Hierarquia – Um conceito importante de Projeto de Sistemas Digitais • Hierarquia – 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 • Hierarquia nos permite gerenciar a complexidade do projeto – Para ir de transistores a 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 5.8 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 Hierarquia e Abstração • Abstração – Hierarquia muitas vezes não envolve apenas agrupar itens em um novo item, mas também associar um comportamento de nível mais elevado a essa coisa maior. Isso é o conceito de abstração • i.e.: um somador de 8 bits possui 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 c o 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 Sistemas Digitais é formar componentes maiores a partir de componentes menores usados como base – Portas lógicas: Suponha que você tenha um número muito grande de portas lógicas AND de 3 entradas, mas necessita 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 de cima ou de baixo • s1s0 seleciona uma entrada qualquer do MUX 4x1 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 • Fazer 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 data(31..0) 1024x8 ROM addr en data 1024x8 ROM addr en data 1024x8 ROM addr en data 10 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é 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 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 a10 a9 a8 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 a9..a0 a10 d0 d1 en addr 1x2 dcd i0 e
Send your question to AI and receive an answer instantly
Recommended for you
Preview text
Digital Design Copyright © 2006 Frank Vahid 1 Sistemas Digitais Slides to accompany the textbook Digital Design, First Edition, by Frank Vahid, John Wiley and Sons Publishers, 2007. http://www.ddvahid.com Copyright © 2007 Frank Vahid Instructors of courses requiring Vahid's Digital Design textbook (published by John Wiley and Sons) have permission to modify and use these slides for customary course-related activities, subject to keeping this copyright notice in place and unmodified. These slides may be posted as unanimated pdf versions on publicly-accessible course websites.. PowerPoint source (or pdf with animations) may not be posted to publicly-accessible 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 http://www.ddvahid.com for information. Material traduzido e adaptado para o Português pelo Prof. Ricardo O. Duarte e revisado pelos Prof. Luciano Pimenta e Hermes Magalhães DELT – EEUFMG (Rev. 4c) Capítulo 5: Projeto RTL (Register-Transfer Level) Digital Design Copyright © 2006 Frank Vahid 2 • Capítulo 3: Controladores – Controla entradas/saí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 – Entradas/Saídas de dados: Múltiplos bits representados em um única entidade. – Componentes vistos: Registradores, Somadores, ALUs, Comparadores, Bancos de Registradores, etc. • Nesse capítulo: processadores customizados – Processador = Controlador e componentes de caminho de dados trabalhando juntos para implementar algoritmos. 5.1 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 Introdução 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 finitos 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 5.2 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 8-bits, representando o valor da moeda depositada (amount). – s: Uma entrada de 8-bits, representando o preço do refrigerante (soda). – d: Saída de 1 bit, o processador faz com que d = 1 (dispenser) quando o valor total de moedas depositadas é igual ou maior que o custo do refrigerante. 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 a s c d 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 d=0, tot=0 • 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 Disp(ense) • Estado Disp: Faz com que d=1 (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 I nit d=0 tot=0 c’*(tot<s) d=1 c tot=tot+a 8 8 a s c d Soda dispenser processor c’*(tot<s)’ 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 8-bits para comparar s e tot • Precisaremos de um somador de 8-bits para realizar tot = tot + a • Conectar os componentes • Criar entradas/saídas de controle e dar nomes pertinentes a elas ld clr tot 8-bit < 8-bit adder 8 8 8 8 s a Datapath tot_ld tot_clr tot_lt_s I nputs : c (bit), a(8 bits) , s (8 bits) O utputs : d (bit) L ocal r e g is t ers : t ot (8 bits) W ait A dd Disp I nit d=0 t ot=0 c ‘ ( t ot<s) ‘ c ‘ * ( t ot<s) d=1 c t ot= t ot+a Digital Design Copyright © 2006 Frank Vahid 8 Primeiro Exemplo: Passo 3 – Conectar o Caminho de Dados à 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 tot_lt_s • 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 tot_lt_s tot_clr tot_ld Controller Datapath s c d a 8 8 ld clr t ot 8-bit < 8-bit adder 8 8 8 8 s a D a tap a th t ot_ld t ot_clr t ot_lt_s 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 ativa/desativa os sinais de controle para todas as operações e condições de teste realizadas pelo caminho de dados. tot_lt_s tot_clr tot_ld Controller Datapath s c d a 8 8 ld clr tpt 8-bit < 8-bit adder 8 8 8 8 s a Datapath tot_ld tot_clr tot_lt_s Inputs: : c , tot_lt_s (bit) Outputs: d , tot_ld , tot_clr (bit) W ait Disp I nit d=0 tot_clr=1 c ’ * tot_lt_s d=1 c tot_ld=1 c d tot_ld tot_clr tot_lt_s 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 tot_lt_s tot_ld tot_clr Init Wait Add Disp Entradas: : c , c, tot_lt_s (bit) Saídas: d , tot_ld , tot_clr (bit) W ait Disp I nit d=0 tot_clr=1 c ’ * tot_lt_s d=1 c tot_ld=1 c d tot_ld tot_clr tot_lt_s 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 de baixo nível porque: • Entradas de dados a e s possuem mais de 1 bit • Necessidade de registradores internos: tot • Operações com os dados: tot=0, tot<s, tot=tot+a. – FSMs de alto nível: • Tipos de dados variados • Presença de registradores • Equações aritméticas e condições de transição de alto nível. Entradas: : c (bit), a (8 bits) , s (8 bits) Saídas : d (bit) Registradores : t ot (8 bits) W ait Disp I nit d=0 t ot=0 c’ ( t ot<s ) d=1 c t ot= t ot+a c’ ( t ot<s )’ Digital Design Copyright © 2006 Frank Vahid 12 Exemplo de Passo 1: Medidor de distâncias baseado em LASER • Exemplo de como criar uma máquina de estado de alto nível para descrever o comportamento do processador desejado • Medidor de distâncias baseado em LASER (Light Amplification by Stimulated Emission of Radiation) – LASER pulsado: mede o período de tempo T para detectar a reflexão. – A luz do LASER “viaja” à velocidade da luz, 3*108 m/s – Logo a distância é calculada por: D = T (seg) * 3*108 (m/s) / 2 Objeto de interesse D 2D = T sec * 3*108 m/sec sensor laser T (em segundos) Digital Design Copyright © 2006 Frank Vahid 13 Exemplo de Passo 1: Medidor de distâncias baseado em LASER • Entradas/Saí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 16-bits, exibe no display a distância medida sensor laser T (em segundos) LASER-based distance measurer 16 Vem do botão Vai p/ o display S L D B Vai p/ feixe LASER Vem do sensor de luz Digital Design Copyright © 2006 Frank Vahid 14 Exemplo de Passo 1: Medidor de distâncias baseado em 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 (L=0) – Inicializar a distância medida com 0 (D=0) 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) 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 em LASER • Adicione um outro estado, chame-o 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 em LASER • Adicione um novo estado S2 responsável por ligar o LASER (L=1) • Depois desligue o LASER em um novo estado S3 (L=0) 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 até 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 em 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 LASER Do sensor Digital Design Copyright © 2006 Frank Vahid 18 Exemplo de Passo 1: Medidor de distâncias baseado em LASER • Uma vez detectada a reflexão (S), vá para um novo estado S4 – Calcule a distância – Assumindo que a frequência do clock é igual a 3x108, Dctr vai armazenar o total da distância em metros, logo é só fazer: D=Dctr/2 • 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 L=0 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 sub-passos subsequentes: – (a) Faça com que entradas/saídas de dados da FSM sejam as entradas/saí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 em LASER (a) Faça com que as entradas/saídas de dados sejam as entradas/saí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, conectando-os de forma apropriada D a tap a th D r eg_clr D c tr_clr D c tr_c n t D r eg_ld Registradores: Dctr (16 bits) S0 S1 S2 S3 L = 0 D = 0 L = 1 L=0 Dctr = Dctr + 1 Dctr = 0 B ‘ S ‘ B S D = Dctr / 2 (calculate D) S4 load Q I D r eg: 16-bit r e g is t er Q D c t r : 16-bit u p - c ou n t er 16 D clear clear c ou n t 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 em LASER (c) (continuação) Examine cada estado e cada transição de estados e instancie componentes adequados ao caminho de dados, conectando-os de forma apropriada clear c ou n t clear load Q Q I D c t r : 16-bit u p - c ou n t er D r eg: 16-bit r e g is t er 16 D D a tap a th D r eg_clr D c tr_clr D c tr_c n t D r eg_ld 16 16 >>1 a Registradores: Dctr (16 bits) S0 S1 S2 S3 L = 0 D = 0 L = 1 L=0 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 (para compartilhar o componente) T0 T1 R = E + F R = R + G E , F , G, R (16 bits) Registradores : ( a ) a E F G A B + R ( b ) E F G A B + R ( c ) E F G A B + R SelA_is_R SelB_is_F 2 1 2 1 ( d ) × × 0 0 1 1 Digital Design Copyright © 2006 Frank Vahid 23 Passo 3: Conectando o Caminho de Dados à Controladora • Exemplo do medidor de distâncias a LASER • Para esse caso devem- se conectar diretamente os sinais entre o caminho de dados e a controladora 300 M H z Clock D B L S 16 Para o display Do botão Controller Para o LASER Do sensor Datapath Dreg_clr Dreg_ld Dctr_clr Dctr_cnt clear c ou n t clear load Q Q I D c t r : 16-bit u p - c ou n t er D r eg: 16-bit r e g is t er 16 D D a tap a th D r eg_clr D c tr_clr D c tr_c n t D r eg_ld 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 – Entradas/Saídas, todos os bits. – Substitua as operações com os dados por operações com os bits usando o caminho de dados 300 M H z Clock D B L S 16 t o displ a y f r om but t on C o n t r oller t o laser f r om sensor D a tap a th D r eg_clr D r eg_ld D c tr_clr D c tr_c n t Entradas: B, S Saídas: L, Dreg_clr, Dreg_ld, Dctr_clr, Dctr_cnt 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 L=0 Dctr = Dctr + 1 Dctr = 0 B’ S’ B S D = Dctr / 2 (cálculo de D) S4 a Dreg_clr = 1 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 0 (laser off) (clear D reg) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 1 Dctr_cnt = 0 (clear count) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 0 (laser on) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 1 (laser off) (count up) Dreg_clr = 0 Dreg_ld = 1 Dctr_clr = 0 Dctr_cnt = 0 (load D reg with Dctr/2) (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 Dreg_clr = 1 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 0 (laser off) (clear D reg) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 1 Dctr_cnt = 0 (clear count) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 0 (laser on) Dreg_clr = 0 Dreg_ld = 0 Dctr_clr = 0 Dctr_cnt = 1 (laser off) (count up) Dreg_clr = 0 Dreg_ld = 1 Dctr_clr = 0 Dctr_cnt = 0 (load D reg with Dctr/2) (stop counting) S0 S1 S2 S3 L = 0 L = 1 L = 0 B’ S’ B S (laser on) S4 Inputs: B, S Outputs: L, Dreg_clr, Dreg_ld, Dctr_clr, Dctr_cnt Dreg_clr = 1 (laser off) (clear D reg) Dctr_clr = 1 (clear count) Dctr_cnt = 1 (laser off) (count up) Dreg_ld = 1 Dctr_cnt = 0 (load D reg with Dctr/2) (stop counting) Digital Design Copyright © 2006 Frank Vahid 26 Passo 4 • Implemente a FSM com um registrador de estados e circuito combinacional (Cap.3) 300 MHz Clock D B L S 16 to display from button Controller to laser from sensor Datapath Dreg_clr S0 S1 S2 S3 L = 0 L = 1 L = 0 B’ S’ B S (laser on) S4 Inputs: B, S Outputs: L, Dreg_clr, Dreg_ld, Dctr_clr, Dctr_cnt Dreg_clr = 1 (laser off) (clear D reg) Dctr_clr = 1 (clear count) Dctr_cnt = 1 (laser off) (count up) Dreg_ld = 1 Dctr_cnt = 0 (load D reg with Dctr/2) (stop counting) Dreg_ld Dctr_clr Dctr_cnt clear c ou n t clear load Q Q I D c t r : 16-bit u p - c ou n t er D r eg: 16-bit r e g is t er 16 D D a tap a th D r eg_clr D c tr_clr D c tr_c n t D r eg_ld 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 interface) – CPU principal (Master processor) pode ler um registrador de qualquer periférico (Per0, Per1, …) • Considere um registrador por perif. • Cada registrador possui um único endereço de 4 bits – Considere: rd=1, A=endereço no barramento (escolhe o periférico) – O periférico endereçado dispõe os dados armazenados em seu registrador no barramento 32 bits (D) • O endereço do periférico é “fixo” e atribuído a ele nas entradas Faddr (vindas de chaves DIP ou outros registradores). 5.3 32 4 A r d D Per0 Per1 Per15 Master processor Faddr 4 A D r d Interface de barramento Parte principal Periférico Q 32 para/de 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 (A=Faddr) e que rd=1 – Estado SendData • Faz com que a saída de Q1 ocupe o barramento D, espera por rd=0 (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 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) Entradas/saí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 Q1_ld ld Q1 F Q addr 4 4 32 A D_en A_eq_ F addr = (4-bit) 32 32 D a Digital Design Copyright © 2006 Frank Vahid 31 Exemplo RTL: Interface de barramento • Passo 3: Conecte o caminho de dados à 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, A_eq_Faddr (bit) Saídas: Q1_ld, D_en (bit) W ait M y A dd r ess r d ‘ r d S endD a ta D_en = 0 Q1_ld = 1 D_en = 1 Q1_ld = 0 A_eq_ F addr and r d ( A_eq_ F addr and r d) ‘ Caminho de dados Interface de barramento Q1_ld ld Q1 Faddr Q 4 4 32 A D_en A_eq_Faddr = (4-bit) 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 é semelhante 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 0.01 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 256-bytes – 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 representados 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 go=1, 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 256-bytes Array de 256-bytes 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 (i>=256) • S3: Adiciona as diferenças em sum, incrementa o índice (i) • S4: Escreve no registrador sad_reg B A go SAD sad Entradas: A, B (memória de 256 bytes); go (bit) Saída: sad (32 bits) Registradores: sum, sad_reg (32 bits); i (9 bits) !go S0 go S1 sum = 0 i = 0 S3 sum=sum+abs(A[i]-B[i]) i=i+1 S4 sad_ r eg = sum S2 i<256 (i<256)’ 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 i_lt_256 i_inc i_clr sum_ld sum_clr sad_reg_ld Datapath sum sad_reg sad AB_addr A_data B_data <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, sad_reg (32 bits); i (9 bits) !go S0 go S1 sum = 0 i = 0 S3 sum=sum+abs(A[i]-B[i]) i=i+1 S4 sad_ reg=sum S2 i<256 (i<256)’ a Digital Design Copyright © 2006 Frank Vahid 37 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 S0 S1 S2 S3 S4 go’ go go AB_ r d sum=0 i=0 i<256 sum=sum+abs(A[i]-B[i]) i=i+1 sad_reg=sum Controladora i_lt_256 i_inc i_clr sum_ld sum_clr sad_reg_ld sum sad_reg sad AB_addr A_data B_data <256 9 32 8 8 8 8 32 32 32 i – + abs a (i<256)’ sum_ld=1; AB_rd=1 sad_reg_ld=1 i_inc=1 i_lt_256 i_clr=1 sum_clr=1 i_lt_256’ Digital Design Copyright © 2006 Frank Vahid 38 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 i’s 512 períodos de clock – Software: Loop (for i = 1 to 256), mas para cada i, devemos mover dados da memória para registradores, subtraí-los, 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 256*6 = 1536 períodos – Solução por hardware é no mínimo 3 vezes (300%) mais rápida – Mais à frente, veremos como construir . circuito SAD que é ainda mais rápido S3 sum=sum+abs(A[i]-B[i]) i=i+1 S2 i<256 (i<256)’ Digital Design Copyright © 2006 Frank Vahid 39 Armadilhas em Projetos no nível RTL e Boas práticas de projeto RTL • Armadilhas comuns: assumir que a atualização do registrador é realizada no estado em 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: R=99 e Q=R acontecem simultaneamente • Estado B: R não atualizado com R+1 até o próximo evento de clock, simultaneamente com o registrador de estados sendo atualizado Digital Design Copyright © 2006 Frank Vahid 40 Armadilhas em Projetos no nível RTL e Boas práticas de projeto RTL • Soluções – Ler do registrador no próximo estado (Q=R) – 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 41 Armadilhas em Projetos no nível 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 T S P=P+B P=A ( a ) Entradas: A, B (8 bits) Saídas: P (8 bits) Entradas: A, B (8 bits) Saídas: P (8 bits) Registradores: R (8 bits) T S P=R+B R=A P=A ( b ) Digital Design Copyright © 2006 Frank Vahid 42 Armadilhas em Projetos no nível 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. + R B P (a) + R Preg B P (b) 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 com predomínio do Controle e Projetos RTL com predomínio dos Dados – Projetos RTL predominantes em Controle – A controladora contém a parte mais complexa do sistema. – Projetos RTL predominantes 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 – Projeto RTL baseado em Controle – Interface de barramento, circuito SAD – misto de controle e dados. – Apresentaremos um exemplo de Projeto RTL baseado predominan- . temente em 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 está provavelmente errada! • Um ruído qualquer. – 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 mais suavizada 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 – y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) • Conhecido como FIR de 2a ordem • Filtros FIR de ordens maiores são mais úteis. • FIR geral – O usuário define um conjunto de coeficientes 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 y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) 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 x(k) para armazenar os valores passados de x 12 12 y clk x Filtro digital y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) 180 180 181 180 181 240 Suponha que a sequência 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 c*x y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) x t0 x t1 x t2 x( t -2) x( t -1) x(t) 3-tap 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 y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) a x t0 x t1 x t2 x( t -2) x( t -1) x(t) 3-tap 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 circuito para permitir o carregamento dos coeficientes nos registradores c0, c1 e c2 y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) a 12 12 Y clk X digital filter xt0 xt1 xt2 x(t-2) x(t-1) x(t) 3-tap 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 atrasos-porta e um multiplicador 20 atrasos-porta • O caminho mais crítico (mais longo) vai através de 1 multiplicador e 2 somadores – 20 + 2 + 2 = 24-atrasos-porta • Um filtro de ordem 99 (100-tap 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 atrasos-porta. – Software • 100-tap filter: 100 multiplicações, 100 adições. Digamos 2 instruções por multiplicação, 2 por adição. Digamos 10 atrasos-porta por instrução. • (100*2 + 100*2)*10 = 4000 atrasos-porta – A versão em hardware (circuito) é mais do que 100 vezes mais rápida do que a versão software (10000%). y(t) = c0*x(t) + c1*x(t-1) + c2*x(t-2) Digital Design Copyright © 2006 Frank Vahid 51 Determinando a Frequência do Clock • Projetistas de circuitos digitais frequentemente desejam circuitos com a mais alta performance – Significa que desejam circuitos com clocks funcionando na mais alta frequência possível • A frequência fica limitada pelo mais longo atraso de um registrador a outro registrador – Conhecido como caminho crítico – Se o clock funcionar numa frequência 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 5.4 a + b c 2 ns del a y clk • Estamos aqui ignorando atrasos inerentes aos fios e tempos de setup e hold dos registradores somente para efeito de simplificação do problema Digital Design Copyright © 2006 Frank Vahid 52 Caminho Crítico • O exemplo ao lado mostra 4 caminhos: – De a até c: 2 ns – De a até d: 7 ns – De b até d via somador e multiplicador: 7 ns – De b até d via multiplicador: 5 ns • O caminho mais longo é portanto 7 ns • E a maior frequência de clock permitida (em teoria): – 1 / 7 ns = 142 MHz + * c d 7 ns 7 ns 5 ns delay 2 ns delay Max (2,7,7,5) = 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: 0.5 + 2 + 0.5 = 3 ns • Compromisso: – 1980s/1990s: 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! • Deve-se considerar também o tempo de setup e hold dos registradores no cálculo a + b c 2 ns 3 ns 3 ns 0.5 ns 0.5 ns 0.5 ns clk 3 ns • 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 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 tot_lt_s clk n1 d tot_ld tot_lt_s t ot_clr s0 s1 n0 State register s 8 8 8 8 a ld clr tot Datapath 8-bit < 8-bit 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! 5.5 !go S0 go S1 sum = 0 i = 0 S3 sum=sum+abs(A[i]-B[i]) i=i+1 S4 sad_ r eg = sum S2 i<256 (i<256)’ a i n t SAD (byte A[256], byte B[256]) // not quite C syntax { uint sum; short uint I; sum = 0; i = 0; while (i < 256) { sum = sum + abs(A[i] – B[i]); 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 2 passos a seguir: – 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 • Estruturas de atribuição – São convertidas em um estado com uma atribuição • Estrutura If-then – 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 • Converta cada construção em C nos estados equivalentes e transições Digital Design Copyright © 2006 Frank Vahid 58 Convertendo códigos em C para FSM de alto nível • If-then-else – 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 o estado dentro do loop se verdadeiro, e transitando de volta à 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 uma estrutura if-then-else em estados (b) – Em seguida convertemos estruturas de atribuição em estados (c) (end) (c) X>Y !(X>Y) (end) (then stmts) (else stmts) (b) X>Y !(X>Y) Max=X Max=Y (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 passos de projeto RTL para gerar o circuito sum = sum + abs(A[i] - B[i]); (a) Inputs: byte A[256], B[256] 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 sum=0 i=0 (g) !go go sum=0 i=0 !(i<256) i<256 sad = sum sum=sum + abs i = i + 1 sum=0 i=0 (b) !(!go) !go (c) !go go (e) !go go sum=0 i=0 while stmts !(i<256) i<256 sad = sum (f) !go go sum=0 i=0 !(i<256) i<256 sum=sum + 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 N bits cada • Existe uma variedade de tipos de memória! 5.6 N-bits Largura: Memória de M × N 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 Banco de Registradores (Register File) • RAMs usualmente possuem uma única porta; Register files possuem usualmente 2 ou mais. – RAM x Banco de Registrdores (Register Files) • RAM são tipicamente maiores que 512 ou 1024 palavras • RAM armazenam bits de forma mais eficiente do que flip-flops. • RAM são implementadas em chips com um “fator de forma” (form factor) próximo de um quadrado 32 10 data addr r w en 1024 × 32 R A M 32 4 32 4 W_data W_addr W_en R_data R_addr R_en 16 × 32 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 r w en 1024x32 RAM addr0 addr1 addr(A-1) clk en r w A = log2M to all cells wdata(N-1) rdata(N-1) wdata(N-2) rdata(N-2) wdata0 rdata0 bit storage block (aka “cell”) w o r d word RAM cell word enable word enable r w data cell data a0 a1 d0 d1 d(M-1) a(A-1) 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 (rw = “write”) • 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 a SRAM cell data data’ d’ d cell 0 word enable 1 1 1 0 0 32 10 data addr r w 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 (rw=“read”) • Quando a entrada rw pede leitura, o circuito da memória RAM faz com que ambas as entradas data e data’ fiquem em 1 (pré-carga ou pre-charge) e liga o word enable. • Um dos lados da célula estará em 0, “carregando” um pouco mais o circuito desse lado, fazendo diminuir a tensão (neste exemplo: data’) para um valor um pouco menor que o valor de tensão referente ao valor lógico do outro lado (neste exemplo: lado data) SRAM cell 32 10 data addr r w en 1024x32 RAM data data’ d 1 1 1 word enable To sense amplifiers 1 0 1 <1 a • Amplificadores de tensão conectados em data e data’ detectam qual lado foi mais carregado que o outro, completando a leitura. 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 DRAM cell 32 10 data addr r w en 1024x32 RAM word enable data c ell ( a ) ( b ) data enable d discharges d capacitor slowly discharging – O circuito da DRAM deve fazer um “refresh” (automático) do dado na memória, periodicamente Digital Design Copyright © 2006 Frank Vahid 67 Comparando Tipos de Memória • Banco de registradores (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 de tamanho intermediário e usadas mais frequentemente 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 em uma RAM • Escrevendo – Coloque o endereço no barramento addr, dado no barramento data, faça com que rw=1 e en=1 – 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 • Lendo – Coloque o endereço no barramento addr e habilite a entrada en=1, não coloque nada no barramento data (Z), pois a RAM irá colocar, faça rw=0 (= ler). clk addr data r w en 1 2 9 9 13 999 Z 500 500 3 1 means write RAM[9] now equals 500 RAM[13] now equals 999 ( b ) valid valid Z 500 access time setup time hold time setup time clk addr data r w – O dado solicitado aparecerá no barramento data e você poderá lê- lo, respeitando o tempo de acesso ou access time (tempo de estabilização do dado no barramento). Digital Design Copyright © 2006 Frank Vahid 69 Exemplo de uso de RAM: Gravador de Sons Digital • Comportamento – Gravar: Digitalizar o som, armazená-lo como uma série de 4096 valores digitais de 12-bits na RAM • Usaremos uma RAM de 4096x16 (RAMs de palavras de 12-bits 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 A/D, armazenar os valores lidos em palavras sucessivas da RAM wire speaker microphone wire analog-to- digital converter digital-to- analog converter ad_ld da_ld Ra Rrw Ren 12 16 processor ad_buf data addr rw en 4096×16 RAM – Para reproduzir a música, o processador deve ler palavras RAM sucessivamente e habilitar o conversor D/A. 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: • “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 A/D » ad_ld=1, ad_buf=1 – Escreva no endereço “a” da RAM » Ra=a, Rrw=1, Ren=1 ad_ld=1 ad_buf=1 Ra=a Rrw=1 Ren=1 S a=0 a=a+1 a=4095 a<4095 T U Local register: a (12 bits) analog-to- digital converter digital-to- analog converter ad_ld da_ld Ra Rw Ren 12 16 processor ad_buf 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 D/A • Obs.: Deverá escrever no D/A 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 da_ld=1 ad_buf=0 Ra=a Rrw=0 Ren=1 V a=0 a=a+1 a=4095 a<4095 W X Local register: a (12 bits) Play behavior data bus analog-to- digital converter digital-to- analog converter ad_ld da_ld Ra Rw Ren 12 16 processor ad_buf 4096x16 RAM Digital Design Copyright © 2006 Frank Vahid 72 ROM = Read-Only 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 às 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 vão mudar com frequência) – Por exemplo, uma tabela de conversão de Celsius para Fahrenheit em um termômetro digital 32 10 data addr r w en 1024 × 32 R A M RAM block symbol 32 10 data addr en 1024x32 ROM ROM block symbol Digital Design Copyright © 2006 Frank Vahid 73 ROM - Read-Only Memory • Estrutura lógica interna semelhante à memória RAM, sem as linhas de entrada de dados 32 10 data addr en 1024x32 ROM ROM block symbol ROM cell addr0 addr1 addr(A-1) clk en Let A = log2M a0 a1 d0 d1 d(M-1) a(A-1) e AxM decoder word enable rdata(N-1) rdata(N-2) rdata0 bit storage block (aka “cell”) w o r d word enable word enable data data Digital Design Copyright © 2006 Frank Vahid 74 Tipos de ROM • Se uma ROM pode ser somente lida, 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 • Hardwired = conectado por fio cell cell word enable data line data line 0 1 Digital Design Copyright © 2006 Frank Vahid 75 Tipos de ROM • ROMs Programáveis à base de Fusíveis (Fuse-Based PROMs) – Cada célula possui um fusível – Um dispositivo apropriado, conhecido como programador, queima alguns fusíveis (aplicando uma tensão acima da tensão 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 One-Time Programmable (OTP) ROM cell cell word enable data line data line 1 1 blown fuse fuse a Digital Design Copyright © 2006 Frank Vahid 76 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 da 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 eletrons aprisionados escapem da região de gate • Requer que o encapsulamento tenha uma janela para expor o CI a luz UV. c ell c ell word enable data line data line e Ð e Ð trapped electrons 0 1 floating-gate transistor Digital Design Copyright © 2006 Frank Vahid 77 Tipos de ROM • Electronically-Erasable Programmable ROM (EEPROM) – Similar à 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 necessitam luz UV – Apagamento realizado por palavras (uma por vez) • Flash memory – Assim como EEPROMs, entretanto várias palavras podem ser apagadas simultaneamente – Tornaram-se muito usadas (a partir da década de 90) • Ambas são programáveis em funcionamento – Podem ser programados com os novos bits a serem armazenados, mesmo quando estiverem integrados ao sistema e até mesmo com o sistema em pleno funcionamento. 32 10 data addr en write busy 1024x32 EEPROM Digital Design Copyright © 2006 Frank Vahid 78 Exemplo do uso de ROMs: Boneca Falante • 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 (v=1), em seguida ler as palavras armazenadas na região de memória de 0 a 4095 da ROM, escrevendo cada uma para o conversor D/A 4096x16 ROM processor Ra 16 Ren da_ld digital-to- analog converter v speaker vibration sensor “Hello there!” “Hello there!” audio divided into 4096 samples, stored in ROM “Hello there!” a 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 v=1, e em seguida conte de 0 a 4095 com um registrador a – Para cada a, leia da ROM, escreva em um conversor D/A 4096x16 ROM processor Ra 16 Ren da_ld digital-to- analog converter v S a=0 da_ld=1 a=a+1 a=4095 a<4095 T U R a=a R en=1 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 rec=1, grave o som digitalizado em 0 até 4095 – Quando play=1, reproduza o som armazenado para um conversor D/A • 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 analog-to- digital converter digital-to- analog converter ad_ld da_ld Rrw Ren er bu Ra 12 16 processor ad_buf busy 4096x16 Flash rec play record microphone speaker “We’re 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 rec=1, comece a apagar a memória flash fazendo com que er=1 – Espere pela memória flash terminar o processo de apagamento esperando por bu=0 – Faça um laço que leia do registrador local “a” da posição de memória 0 a 4095, lendo do conversor A/D e escrevendo na flash em cada endereço de “a” analog-to- digital converter digital-to- analog converter ad_ld da_ld Rrw Ren er bu Ra 12 16 processor ad_buf 4096x16 Flash rec play record microphone speaker T er=0 bu bu’ er=1 r ec S Local register: a (13 bits) a=4096 a<4096 U V ad_ld=1 ad_buf=1 Ra=a Rrw=1 Ren=1 a=a+1 a=0 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 (in- system 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 comportam-se como ROMs – RAMs não voláteis: Podem manter seus dados sem a necessidade de energia • One type: Built-in 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 (first-in-first-out) 5.7 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 : rear) e ponteiro para o início (f : front) – Inicialmente ambos 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 • No exemplo mostrado (fila com endereços de 0 a 7), se r ou f chegarem a 7, o próximo valor após o incremento deverá ser igual a 0: – Conceito de Fila circular! 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çarem 7, o valor após o próximo 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 • Condição f = r – Fila vazia – sem nenhum item • Nenhuma operação de pop será permitida até que ocorra alguma operação de push. • Condição f = r – Ambas condições são identificadas como f = r • Para detectar se f = r representa uma ou outra condição acima, necessita-se 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 r r 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! Digital Design Copyright © 2006 Frank Vahid 87 Aplicações onde se usam 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, comprima-o e armazene-o. • 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 como (r) e (f) se movem. – (r) e (f) circulam pelos endereços de 7 a 0 • Observe: – A operação de pop não remove o dado da fila, mas tal dado não fica mais acessível (virou lixo)! – Fazendo um push em uma fila cheia provoca uma mensagem de erro – Um erro também acontece quando se faz um pop em uma fila vazia Digital Design Copyright © 2006 Frank Vahid 89 Hierarquia – Um conceito importante de Projeto de Sistemas Digitais • Hierarquia – 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 • Hierarquia nos permite gerenciar a complexidade do projeto – Para ir de transistores a 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 5.8 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 Hierarquia e Abstração • Abstração – Hierarquia muitas vezes não envolve apenas agrupar itens em um novo item, mas também associar um comportamento de nível mais elevado a essa coisa maior. Isso é o conceito de abstração • i.e.: um somador de 8 bits possui 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 c o 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 Sistemas Digitais é formar componentes maiores a partir de componentes menores usados como base – Portas lógicas: Suponha que você tenha um número muito grande de portas lógicas AND de 3 entradas, mas necessita 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 de cima ou de baixo • s1s0 seleciona uma entrada qualquer do MUX 4x1 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 • Fazer 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 data(31..0) 1024x8 ROM addr en data 1024x8 ROM addr en data 1024x8 ROM addr en data 10 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é 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 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 a10 a9 a8 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 a9..a0 a10 d0 d1 en addr 1x2 dcd i0 e