Universidade Federal de Santa atarina entro Tecnológico epartamento de Informática e Estatística urso de Graduação em iências da omputação Aula 7-P escrição em VHL, síntese e simulação de registradores de deslocamento e contadores. Experimento com a placa E2 da Altera. guntzel@inf.ufsc.br Est. Vinícius Livramento vini@inf.ufsc.br www.inf.ufsc.br/~guntzel/ine546/ine546.html
Registradores de eslocamento e ontadores Registrador-eslocador Suponha que se deseje descrever em VHL um registrador capaz de realizar as operações de carga paralela e deslocamento (de bit) para a direita, conforme descrito na tabela de operações abaixo. R sel Operação omentário >> desl. p/ direita R arrega R sel ck shiftreg Observação: a cada borda de relógio ativa, este registrador realiza uma das duas operações descritas (carga de um valor novo a partir da entrada R ou deslocamento de bit para a direita de seu conteúdo). Portanto, não está prevista a operação mantém conteúdo. Slide 7P.2
Registradores de eslocamento e ontadores Registrador-eslocador O registrador-deslocamento tem a seguinte estrutura. R3 R2 R R serial 3 2 sel K 3 Uma alternativa para se descrever o registrador-deslocador especificado na transparência anterior é utilizar hierarquia. Neste caso, o elemento básico desta estrutura pode ser o seguinte 2 circuito. hamemo-lo de muxffd. sel clk Slide 7P.3
Registradores de eslocamento e ontadores Registrador-eslocador Este circuito, por sua vez, poderia ser descrito de modo hierárquico ( mux 2: + flip-flop ) ou como um único arquivo VHL (descrição sel comportamental). clk A segunda descrição é preferível, por ser mais fácil de compreender, ser derivável da descrição convencional de flip-flops e de envolver menos código. Hierarquia de arquivos VHL: Projeto shiftreg shiftreg muxffd Slide 7P.4
Registradores de eslocamento e ontadores Registrador-eslocador (componente básico) LIBRARY ieee; USE ieee.std_logic_64.all; muxffd ENTITY muxffd IS PORT (,, sel, clk: IN ST_LOGI; : OUT ST_LOGI ); EN muxffd; ARHITETURE comportamento OF muxffd IS PROESS (clk) sel clk IF clk EVENT AN clk = THEN IF sel = THEN <= ; ELSE <= ; EN IF; EN PROESS; EN comportamento; Slide 7P.5
Registradores de eslocamento e ontadores Registrador-eslocador (de 4 bits, hierárquico) R3 R2 R R LIBRARY ieee; USE ieee.std_logic_64.all; serial 3 2 sel K ENTITY shiftreg IS 3 2 PORT ( R : IN ST_LOGI_VETOR(3 OWNTO ); carga, serial, clk : IN ST_LOGI; : BUFFER ST_LOGI_VETOR(3 OWNTO ) ); EN shiftreg ; Por que BUFFER? ARHITETURE estrutura OF shiftreg IS OMPONENT muxffd PORT (,, sel, clk : IN ST_LOGI; : OUT ST_LOGI ); EN OMPONENT; estagio3: muxffd PORT MAP ( serial, R(3), carga, clk, (3) ); estagio2: muxffd PORT MAP ( (3), R(2), carga, clk, (2) ); estagio: muxffd PORT MAP ( (2), R(), carga, clk, () ); estagio: muxffd PORT MAP ( (), R(), carga, clk, () ); EN estrutura; Slide 7P.6
Registradores de eslocamento e ontadores Modos Possíveis para os Sinais que são Portas de Entidade IN Modo OUT INOUT Uso Para sinal que é entrada de entidade Para sinal que é saída de entidade. O valor do sinal não pode ser usado dentro da entidade (i.e., o sinal só pode aparecer à esquerda de uma atribuição) Para sinal que é tanto entrada quanto saída de entidade BUFFER Para sinal que é saída de entidade. O valor do sinal pode ser usado dentro da entidade (i.e., o sinal pode aparecer tanto à esquerda quanto à direita de uma atribuição) Slide 7P.7
Registradores de eslocamento e ontadores Registrador-eslocador (descr. comportamental) LIBRARY ieee; USE ieee.std_logic_64.all; ENTITY shiftreg2 IS PORT ( R : IN ST_LOGI_VETOR(3 OWNTO ); carga, serial, clk : IN ST_LOGI; : BUFFER ST_LOGI_VETOR(3 OWNTO ) ); EN shiftreg2; ARHITETURE comportamento OF shiftreg2 IS PROESS (clk) IF clk EVENT AN clk = THEN IF sel = THEN <= R; ELSE () <= (); () <= (2); (2) <= (3); (3) <= serial; EN IF; EN PROESS; Slide 7P.8 Sistemas EN comportamento; igitais - semestre 2/ sel Operação omentário >> desl. p/ direita R arrega R
Registradores de eslocamento e ontadores Registrador-eslocador (n bits, descr. comportamental) ENTITY shiftreg3 IS GENERI ( N : INTEGER := 8 ); PORT ( R : IN ST_LOGI_VETOR(N- OWNTO ); sel, serial, clk : IN ST_LOGI; : BUFFER ST_LOGI_VETOR(N- OWNTO ) ); EN shiftreg3; ARHITETURE comportamento OF shiftreg3 IS PROESS (clk) IF clk EVENT AN clk = THEN IF sel = THEN <= R; ELSE Genbits: FOR i IN TO N-2 LOOP (i) <= (i+); EN LOOP; (N-) <= serial; EN IF; EN IF; EN PROESS; EN comportamento; Slide 7P.9 sel Operação omentário >> desl. p/ direita R arrega R
Registradores de eslocamento e ontadores FOR LOOP x FOR GENERATE FOR LOOP: usado para gerar um conjunto de atribuições seqüenciais (logo, usado dentro de processos) FOR GENERATE: usado para gerar um conjunto de atribuições concorrentes (logo, usado dentro de bloco, mas fora de processos) Ambos declaram variáveis locais que servem apenas para auxiliar (e as vezes, tornar mais genérica) uma descrição VHL. Tratam-se de diretivas que o compilador VHL compreende e substitui por comportamento/estrutura equivalente em tempo de compilação. Slide 7P.
Registradores de eslocamento e ontadores ontador de 3 bits (ripple) Usando flip-flops 2 K clear clear clear limpa 2 Para descrever este tipo de contador em VHL usando hierarquia, iremos instanciar o flip-flop Porém, a descrição do flip-flop em VHL deve conter ambas saídas, e N ( not ) Slide 7P.
Registradores de eslocamento e ontadores Flip-flop (com saídas e N) LIBRARY ieee; USE ieee.std_logic_64.all; ENTITY ffv2 IS PORT (, clk, limpa : IN ST_LOGI;, N : OUT ST_LOGI); EN ffv2; ARHITETURE comportamento OF ffv2 IS PROESS (clk, limpa) IF limpa= THEN <= ; N <= ; ELSIF clk EVENT AN clk = THEN <= ; N <= not ; EN IF; EN PROESS; EN comportamento; clear Slide 7P.2
Registradores de eslocamento e ontadores ontador de 3 bits (ripple) LIBRARY ieee; USE ieee.std_logic_64.all; ENTITY cont3b IS PORT ( clk, limpa : IN ST_LOGI; Aout : OUT ST_LOGI_VETOR (2 OWNTO )); EN cont3b; ARHITETURE estrutura OF cont3b IS SIGNAL N, N, N2 : ST_LOGI; (Usando flip-flops com saídas e N) K limpa clear clear 2 clear OMPONENT ffv2 PORT (, clk, limpa: IN ST_LOGI;, N : OUT ST_LOGI); EN OMPONENT; 2 ff: ffv2 PORT MAP (N, clk, limpa, Aout(), N); ff: ffv2 PORT MAP (N, N, limpa, Aout(), N); ff2: ffv2 PORT MAP (N2, N, limpa, Aout(2), N2); EN estrutura; Slide 7P.3
Registradores de eslocamento e ontadores ontador de 4 bits LIBRARY ieee; USE ieee.std_logic_64.all; Não é necessário (apenas por clareza ) Slide 7P.4 (Versão comportamental ) ENTITY contador IS PORT ( clk, limpa, carga : IN ST_LOGI; : OUT ST_LOGI_VETOR( 3 OWNTO ) ); EN contador ; ARHITETURE comportamento OF contador IS SIGNAL conta : ST_LOGI_VETOR (3 OWNTO ) ; PROESS (clk, limpa) IF limpa = THEN conta <= ; ELSIF ( clk EVENT AN clk = ) THEN IF carga = THEN conta <= conta + ; ELSE conta <= conta; EN IF; EN IF; EN PROESS; <= conta; EN Sistemas comportamento; igitais - semestre 2/
Registradores de eslocamento e ontadores ontador Assíncrono (ripple) de n bits LIBRARY ieee; USE ieee.std_logic_64.all; ARHITETURE comportamento OF contnb IS PROESS (clk, limpa) IF limpa = THEN <= ; ELSIF ( clk EVENT AN clk = ) THEN IF carga = THEN <= R; ELSE <= + ; EN IF; EN IF; EN PROESS; EN comportamento; Slide 7P.5 (om carga paralela e usando sinais do tipo integer ) ENTITY contnb IS PORT ( R : IN INTEGER RANGE TO 5; clk, limpa, carga : IN ST_LOGI; : BUFFER INTEGER RANGE TO 5 ); EN contnb ; limpa carga Operação omentário + onta (incr.conteúdo) R arrega R X Reseta conteúdo assincronamente
Projeto de Sistemas igitais com Ferramentas EA Registradores de eslocamento e ontadores Passos do projeto contador. Na pasta Meus_documentos, criar uma pasta com o seu nome (p. ex., Paulo ). Na pasta Paulo, criar uma pasta com nome de contador. 2. Acessar o sítio www.inf.ufsc.br/~guntzel/ine546/aula7p e baixar para a pasta contador os seguintes arquivos: -> contador.vhd -> reg4bitscont.vhd -> binary2dec.vhd -> binary2hex.vhd -> Setup_yclone_235_E2.tcl 3. Abrir o uartus II e criar um projeto na pasta contador, usando contador.vhd como toplevel. Escolher o dispositivo FPGA EP235F6726 e selecionar o ModelSim-Altera como EA Simulation Tool. 4. ompilar o projeto criado. Slide 7P.6
Prototipação com a Placa E2 da Altera Registradores de eslocamento e ontadores Verificar o mapeamento dos pinos do FPGA Slide 7P.7
Prototipação com a Placa E2 da Altera Registradores de eslocamento e ontadores Verificar o mapeamento dos pinos do FPGA Mapeamentos do switches Abrir o E2 UserManual.pdf Mapeamentos dos displays de 7 segmentos Posição e index de cada segmento do display de 7 segmentos Slide 7P.8
Prototipação com a Placa E2 da Altera Registradores de eslocamento e ontadores O script Setup_yclone_235_E2.tcl Setup_yclone_235_E2.tcl Slide 7P.9
Prototipação com a Placa E2 da Altera Registradores de eslocamento e ontadores Executar script de mapeamento dos pinos Setup_yclone_235_E2.tcl Slide 7P.2
Prototipação com a Placa E2 da Altera Registradores de eslocamento e ontadores Verificar o mapeamento dos pinos do FPGA Slide 7P.2
Prototipação com a Placa E2 da Altera Registradores de eslocamento e ontadores Passos do projeto contador ompilar. Processing -> Start ompilation 2. Aguardar mensagem uartus II Full ompilation Succesfull (ou mensagem de erro) Slide 7P.22
Prototipação com a Placa E2 da Altera Registradores de eslocamento e ontadores onectar a placa no P e ligá-la Porta USB-BLASTER Alimentação da placa E2 Slide 7P.23
Prototipação com a Placa E2 da Altera Registradores de eslocamento e ontadores Baixar o projeto para a placa Slide 7P.24
Prototipação com a Placa E2 da Altera Registradores de eslocamento e ontadores Baixar o projeto para a placa USB-BLASTER [USB-] Slide 7P.25
Prototipação com a Placa E2 da Altera Registradores de eslocamento e ontadores Baixar o projeto para a placa contador.sof Slide 7P.26