Baixe o app para aproveitar ainda mais
Prévia do material em texto
Laboratório de Sistemas Digitais 1 – 2/2016 1 USANDO O MOSTRADOR DE 7 SEGMENTOS DA PLACA BASYS2 1 REPRESENTAÇÃO DE NÚMEROS EM CÓDIGO DE 7 SEGMENTOS Um display ou mostrador de 7 segmentos é um dispositivo composto por 7 LEDs dispostos estrategicamente, de forma a constituir o dígito 8, conforme ilustrado na Figura 1. Muitos mostradores de 7 segmentos dispõem ainda de um LED adicional, que implementa o ponto decimal. A depender de quais LEDs estão acesos e quais estão apagados, o mostrador esquematizado permite representar qualquer dígito decimal, bem como as letras de A a F (algumas maiúsculas, outras minúsculas), conforme mostrado na Tabela 1. Assim, um dígito hexadecimal é associado univocamente a uma configuração dos 7 segmentos, na qual alguns são acesos, outros não. Figura 1 - Disposição dos LEDs em um display de 7 segmentos. Nesse sentido, um conversor da representação binária para a representação em 7 segmentos do hexadecimal correspondente é um circuito que, dados 4 bits de entrada, retorna um nível lógico para cada segmento, de forma a se obter a configuração associada àquele dígito. Trata-se, portanto, de um sistema com 4 bits de entrada e 7 bits de saída (ou 8 bits de saída, caso seja considerado também o ponto decimal). Por exemplo, para se apresentar o número 1 no mostrador de 7 segmentos, é necessário acender os LEDs correspondentes aos segmentos b e c, e apagar os demais. Portanto, o código de 7 segmentos seria “0110000” (na ordem, abcdefg). Caso se optasse por incluir na representação o ponto decimal, então o código de 7 segmentos ficaria “01100000” (na ordem, abcdefgp, em que p denota o ponto decimal). Entretanto, muitos mostradores de 7 segmentos (inclusive o mostrador usado no kit de desenvolvimento Basys2) são ativos em nível baixo (isto é, usa-se “1” para apagar e “0” para acender). Portanto, o código de 7 segmentos com ponto decimal ficaria “10011111”. O código VHDL completo de uma entidade que faz a conversão de representação binária para representação em 7 segmentos, com lógica em nível baixo e incluindo o ponto decimal (aqui, sempre apagado) é apresentado a na Figura 2. 2 MULTIPLEXADOR DO MOSTRADOR DE 4 DÍGITOS DA PLACA BASYS2 A placa Basys2 dispõe de quatro mostradores de 7 segmentos. No entanto, há somente 12 pinos associados aos mostradores: • 4 pinos para escolher qual(is) mostrador(es) está(ão) ligado(s); • 7 pinos para acender cada segmento individual; e • 1 pino para o ponto decimal. Embora seja possível mostrar o mesmo dígito nos 4 mostradores simultaneamente (por exemplo, mostrar “8888” ou “FFFF”), não é possível mostrar dígitos distintos. Para isso, seriam necessário 32 pinos (7+1 para cada um dos 4 dígitos). Portanto, para mostrar dígitos diferentes em cada um dos mostradores, é necessário alternar entre os mostradores, em uma frequência mais rápida que a de detecção do olho humano, escrevendo um dígito em cada mostrador de cada vez, de modo que somente um mostrador fique aceso de cada vez. Assim, temos a percepção de que os quatro mostradores estão acesos ao mesmo tempo, quando na verdade eles estarão se alternando no tempo. Esse processo é chamado de multiplexação. Para que os quatro dígitos apareçam brilhantes e continuamente iluminados, cada dígito deve ser aceso uma vez a cada 1 a 16 ms (o que corresponde a uma taxa de atualização de 1 kHz a 60 Hz). Por exemplo, usando uma taxa de atualização de 60 Hz, os mostradores serão atualizados uma vez a cada 16 ms, e cada dígito ficará iluminado por um quarto do ciclo de atualização, isto é, 4 ms. Laboratório de Sistemas Digitais 1 – 2/2016 2 Tabela 1 - Configuração do mostrador de 7 segmentos. bits de entrada dígito hexadecimal configuração do mostrador 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F O controlador tem que garantir que o código de 7 segmentos correto é escrito nos pinos correspondentes quando o mostrador associado a ele está aceso. Para ilustrar esse processo, se AN0 está ligado enquanto b e c estão acionados, então o dígito “1” aparecerá no primeiro mostrador. A seguir, se AN1 está ligado enquanto a, b e c estão acionados, então o dígito “7” aparecerá no segundo mostrador. Se essas duas configurações forem trocadas a cada 4 ms, então um observador verá o número “17” escrito nos mostradores, pois a taxa de atualização é rápida demais para que o olho humano perceba essa alternância. A Figura 3 mostra um exemplo de um diagrama de temporização para o controle de um mostrador de quatro dígitos. Note que os pinos da placa Basys2 associados ao mostrador de 7 segmentos — a, b, c, d, e, f, g, Laboratório de Sistemas Digitais 1 – 2/2016 3 ponto decimal, AN0, AN1, AN2 e AN3 — são ativos em nível baixo. Portanto, para acender um dos segmentos, ou para selecionar um dos mostradores, é preciso escrever o bit “0” no mesmo. Figura 2 - Código VHDL de uma entidade que faz a conversão de representação binária para representação em 7 segmentos, com lógica em nível baixo e incluindo o ponto decimal (aqui, sempre apagado). Figura 3 - Temporização de multiplexação dos mostradores de 7 segmentos. Um exemplo de código para alternar entre os mostradores AN0 e AN1 é apresentado na Figura 4. Note que a entidade tem como entrada dois vetores (unidade e dezena) e mais um bit de clock (ck), e, como saída, dois vetores: digito e display. Os vetores de entrada, cada um com 8 bits, são o código em 7 segmentos (mais ponto decimal) correspondentes aos dois dígitos (unidade e dezena) que se pretende mostrar. O sinal de entrada ck corresponde ao clock da placa, e deve ser associado ao pino “B8” do FPGA no arquivo UCF. Já os vetores de saída, digito e display, correspondem, respectivamente, aos sete segmentos a, b, c, d, e, f e g (mais ponto decimal) do dígito a ser mostrado, e aos pinos AN0, AN1, AN2 e AN3, que indicam quais dos quatro mostradores devem mostrar o dígito (no caso, somente um será ativado de cada vez). Laboratório de Sistemas Digitais 1 – 2/2016 4 Figura 4 - Código VHDL de uma entidade que faz a multiplexação dos mostradores, alternando entre AN0 (que mostrará o dígito correspondente à unidade) e AN1 (que mostrará o dígito correspondente à dezena). No código da Figura 4, note que alterna-se entre o primeiro mostrador, AN0, fazendo-se: displays <= "1110"; e o segundo mostrador, AN1, fazendo-se displays <= "1101"; Quando o mostrador AN0 é acionado, o digito de saída estará refletindo o conteúdo do sinal unidade, que contém o código 7 segmentos associado ao dígito da unidade. Quando o mostrador AN1 é acionado, o digito de saída estará refletindo o conteúdo do sinal dezena, que contém o código 7 segmentos associado ao dígito da dezena. Assim, o mostrador mostrará o número decimal composto por unidade e dezena. A Tabela 2 lista o nome dos pinos associados ao uso dos mostradores de 7 segmentos da placa Basys2. Tabela 2 - Nomes dos pinos associados aos mostradores de 7 segmentos. Seletor de mostrador Segmentos Mostrador Pino Segmento Pino AN3 K14 a L14 AN2 M13 b H12 AN1 J12 c N14 AN0 F12 d N11 e P12 f L13 g M12 ponto decimal N13
Compartilhar