Tradução do Laboratory Exercise 2 disponível em <http://www.altera.com/education/univ/materials/digital_logic/labs/unv-labs.html> Exercícios de Laboratório 2 Números e Displays Este é um exercício de criação de circuitos combinacionais que fazem conversões de binário para decimal e adição de números decimais codificados (BCD Binary-Coded-Decimal). Parte I Nós desejamos mostrar nos displays de sete segmentos HEX3 até HEX0 os valores das chaves SW 15-0. Os valores das chaves SW 15-12, SW 11-8, SW 7-4 e SW 3-0 devem ser mostrados em HEX3, HEX2, HEX1 e HEX0, respectivamente. Seu circuito deverá ser capaz de exibir dígitos de 0 a 9, e tratar valores binários de 1010 a 1111 como don t-cares. 1. Crie um novo projeto, o qual será usado para implementar o circuito desejado na placa DE2. O objetivo desse exercício é obter manualmente as funções lógicas necessárias para os displays de sete segmentos. Você deve usar declarações simples em VHDL no seu código e especificar cada função lógica como uma expressão Booleana. 2. Escreva um arquivo VHDL que contenha as funcionalidades necessárias. Inclua o arquivo de associação de pinos no projeto. 3. Compile o projeto e carregue-o na DE2. 4. Teste as funcionalidades do circuito mexendo as chaves e observando os displays. Parte II Você devera desenvolver um circuito que converte um número binário de 4bits V = v 1 v 2 v 3 v 4 em um número decimal de dois dígitos equivalente D = d 1 d 2. A Tabela 1 mostra os valores de saída. Um design parcial é dado na Figura 1. Esse esboço inclui um comparador que checa quando um número é maior que 9, e manda 0 ou 1 para display que representa a dezena do número. Você irá criar um circuito em VHDL que inclua comparador, multiplexadores e o circuito A (não inclua o circuito B ou o decodificador nesse momento). Sua entidade VHDL deve ter duas entradas de 4bits, V e M, e uma saída z. O objetivo desse exercício é usar declarações simples em VHDL para especificar as funções lógicas usando expressões Booleanas. Você não deve usar estruturas como IF-ELSE, CASE, ou similares.
Execute os seguinte passos: Tabela 1. Valores de conversão binário-para-decimal 1. Crie um projeto para sua entidade. 2. Compile o circuito e use a simulação funcional para verificar e corrigir erros no comparador, multiplexadores e circuito A. 3. Amplie seu código VHDL incluindo o circuito B da Figura 1 bem como o decodificador. Altere as entradas e saídas no seu código para usar as chaves SW 3-0 da DE2 para representar o número binário V, e os displays HEX1 e HEX0 para mostrar os dígitos d 1 e d 0. Lembre-se de incluir o arquivo de associação de pinos em seu projeto. 4. Recompile seu projeto e carregue-o no FPGA. 5. Teste seu circuito tentando mostrar todos os possíveis valores nos displays.
Figura 1. Design parcial do circuito do conversor binário-para-decimal Parte III A figura 2a mostra o circuito de um full adder, o qual tem as entradas a, b e c i, e produz as saídas s e c o. As partes b e c da figura mostram a simbologia do circuito e a taela verdade do full adder, o qual produz somas binárias de dois bits c o s = a + b + c o. A Figura 2d mostra quatro instâncias do do full adder, que pode ser usado parar somar números de quatro bits. Esse tipo de circuito é comumente chamado ripple-carry adder pelo fato dos carrys irem passando de um somador ao outro. Escreve um código VHDL que descreva o circuito descrito abaixo.
Figura 2. Circuito de um somador ripple-carry 1. Crie uma novo projeto no Quartus II para o circuito do somador. Escreve um código VHDL para o subcircuito e uma entidade top level para que instancie quatro somadores full adder. 2. Use as chaves SW 7-4 e SW 3-0 para representar as entradas A e B, repectivamente. Use SW8 para o carry-in cin do somador. Conecte as chaves SW aos seus leds vermelhos correspondentes, e conecte as saídas do somador, c out e S aos leds verdes. 3. Inclua o arquivo de associação de pinos. 4. Teste seu circuito alterando os valores das entradas A, B e c in. Parte IV Na parte II, discutimos a conversão de números binários em decimais. Algumas vezes é necessário descrever circuitos que usem esse método de representação de números, no qual cada decimal é representado por um número binário de 4bits. Esse esquema é conhecido como representação BCD Binary Coded Decimal. Por exemplo, o valor 59 em BCD é codificado para 0101 1001. Você irá criar um circuito que some dois números BCD de dois dígitos. As entradas do circuito são números BCD de dois dígitos A e B, mais o carry-in, c in. A saídadeve ser também um número BCD de dois dígitos S 1 S 0. Perceba que a maior soma que o circuito será capaz de fazer é S 1 S 0 = 9 + 9 + 1 = 19. Faça os seguintes passos. 1. Crie um novo projeto para o seu somador BCD. Você deverá usar o somador de 4bits da parte III para produzir as somas de 4bits mais o carry-out de A + B. O circuito que converte esse resultado de 5bits, que é no máximo 19, em um número BCD S 1 S 0 pode ser desenvolvido de forma parecida a do conversor binário-paradecimal da parte II. Escreve seu código VHDL usando declarações simples para especificar as funções lógicas necessárias não use estruturas como IF-ELSE ou CASE nesse parte do exercício.
Parte V 2. Use as chaves SW 7-4 e SW 3-0 para as entradas A e B, respectivamente, e use SW 8 para o carry-in. Conecte as chaves aos seus leds vermelhos correspondentes e conecte o resultado de 5bits mais o carry-out produzido pela operação A + B aos leds verdes. Mostre os valores de A e B nos displays de sete segmentos HEX6 e HEX4, e o resultado S 1 S 0 em HEX1 e HEX0. 3. Como seu circuito só consegue manipular código BCD, leve em consideração os dígitos maiores que 9 ao escrever o código VHDL. 4. Inclua o arquivo de associação de pinos e compile o circuito. Carregue-o na DE2. 5. Teste seu circuito mudando os valores de A, B e c in. Desenvolva um circuito que some dois números BCD de dois dígitos A 1 A 0 e B 1 B 0 que produza um resultado de três dígitos S 2 S 1 S 0. Use duas instâncias do circuito da parte IV para construí-lo. Execute os passos abaixo: 1. Use as chaves SW 15-8 e SW 7-0 para representar números BCD de dois dígitos A 1 A 0 e B 1 B 0, respectivamente. O valor de A 1 A 0 deve ser mostrado em HEX7 e HEX6, enquanto B 1 B 0 é mostrado em HEX5 e HEX4. A soma S 2 S 1 S 0 deve ser mostrada em HEX2, HEX1 e HEX0. 2. Faça as devidas associações de pinos e compile o circuito. 3. Carregue o circuito no FPGA e teste-o. Parte VI Na parte V, foi cria um somador de números BCD de dois dígitos usando duas instâncias de somadores de números BCD de um dígito, desenvolvido na parte IV. Uma forma diferente de descrever um somador de números BCD de dois dígitos em VHDL é especificar um algoritmo como os representado pelo seguinte pseudo-código: É razoavelmente fácil perceber quais circuitos são necessários para implementar esse pseudocódigo. As linhas 1, 9, 10 e 18 representam somadores; linhas 2-8 e 11-17 correspondem a
multiplexadores, e as condições de teste para T 0 > 9 e T 1 > 9 requerem comparadores. Você deve escrever um código VHDL que implemente esse pseudo-código. Perceba que você pode usar soma ao invés das subtrações das linhas 9 e 18. O objetivo desse exercício é examinar os efeitos da dependência de mais de um design VHDL compilados no mesmo projeto e usando IF- ELSE juntamente com os operadores > e +. Execute os passos abaixo: 1. Crie um novo projeto no Quartus II para seu código VHDL. Use as mesmas chaves, displays e leds como na parte V. Compile seu circuito. 2. Use a ferramenta RTL Viewer do Quartus II para examinar o circuito produzido. Compare-o com o desenvolvido na parte V. 3. Carregue o circuito nas DE2 e teste-o colocando valores diferentes para A 1 A 0 e B 1 B 0. Parte VII Escreve um circuito combinacional que converta números binários de 6bits em decimais de dois dígitos representado em BCD. Use as chaves SW 5-0 como entrada do número binário e os displays HEX1 e HEX0 para exibir o número decimal. Carregue seu circuito na DE2 e teste sua funcionalidade.