Buscar

Circuitos Digitais - Matriz de Led

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Relatório do componente TEC-498 – Projeto de Circuitos
Digitais
Paulo Queiroz de Carvalho, Rita Kassiane Santos, Samuel da Costa Araújo
Nunes
Engenharia de Computação - Universidade Estadual de Feira de Santana (UEFS) Caixa
Postal 252 e 294 – 44.036-900 – Feira de Santana – BA – Brasil
paulocarvalho.pq@gmail.com , ritakassiane.t.i@gmail.com,
samueldacostaaraujonunes@gmail.com
Abstract. This report aims to present the proposal received to develop a digital
circuit capable of reproducing, through an electronic panel, messages with
displacement animation which represent the possible outputs of the previously
implemented project, which indicate the status of the analyzed lot (accepted,
compromised or rejected). This document contains the stages of development of
the system, ranging from the theoretical foundation to the methods used and
results obtained.
Resumo. Este relatório tem como objetivo apresentar a proposta recebida de
desenvolver um circuito digital capaz de reproduzir através de um painel
eletrônico, mensagens com animação de deslocamento as quais representam as
possíveis saídas do projeto implementado anteriormente, que indicam o estado do
lote analisado (aceito, comprometido ou rejeitado). Neste documento estão
contidas as etapas do desenvolvimento do sistema, que vão desde a
fundamentação teórica aos métodos utilizados e resultados obtidos.
1. Introdução
Desde os primórdios da humanidade, a comunicação se tornou uma ferramenta
essencial para a evolução da sociedade. Nesse contexto, a tecnologia foi a principal aliada no
desenvolvimento dessa área, trazendo como benefício diversificados mecanismos capazes de
tornar o envio e recebimento de conteúdos mais simples e intuitivos.
Pensando na importância de uma comunicação intuitiva dentro do setor industrial, a Baema,
empresa feirense fabricante de móveis plásticos, solicitou à equipe de consultores da Ecomp
JR, uma nova demanda para o sistema que foi desenvolvido. Deverá ser elaborada uma
proposta de circuito capaz de reproduzir através de um painel eletrônico, mensagens com
animação de deslocamento as quais representam as possíveis saídas do projeto implementado
anteriormente, que indicam o estado do lote sob análise (aceito, comprometido ou rejeitado).
Para o desenvolvimento do projeto, foi utilizado conhecimentos em desenvolvimento de
circuitos digitais de lógica sequencial, flip-flops, multiplexadores, demultiplexadores,
contador, e implementação através da linguagem de descrição de hardware Verilog, em
conjunto com a ferramenta Altera Quartus.
2. DESENVOLVIMENTO
mailto:paulocarvalho.pq@gmail.com
mailto:ritakassiane.t.i@gmail.com
2.1 DESENVOLVIMENTO DA SOLUÇÃO
Para o desenvolvimento do circuito solicitado, foi utilizado o kit LEDS-CPLD, que
possui como núcleo de processamento o circuito integrado CPLD (Complex Programmable
Logic Device ou Dispositivo Lógico Complexo Programável) pertencente à família MAX II,
modelo EPM240T100C5N (Laboratório de Eletrônica Digital e Sistemas – UEFS).
No projeto foi utilizado o software Altera Quartus II, na versão 18.1, para realizar a
modelagem do circuito digital, a implementação deste através da linguagem de descrição de
hardware Verilog, e para o desenvolvimento dos seus respectivos testes.
Ao analisar o documento do problema, a solução deve ser desenvolvida tendo como base
as saídas do circuito implementado no projeto anterior, o qual retorna uma sequência de três
bits correspondentes a um dos estados possíveis que o lote sob análise se encontra. Esses
outputs serão a entrada do circuito a ser desenvolvido e podem ter três possibilidades: aceito,
rejeitado ou comprometido. Para representar cada estado possível, a solução desenvolvida
leva em conta que:
1 0 0 - aceito
0 1 0 - comprometido
0 0 1 - rejeitado
Portanto, o circuito deve receber uma sequência de 3 bits em paralelo como entrada, e
exibir no display a palavra referente ao estado. No contexto do problema, essa exibição deve
ter uma animação de deslocamento, e para cumprir este requisito com mais facilidade
optou-se pela utilização de uma matriz de LED 's . No ponto de vista dos desenvolvedores do
produto, a escolha feita foi a ideal visto que construir cada caractere através da manipulação
de linhas e colunas de uma matriz proporciona mais liberdade no tamanho da palavra a ser
exibida. Embora a lógica para tal implementação seja mais complexa em relação à um
display de 7 segmentos, a implementação de um efeito visual de deslocamento é mais
simples.
Diante disso, estabeleceu-se que seria usada uma matriz de LEDs 7x5 (7 linhas e 5
colunas) onde, numa posição mxn nessa matriz, o nível lógico ALTO representa um led
desligado, e o nível lógico BAIXO representa o estado aceso.
Figura 1. Representação do desenho de um caractere
Posteriormente, observou-se que os estados possíveis possuíam caracteres em comum, e para
evitar repetições e aumentar a eficiência seria pertinente desenvolver um circuito capaz de
reutilizar esses caracteres que se repetem.
Outrossim, como explicitado na imagem abaixo, foi definido uma codificação para
representar cada caractere possível no circuito como um binário de 4 bits.
Figura 2. Códigos de cada caracteres
Para manipular os inputs e gerar como saída a palavra desejada de maneira animada, os
códigos que descrevem o circuito foram divididos em módulos, sendo esses:
I. Seletor de Mensagens
II. Seletor de Caracteres
III. Caracter
IV. Matriz
V. Matriz Coluna
VI. Matriz Linha
VII. Divisor de Frequências
VIII. Reset
2.1.1 SELETOR DE MENSAGENS
O módulo select_message receberá como entrada uma sequência de três bits em
paralelo que representa o estado do lote sob análise, e tem como saída cada caractere da
palavra a cada pulso de clock e o tamanho total da palavra. Este módulo utiliza dispositivos
denominados multiplexadores e contadores. O primeiro é um circuito lógico que comuta
dados digitais a partir de diversas linhas de entrada em uma única linha de saída. Ele também
possui entradas de seleção de dados, as quais permitem que os dados digitais de quaisquer
entradas sejam comutados para a linha de saída. (FLOYD,THOMAS L, 2006). O segundo é
um circuito digital que evolui sob o comando de um sinal de clock, de forma que seus estados
reproduzam uma sequência pré-determinada.
Além disso, select_message contém::
I. Um módulo denominado coder_message
Recebe como entrada a sequência de 3 bits em paralelo, posteriormente faz um
combinacional e atribui a cada estado possível 2 bits:
Aceito: 00
https://pt.wikipedia.org/wiki/Clock
Comprometido: 01
Rejeitado: 10
Por exemplo, quando o input deste módulo for 100, ele deve retornar como saída 00.
Com isso, o output desse módulo será usado como seletor de multiplexadores e terá a função
de selecionar a entrada correspondente ao estado correto.
Figura 3. Módulo coder_message
II. Um módulo para cada estado possível - aceito, comprometido e rejeitado
Dentro de cada módulo define-se o tamanho da palavra e um multiplexador que tem
como seletor um contador de 4 bits. As entradas do mux são referentes ao código de
cada caractere.
Por exemplo, no módulo comprometido o mux terá como inputs:
0001 (código de C, definido na figura 2) - entrada 0
0111 (código de 0) - entrada 1
0110 (código de M) - entrada 2
e assim sucessivamente.
Ao passo que o contador é incrementado, o seletor direciona a entrada referente ao
seu valor para o output do mux. Nesse contexto, todos os módulos relativos aos
estados funcionam de maneira análoga.
Segue abaixo o RTLView referente ao módulo de comprometido:
Figura 4. Mux Comprometido
Portanto, o módulo terá como saída o tamanho da palavra definido e o caractere
selecionado pelo mux. Cada output desses será a entrada de um mux, os quais têm
como seletor a saída do módulo coder_message. Segue abaixo o RTLView referente.
Figura 5. Select_message
2.1.2 SELETOR DE CARACTERES
O módulo Seletor de Caracteres é responsável por receber um código de um caractere
e retorna como saída uma sequência de 7 bits que indica quais LED 's dapróxima coluna
devem estar acesos e quais devem estar apagados.
Haverá duas entradas, a primeira o código do caractere, a qual será o seletor de um
multiplexador. Cada input desse mux é correspondente à uma coluna referente ao caractere
selecionado. A segunda entrada é um contador, o qual tem função de selecionar cada coluna
daquele caractere. Sabe-se que todo caractere pode ser representado através do tamanho fixo
de 5 colunas, portanto, esse contador deverá contar até 5, acessando as colunas daquele
caractere.
Depois de enviar todas as colunas, o circuito entra uma única vez no sinal de finish, o
qual é responsável por indicar quando aquele caractere foi totalmente impresso. Além disso,
após notificar que a impressão foi feita, ele faz com que com que o contador zere, e comece a
selecionar as colunas referente ao próximo caractere.
Na figura abaixo, o RTLView mostra como o circuito foi feito:
Seletor de Caracteres
2.1.3 CARACTER
O módulo gen_ char é responsável por retornar uma coluna correspondente a um
caractere de entrada. Ele contém um multiplexador que possui em cada entrada a sequência
de bits que representa quais leds da coluna devem estar acesos.
Ele recebe como seletor um contador de 4 bits que faz a seleção de cada coluna, enviando
para a saída.
2.1.4 MATRIZ
O módulo matrix é essencial na exibição da animação uma vez que é ele quem
manipula as linhas e colunas da matriz de LEDs.
Ele recebe como entrada uma sequência de 7 bits correspondentes às colunas da matriz, um
clock de 191 Hz, um clock de 6 Hz, e um reset. Nesse contexto, o módulo possui um
contador capaz de contar de 0 a 4 (referentes às 5 colunas da matriz), o qual tem duas
saídas que são entradas no módulo de colunas e no módulo de linhas.
I. MATRIZ COLUNA
No módulo colunas é utilizado um dispositivo denominado demultiplexador, o qual
define-se por um circuito lógico que comuta dados digitais de uma linha de entrada para
diversas linhas de saída numa sequência temporal especificada. Essencialmente, um demux
faz o contrário do mux (FLOYD,THOMAS L, 2006).
O Demux em questão tem ligado diretamente à sua entrada um vcc e como seletor o contador
de 3 bits citado anteriormente. Quando o seletor seleciona a saída, é enviado sinal de nível
lógico ALTO que acende a coluna.
Segue abaixo o RTLView referente ao circuito descrito:
Figura 6. Colunas
II. MATRIZ LINHA
Neste módulo foi utilizado flip-flops do tipo D e um registrador de deslocamento. O
primeiro é definido como um circuito lógico de dois estados estáveis que ao receber um pulso
de clock é capaz de servir como uma memória de um bit. O segundo é formado pela
combinação de vários flip-flops de forma que um grupo de bits possa ser armazenado.
Existem 7 módulos de linhas, onde em cada um deles há 5 flip-flops do tipo D
montados num esquema de registrador de deslocamento. Um flip-flop do tipo D possui duas
entradas, que são, respectivamente: Data e um terminal de clock, e uma saída Q. Diante disso,
em um registrador de deslocamento a entrada data de um flip-flop recebe a saída Q do
flip-flop anterior.
A cada pulso de clock de 6 Hz, o data do primeiro flip-flop (que é um bit que
representa a próxima coluna a ser acesa) é deslocado para o flip-flop consecutivo. Nesse
contexto, cada bit armazenado estará ligado à uma entrada de um mux, o qual tem como
seletor o contador descrito anteriormente, que selecionará a entrada do dado que deseja
acessar. Com isso, a capacidade do seletor em enviar uma coluna desejada para a saída do
mux, torna possível recuperar o valor de cada coluna da matriz, uma vez que esse módulo é
utilizado para cada linha. Segue abaixo o RTLView que representa o circuito descrito:
Figura 7. Linhas
2.1.5 DIVISOR DE FREQUÊNCIAS
A velocidade com que os LEDs são acesos ou apagados é essencial para que a
animação aconteça de maneira coerente no olho humano. Diante disso, existe o conceito de
persistência da visão, que aponta que imagens projetadas num ritmo de 25 fps são associadas
na retina sem interrupção. No contexto do problema, infere-se que cada coluna deve-se
manter numa frequência de 25Hz, portanto é necessário utilizar uma frequência 5 vezes maior
para manter a atualização correta. Com isso, tem-se que a frequência ideal é de 25 Hz * 5 Hz
= 125 Hz para as colunas.
Para lidar com isso, foi desenvolvido um divisor de frequências o qual tem como entrada um
clock de 50 MHz advindos da placa e como saída um clock referente às colunas e um clock
para as linhas.
No desenvolvimento do divisor de frequências foi utilizado flip flops do tipo D, no qual sua
entrada data recebe a saída Q negada. Com isso, a cada sinal de clock, o período dobra, logo
a frequência de saída é dividida por dois. Segue abaixo o RTLView que representa esse
circuito:
Figura 8. Divisor de Frequências
Posteriormente, unifica-se em série vários módulos com a função descrita anteriormente, e
divide-se em dois pontos com a finalidade de atingir as frequências ideais. Para a frequência
relativa às linhas, inferiu-se que seria necessário 6 Hz para a atualização. Já para as colunas,
como citado anteriormente o valor ideal seria 125 Hz, no entanto, como o divisor de
frequência está baseado na divisão por dois, não foi encontrado o valor exato. Com isso,
aproximou-se ao valor mais próximo, que nesse caso foi 191 Hz.
Figura 9. Divisor de Clock
2.1.6 RESET
O desenvolvimento desse módulo foi inspirado no circuito de subida de clock. A sua
função é observar a mudança de estados de lote, e notificar ao módulo matrix que a matriz
deve ser resetada para que ocorra a exibição da palavra referente ao novo estado.
Existe uma porta AND com duas entradas, as quais receberão o mesmo sinal, no
entanto um desses inputs será negado. Inferindo-se que as portas lógicas tem um delay
natural, por um pequeno intervalo de tempo ambas as entradas serão sinais iguais mesmo
após a mudança de um sinal. O módulo reset utiliza essa lógica para resetar a matriz de
LEDs quando o estado da sequência de bits é alterado, ou seja, quando o estado do lote
muda.
No contexto do problema, pode-se exemplificar com a seguinte situação:
A partir da sequência de bits de entrada, tem-se uma porta AND estruturada da
forma descrita anteriormente para cada bit que representa cada estado possível no circuito
(aceito, comprometido ou rejeitado). O output de cada uma delas será entrada em uma
porta Or, a qual terá como saída o bit que poderá ativar ou não o reset na matriz.
Supondo uma sequência de 3 bits 1 0 0, quando ocorre um pulso de clock de 0 para 1, se
acontecer uma mudança de estado para 0 1 0, pode-se perceber através do raciocínio
explicado anteriormente, que embora tenha ocorrido a mudança de 1 para 0, existe um
pequeno intervalo de tempo até que esse novo estado seja negado na entrada da sua
respectiva porta AND. Antes desse intervalo de tempo, a porta AND terá como entrada 1 e
1, que retornará rapidamente na sua saída nível lógico ALTO, e fará com que a porta Or
tenha como output nível lógico ALTO. Consequentemente, a entrada reset no módulo
matrix será 1, e a matriz será resetada.
Todavia, a linguagem de descrição Verilog simplifica a expressão do circuito em
questão baseando-se na 8º regra da Álgebra Booleana que define que A + A’ = 0,
impedindo que o pulso de reset seja gerado. Para resolver esse impasse, foi utilizado um
flip-flop do tipo D, o qual recebe na sua entrada data o bit da sequência, e tem seu output Q’
como um dos inputs da porta AND. A outra entrada referente a essa porta é o próprio bit da
sequência.
Segue abaixo RTLView referente ao circuito descrito anteriormente:
Figura 10. Observer
2.2 TESTES
Para que fosse possível analisar o circuito apresentado foi feita a realização de testes
de simulação utilizando a ferramenta Waveform.
No arquivo waveform foi definido um EndTime de 100 us. Além disso, para que fosse
possível a visualização ser feita pela ferramenta de testes Waveform, a frequência referente ao
clock de atualização das colunas (191 Hz) foi aumentada para 25 MHz e a referenteao clock
de atualização das linhas(6 Hz) alterou-se 781 KHz.
As figuras abaixo representam alguns resultados como exemplo:
Figura 11. Aceito
Figura 12. Comprometido
Figura 13. Mudança de Estados
2.3 PINAGEM
O kit LEDS-CPLD já apresenta alguns periféricos que são ligados no circuito
integrado EPM240T100C5N, com isso é preciso ligar os pinos do CI aos respectivos pinos
dos dispositivos no kit. Para isso foi utilizado a ferramenta Pin Planner do software Altera
Quartus II, com a seguinte configuração:
2.4 SÍNTESE DO USO DOS ELEMENTOS LÓGICOS
Segue abaixo uma tabela com dados referentes à análise de ocupação de espaço dos LE’s, e
pinos de entrada e saída e a quantidade de registradores utilizada.
Total Logic Elements 77 / 240 ( 32 % )
Registers 50/240 (21%)
Total LABs 11/24 (46%)
I/O Pins 16/80 (20%)
Clock Pins 2/4 (50%)
3. CONCLUSÃO
O presente relatório refere-se à implementação de um circuito digital capaz de reproduzir
através de um painel eletrônico, mensagens com animação de deslocamento as quais
representam as possíveis saídas do projeto implementado anteriormente, que indicam o
estado do lote sob análise. Para isso, o produto conta com a definição de sete módulos:
select_message, gen_char, matrix, colunas, linhas, divfreq e reset.
Com o desenvolvimento do projeto, foi possível adquirir conhecimentos sólidos no
funcionamento de um circuito digital de lógica sequencial, flip-flops, multiplexadores,
demultiplexadores, contadores e registradores. No entanto, o maior empecilho no processo de
implementação foi a impossibilidade de testar o produto desenvolvido em uma FPGA real.
Apesar disso, infere-se que o produto final cumpre todos os requisitos solicitados, tendo
como os aspectos positivos a reutilização dos caracteres, que fez com que houvesse uma
redução significativa do consumo de elementos lógicos do circuito, e a implementação do
módulo reset, o qual, embora não seja requisito, aperfeiçoa a solução. No entanto, o circuito
poderia ser otimizado através da utilização do código ASCII, que permitiria a implementação
de um novo caractere sem a necessidade de modificar a lógica do circuito. Entretanto, a fim
de otimizar este módulo para se adequar ao problema solicitado, optou-se por criar uma
codificação própria utilizando 4 bits, que reduziu o consumo de LE’s do hardware.
4. ANEXOS
I. PROJETO QUARTUS
II. Seletor de Mensagens
III. Caracter
IV. Matriz
https://drive.google.com/drive/u/0/folders/1B_cpkJli8Re_Sj9U_Xe3GISJNtA079X0
V. Matriz Coluna
VI. Matriz Linha
VII. Divisor de Frequências
VIII. Flip-Flop D
IX. Counter
X. Demultiplexador
XI. Multiplexador
XII. Decodificador Aceito
5. REFERÊNCIAS BIBLIOGRÁFICAS
Floyd, Thomas L. Sistemas digitais [recurso eletrônico] : fundamentos e aplicações.
Disponível em:
<http://walderson.com/livro/cd/sistemas%20digitais%20-%20fundamentos%20e%20aplica%
20-%20floyd,%20thomas%20l_.pdf> Acessado em: 1 de mai. 2021
http://walderson.com/livro/cd/sistemas%20digitais%20-%20fundamentos%20e%20aplica%20-%20floyd,%20thomas%20l_.pdf
http://walderson.com/livro/cd/sistemas%20digitais%20-%20fundamentos%20e%20aplica%20-%20floyd,%20thomas%20l_.pdf
Apostila Lab2 - Simulação e Teste - TEC498 - MI Projeto de Circuitos Digitais.
Disponível em:
<https://drive.google.com/file/d/1fgKjJ_uuBuvwflW2hrun0rX04K2u5hXp/view> Acesso em:
15 de Abr. 2021
1. TOCCI, R. J. Sistemas Digitais: Princípios e Aplicações, Ed. LTC, 7ª. Edição, 2000.
2. WAKERLY, J. F. Digital design: principles and practices. 3rd ed. Prentice Hall, 2001.
3. MANDADO, E. Sistemas Electrónicos Digitales, 9°ed, Marcombo, S.A. 2007.
4. GAJSKI, D. D. Principles of Digital Design, Prentice Hall, 1997.
5. PADILLA, A. J. G. Sistemas digitais. Lisboa: McGraw - Hill, 1993.
6. RABAEY, J. M.; CHANDRAKASAN, A. P.; NIKOLIC, B. Digital integrated circuits:
a design perspective. 2nd ed. Pearson Education, 2003.
https://drive.google.com/file/d/1fgKjJ_uuBuvwflW2hrun0rX04K2u5hXp/view

Outros materiais