EPUSP PCS 2355 Laboratório Digital. Contadores em VHDL

Documentos relacionados
EPUSP PCS 2355 Laboratório Digital. Contadores em VHDL

Projeto com Linguagens de Descrição de Hardware

Multiplicador Binário com Sinal

EPUSP PCS 3335/3635 Laboratório Digital. Circuito em VHDL

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro

EPUSP PCS 3635 Laboratório Digital I. Trena Digital

EPUSP PCS 3335 Laboratório Digital A. Introdução ao VHDL

Calculadora Simples em VHDL

Circuito de Recepção Serial Assíncrona

Banco de Registradores e ULA

Circuito Decodificador BCD para Display de Sete Segmentos

UM PROCESSADOR SIMPLES

EPUSP PCS2355 Laboratório Digital SOMADORES DECIMAIS

Banco de Registradores

EPUSP PCS 2011/2305/2355 Laboratório Digital SOMADORES DECIMAIS

EPUSP PCS 3335 Laboratório Digital A. Trena Digital

EPUSP PCS 2308 Laboratório Digital. Trena Digital

Multiplicador Binário com Sinal

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

CONTROLE DE UM SERVO MOTOR

Projeto com Dispositivos Programáveis

EPUSP PCS 2021/2308/2355 Laboratório Digital GERADOR DE SINAIS

Circuito Hierárquico

Introdução ao Projeto de Sistemas Digitais com Dispositivos Programáveis

EPUSP PCS 2011 Laboratório Digital GERADOR DE SINAIS

Circuitos Seqüenciais

EPUSP PCS 2021 Laboratório Digital II. Sistema de Radar

CONTROLE PARA SEMÁFOROS DE UM CRUZAMENTO

CRONÔMETRO DIGITAL PROJETO

Comunicação Serial Assíncrona

Interface com Sensor Ultrassônico de Distância

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro

Introdução. Display de sete segmentos

Exercícios de Laboratório 3

Exercícios de Laboratório 1

MELHORAMENTO NO PROCESSADOR SIMPLES

Comunicação Serial Assíncrona

EPUSP PCS 2011/2305/2355 Laboratório Digital. Frequencímetro

UM PROCESSADOR SIMPLES

EPUSP PCS 3335 Laboratório Digital A. Um Circuito Digital

7. Funções de Lógica Combinacional. 7. Funções de Lógica Combinacional 1. Somadores Básicos. Objetivos. Objetivos. Circuitos Digitais 03/11/2014

EPUSP PCS 2011/2305/2355 Laboratório Digital. Freqüencímetro

Primeiro Circuito Digital

Laboratório de Circuitos Digitais 1

EPUSP PCS 2011 Laboratório Digital GERADOR DE SINAIS

Circuitos Combinacionais Básicos

Circuito de Aritmética Decimal

Arquitetura e Organização de Computadores

Processador nanopcs-4

Introdução ao Laboratório Digital

Processador nanopcs-3

EPUSP PCS 2011 Laboratório Digital GERADOR DE SINAIS

Sistemas Digitais Ficha Prática Nº 7

Painel Luminoso com LEDs

Introdução ao Laboratório Digital

Desenvolvimento com a placa Altera DE2 Prof. Rodrigo de Paula Rodrigues

Q(A, B, C) =A.B.C + A.B.C + A.B.C + A.B.C + A.B.C + A.B.C. m(1, 2, 3, 6) T (A, B, C, D) =A.B.C.D+A.B.C.D+A.B.C.D+A.B.C.D+A.B.C.D+A.B.C.

Programação de Computadores I. Linguagem C Função

Painel Luminoso com LEDs

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

Capítulo VI Circuitos Aritméticos

FLIP FLOPS. EXPERIMENTS MANUAL Manual de Experimentos Manual de Experimentos M-1113A

12/11/13. Obje%vos do laboratório. SST20707 Síntese de Sistemas de Telecomunicações. Síntese de máquinas de estado (FSM) Finite State Machine (FSM)

Exemplo 2 de Projeto de Circuito Síncrono. Contador de Uns

ELETRÔNICA DIGITAL. Parte 6 Display, Decodificadores e Codificadores. Prof.: Michael. 1 Prof. Michael

Objetivo: Levantamento de pontos da curva temporizada

UTILIZAÇÃO DE CIRCUITOS BIESTÁVEIS

Sistemas Digitais II. Interface com o mundo analógico. Prof. Marlon Henrique Teixeira Abril/2014

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

APOSTILA DE ELETRÔNICA DIGITAL II

EPUSP PCS 2011 Laboratório Digital I. Uma ULA Simples

Desenvolvimento de um Circuito Complexo

Introdução ao Altera DE2. Edson Midorikawa

Documento de Requisitos do Sistema SISFOTO Sistema de gerenciamento de eventos fotográficos Versão 1.0

Profª Danielle Casillo

Lab Verilog Chaves, LEDs e Multiplexadores

Montagem, testes, depuração e documentação de circuitos digitais

Programação de CPLDs no ambiente ISE 4.2i da Xilinx

Módulos Combinatórios

SIMULAÇÃO DE CIRCUITOS

Gerência de Memória. Algoritmos de Substituição de Páginas

Universidade Federal do ABC Disciplina: Natureza da Informação Lista de Exercícios 02 Códigos e conversão A/D Prof. João Henrique Kleinschmidt

EPUSP PCS 2011 Laboratório Digital I. Uma ULA Simples

RESUMO TEÓRICO CONVERSORES DIGITAL/ANALÓGICO

EMENTA. Curso de Projetos Microcontrolados utilizando Linguagem C.

Introdução ao Laboratório Digital

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

ÁLGEBRA BOOLEANA- LÓGICA DIGITAL

EPUSP PCS 2011 Laboratório Digital GERADOR DE SINAIS

Circuitos Aritméticos

Caminho de Dados e Controle. Prof. Leonardo Barreto Campos 1

Tópicos Especiais 2 Capítulo 3 Introdução ao VHDL, sintaxe básica, tipo de dados e atribuições

INTEGRAÇÃO JAVA COM ARDUINO

Laboratório de Eletrônica Digital

CAPÍTULO 2 SISTEMAS DE NUMERAÇÃO E CÓDIGOS

Informática Aplicada

Projeto de Circuitos Aritméticos

Transcrição:

Contadores em VHDL Versão 2014 RESUMO Esta experiência consiste no projeto e implementação de circuitos contadores com o uso da linguagem de descrição de hardware VHDL. São apresentados aspectos básicos da descrição de circuitos sequenciais, de máquinas de estados e outros recursos da linguagem VHDL. OBJETIVOS Após a conclusão desta experiência, os seguintes tópicos devem ser conhecidos pelos alunos: Apresentar recursos adicionais de VHDL (funções e procedimentos, máquina de estados, descrição estrutural); Desenvolvimento de projetos de contadores diversos usando VHDL. 1. DESCRIÇÃO DE CONTADORES Um contador é um circuito sequencial muito utilizado em projetos digitais. Apesar de ser simples, é um circuito interessante para mostrar recursos importantes da linguagem de descrição de hardware VHDL. O trecho de código abaixo mostra um contador simples, onde a saída segue uma contagem crescente. Figura 1.1 Descrição VHDL de um contador. O contador da descrição acima é um contador de 4 bits com reset assíncrono e sinal de enable da contagem. A implementação em VHDL usa um processo que usa uma variável contagem do tipo integer. Na ativação do sinal reset, a contagem é zerada e, na borda de subida do clock, se enable estiver ativado, a contagem é incrementada. Como a saída q tem tipo std_logic_vector, é usada a função de conversão de tipos conv_std_logic_vector para converter a contagem inteira em um vetor de bits. Contadores em VHDL (2014) 1

Na linha 15, a definição da variável contagem faz com que seja criado internamente um elemento com 4 bits para armazenar o valor da contagem atual. Para uso da função de conversão de tipos é necessário a inclusão da biblioteca ieee.std_logic_arith. 1.1. Displays de sete segmentos Para a verificação do funcionamento do contador, a saída q pode então ser mapeada um 4 leds em um placa de desenvolvimento de circuitos com FPGA. Normalmente, estas placas de desenvolvimento dispõem também de displays de sete segmentos. Para usar estes displays é necessário que a saída binária do contador seja convertida para o código de sete segmentos (figura 1.2). Figura 1.2 Display de 7 segmentos e alguns exemplos (fonte: [Wakerly, 2006]). O display de sete segmentos é composto por sete leds dispostos espacialmente como mostrado na figura 1.2 e identificados de a até g. Quando, por exemplo, o dígito 1 deve ser apresentado, os segmentos b e c devem ser ativados, então o código equivalente ao dígito 1 é 0110000 (abcdefg). Na placa DE2, os sinais de controle dos leds nos displays de sete segmentos são ativos em baixo. Desta forma, para o dígito 1, o código de sete segmentos correspondente é 1001111. A figura 1.3 apresenta uma descrição VHDL de um conversor de códigos. Figura 1.3 Descrição VHDL de um conversor para código de sete segmentos. Na placa de desenvolvimento DE2 da Altera, temos 8 displays de sete segmentos, identificados como HEX0 até HEX7. Cada segmento dos displays tem seu sinal assinalado em certos pinos da FPGA da placa. Por exemplo, os leds do display HEX0 estão mapeados conforme a tabela 1. Contadores em VHDL (2014) 2

Tabela 1 Mapeamento dos leds do display HEX0 da placa Altera DE2. Fonte: [Altera, 2008] Segmento Identificação Pino a HEX0[0] PIN_AF10 b HEX0[1] PIN_AB12 c HEX0[2] PIN_AC12 d HEX0[3] PIN_AD11 e HEX0[4] PIN_AE11 f HEX0[5] PIN_V14 g HEX0[6] PIN_V13 Assim, caso se deseje apresentar a saída do contador binário da figura 1.1 em um dos displays de sete segmentos, basta conectar o conversor da figura 1.3, conforme a figura 1.4 abaixo. Figura 1.4 Composição do contador binário e conversor para display de sete segmentos. A descrição VHDL correspondente à figura 1.4 é apresentada abaixo (figura 1.5). Nela, são usadas como componentes as entidades contador e conv_bin_7seg. Figura 1.5 Descrição VHDL do circuito com um contador binário e um conversor para display de sete segmentos. Contadores em VHDL (2014) 3

1.2. Máquina de estados Uma alternativa para a descrição de contadores é através de uma máquina de estados. O contador binário de 4 bits tem 16 estados (E0 até E15) em um diagrama de transição de estados circular (figura 1.6). E15 E0 E1 E14 E2 E13 E3 E12 E4 E11 E5 E10 E6 E9 E8 E7 Figura 1.6 Diagrama de transição de estados de um contador módulo 16. A figura 1.7 apresenta a descrição VHDL do contador binário com uma máquina de estados, usando três processos 1 : o primeiro processo verifica o sinal reset e muda o estado na borda de subida do clock. O segundo processo identifica o próximo estado e o terceiro especifica a saída do circuito para cada estado (máquina de Moore). Embora esta descrição seja mais longa que a descrição da figura 1.1, o uso de uma máquina de estados permite uma flexibilidade maior: por exemplo, com a mesma sequência de estados, é possível mudar os valores apresentados na saída do circuito. Para isto, basta modificar as linhas de código referentes ao processo saidas. Por exemplo, com poucas modificações é possível desenvolver a descrição de um contador módulo 16 com saídas em código Gray. 1.3. Funções em VHDL O uso da descrição de recursos em nível estrutural permite identificar componentes que são reutilizados em vários pontos de um sistema digital. Um exemplo simples de casos de componentes reutilizados é o conversor de código binário para o código de 7 segmentos, que permite mostrar um valor binário em displays de sete segmentos. Uma alternativa é usar recursos de linguagem na modelagem do sistema digital que permitem caracterizar estes módulos como um bloco separado da descrição do circuito, conhecidos genericamente como subprogramas. Em VHDL são disponíveis as funções e os procedimentos. Estes recursos da linguagem de descrição de hardware têm conceitos muito semelhantes aos seus correspondentes das linguagens de programação, conforme tabela 2 abaixo. Embora seja um bloco separado de código, ao contrário dos conceitos similares de software que levam a uma diminuição do tamanho total do código executável gerado, o uso destes recursos de linguagem de descrição de hardware não geram um circuito menor, pois cada chamada leva a criação de uma nova unidade funcional no circuito sintetizado. Podemos dizer que uma das vantagens no uso de funções e procedimentos é melhorar a legibilidade e entendimento da descrição VHDL. Uma descrição mais detalhada sobre funções e procedimentos em VHDL pode ser encontrada em [d Amore 2012] e [Rushton, 2011]. 1 É possível implementar uma máquina de estados em VHDL usando três processos, dois processos ou apenas 1 único processo. Para mais informações consulte a referência [Rushton, 2011]. Contadores em VHDL (2014) 4

Figura 1.7 Contador binário descrito com uma máquina de estados. Contadores em VHDL (2014) 5

Tabela 2 Algumas características de funções e procedimentos em VHDL. Características Função Procedimento retorno de valor parâmetros comandos conceito sobrecarga retorna um valor através do comando return lista de parâmetros deve usar modo in obrigatoriamente generalização de uma expressão (pode ser usado dentro de um comando) contém comandos sequenciais pode retornar vários valores através dos parâmetros passados ao procedimento parâmetros podem possuir modos in, inout ou out (valores de retorno usam modo out ou inout) generalização de um comando (pode ser considerado como um bloco de comandos) é possível criar vários subprogramas com mesmo nome, mas com lista de parâmetros e valores de retorno diferentes A figura 1.8 apresenta um exemplo de uso de funções em uma descrição VHDL. A função conv_7seg é definida entre as linhas 18 e 41: possui apenas um parâmetro de entrada (vetor d de 4 bits) e retorna um vetor de bits (std_logic_vector). Na linha 20 é definida a varíavel saida que será usada para determinar o valor a ser retornado. A seleção do valor de retorno usa o comando sequencial case (linhas 22 a 39). O comando return é usado somente uma vez (linha 40). A linha 47 contém a chamada à função conv_7seg dentro do comando de atribuição. Figura 1.8 Contador binário descrito usando função em VHDL. Contadores em VHDL (2014) 6

2. PARTE EXPERIMENTAL A parte experimental desta experiência diz respeito à implementação de circuitos contadores em linguagem VHDL. Nesta experiência será usado o dispositivo lógico programável Altera Cyclone II EP2C35F672C6 da placa de desenvolvimento DE2. 2.1. Atividades Pré-Laboratório 2.1.1. Experimentação com VHDL Antes do projeto dos circuitos da experiência, é importante a experimentação dos conceitos apresentados na seção 1. Desta forma deve-se: a) Para cada um dos circuitos apresentados (contador binário, conversor para código de 7 segmentos, contador binário com saída para display de sete segmentos, contador com máquina de estados), estude cada uma das descrições VHDL e escreva uma descrição das linhas de código. Por exemplo, no contador binário crescente: As linhas 6 a 9 apresentam a definição da entidade. São definidos três sinais de entrada (clock, reset e enable com 1 bit) e 1 sinal de saída (q com 4 bits). O tipo destes quatro sinais de entrada e saída é std_logic. b) A seguir, digite o código VHDL de cada exemplo, crie um projeto no Quartus II e execute simulações para verificar seu funcionamento. c) Anexe as formas de onda no planejamento. 2.1.2. Especificação do Contador Bidirecional O primeiro circuito a ser desenvolvido é um contador bidirecional de 4 bits. Baseado no valor do sinal sentido, o valor da contagem deve ser crescente (sentido=0) ou decrescente (sentido=1). A saída do circuito deve ser monitorado em leds. Considere a seguinte definição de entidade: entity contador_updown is port (clock, reset, enable : in std_logic; sentido : in std_logic; saida : out std_logic_vector (3 downto 0)); end contador_updown; A contagem também é controlada pelo sinal enable (contagem muda quando enable=1). A interface do circuito é mostrada na figura 2.1. clock reset enable sentido contador bidirecional saida (LEDG0 a LEDG3) Figura 2.1 Contador bidirecional. d) Desenvolva o código VHDL e documente-o com uma descrição do código fonte e formas de onda das simulações do seu funcionamento. e) Considere a seguinte designação de pinos: clock : botão KEY3 reset : chave SW2 sentido : chave SW1 enable : chave SW0 saida[0..3] : leds verdes LEDG0 a LEDG3 DICA: lembrem-se que os botões na placa DE2 são ativos em baixo. O projeto deve levar isto em consideração. Use a tabela de designação de pinos da placa DE2. f) Defina alguns sinais de depuração adicionais podem ser usados para validar o circuito. Contadores em VHDL (2014) 7

2.1.3. Especificação do Contador em Código Gray com saída em Display de 7 Segmentos O segundo circuito a ser projetado é um contador bidirecional em código Gray com saídas em displays de sete segmentos. Usando uma descrição estrutural, implemente o circuito em VHDL com a interface abaixo. entity contgray7seg is port (clock, reset, enable, sentido : in std_logic; saidabin : out std_logic_vector (6 downto 0); saidagray : out std_logic_vector (6 downto 0)); end contgray7seg; Projete inicialmente o bloco conversor-binario-gray para a conversão de código binário para código Gray, conforme a seguinte interface. entity conv_bin_gray is port (d : in std_logic_vector (3 downto 0); q : out std_logic_vector (3 downto 0)); end conv_bin_gray; Em seguida, complete a descrição com a conexão dos componentes segunda a estrutura apresentada na figura 2.2. clock reset enable sentido contador bidirecional contagem conversor binário-7 segmentos saidabin (display HEX1) conversor binário-gray contagemgray conversor binário-7 segmentos saidagray (display HEX0) Figura 2.2 Estrutura do contador em código Gray com saídas em display de 7 segmentos. g) Desenvolva o código VHDL e documente-o com uma descrição do código fonte e formas de onda das simulações do seu funcionamento. h) Considere a seguinte designação de pinos: clock : botão KEY3 reset : chave SW2 sentido : chave SW1 enable : chave SW0 saidagray : display HEX0 saidabin : display HEX1 DICA: lembrem-se que os botões na placa DE2 são ativos em baixo. O projeto deve levar isto em consideração. Use a tabela de designação de pinos da placa DE2. i) Defina alguns sinais de depuração adicionais podem ser usados para validar o circuito. Contadores em VHDL (2014) 8

2.1.4. Especificação do Contador em Código de Petherick com Máquina de Estados O terceiro circuito a ser projetado é um contador em código de Petherick usando uma máquina de estados. A interface deste contador é definida abaixo. entity contpetherickme is port (clock, reset, enable : in std_logic; saidabin : out std_logic_vector (6 downto 0); saida : out std_logic_vector (6 downto 0)); end contpetherickme; Temos duas saídas do circuito: uma saída da contagem binária saidabin e uma saída com a contagem em código de Petherick saida. Ambas as saídas devem ser conectadas em displays de sete segmentos. Use uma descrição estrutural conforme a figura 2.3. clock reset enable sentido contador Petherick contagem conversor binário-7 segmentos saidabin (display HEX1) contagemp conversor binário-7 segmentos saida (display HEX0) Figura 2.3 Estrutura do contador em código de Petherick. j) Desenvolva o código VHDL do circuito. Documente o projeto com uma descrição do código fonte e formas de onda das simulações. k) Considere a seguinte designação de pinos: clock : botão KEY3 reset : chave SW2 sentido : chave SW1 enable : chave SW0 saida : display HEX0 saidabin : display HEX1 DICA: lembrem-se que os botões na placa DE2 são ativos em baixo. O projeto deve levar isto em consideração. Use a tabela de designação de pinos da placa DE2. l) Defina alguns sinais de depuração adicionais podem ser usados para validar o circuito. Contadores em VHDL (2014) 9

2.2. Implementação dos Circuitos m) Teste os circuitos projetados na placa de desenvolvimento Altera DE2 e apresente seu funcionamento ao professor. n) Documente no relatório o processo desenvolvido em bancada. 2.3. Modificação em Circuito o) Uma pequena modificação ou adaptação de um dos projetos será solicitada aos alunos. Esta modificação deverá ser implementada em bancada. A descrição e a documentação desta modificação devem ser incluídas no relatório. 2.4. Atividades Pós-Laboratório p) Após a conclusão das atividades programadas, responda as perguntas abaixo: 1. Compare a forma de conexão de componentes em um diagrama esquemático (forma gráfica) e uma descrição estrutural em VHDL. 2. Compare a estratégia de projeto do contador em código de Petherick com componentes TTL e usando uma linguagem de descrição de hardware. Cite duas vantagens da linguagem VHDL. 3. Que modificações seriam necessárias no projeto para usar o recurso de funções para a conversão das saídas para os displays de sete segmentos? Mostre a descrição VHDL. 4. Mostre como este projeto poderia ser adaptado para uma contagem em outro código binário. Exemplifique. 3. BIBLIOGRAFIA 1. ALTERA. DE2 Development and education board user manual. 2008. Version 1.42. 2. ALTERA. Quartus II Introduction Using VHDL Designs. University Program. 2010. Disponível em: ftp://ftp.altera.com/up/pub/altera_material/9.1/tutorials/vhdl/quartus_ii_introduction.pdf 3. D AMORE, R. VHDL - Descrição e síntese de circuitos digitais. 2ª edição, LTC, 2012. 4. MIDORIKAWA, E.T. Introdução às Linguagens de Descrição de Hardware. Apostila de PCS2304, Escola Politécnica da USP, 2007. 5. MIDORIKAWA, E.T. Contador em Código de Petherick. Apostila de Laboratório Digital, 2012. 6. RANZINI, E.; HORTA, E. L. Introdução aos Dispositivos Lógicos Programáveis. Apostila de Laboratório Digital. Escola Politécnica da USP, 2000 (revisão em 2011). 7. RUSHTON, A. VHDL for logic synthesis. 3 rd edition, Wiley, 2011. 8. TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Digital Systems: principles and applications. 11 th ed., Prentice-Hall, 2011. 4. EQUIPAMENTOS NECESSÁRIOS 1 placa de desenvolvimento FPGA DE2 da Altera com o dispositivo Altera Cyclone II EP2C35F672C6. 1 computador PC com programa Altera Quartus II e interface USB. Histórico de Revisões E.T.M. / 2012 versão inicial. E.T.M. / 2013 revisão. E.T.M. / 2014 revisão. Contadores em VHDL (2014) 10