Circuito em VHDL Versão 2017 RESUMO Esta experiência tem como objetivo um contato inicial com o desenvolvimento do projeto de um circuito digital simples em VHDL e sintetizado para uma placa de desenvolvimento FPGA. Ao final da experiência, os alunos terão conhecimento sobre o procedimento a ser realizado para o projeto digital usando uma linguagem de descrição de hardware e com auxílio de um software para projeto de circuitos digitais. OBJETIVOS Após a conclusão desta experiência, os seguintes tópicos devem ser conhecidos pelos alunos: Síntese e implementação de circuitos em VHDL e em placa de desenvolvimento FPGA; Uso de software para projeto de circuitos digitais; Simulação de circuitos digitais; Estudo de um circuito digital simples. 1. PARTE EXPERIMENTAL 1.1. Atividade 1 (Pré-Laboratório) Esta primeira atividade visa estudar dois componentes essenciais em circuitos digitais: o contador e o registrador. Ambos os componentes devem ser descritos na linguagem VHDL. 1.1.1. Contador hexadecimal 7163 em VHDL a) Consulte o livro-texto (Wakerly, página 722) e estude a descrição VHDL do contador hexadecimal 7163 (V7x163.vhd). Faça anotações no código fonte VHDL na forma de comentários para descrever a função de cada linha de comando. Traga o arquivo fonte. DICAs: neste item, deve-se incluir no Planejamento uma figura com o símbolo lógico do componente para ilustrar a resposta. Exemplo de comentário do código fonte: architecture V7x163_arch of V7x163 is -- descrição da arquitetura da entidade V7x163 signal IQ: UNSIGNED (3 downto 0); -- define sinal de bits com valor interno da contagem begin process (CLK, ENT, IQ) -- processo principal que descreve... b) Responda as perguntas abaixo: 1. A contagem interna usa o tipo UNSIGNED para poder calcular o próximo valor. Qual é a diferença entre os tipos UNSIGNED e STD_LOGIC_VECTOR? 2. Explique se o sinal de CLEAR é síncrono ou assíncrono? Que linha de código justifica sua resposta? 3. Como um valor pode ser carregado no 7163? Mostre a linha de código que descreve esta função.. Este componente é sensível a qual borda do sinal de clock? Qual é a linha de código que mostra isto? 5. Qual é a condição para a saída RCO ser acionada? Justifique sua resposta, mostrando a linha de código que descreve este funcionamento. DICA: numere as linhas de código do item 1.1.1.a e use os números das linhas para justificar as respostas acima. Circuito em VHDL (2017) 1
1.1.2. Registrador com sinal de habilitação em VHDL Neste item será estudada a descrição de um registrador com sinal de habilitação em VHDL. Este componente deve ser aplicado em circuitos seguintes no Laboratório Digital. c) Consulte o livro-texto (Wakerly, página 700) e estude a descrição VHDL de um registrador de 16 bits (Vreg16.vhd). Faça anotações no código fonte VHDL na forma de comentários para descrever a função de cada linha de comando. Traga o arquivo fonte. DICAs: neste item, deve-se incluir uma figura com o símbolo lógico do componente para ilustrar a resposta. Siga as orientações do item 1.1.1. d) Responda as perguntas abaixo: 6. Quantos bits tem o registrador descrito no código fonte? 7. Há quantos sinais de controle neste componente? Mostre a função de cada um. 8. Explique a função da expressão (others=> 0 ) em VHDL. 9. Qual é a diferença entre os tipos STD_LOGIC_VECTOR e STD_ULOGIC_VECTOR? 10. Qual é a função do comando VHDL To_StdULogicVector(IQ)? 11. O que representa o valor Z usado na descrição VHDL? e) Com base na descrição estudada acima, elabore a descrição VHDL de um novo componente que será chamado regbits_en.vhd que é um registrador de bits com sinal de habilitação. Considere o símbolo lógico da figura 1.1. D (D3, D2, D1, D0) ENABLE regbits_en Q (Q3, Q2, Q1, Q0) CLOCK Figura 1.1 Símbolo lógico do componente a ser elaborado. A tabela abaixo descreve seu funcionamento. Pode-se observar que ambos os sinais de controle são síncronos e ativos em alto. ENABLE Q* (próxima saída) descrição 1 X 0 zera saída 0 0 Q nenhum sinal de controle ativado 0 1 D carrega entrada paralela D f) Comente o código VHDL e traga o arquivo para o Laboratório Digital. Neste ponto, terminamos a preparação conceitual para a aula experimental no Laboratório Digital. Resta agora, verificar os procedimentos experimentais, com a leitura e familiarização das atividades programadas. Após isto, deve ser incluído no planejamento um roteiro experimental detalhado. Circuito em VHDL (2017) 2
1.1.3. Projeto do Circuito Digital Simples em VHDL Neste item será estudada a descrição de um registrador com sinal de habilitação em VHDL. Este componente deve ser aplicado em circuitos seguintes no Laboratório Digital. g) O circuito digital simples, que foi estudado na experiência anterior e tem seu esquema interno apresentado na figura 1.2, deve ser implementado inteiramente em VHDL. Use o componente V7x163.vhd (contador hexadecimal em VHDL) do item 1.1.1 e o componente umfsm.vhd da experiência Primeiro Circuito Digital. Adote uma descrição estrutural para interligar os dois componentes. liga sinal umfsm resetc enablec ENT CLK 7163 Q RCO RESET CLOCK Figura 1.2 Esquema interno do circuito digital simples interligando os dois componentes principais. h) Documente seu projeto, inserindo comentários no código fonte. i) Traga os arquivos fonte VHDL dos dois componentes internos e do componente principal para o Laboratório Digital. Circuito em VHDL (2017) 3
1.2. Atividade 2 Simulação do Circuito e Síntese na Placa FPGA Esta atividade visa introduzir os alunos ao software de desenvolvimento de projetos digitais Altera Quartus Prime. Esta aplicação permite o projeto, implementação e simulação de circuitos digitais. Serão apresentadas as funcionalidades de criação do projeto do circuito digital, compilação do projeto, simulação e síntese para uma FPGA. f) Com base na apresentação realizada pelo professor, execute a simulação do projeto do circuito digital simples projetado no item 1.1.3. Apresente as formas de onda obtidas no Relatório. g) Em seguida, deve-se realizar a preparação para a síntese do circuito para ser implementado na placa de desenvolvimento FPGA. Para isto deve adotar a seguinte designação de pinos para o projeto. sinal Designação pino Sinal externo CLOCK GPIO_0_D0 saída digital 0 (Analog Discovery) RESET chave SW9 - liga chave SW0 - sinal chave SW1 - resetc led LEDR9 - enablec led LEDR8 - Q leds LEDR0 a LEDR3 - RCO led LEDR - h) Anote as mensagens de saída do Altera Quartus Prime e verifique o resultado da síntese para a placa de desenvolvimento FPGA DE0-CV. 1.3. Atividade 3 Análise de Funcionamento do Circuito em VHDL O projeto deve ser programado na placa DE0-CV e seu funcionamento deve ser analisado cuidadosamente. Siga as recomendações do professor ao manusear a placa FPGA. i) Programe a placa DE0-CV com o circuito sintetizado usando o Altera Quartus Prime. j) Conecte o sinal GND e a saída digital 0 do Analog Discovery nos respectivos pinos do conector GPIO_0 da placa DE0-CV. Use a documentação da placa disponível no Laboratório Digital. k) No software Waveforms no computador, ajuste o sinal da saída digital 0 para um sinal de clock periódico com frequência igual a 1Hz. l) Acione os sinais de entrada LIGA e SINAL e verifique o funcionamento do circuito. Observar também os sinais clock, sinal, enablec e resetc. DICA: use o diagrama ASM ou diagrama de transição de estados desenvolvido no item 1.1.2.e para acompanhar a mudança de estados do circuito. Use várias sequências de teste. Documente no Relatório, as saídas observadas para cada caso de teste. Para poder observar os sinais de entrada clock e sinal, deve-se acrescentar dois pinos de saída no projeto e designá-los para os leds LEDR5 e LEDR6, respectivamente. Circuito em VHDL (2017)
m) Analise a sequência de sinais ativados no circuito e responda: 11. Quando SINAL é acionado por 5 seg, qual é a saída apresentada na saída Q? 12. O que acontece quando o sinal LIGA é desativado antes do SINAL? 13. Qual é a saída do contador se SINAL fica acionado por mais de 15 segundos? 1. O que acontece quando SINAL é acionado várias vezes por intervalos de tempo diferentes? l) Uma MODIFICAÇÃO do circuito vai ser solicitada pelo professor. Implemente e documente a modificação para a placa DE0-CV e faça uma demonstração do seu funcionamento. DICA: apresente no Relatório o diagrama ASM modificado e um diagrama de blocos do fluxo de dados. 2. BIBLIOGRAFIA ALTERA. DE0-CV User Manual. 2015. ALTERA. Quartus Prime Introduction Using VHDL Designs. 2016. ALTERA. Quartus Prime Introduction to Simulation of VHDL Designs. 2016. D AMORE, R. VHDL - descrição e síntese de circuitos digitais. 2a edição, LTC, 2012 MENEZES, M.P.; SATO, L.M.; MIDORIKAWA, E.T. Projeto de Circuitos com Quartus II 9.1. Apostila de Laboratório Digital. Departamento de Engenharia de Computação e Sistemas Digitais, Escola Politécnica da USP. Edição de 2011. TEXAS INSTRUMENTS. Digital Logic Pocket Data Book. 2006. WAKERLY, John F. Digital Design Principles & Practices. th edition, Prentice Hall, 2006. 3. EQUIPAMENTOS NECESSÁRIOS 1 computador pessoal com o software Altera Quartus Prime. 1 dispositivo Analog Discovery da Digilent. 1 placa de desenvolvimento FPGA DE0-CV da Altera com o dispositivo Cyclone V 5CEBAF23C7N. Histórico de Revisões E.T.M. / 2017 (versão inicial) Circuito em VHDL (2017) 5