Baixe o app para aproveitar ainda mais
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
Compartilhar