Mudanças entre as edições de "ELD129002-Engtelecom (Diário) - Prof. Marcos Moecke"
(→ATUAL) |
|||
(87 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 2: | Linha 2: | ||
===Unidade 1 - Aula inicial, Introdução a disciplina=== | ===Unidade 1 - Aula inicial, Introdução a disciplina=== | ||
* 1 ENCONTRO | * 1 ENCONTRO | ||
− | {{collapse top | + | {{collapse top | Unidade 1 - Aula inicial, Introdução a disciplina}} |
;Encontro 1 (15 fev): | ;Encontro 1 (15 fev): | ||
Linha 25: | Linha 25: | ||
===Unidade 2 - Sistema de numeração e códigos=== | ===Unidade 2 - Sistema de numeração e códigos=== | ||
* 4 ENCONTROS | * 4 ENCONTROS | ||
− | {{collapse top | + | {{collapse top | Unidade 2 - Sistema de numeração e códigos}} |
;Encontro 2 (20 fev) - Sistemas numéricos: | ;Encontro 2 (20 fev) - Sistemas numéricos: | ||
O ser humano precisa contar para determinar quantidades de coisas, com as quantidades ele pode fazer operações matemáticas e comparações. | O ser humano precisa contar para determinar quantidades de coisas, com as quantidades ele pode fazer operações matemáticas e comparações. | ||
Linha 1 237: | Linha 1 237: | ||
* Ver [https://en.wikipedia.org/wiki/Floating-point_arithmetic Floating-point arithmetic] - wikipedia | * Ver [https://en.wikipedia.org/wiki/Floating-point_arithmetic Floating-point arithmetic] - wikipedia | ||
* Ver [https://en.wikipedia.org/wiki/IEEE_754 IEEE 754] - wikipedia | * Ver [https://en.wikipedia.org/wiki/IEEE_754 IEEE 754] - wikipedia | ||
− | * Ler sobre os hardware de microprocessadores [https://en.wikipedia.org/wiki/History_of_computing_hardware_(1960s%E2%80%93present)#Microprocessors]. Para ver o número de bits de cada arquitetura, clique no link correspondente na tabela.{{collapse bottom}} | + | * Ler sobre os hardware de microprocessadores [https://en.wikipedia.org/wiki/History_of_computing_hardware_(1960s%E2%80%93present)#Microprocessors]. Para ver o número de bits de cada arquitetura, clique no link correspondente na tabela. |
+ | {{collapse bottom}} | ||
===Unidade 3 - Funções, portas lógicas e álgebra booleana=== | ===Unidade 3 - Funções, portas lógicas e álgebra booleana=== | ||
* 10 ENCONTROS | * 10 ENCONTROS | ||
− | {{collapse top | + | {{collapse top | Unidade 3 - Funções, portas lógicas e álgebra booleana }} |
;Encontro 6 (5 mar.) | ;Encontro 6 (5 mar.) | ||
;Funções e portas lógicas: | ;Funções e portas lógicas: | ||
Linha 1 255: | Linha 1 256: | ||
*[[Como as portas lógicas são implementadas com transistores CMOS]] | *[[Como as portas lógicas são implementadas com transistores CMOS]] | ||
− | + | ||
;Encontro 8 (12 mar.) | ;Encontro 8 (12 mar.) | ||
− | *Álgebra | + | *[https://moodle.ifsc.edu.br/pluginfile.php/311788/mod_resource/content/2/Algebra%20de%20Boole.pdf Álgebra de Boole] - slides |
− | * | + | ;PARA O PRÓXIMO ENCONTRO: |
+ | *Rever slides 1 a 15 de [https://moodle.ifsc.edu.br/pluginfile.php/311788/mod_resource/content/2/Algebra%20de%20Boole.pdf Álgebra de Boole] | ||
*Ler a seção '''2.3.ÁLGEBRA BOOLEANA''' nas pag 107 a 116 de [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=107 Projeto Digital e Arquitetura de Computadores] | *Ler a seção '''2.3.ÁLGEBRA BOOLEANA''' nas pag 107 a 116 de [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=107 Projeto Digital e Arquitetura de Computadores] | ||
+ | *Ler a seção '''4-2 LEIS E REGRAS DA ÁLGEBRA BOOLEANA''' nas pag 201 a 206 de [https://app.minhabiblioteca.com.br/reader/books/9788577801077/pageid/200 FLOYD, Thomas. Sistemas digitais. Grupo A, 2011. E-book. ISBN 9788577801077] na [[Minha Biblioteca]] | ||
− | + | ;Encontro 9 (14 mar.) | |
− | * | + | *[https://moodle.ifsc.edu.br/pluginfile.php/311788/mod_resource/content/2/Algebra%20de%20Boole.pdf Álgebra de Boole] |
− | + | ;Teoremas de De Morgan: | |
− | + | *O complemento do produto é igual a soma dos complementos: <math> \overline{X \cdot Y} = \overline{X} + \overline{Y} </math> | |
− | + | *O complemento da soma é igual ao produto dos complementos: <math> \overline{X+Y} = \overline{X} \cdot \overline{Y} </math> | |
− | + | Para provar os teoremas, podemos obter a tabela verdade de ambos lados de cada equação booleana. | |
− | ; | + | {| class="wikitable" style="text-align:center;" |
− | + | |- style="text-align:left;" | |
− | + | ! colspan="2" | Entradas | |
− | + | ! colspan="2" | Saídas | |
+ | |- style="font-weight:bold; background-color:#EAECF0; color:#202122;" | ||
+ | | style="vertical-align:middle; width: 25%;" | X | ||
+ | | style="vertical-align:middle; width: 25%;" | Y | ||
+ | | style="font-weight:normal; width: 25%;" | <math> \overline{X \cdot Y} </math> | ||
+ | | style="font-weight:normal; width: 25%;" | <math> \overline{X} + \overline{Y} </math> | ||
+ | |- style="vertical-align:middle; | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 1 | ||
+ | | 1 | ||
+ | |- | ||
+ | | 0 | ||
+ | | 1 | ||
+ | | 1 | ||
+ | | 1 | ||
+ | |- | ||
+ | | 1 | ||
+ | | 0 | ||
+ | | 1 | ||
+ | | 1 | ||
+ | |- | ||
+ | | 1 | ||
+ | | 1 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | |} | ||
− | ; | + | {| class="wikitable" style="text-align:center;" |
− | + | |- style="text-align:left;" | |
− | + | ! colspan="2" | Entradas | |
+ | ! colspan="2" | Saídas | ||
+ | |- style="font-weight:bold; background-color:#EAECF0; color:#202122;" | ||
+ | | style="vertical-align:middle; width: 25%;" | X | ||
+ | | style="vertical-align:middle; width: 25%;" | Y | ||
+ | | style="font-weight:normal; width: 25%;" | <math> \overline{X + Y} </math> | ||
+ | | style="font-weight:normal; width: 25%;" | <math> \overline{X} \cdot \overline{Y} </math> | ||
+ | |- style="vertical-align:middle; | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 1 | ||
+ | | 1 | ||
+ | |- | ||
+ | | 0 | ||
+ | | 1 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | |- | ||
+ | | 1 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | |- | ||
+ | | 1 | ||
+ | | 1 | ||
+ | | 0 | ||
+ | | 0 | ||
+ | |} | ||
+ | |||
+ | Ou utilizar os postulados e teoremas da algebra de boole. | ||
+ | Considerando que <math> \overline{X+Y} = \overline{X} \cdot \overline{Y} </math> seja verdade, então | ||
+ | :'''PASSO 1:''' pelo postulado do complemento <math> \overline{A} + A = 1 </math>, podemos afirmar que | ||
+ | ::<math>(X+Y) + (\overline{X}\cdot\overline{Y}) = 1 </math> | ||
+ | :'''PASSO 2:''' pelo teorema da distribuição <math> A + (B \cdot C) = (A + B) \cdot (A + C) </math>, podemos afirmar que | ||
+ | ::<math> (X + Y) + (\overline{X}\cdot\overline{Y})=(X + Y + \overline{X})\cdot(X + Y + \overline{Y}) </math> | ||
+ | :'''PASSO 3:''' pelo teorema da comutação <math> A + B = B + A </math>, podemos afirmar que | ||
+ | ::<math>(X + Y + \overline{X})\cdot(X + Y + \overline{Y}) = (Y + X + \overline{X})\cdot(X + Y + \overline{Y}) </math> | ||
+ | :'''PASSO 4:''' pelo postulado do complemento <math> A + \overline{A} = 1 </math>, podemos afirmar que | ||
+ | ::<math>(Y + X + \overline{X})\cdot(X + Y + \overline{Y}) = (Y + 1) \cdot (X + 1) </math> | ||
+ | :'''PASSO 5:''' pelo postulado do elemento absorvente <math> A + 1 = 1 </math>, podemos afirmar que | ||
+ | ::<math> (Y + 1) \cdot (X + 1) = 1 \cdot 1 </math> | ||
+ | :'''PASSO 6:''' pelo postulado da multiplicação (AND) <math> 1 \cdot 1 = 1 </math>, podemos afirmar que | ||
+ | ::<math> 1 \cdot 1 = 1 </math> | ||
+ | : Portanto a consideração inicial é verdadeira <math> \overline{X+Y} = \overline{X} \cdot \overline{Y} </math>. | ||
+ | |||
+ | :'''Nota:''' O teorema também pode ser provado usando o postulado do complemento <math> \overline{A} \cdot A = 0 </math>, pois neste caso, podemos afirmar que | ||
+ | ::<math>(X+Y) . (\overline{X}\cdot\overline{Y}) = 0 </math>. | ||
+ | :Tente desenvolver o restante da prova usando apenas os postulados e teoremas. | ||
− | + | Os teoremas de De Morgam são validos para qualquer número (N) de entradas, podem ser escritos como: | |
− | + | : <math> \overline{X_1 \cdot X_2 \cdot ... \cdot X_N} = \overline{X_1} + \overline{X_2} + ... + \overline{X_N} </math> | |
− | + | : <math> \overline{X_1 + X_2 + ... + X_N} = \overline{X_1} \cdot \overline{X_2} \cdot ... \cdot \overline{X_N}</math> | |
− | |||
− | ; | + | ;Exercícios: |
− | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/ | + | Simplifique as expressões lógicas (''caso seja possível''). Indique os Postulados ou Teoremas utilizado em cada passo. Para simplificar as notações os códigos A1 a A5 e T1 a T12 ou T1' a T12' indicado na [https://moodle.ifsc.edu.br/pluginfile.php/372852/mod_resource/content/1/Folha%20de%20consulta%20-%20%C3%A1lgebra%20booleana.pdf Folha de consulta - álgebra booleana]. |
− | *Ler a seção '''2.7.MAPAS DE KARNAUGH''' nas pag 99 a 108 de [https://moodle.ifsc.edu.br/pluginfile.php/ | + | :a) ABC + A + BC |
− | *Ler [https://en.wikipedia.org/wiki/Quine%E2%80%93McCluskey_algorithm#:~:text=The%20Quine%E2%80%93McCluskey%20algorithm%20is,to%20as%20the%20tabulation%20method Quine–McCluskey algorithm] | + | :b) A.B + A.B’ + A’.B |
− | *Teste em [https://www.mathematik.uni-marburg.de/~thormae/lectures/ti1/code/qmc/ Quine–McCluskey algorithm] | + | :c) X.Y + X.Y’ + X’.Y + X.Y |
+ | :d) X.Y + X.Z + Z.Y | ||
+ | :e) D.B’+D.(D.B+C.D’) | ||
+ | |||
+ | Ver também exemplos em 4-4 ANÁLISE BOOLEANA DE CIRCUITOS LÓGICOS [[https://app.minhabiblioteca.com.br/reader/books/9788577801077/pageid/206 FLOYD, Thomas. Sistemas digitais. Grupo A, 2011. E-book. ISBN 9788577801077] | ||
+ | |||
+ | ;PARA O PRÓXIMO ENCONTRO: | ||
+ | *Rever slides 16 até fim de [https://moodle.ifsc.edu.br/pluginfile.php/311788/mod_resource/content/2/Algebra%20de%20Boole.pdf Álgebra de Boole] | ||
+ | *Ler a seção '''2.3.ÁLGEBRA BOOLEANA''' nas pag 107 a 116 de [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=107 Projeto Digital e Arquitetura de Computadores] | ||
+ | *Ler a seção '''4-3 TEOREMAS DE DEMORGAN e 4-4 ANÁLISE BOOLEANA DE CIRCUITOS LÓGICOS ''' nas pag 207 a 216 de [https://app.minhabiblioteca.com.br/reader/books/9788577801077/pageid/206 FLOYD, Thomas. Sistemas digitais. Grupo A, 2011. E-book. ISBN 9788577801077] na [[Minha Biblioteca]] | ||
+ | |||
+ | ;Encontro 10 (21 mar.) | ||
+ | *Expressão booleana - Tabela verdade - Circuito com portas lógicas: | ||
+ | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/311791/mod_resource/content/1/Portas%20-%20Tabela%20verdade%20-%20Express%C3%B5es.pdf Expressão booleana - Tabela verdade - Circuito com portas lógicas] | ||
+ | *Ler a seção '''2.4. DA LÓGICA ÀS PORTAS e 2.5.LÓGICA COMBINATÓRIO MULTI-NÍVEL''' nas pag 90 a 95 de [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=116 Projeto Digital e Arquitetura de Computadores] | ||
+ | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/311790/mod_resource/content/1/Exercicios%20de%20algebra%20de%20boole.pdf Exercícios de álgebra de Boole] | ||
+ | *Ler a seção '''2.3.4. A Verdade por Detrás de Tudo e 2.3.5. Simplificando Equações''' nas pag 87 a 90 de [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=113 Projeto Digital e Arquitetura de Computadores] | ||
+ | |||
+ | ;Encontro 11 (26 mar.): | ||
+ | *Expressão booleana - Tabela verdade - Circuito com portas lógicas: | ||
+ | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/311791/mod_resource/content/1/Portas%20-%20Tabela%20verdade%20-%20Express%C3%B5es.pdf Expressão booleana - Tabela verdade - Circuito com portas lógicas] | ||
+ | *Ler a seção '''2.4. DA LÓGICA ÀS PORTAS e 2.5.LÓGICA COMBINATÓRIO MULTI-NÍVEL''' nas pag 90 a 95 de [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=116 Projeto Digital e Arquitetura de Computadores] | ||
+ | *Avaliação A1b (50 minutos) | ||
+ | |||
+ | ;Encontro 12 (28 mar.) | ||
+ | *Simplificação de expressões lógicas - Mapas de Karnaugh-Veitch: | ||
+ | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/311792/mod_resource/content/2/Simplifica%C3%A7%C3%A3o%20de%20express%C3%B5es%20l%C3%B3gicas%20-%20Mapas%20de%20Karnaugh-Veitch.pdf Simplificação de expressões lógicas - Mapas de Karnaugh-Veitch] | ||
+ | *Ler a seção '''2.7.MAPAS DE KARNAUGH''' nas pag 99 a 108 de [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=125 Projeto Digital e Arquitetura de Computadores] | ||
+ | |||
+ | ;Encontro 13 (2 abr.) | ||
+ | *Ler [https://en.wikipedia.org/wiki/Quine%E2%80%93McCluskey_algorithm#:~:text=The%20Quine%E2%80%93McCluskey%20algorithm%20is,to%20as%20the%20tabulation%20method Quine–McCluskey algorithm] | ||
+ | *Teste em [https://www.mathematik.uni-marburg.de/~thormae/lectures/ti1/code/qmc/ Quine–McCluskey algorithm] | ||
*Ler [https://en.wikipedia.org/wiki/Espresso_heuristic_logic_minimizer Espresso heuristic logic minimizer] | *Ler [https://en.wikipedia.org/wiki/Espresso_heuristic_logic_minimizer Espresso heuristic logic minimizer] | ||
*Ler [https://wiki.sj.ifsc.edu.br/index.php/Mapas_de_Karnaugh_2D_e_3D Mapas de Karnaugh 2D e 3D] | *Ler [https://wiki.sj.ifsc.edu.br/index.php/Mapas_de_Karnaugh_2D_e_3D Mapas de Karnaugh 2D e 3D] | ||
− | *K-Map online [https://www.docjava.com/cpe210/kmapExplorer.html docjava.com], [https://ictlab.kz/extra/Kmap/ ICT laboratory], [https://www.mathematik.uni-marburg.de/~thormae/lectures/ti1/code/karnaughmap/ uni-marburg.de] e [https:// | + | *K-Map online [https://www.docjava.com/cpe210/kmapExplorer.html docjava.com], [https://ictlab.kz/extra/Kmap/ ICT laboratory], [https://www.mathematik.uni-marburg.de/~thormae/lectures/ti1/code/karnaughmap/ uni-marburg.de] |
− | -- | + | |
− | + | ;Encontro 14 (4 abr.) | |
+ | *Simplificação de expressões lógicas - Mapas de Karnaugh-Veitch: | ||
+ | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/311792/mod_resource/content/2/Simplifica%C3%A7%C3%A3o%20de%20express%C3%B5es%20l%C3%B3gicas%20-%20Mapas%20de%20Karnaugh-Veitch.pdf Simplificação de expressões lógicas - Mapas de Karnaugh-Veitch] | ||
+ | *Ler a seção '''2.7.MAPAS DE KARNAUGH''' nas pag 99 a 108 de [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=125 Projeto Digital e Arquitetura de Computadores] | ||
+ | |||
+ | |||
+ | ;Encontro 15 (9 abr.) - Projeto de circuitos combinacionais: | ||
+ | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/311789/mod_resource/content/1/Projeto%20de%20circuitos%20combinacionais.pdf Projeto de circuitos combinacionais] | ||
+ | *Multiplexadores e Decodificadores: | ||
+ | *Ler a seção '''2.8.BLOCOS COMBINATÓRIOS''' nas pag 109 a 114 [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=135 Projeto Digital e Arquitetura de Computadores] | ||
+ | |||
+ | ;Encontro 16 (11 abr.) | ||
+ | *Exercícios 2.1, 2.2, 2.5-7, 2.13-18, 2.22-25, 2.28-29, 2.31-32, 2.34, 2.35, 2.36-37, 2.39-40 ver [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=151] | ||
+ | *Pergunta 2.2, 2.3, 2.4 ver [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=163] | ||
+ | |||
+ | ;Encontro 18 (23 abr.) - Avaliação A1c (6 pontos): | ||
+ | *Simplificação de expressões lógicas e mapa de Karnaugh | ||
+ | *Representação de circuitos lógicos - '''Diagrama de portas lógicos = Tabela Verdade = Expressão lógica''' | ||
− | |||
− | |||
− | |||
<!-- | <!-- | ||
− | |||
− | |||
− | |||
− | + | *Consumo de energia de circuitos digitais. | |
+ | ::<math> P_{Estatica} = I_{DD} \times V_{DD} </math> | ||
+ | ::<math> P_{Dinamica} = 1/2 \times C \times V_{DD}^2 \times f </math> | ||
+ | ::<math> P_{Total} = P_{Estatica} + P_{Dinamica} </math> | ||
− | + | *Ler pag 69 a 70 de [https://moodle.ifsc.edu.br/pluginfile.php/311785/mod_resource/content/1/DDCA_portugues.pdf#page=69 Projeto Digital e Arquitetura de Computadores] | |
− | * | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | :* '''ENTITY''' | + | ;Encontro 11 (31 ago) - Exercícios de álgebra de Boole: |
+ | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/252198/mod_resource/content/1/Exercicios%20de%20algebra%20de%20boole.pdf Exercícios de álgebra de Boole] | ||
+ | *Ler a seção '''2.3.4. A Verdade por Detrás de Tudo e 2.3.5. Simplificando Equações''' nas pag 87 a 90 de [https://moodle.ifsc.edu.br/pluginfile.php/159985/mod_resource/content/1/DDCA_portugues.pdf#page=113 Projeto Digital e Arquitetura de Computadores] | ||
+ | |||
+ | ;Encontro 12 (5 set) - Expressão booleana - Tabela verdade - Circuito com portas lógicas: | ||
+ | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/254019/mod_resource/content/1/Portas%20-%20Tabela%20verdade%20-%20Express%C3%B5es.pdf Expressão booleana - Tabela verdade - Circuito com portas lógicas] | ||
+ | *Ler a seção '''2.4. DA LÓGICA ÀS PORTAS e 2.5.LÓGICA COMBINATÓRIO MULTI-NÍVEL''' nas pag 90 a 95 de [https://moodle.ifsc.edu.br/pluginfile.php/159985/mod_resource/content/1/DDCA_portugues.pdf#page=116 Projeto Digital e Arquitetura de Computadores] | ||
+ | *Avaliação A1b (55 minutos) | ||
+ | |||
+ | --> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ===Unidade 4 - Introdução a linguagem VHDL e Quartus/ModelSim=== | ||
+ | * 6 ENCONTROS | ||
+ | {{collapse top | expand=true |Unidade 4 - Introdução a linguagem VHDL e Quartus/ModelSim }} | ||
+ | |||
+ | |||
+ | ;Encontro 17 (18 abr.) - Linguagem VHDL: | ||
+ | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/311793/mod_resource/content/2/Introdu%C3%A7%C3%A3o%20a%20linguagem%20de%20descri%C3%A7%C3%A3o%20de%20hardware.pdf Introdução a linguagem de descrição de hardware (DHL)] | ||
+ | |||
+ | ;Encontro 19 (25 abr.) - Linguagem VHDL: | ||
+ | *Ver resumo em [https://moodle.ifsc.edu.br/pluginfile.php/311793/mod_resource/content/2/Introdu%C3%A7%C3%A3o%20a%20linguagem%20de%20descri%C3%A7%C3%A3o%20de%20hardware.pdf Introdução a linguagem de descrição de hardware (DHL)] | ||
+ | |||
+ | * Estrutura do código VHDL | ||
+ | :* Declaração das bibliotecas e pacotes '''LIBRARY''' / '''PACKAGE''' | ||
+ | <syntaxhighlight lang=vhdl> | ||
+ | library library_name; | ||
+ | use library_name.package_name.all; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | :* '''ENTITY''' | ||
<syntaxhighlight lang=vhdl> | <syntaxhighlight lang=vhdl> | ||
entity entity_name is | entity entity_name is | ||
Linha 1 400: | Linha 1 543: | ||
*Modifique a descrição do circuito para implementar o circuito da função Y = (A.B)' + C.D'B', salve o projeto Ckt2.vhd e de o mesmo nome para a entity. | *Modifique a descrição do circuito para implementar o circuito da função Y = (A.B)' + C.D'B', salve o projeto Ckt2.vhd e de o mesmo nome para a entity. | ||
− | ; | + | ;PARA O PRÓXIMO ENCONTRO |
− | * | + | *Escreva em VHDL o circuito do [https://wiki.sj.ifsc.edu.br/index.php/ELD129002-Engtelecom_(Di%C3%A1rio)_-_Prof._Marcos_Moecke#AE1_-_Projeto_de_um_conversor_de_bin.C3.A1rio_para_mostrador_de_7_segmentos AE1 - Projeto de um conversor de binário para mostrador de 7 segmentos] |
+ | :*Use como modelo: | ||
+ | <syntaxhighlight lang=vhdl> | ||
+ | -- A bibliteca std e o pacote standard são autodeclarados, então as linhas abaixo podem ser comentadas com "--" | ||
+ | --library std; | ||
+ | --use std.standard.all; | ||
− | + | entity BCD2SSD is | |
− | + | port ( | |
+ | -- Entradas ABCD do circuito | ||
+ | A, B, C, D: in bit; | ||
+ | -- Saidas para os leds do mostrador de 7 segmentos. Note que o nome a, b, .. g foi mudado para ssd_a, ssd_b, ... ssd_g pois o VHDL é insensível a caixa | ||
+ | ssd_a, ssd_b, ssd_c, ssd_d, ssd_e, ssd_f, ssd_g : out bit | ||
+ | ); | ||
+ | end entity; | ||
+ | architecture ifsc_v1 of BCD2SSD is | ||
+ | begin | ||
+ | -- descreva a expressão lógica obtida para cada uma das saídas; | ||
+ | -- Por exemplo: se for a = A + C + (B'.D') + (B.D) | ||
+ | ssd_a <= A or C or (not B and not D) or (B and D); | ||
− | ;Encontro 21 ( | + | ssd_g <= ; |
− | * | + | end architecture; |
− | + | </syntaxhighlight> | |
− | + | ||
− | -- | + | *Ler [https://pt.wikipedia.org/wiki/VHDL VHDL] na Wikipedia. |
− | {{collapse bottom}} | + | *Guardar [[Folha de consulta de VHDL]] |
+ | |||
+ | ;Encontro 20 (30 abr.) [https://wiki.sj.ifsc.edu.br/index.php/ELD129002-Engtelecom_(Di%C3%A1rio)_-_Prof._Marcos_Moecke#AE2_-_Conhecendo_os_dispositivos_l.C3.B3gicos_program.C3.A1veis AE2 - Conhecendo os dispositivos lógicos programáveis] | ||
+ | |||
+ | |||
+ | ;Encontro 21 (2 mai.) [https://wiki.sj.ifsc.edu.br/index.php/ELD129002-Engtelecom_(Di%C3%A1rio)_-_Prof._Marcos_Moecke#AE2_-_Conhecendo_os_dispositivos_l.C3.B3gicos_program.C3.A1veis AE2 - Conhecendo os dispositivos lógicos programáveis]: | ||
+ | :*(Continuação) | ||
+ | |||
+ | <blockquote style="background: yellow; border: 3px solid black; padding: 1em;"> | ||
+ | ;CALENDÁRIO FOI SUSPENSO NO CAMPUS: Entre 6 mai. e 28 jun as '''aulas foram proibidas'''. Foram ao todo 15 encontros suspensos em função da suspensão do calendário. As aulas serão repostas de acordo com o calendário de reposição a ser aprovado pelo campus. | ||
+ | <pre> | ||
+ | O Colegiado do Câmpus São José decidiu suspender o calendário acadêmico local a partir de 6 de maio (segunda-feira), em função da greve dos servidores do IFSC. A decisão foi publicada na Resolução 03/2024, de 30 de abril. | ||
+ | |||
+ | Sendo assim, considerando o termo de acordo supracitado, em conjunto com a suspensão do calendário acadêmico pelo câmpus, esclareço que NENHUMA AULA, PROVA, projeto de extensão ou qualquer outra atividade vinculada ao calendário acadêmico DEVERÁ OCORRER enquanto perdurar o período de suspensão do mesmo. | ||
+ | </pre> | ||
+ | </blockquote> | ||
+ | |||
+ | |||
+ | ;Encontro 22 (2 jul.) | ||
+ | *[https://wiki.sj.ifsc.edu.br/index.php/ELD129002-Engtelecom_(Di%C3%A1rio)_-_Prof._Marcos_Moecke#AE3_-_Programa.C3.A7.C3.A3o_do_kit_Mercurio_IV AE3 - Programação do kit Mercurio IV] | ||
+ | *ver também [[Preparando para gravar o circuito lógico no FPGA]] | ||
+ | {{collapse bottom}} | ||
===Unidade 5 - Circuitos lógicos combinacionais (com VHDL)=== | ===Unidade 5 - Circuitos lógicos combinacionais (com VHDL)=== | ||
* 12 ENCONTROS | * 12 ENCONTROS | ||
{{collapse top | expand=true |Unidade 5 - Circuitos lógicos combinacionais (com VHDL)}} | {{collapse top | expand=true |Unidade 5 - Circuitos lógicos combinacionais (com VHDL)}} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ;Encontro 24 ( | + | ;Encontro 23 e 24 (4 e 9 jul.) |
* Conhecer o [[Código Gray]] | * Conhecer o [[Código Gray]] | ||
* Implementação de conversor Binário para Gray (bin2gray) | * Implementação de conversor Binário para Gray (bin2gray) | ||
Linha 1 509: | Linha 1 684: | ||
− | + | ;DESAFIO - Implemente um conversor Gray para Binário (gray2bin): | |
− | Considerando o que aprendeu com as | + | Considerando o que aprendeu com as versões do conversor '''bin2gray''', descreva o circuito do conversor '''gray2bin'''. Inicie descrevendo o código VHDL para 4 bits, em seguida busque tornar o código genérico para qualquer número de bits. |
+ | |||
<syntaxhighlight lang=vhdl> | <syntaxhighlight lang=vhdl> | ||
------------------------- | ------------------------- | ||
Linha 1 534: | Linha 1 710: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | ;Encontro 25 e 26 | + | ;Encontro 25 e 26 (11 e 16 jul.) |
+ | |||
* Conhecer o multiplexador digital. | * Conhecer o multiplexador digital. | ||
Um multiplexador digital de N entradas e 1 saída, frequentemente abreviado como MUX N:1, é um circuito digital muito utilizado para rotear sinais digitais Ele desempenha a função de selecionar uma das entradas para ser encaminhada para a saída com base em um sinal de seleção (ou controle). | Um multiplexador digital de N entradas e 1 saída, frequentemente abreviado como MUX N:1, é um circuito digital muito utilizado para rotear sinais digitais Ele desempenha a função de selecionar uma das entradas para ser encaminhada para a saída com base em um sinal de seleção (ou controle). | ||
Linha 1 780: | Linha 1 957: | ||
* Note a que ao verificar o Technology Map Viewer, nos 3 primeiros casos serão usados os mesmos elementos lógicos. | * Note a que ao verificar o Technology Map Viewer, nos 3 primeiros casos serão usados os mesmos elementos lógicos. | ||
{{fig|2.4|Technology Map do mux4x1 para a família Cyclone | TM_mux4x1.png| 400 px |}} | {{fig|2.4|Technology Map do mux4x1 para a família Cyclone | TM_mux4x1.png| 400 px |}} | ||
+ | |||
+ | *Realize a simulação das 3 arquiteturas do MUX4:1 no Modelsim | ||
+ | *Crie um arquivo tb_mux4x1_v1.do que repita a simulação da arquitetura v1 | ||
+ | *Crie um arquivo tb_mux4x1_v2.do que repita a simulação da arquitetura v2 | ||
+ | *Crie um arquivo tb_mux4x1_v3.do que repita a simulação da arquitetura v1 | ||
+ | *Inclua todos os arquivos .do no projeto do Quartus e salve o arquivo QAR | ||
+ | |||
+ | ;Encontro 27 (18 jul.) | ||
* Note que o elemento lógico acima possui uma LUT (LookUp Table) que basicamente implementa o circuito combinacional através de uma tabela de consulta (Tabela Verdade), a qual pode ser visualizada clicando com o botão Direito do Mouse e selecionando Properties, juntamente com Mapa de Karnaugh e seu Circuito Lógico representado por portas. Todas as representações são equivalentes. | * Note que o elemento lógico acima possui uma LUT (LookUp Table) que basicamente implementa o circuito combinacional através de uma tabela de consulta (Tabela Verdade), a qual pode ser visualizada clicando com o botão Direito do Mouse e selecionando Properties, juntamente com Mapa de Karnaugh e seu Circuito Lógico representado por portas. Todas as representações são equivalentes. | ||
Linha 1 790: | Linha 1 975: | ||
{{fig|2.5|Technology Map do mux4x1 para a família Aria 10 | TM_mux4x1_S3.png| 400 px |}} | {{fig|2.5|Technology Map do mux4x1 para a família Aria 10 | TM_mux4x1_S3.png| 400 px |}} | ||
− | * | + | *Demultiplexador de 1 para 4 [https://tinyurl.com/yrvmxgq7] |
− | * | + | :*Implementar a implementar em VHDL |
− | + | <syntaxhighlight lang=vhdl> | |
− | + | entity demux1x4 is | |
− | + | port( | |
+ | X : in _____; | ||
+ | A : ___ bit_vector__________; | ||
+ | y : ___ bit_vector__________ | ||
+ | ); | ||
+ | end entity; | ||
+ | |||
+ | architecture ______ of _____ is | ||
+ | begin | ||
+ | y(0) <= X and (not A(1)) and (not A(0)); | ||
+ | y(1) <= | ||
− | ;Encontro 27 e 28 (ANP e 7 nov.) | + | end architecture; |
− | *[[Laboratório - Implementação de um MUX4:1 em protoboard | AE2 - Atividade de Laboratório 2 ]] Passos 1 e 2 | + | </syntaxhighlight> |
+ | |||
+ | |||
+ | ;Encontro 28 (23 jul.) | ||
+ | *Demultiplexador com enable. [https://tinyurl.com/yqnaz3sl] | ||
+ | :*Implementar a implementar em VHDL | ||
+ | :*Entender a importantancia do tipo de dado STD_LOGIC | ||
+ | |||
+ | *Decodificador de binário para sete segmentos. | ||
+ | :*Considere o decodificador que havia sido implementado na AE2 através de lógica pura. Neste caso foram usados bits individuais para cada entrada (A, B, C e D) e também para as saídas (a, b, c, d, e, f, g). | ||
+ | :*Em uma solução melhorada devem ser utilizados vetores para representar a entrada (BIN) e a saída (SSD). Com isso será possível explorar as instruções WHEN ELSE e WITH SELECT para implemantar o decodificador. | ||
+ | |||
+ | <syntaxhighlight lang=vhdl> | ||
+ | library ieee; | ||
+ | use ieee.std_logic_1164.all; | ||
+ | entity bin2ssd is | ||
+ | port( | ||
+ | bin : in std_logic_vector (3 downto 0); | ||
+ | ssd : out std_logic_vector (6 downto 0) | ||
+ | ); | ||
+ | end entity; | ||
+ | |||
+ | architecture when_else of bin2ssd is | ||
+ | |||
+ | begin | ||
+ | ssd <= "0111111" when bin = "0000" else | ||
+ | ... | ||
+ | end architecture; | ||
+ | </syntaxhighlight > | ||
+ | |||
+ | <!-- | ||
+ | ;Encontro 27 e 28 (ANP e 7 nov.) | ||
+ | *[[Laboratório - Implementação de um MUX4:1 em protoboard | AE2 - Atividade de Laboratório 2 ]] Passos 1 e 2 | ||
;Encontro 29 (9 nov.) | ;Encontro 29 (9 nov.) | ||
*[[Laboratório - Implementação de um MUX4:1 em protoboard | AE2 - Atividade de Laboratório 2 ]] Passos 3 e 4 | *[[Laboratório - Implementação de um MUX4:1 em protoboard | AE2 - Atividade de Laboratório 2 ]] Passos 3 e 4 | ||
*Entrega do relatório no Moodle (até 14 dias). | *Entrega do relatório no Moodle (até 14 dias). | ||
;Encontro 30 (14 nov.) | ;Encontro 30 (14 nov.) | ||
− | |||
− | |||
− | |||
− | |||
;Encontro 31 e 32 (16 e 21 nov.) | ;Encontro 31 e 32 (16 e 21 nov.) | ||
Linha 1 812: | Linha 2 035: | ||
*Demultiplexador com enable. [https://tinyurl.com/yqnaz3sl] | *Demultiplexador com enable. [https://tinyurl.com/yqnaz3sl] | ||
:*Implementar a implementar em VHDL | :*Implementar a implementar em VHDL | ||
− | + | --> | |
+ | |||
− | ;Encontro | + | ;Encontro 29 (30 jul.) |
*Comentários no código (duplo traço --) | *Comentários no código (duplo traço --) | ||
-- Isso eh uma linha de comentario | -- Isso eh uma linha de comentario | ||
Linha 1 980: | Linha 2 204: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | ====ATUAL==== | ||
+ | ;Encontro 30 (1 ago.) | ||
A biblioteca [[Std logic 1164.vhd]] ainda define algumas funções importantes como a '''rising_edge''' que determina se um sinal está na borda de subida (usado em sinais de clock). | A biblioteca [[Std logic 1164.vhd]] ainda define algumas funções importantes como a '''rising_edge''' que determina se um sinal está na borda de subida (usado em sinais de clock). | ||
Linha 2 008: | Linha 2 234: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
A biblioteca [[Numeric std.vhd]] define os tipos UNSIGNED e SIGNED. | A biblioteca [[Numeric std.vhd]] define os tipos UNSIGNED e SIGNED. | ||
Linha 2 125: | Linha 2 352: | ||
;Exemplo de aplicação: | ;Exemplo de aplicação: | ||
+ | |||
*Demultiplexador com saída em 3-state. [https://tinyurl.com/2x4b5r5c] | *Demultiplexador com saída em 3-state. [https://tinyurl.com/2x4b5r5c] | ||
:*Baseado no Demultiplexador com enable, implemente ele com 3-state. Se o circuito não estiver habilitado, as saídas devem ficar em 3-state. | :*Baseado no Demultiplexador com enable, implemente ele com 3-state. Se o circuito não estiver habilitado, as saídas devem ficar em 3-state. | ||
:*Para implementar em VHDL será necessário utilizar o tipo de dado '''std_logic''' ou '''std_logic_vector''' | :*Para implementar em VHDL será necessário utilizar o tipo de dado '''std_logic''' ou '''std_logic_vector''' | ||
− | - | + | |
− | {{collapse bottom}} | + | *Decodificador de 4 endereços [https://tinyurl.com/ytnbc2qq] |
+ | :*Implementar em VHDL usando with-select e portas lógicas | ||
+ | :*Implementar a implementar em VHDL de um decodificador de 32 endereços | ||
+ | |||
+ | {{collapse bottom}} | ||
===Unidade 6 - Circuitos aritméticos (com VHDL) === | ===Unidade 6 - Circuitos aritméticos (com VHDL) === | ||
* 5 ENCONTROS | * 5 ENCONTROS | ||
{{collapse top | expand=true | Unidade 6 - Circuitos aritméticos (com VHDL)}} | {{collapse top | expand=true | Unidade 6 - Circuitos aritméticos (com VHDL)}} | ||
− | + | ||
− | ;Encontro | + | ;Encontro 31 (8 jul.) |
*Circuitos aritméticos: somadores, incrementador, decrementador, complemento de dois, multiplicador, comparadores | *Circuitos aritméticos: somadores, incrementador, decrementador, complemento de dois, multiplicador, comparadores | ||
:* Somador completo [https://tinyurl.com/yqkt49kl] | :* Somador completo [https://tinyurl.com/yqkt49kl] | ||
:* Somador de 4 bits [https://tinyurl.com/yucqnkwz] | :* Somador de 4 bits [https://tinyurl.com/yucqnkwz] | ||
:* Prova que [https://www.wolframalpha.com/input?i=a+and+b+or+a+and+c+or+b+and+c (a and b) or (a and c) or (b and c)] = [https://www.wolframalpha.com/input?i=a+and+b+or+%28a+xor+b%29+and+c (a and b) or ((a xor b) and c)] | :* Prova que [https://www.wolframalpha.com/input?i=a+and+b+or+a+and+c+or+b+and+c (a and b) or (a and c) or (b and c)] = [https://www.wolframalpha.com/input?i=a+and+b+or+%28a+xor+b%29+and+c (a and b) or ((a xor b) and c)] | ||
− | + | <!-- | |
;Encontro 35 (30 nov.) | ;Encontro 35 (30 nov.) | ||
*Ver slides [https://moodle.ifsc.edu.br/pluginfile.php/291703/mod_resource/content/1/Pedroni_Cap_12_Circuitos_combinacionais_Aritmeticos.pdf] | *Ver slides [https://moodle.ifsc.edu.br/pluginfile.php/291703/mod_resource/content/1/Pedroni_Cap_12_Circuitos_combinacionais_Aritmeticos.pdf] | ||
Linha 2 434: | Linha 2 666: | ||
BEGIN | BEGIN | ||
y <= a * b; | y <= a * b; | ||
− | END ARCHITECTURE; | + | END ARCHITECTURE; |
− | </syntaxhighlight> | + | </syntaxhighlight> |
+ | |||
+ | *Observar o número de elementos lógicos, bits usados para representar as entradas e saídas. | ||
+ | *Observar o código RTL obtido. | ||
+ | *Realizar a simulação com entradas UNSIGNED e INTEGER na faixa de valores de 0 até 15, e analisar se o valor da saída está correto. | ||
+ | *Realizar a simulação com entradas SIGNED e INTEGER na faixa de valores de -8 até 7, e analisar se o valor da saída está correto. | ||
+ | *Realizar a simulação com entradas STD_LOGIC_VECTOR na faixa de valores de 0 até 15, e analisar se o valor da saída está correto. Neste caso será necessário realizar uma conversão de STD_LOGIC_VECTOR para UNSIGNED antes de efetuar a operação de "*", e após a operação é necessário fazer a operação inversa UNSIGNED para STD_LOGIC_VECTOR | ||
+ | *Realizar a simulação com entradas STD_LOGIC_VECTOR na faixa de valores de -8 até 7, e analisar se o valor da saída está correto. Neste caso será necessário realizar uma conversão de STD_LOGIC_VECTOR para SIGNED antes de efetuar a operação de "*", e após a operação é necessário fazer a operação inversa SIGNED para STD_LOGIC_VECTOR | ||
+ | |||
+ | :: Ver pag. 39 a 54 de <ref name="PEDRONI2010b"/> | ||
+ | |||
+ | ;Encontro 38 (12 dez.) | ||
+ | * Exercícios da Unidades 4 e 5 | ||
+ | --> | ||
+ | {{collapse bottom}} | ||
+ | <!-- | ||
+ | ;Encontro 39 (14 dez.) | ||
+ | *Avaliação A2 (Unidades 4 e 5). | ||
+ | |||
+ | ;Encontro 40 (19 dez.) | ||
+ | *Avaliação REC1 e REC2 (Unidades 1 a 5). | ||
+ | --> | ||
+ | |||
+ | ==Avaliações== | ||
+ | Durante o semestre serão realizadas 4 avaliações. As avaliações devem ser enviadas pela plataforma Moodle com os arquivos solicitados. | ||
+ | ;Data das avaliações: | ||
+ | *A1 - : 05/03 - 1ª parte A1a (3 pontos) (Sistema de Numeração e códigos); | ||
+ | *A2 - : | ||
+ | *R - Recuperação de A1 a A2 : | ||
+ | |||
+ | == Atividade relâmpago (AR) == | ||
+ | As atividades relâmpago devem ser entregues no Moodle da disciplina. A não entrega dessas atividades não gera nenhum desconto, apenas geram pontos de BÔNUS que são adicionados aos conceitos das avaliações A1 a AN. | ||
+ | |||
+ | == Atividade extra-classe (AE) == | ||
+ | A média ponderada das atividades extra-classe será considerada no cálculo do conceito final da UC. A entrega das mesmas será feita pelo Moodle, e cada dia de atraso irá descontar 0,2 na nota da atividade. Muitas dessas atividades também geram pontos de BÔNUS que são adicionados aos conceitos das avaliações A1 a AN. Para os BÔNUS só serão considerados projetos entregues no prazo. | ||
+ | |||
+ | |||
+ | Objetivos | ||
+ | Projetar um circuito digital que realize a conversão de uma entrada BCD para um saída de um mostrador de 7 segmentos. | ||
+ | Descrever através de uma tabela verdade o funcionamento de um circuito. | ||
+ | Usar a técnica do mapa de Karnaugh para minimizar a função lógica de cada saída. | ||
+ | |||
+ | ===AE1 - Projeto de um conversor de binário para mostrador de 7 segmentos=== | ||
+ | {{collapse top | bg=lightyellow | AE1 - Projeto de um conversor de binário para mostrador de 7 segmentos}} | ||
+ | ;Objetivos: | ||
+ | * Conhecer o mostrador (diplay) de 7 segmento | ||
+ | * Projetar um circuito digital que realize a conversão de uma entrada binária de 4 bits para uma saída de um mostrador de 7 segmentos. | ||
+ | * Descrever o funcionamento de um circuito através de uma tabela verdade. | ||
+ | * Usar a técnica do mapa de Karnaugh para minimizar a função lógica de cada uma das saídas. | ||
+ | |||
+ | ;Atividades: | ||
+ | *Veja como funciona o [[Display de 7 segmentos]]. | ||
+ | *Nesta atividade os estudantes devem projetar um conversor de binário para mostrador de 7 segmentos. Considere que na entrada são possíveis apenas os valores 0, 1, 2, ... 8, 9. | ||
+ | *Apesar de uma entrada binária de 4 bits poder receber os valores 1010 (dez), 1011 (onze), ... 1111 (quinze), pode considerar que elas não acontecem por restrição dos dados de entrada. Por isso, cada estudante tem a liberdade de definir como o mostrador se comportará nesta situação. | ||
+ | |||
+ | ;Entregas: | ||
+ | *O projeto todo deverá se realizado manuscrito, devendo as folhas ter a identificação do nome completo do estudante e estar grampeadas. *Deverão ser apresentados no mínimo: | ||
+ | :1) A tabela verdade completa indicando para as entradas de 0 a 9 quais são os valores das saídas (segmentos) a, b, c, d, e, f, g. | ||
+ | :2) Para cada saída mostre o mapa de Karnough e a indicação dos agrupamentos de bits obtidos, e o respectiva produto (implicante). | ||
+ | :3) Para cada saída deve ser apresentada a expressão lógica minimizada e também o circuito lógico obtido. | ||
+ | *A entrega será feita pessoalmente para o professor no prazo indicado no Moodle. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ===AE2 - Conhecendo os dispositivos lógicos programáveis=== | ||
+ | {{collapse top | expand=true| bg=lightyellow | AE2 - Conhecendo os dispositivos lógicos programáveis}} | ||
+ | ;Objetivos: | ||
+ | *Conhecer o Quartus Prime e as características dos dispositivos lógicos programáveis | ||
+ | *Analisar os tempos de propagação em um circuito combinacional | ||
+ | *Alterar configurações do compilador | ||
+ | *Fazer a simulação funcional de um circuito combinacional. | ||
+ | |||
+ | ;Atividades: | ||
+ | *'''PASSO 1:''' Realize a atividade descrita em [[Conhecendo os dispositivos lógicos programáveis - QUARTUS PRIME]] | ||
+ | :*Ao escolher a família de FPGAS, escolha inicialmente um dispositivo da família '''Max II'''. Anote o código desse dispositivo. | ||
+ | :*Capture as telas solicitadas e depois utilize-as no relatório da atividade. | ||
+ | :*Anote o tempo utilizado para cada uma das etapas do processo de compilação. | ||
+ | :*Anote o número de elementos lógicos utilizados e o número de pinos utilizados, bem com o percentual em relação ao número total do dispositivo. | ||
+ | :*Anote algum erro ('''Error''') ou alertas ('''Warnings''') que o Quartus II indicar no painel de mensagens '''[Messages]''' | ||
+ | :*Ao final salve o projeto em um arquivo QAR (sugestão PJ1.QAR) | ||
+ | |||
+ | *'''PASSO 2''': Repita a atividade descrita em [[Conhecendo os dispositivos lógicos programáveis - QUARTUS PRIME]], trocando a família e dispositivo a ser usado na implementação. Escolha nesta vez um dispositivos da família '''Cyclone IV E''' ou '''Stratix II GX'''. Anote o código desse dispositivo. | ||
+ | :*Observe as mudanças que ocorrem tanto no tipo de Elemento Lógico disponível, no Chip Planner, no Pin Planner, e no circuito dos pinos de I/O. Note que estes FPGAs também apresenta novos componentes, tais como: Memória, Multiplicadores, DSP, PLL, DLL, etc. Verifique se consegue encontra-los no leiaute mostrado no Chip Planner, e documente aqueles que encontrar. | ||
+ | :*Compare os resultados obtidos nos procedimentos do PASSO 1 e PASSO 2. | ||
+ | |||
+ | *'''PASSO 3''': Realize o procedimento descrito em [[Medição de tempos de propagação em circuitos combinacionais - Quartus Prime]] | ||
+ | :*Ao escolher a família de FPGAS, escolha um dispositivo FPGA da família '''Cyclone IV E'''. Anote o código desse dispositivo. | ||
+ | :*Se você está com o código da '''AE1 - Projeto de um conversor de binário para mostrador de 7 segmentos''' escrito, use este código no lugar do código do '''cálculo da distância de Hamming''' | ||
+ | :*Capture as telas mostradas no roteiro e depois utilize-as no relatório da atividade. | ||
+ | :*Anote o máximo tempo de propagação entre entrada e saída. | ||
+ | :*Anote o número de elementos lógicos utilizados e o número de pinos utilizados, bem com o percentual em relação ao número total do dispositivo. | ||
+ | :*Experimente modificar as configurações do compilador, conforme mostrado em '''Configurando o compilador'''. Se desejar mude a semente inicial trocando o valor de '''[Seed: 1]''' | ||
+ | :*Experimente inserir diferentes restrições de atraso máximo para o compilador, e analise o resultado obtido. | ||
+ | :*Anote algum erro ('''Error''') ou alertas ('''Warnings''') que o Quartus II indicar no painel de mensagens '''[Messages]''' | ||
+ | :*Ao final salve o projeto em um arquivo QAR (sugestão PJ2.QAR) | ||
+ | |||
+ | *'''PASSO 4''': Realize a simulação funcional de um dos projetos '''CI74161''' ou do '''cálculo da distância de Hamming''' ou '''conversor de binário para mostrador de 7 segmentos''' | ||
+ | :*Capture as telas que mostram o circuito funcionando e depois utilize-as no relatório da atividade. | ||
+ | |||
+ | ;Entregas: | ||
+ | #Envie um arquivo QAR contendo todos os arquivos necessário para compilar cada um dos projetos. | ||
+ | #Envie um relatório em PDF, incluindo as imagens capturadas (inclua um título para cada figura) e escreva para cada imagem um texto comentando o que representa. O relatório também deve ter a identificação (autor, título, data) uma breve introdução e uma conclusão. A descrição dos procedimentos feita na página wiki não precisa incluída no relatório. | ||
+ | #Use preferencialmente o [[Uso_do_Overleaf | Overleaf]] para gerar o relatório. Mas o uso de MS-Word, Libreoffice e Google Docs também é permitida. | ||
+ | #A entrega será feita através do Moodle da disciplina. Observe o prazo de entrega. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | ===AE3 - Programação do kit Mercurio IV=== | ||
+ | {{collapse top | expand=true | bg=lightyellow | AE3 - Programação do kit Mercurio IV}} | ||
+ | ;Objetivos: | ||
+ | * Apreender como programar um FPGA usando um kit de desenvolvimento | ||
+ | * Baseado na '''AE1 - Projeto de um conversor de binário para mostrador de 7 segmentos''', implementar o projeto em VHDL. | ||
+ | * Descrever um circuito que você projetou em VHDL, implentá-lo e testá-lo. | ||
+ | * Fazer as adaptações necessárias para que o circuito projetado funcione no kit escolhido | ||
+ | * Testar o circuito, e anotar os resultados. | ||
+ | |||
+ | ;Procedimento de laboratório: | ||
+ | ;Passo 1 - Descrevendo o hardware e fazendo a Análise e Síntese: | ||
+ | *Abra o projeto do '''conversor de binário para mostrador de 7 segmentos''' (já simulado em aula anterior) | ||
+ | *Fazer a análise e síntese e corrigir eventuais erros. | ||
+ | |||
+ | <syntaxhighlight lang=vhdl> | ||
+ | -- A bibliteca std e o pacote standard são autodeclarados, então as linhas abaixo podem ser comentadas com "--" | ||
+ | --library std; | ||
+ | --use std.standard.all; | ||
+ | |||
+ | entity BCD2SSD is | ||
+ | port ( | ||
+ | -- Entradas ABCD do circuito | ||
+ | eA, eB, eC, eD: in bit; | ||
+ | -- Saidas para os leds do mostrador de 7 segmentos. Note que o nome a, b, .. g foi mudado para ssd_a, ssd_b, ... ssd_g pois o VHDL é insensível a caixa | ||
+ | ssd_a, ssd_b, ssd_c, ssd_d, ssd_e, ssd_f, ssd_g : out bit | ||
+ | ); | ||
+ | end entity; | ||
+ | |||
+ | architecture ifsc_v1 of BCD2SSD is | ||
+ | begin | ||
+ | -- descreva a expressão lógica obtida para cada uma das saídas; | ||
+ | -- Por exemplo: se for a = A + C + (B'.D') + (B.D) | ||
+ | ssd_a <= eA or eC or (not eB and not eD) or (eB and eD); | ||
+ | |||
+ | ssd_g <= ; | ||
+ | end architecture; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ;Passo 2 - Configurando o dispositivo e os pinos a serem utilizados: | ||
+ | Veja os detalhes em [[Preparando para gravar o circuito lógico no FPGA]]. Após escolher o kit a ser usado no projeto, é necessário informar ao Quartus II a família e o dispositivo (device) que será utilizado | ||
+ | *para DE2-115 '''{Assignments > Device... > Device family (Family: [Cyclone IV E], Name filter: [EP4CE115F29C7] ) > [OK]}''' | ||
+ | *para MERCÚRIO IV '''{Assignments > Device... > Device family (Family: [Cyclone IV E], Name filter: [EP4CE30F23C7] ) > [OK]}''' | ||
+ | |||
+ | Para evitar que saídas de circuitos da placa sejam ligadas ao terra através do FPGA, defina como alta impedância o estado dos pinos não utilizados no projeto. | ||
+ | *'''{Assignments > Device... > Device and Pin Options... > Category: Unused Pins > Reserve all unused pins: [As input tri-stated] > [OK] > [OK]}''' | ||
+ | |||
+ | Atribua os pinos conforme a necessidade do projeto. | ||
+ | * Uso do Pin Planner '''{Assignments > Pin Planner}''' no modo tabela. Digite o número do pino na coluna {Location}. Apenas posições válidas são aceitas. | ||
+ | |||
+ | *Abra a página com o resumo da pinagem do kit [[Pinagem dos dispositivos de entrada e saída do kit MERCURIO IV]]. Observe a tabela com a pinagem das chaves disponíveis neste kit. | ||
+ | {| class="wikitable" style="vertical-align:middle; background-color:#FFF; color:#222;" | ||
+ | |- style="font-weight:bold;" | ||
+ | ! Signal | ||
+ | ! Name FPGA | ||
+ | ! Pin No. Description | ||
+ | ! I/O Standard | ||
+ | |- | ||
+ | | SW[0] || PIN_Y22 || Chave tipo Slide Switch 0 || 3.3V | ||
+ | |- | ||
+ | | SW[1] || PIN_W21 || Chave tipo Slide Switch 1 || 3.3V | ||
+ | |- | ||
+ | | SW[2] || PIN_W22 || Chave tipo Slide Switch 2 || 3.3V | ||
+ | |- | ||
+ | | SW[3] || PIN_V21 || Chave tipo Slide Switch 3 || 3.3V | ||
+ | |} | ||
+ | * Configurar como entrada os seguintes pinos: | ||
+ | eA V21 | ||
+ | eB W22 | ||
+ | eC W21 | ||
+ | eD Y22 | ||
+ | *Observe a tabela com a pinagem dos display (mostrador de sete segmentos) disponíveis neste kit. | ||
+ | {| class="wikitable" style="vertical-align:middle; background-color:#FFF; color:#222;" | ||
+ | |- style="font-weight:bold;" | ||
+ | ! Signal | ||
+ | ! Name FPGA | ||
+ | ! Pin No. Description | ||
+ | ! I/O Standard | ||
+ | |- | ||
+ | | DISP0_D[0] || PIN_V2 || Segmento A - Display 0 || 3.3V | ||
+ | |- | ||
+ | | DISP0_D[1] || PIN_V1 || Segmento B - Display 0 || 3.3V | ||
+ | |- | ||
+ | | DISP0_D[2] || PIN_U2 || Segmento C - Display 0 || 3.3V | ||
+ | |- | ||
+ | | DISP0_D[3] || PIN_U1 || Segmento D - Display 0 || 3.3V | ||
+ | |- | ||
+ | | DISP0_D[4] || PIN_Y2 || Segmento E - Display 0 || 3.3V | ||
+ | |- | ||
+ | | DISP0_D[5] || PIN_Y1 || Segmento F - Display 0 || 3.3V | ||
+ | |- | ||
+ | | DISP0_D[6] || PIN_W2 || Segmento G - Display 0 || 3.3V | ||
+ | |} | ||
+ | |||
+ | * Configure como saída do FPGA os seguintes pinos: | ||
+ | ssd_a V2 | ||
+ | ssd_b V1 | ||
+ | ssd_c U2 | ||
+ | ssd_d U1 | ||
+ | ssd_e Y2 | ||
+ | ssd_f Y1 | ||
+ | ssd_g W2 | ||
+ | *A final do processo, o Pin Planner '''{Assignments > Pin Planner}''' deverá mostrar a correta pinagem conforme exemplificado na figura abaixo: | ||
+ | <center>[[Arquivo:PinagemSSDM4.png| 400px]]</center> | ||
+ | |||
+ | Uma vez completada a configuração e pinagem, execute o '''Fitter (Place & Route)'''. Após a compilação a mensagem de warning '''"Critical Warning (XXXXX): No exact pin location assignment(s) for XX pins of XX total pins"''' não deverá mais ser mostrada. Caso seja mostrada verifique qual o pino que não foi configurado corretamente e corrija. | ||
+ | |||
+ | ;Passo 3 - Programando o FPGA: | ||
+ | Veja o procedimento de como deve ser feita a programação do FPGA em [[Programando o FPGA através da USB-Blaster]] | ||
+ | |||
+ | ;Passo 4 - Testes de validação: | ||
+ | *Realizar os seguintes testes, acionando as chaves A, B, C e D e observando o resultado no mstrador de sete segmentos: | ||
+ | :# Carregar nas chaves os valores binários de 0 ("0000") a 9 ("1001") e observar se o valor mostrado é o desejado. | ||
+ | :# Carregar nas chaves os valores binários de 10 ("1010") a 15 ("1111") e observar se o que é mostrado. | ||
+ | :# Anote todos os resultados | ||
+ | [[Arquivo:Display7Seg.png|thumb| 300px|right]] | ||
+ | {| class="wikitable" style="vertical-align:middle; background-color:#FFF; color:#222;" | ||
+ | |+ | ||
+ | |- | ||
+ | ! Digito | ||
+ | ! ABCD | ||
+ | ! ssd_a | ||
+ | ! ssd_b | ||
+ | ! ssd_c | ||
+ | ! ssd_d | ||
+ | ! ssd_e | ||
+ | ! ssd_f | ||
+ | ! ssd_g | ||
+ | ! Mostrador | ||
+ | |- | ||
+ | | 0 || 0000 || ON || ON || ON || ON || ON || ON || OFF || [[Arquivo:ssd0.png|15px]] | ||
+ | |- | ||
+ | | 1 || 0001 || || || || || || || || | ||
+ | |- | ||
+ | | 2 || 0010 || || || || || || || || | ||
+ | |- | ||
+ | | 3 || 0011 || || || || || || || || | ||
+ | |- | ||
+ | | 4 || 0100 || || || || || || || || | ||
+ | |- | ||
+ | | 5 || 0101 || || || || || || || || | ||
+ | |- | ||
+ | | 6 || 0110 || || || || || || || || | ||
+ | |- | ||
+ | | 7 || 0111 || || || || || || || || | ||
+ | |- | ||
+ | | 8 || 1000 || || || || || || || || | ||
+ | |- | ||
+ | | 9 || 1001 || || || || || || || || | ||
+ | |- | ||
+ | | A || 1010 || || || || || || || || | ||
+ | |- | ||
+ | | B || 1011 || || || || || || || || | ||
+ | |- | ||
+ | | C || 1100 || || || || || || || || | ||
+ | |- | ||
+ | | D || 1101 || || || || || || || || | ||
+ | |- | ||
+ | | E || 1110 || || || || || || || || | ||
+ | |- | ||
+ | | F || 1111 || || || || || || || || | ||
+ | |} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | :: | + | ;Relatório Técnico: |
− | + | * Documentar o experimento em um relatório técnico que contenha no mínimo: | |
− | ; | + | :* Identificação (título, disciplina, data, autores); |
− | * | + | :* Introdução; |
− | + | :* Descrição do procedimento realizado; | |
+ | :* Resultados obtidos (com imagens dos itens importantes) e análise dos resultados; | ||
+ | :* Conclusão. | ||
+ | :* Apêndice (se desejar pode ser disponibilizados vídeos do funcionamento do circuito no Passo 4 | ||
+ | * O relatório deve também responder as questões levantadas e mostrar que os objetivos apresentados na introdução foram atendidos. | ||
{{collapse bottom}} | {{collapse bottom}} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Referências Bibliográficas:== | ==Referências Bibliográficas:== | ||
<references/> | <references/> | ||
{{ENGTELECO}} | {{ENGTELECO}} |
Edição atual tal como às 16h03min de 8 de agosto de 2024
Registro on-line das aulas
Unidade 1 - Aula inicial, Introdução a disciplina
- 1 ENCONTRO
Unidade 1 - Aula inicial, Introdução a disciplina |
---|
|
Unidade 2 - Sistema de numeração e códigos
- 4 ENCONTROS
Unidade 2 - Sistema de numeração e códigos | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
O ser humano precisa contar para determinar quantidades de coisas, com as quantidades ele pode fazer operações matemáticas e comparações.
O quadro abaixo mostra as representações em binário dos valores de +15 a -8 no sistema sem sinal (UNSIGNED), com signal-magnitude , com sinal em complemento de um , com sinal em complemento de dois (SIGNED). No quadro é importante notar que sempre os números negativos tem o msb = 1. Adicionalmente alguns sistemas possuem dois zeros (+0 e -0). No tipo SIGNED note que o valor máximo positivo será menor que o valor absoluto do mínimo negativo, por uma unidade.
13 (decimal) = 1101 (binário sem sinal) +13 (decimal) = 01101 (binário em sinal-magnitude) -13 (decimal) = 11101 (binário em sinal-magnitude) +13 (decimal) = 01101 (binário em complemento de um) -13 (decimal) = 10010 (binário em complemento de um) +13 (decimal) = 01101 (binário em complemento de dois) -13 (decimal) = 10011 = 10010 + 1 (binário em complemento de dois)
O código ASCII (American Standard Code for Information Interchange), é um padrão de codificação de caracteres para comunicação digital. Ele tem apenas 128 pontos de código, sendo 95 são caracteres imprimíveis e os demais são não imprimíveis (em azul no quadro abaixo), sendo usados para diversos controles de equipamentos eletrônicos. Atualmente esse código está sendo substituido pelos códigos UNICODE, que tem milhões de pontos de código, mas nos UNICODE os primeiros 128 são iguais ao conjunto ASCII.
Exemplo de leitura do quadro acima:
Descubra o que está escrito neste código binário onde cada 8 bits correspondem a um simbolo ASCII: 01000010 01101111 01101101 00100000 01100100 01101001 01100001 00100000 01110000 01100101 01110011 01110011 01101111 01000001 01001100 01001100
O Unicode é capaz de representar uma ampla variedade de caracteres, incluindo caracteres alfabéticos, numéricos, símbolos, caracteres especiais e até mesmo caracteres em idiomas e sistemas de escrita complexos, como chinês, árabe, hindi, hebraico, japonês, emojis entre outros. O Unicode possui um espaço de codificação grande o suficiente para suportar milhares de caracteres diferentes. O Unicode é implementado nos esquemas de codificação UTF-8, UTF-16 e UTF-32. O mais utilizado na web é o UTF-8, por ser eficiente em uso de número de bits e ser compatível com o ASCII. Hoje em dia o UTF-8 é usado em 98% de todos os websites conhecidos [1]. Para cobrir uma vasta gama de caracteres, o Unicode os organiza em blocos. Exemplos de blocos: "Latin basic","Greek and Coptic", "Chess Symbols", "Emoticons", "Mayan Numerals", etc.
Exemplo: Estender o número binário sem sinal de 5 bits "01101" para 8 bits: Número original: 01101 = (13 em decimal), pois 8 + 4 + 1 = 13 Número estendido: 00001101 = (13 em decimal), pois 8 + 4 + 1 = 13
Exemplo: Estender o número binário com sinal em complemento de 2 de 5 bits "10011" para 8 bits: Número original: 10011 = (-13 em decimal), pois -16 + 2 + 1 = -13 Número estendido: 11110011 = (-13 em decimal), pois -128 + 64 + 32 + 16 + 2 + 1 = -13
Exemplo: Estender o número binário com sinal em sinal-magnitude de 5 bits "10011" para 8 bits: Número original: 11101 = (-13 em decimal), pois -(+8 + 4 + 1) = -13 Número estendido: 10001101 = (-13 em decimal), pois -(+8 + 4 + 1) = -13
Embora o expoente possa ser positivo ou negativo, em formatos binários ele é armazenado como um número sem sinal que possui um "viés" fixo adicionado a ele. A faixa de expoente para números normais é [−126, 127] para precisão simples, [−1022, 1023] para dupla. Existem três tipos principais de números: normalizados, denormalizados (ou desnormalizados) e especiais (como infinito e NaN - "Not a Number"). Nos formatos IEEE, o bit 1 inicial de um significando normalizado não é realmente armazenado. É chamado de bit "oculto" ou "implícito". Por causa disso, o formato de precisão simples na verdade tem um significando com 24 bits de precisão, o formato de precisão dupla tem 53. O layout para o ponto flutuante de 32 bits e de 64 bits são mostrados abaixo: ![]() ![]()
Exemplo: Dado o número 85,125 converta para a representação floating point de 32 bits P1: 32 bits, portanto o viés é 127. P2: 85 em binário é 1010101. 0.125 em binário é 0.001. Portanto, 85,125 em binário é 1010101.001 P3: 1010101.001 => 1.010101001 × 2^6 P4: O número é positivo, então o bit de sinal é 0. O expoente é o deslocamento necessário para normalizar a mantissa. No caso, 6. A mantissa é a parte fracionária normalizada, que é 010101001.(note que o 1 a esquerda do ponto decimal não será representado. P5: Expoente = 6 + 127 = 133 em binário é 10000101. P6: Sinal: 0, Expoente: 10000101, Mantissa: 01010100100000000000000 (completar com zeros até 23 bits), portanto 0 10000101 01010100100000000000000
Exemplo: Dado o número representado em floating point de 32 bits = 11000000111000000000000000000000 P1: Expoente tem 8 bits => viés = 127 (28-1-1) P2: Sinal (msb): 1 => é um número negativo (-) P3: Expoente (8 bits): 10000001 = 129 P4: expoente (e = E - vies) 129 - 127 = 2 P5: Mantissa: (23 bits): 11000000000000000000000 P6: Valor (24 bits):1.11000000000000000000000 = 1,75 P7: Resultado: (-) 1,75 x 22 = -7
Os números sub_normais são indicados pelo Expoente = 00000000. Esse Expoente será interpretado como 2-126. Eles, ao contrário dos números normalizados, não usam um "1" implícito no início da mantissa. Isso significa que a mantissa desses números começa com um "0" explícito antes da parte fracionária, permitindo representar valores muito pequenos que não podem ser normalizados devido à limitação dos bits do expoente. Exemplos: 0 00000000 00000000000000000000000 corresponde ao número +0 1 00000000 00000000000000000000000 corresponde ao número -0 0 00000000 10000000000000000000000 corresponde ao número 0,5 x 2-126 = 5.877472E-39 1 00000000 00000000000000000000001 corresponde ao número -2-23 x 2-126 = -0.00000011920928955078125 x 2-126 = -1.40129846432481707092373E-45 (2-149
Mantissa: Todos os bits definidos como 0 (23 bits) Representação em 32 bits: 0 11111111 00000000000000000000000
Mantissa: Todos os bits definidos como 0 (23 bits) Representação em 32 bits: 1 11111111 00000000000000000000000
Mantissa: Pelo menos um bit não nulo (23 bits) Representação: x 11111111 yyyyyyyyyyyyyyyyyyyyyyy (onde "x" é o bit de sinal e "y" são bits da mantissa)
|
Unidade 3 - Funções, portas lógicas e álgebra booleana
- 10 ENCONTROS
Unidade 3 - Funções, portas lógicas e álgebra booleana | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Para provar os teoremas, podemos obter a tabela verdade de ambos lados de cada equação booleana.
Ou utilizar os postulados e teoremas da algebra de boole. Considerando que seja verdade, então
Os teoremas de De Morgam são validos para qualquer número (N) de entradas, podem ser escritos como:
Simplifique as expressões lógicas (caso seja possível). Indique os Postulados ou Teoremas utilizado em cada passo. Para simplificar as notações os códigos A1 a A5 e T1 a T12 ou T1' a T12' indicado na Folha de consulta - álgebra booleana.
Ver também exemplos em 4-4 ANÁLISE BOOLEANA DE CIRCUITOS LÓGICOS [FLOYD, Thomas. Sistemas digitais. Grupo A, 2011. E-book. ISBN 9788577801077
|
Unidade 4 - Introdução a linguagem VHDL e Quartus/ModelSim
- 6 ENCONTROS
Unidade 4 - Introdução a linguagem VHDL e Quartus/ModelSim |
---|
library library_name;
use library_name.package_name.all;
entity entity_name is
[generic (
cons_name1: const_type const_value;
cons_name2: const_type const_value;
...
cons_nameN: const_type const_value);]
[port (
signal_name1: mode signal_type;
signal_name2: mode signal_type;
...
signal_nameN: mode signal_type);]
[declarative_part]
[begin
statement_part]
end [entity] [entity_name];
architecture arch_name of entity_name is
[declarative_part]
begin
statement_part
end [architecture] [arch_name];
library std;
use std.standard.all;
entity nand_gate is
port (a, b: in bit; x: out bit);
end entity;
architecture nome_arch of nand_gate is
begin
x <= a nand b;
end architecture;
Acesse a nuvem do IFSC usando um terminal via ssh: USER=LOGIN_SIGAA ssh $USER@quartus.sj.ifsc.edu.br -XC Insira a senha do SIGAA LOGIN_SIGAA@quartus.sj.ifsc.edu.br's password:
Abra o Quartus Prime digitando no terminal quartus20.1.sh Em seguida abra um arquivo para inserir o código VHDL. No menu superior selecione [File > New > Design Files: VHDL File] e [OK]
/home/USER/PASTA_DO_PROJETO/
nand_gate
nand_gate
Realize a Analysis & Synthesis [Processing > Start > Start Analysis & Synthesis], ou use um dos botões que o professor mostrou em aula.
-- A bibliteca std e o pacote standard são autodeclarados, então as linhas abaixo podem ser comentadas com "--"
--library std;
--use std.standard.all;
entity BCD2SSD is
port (
-- Entradas ABCD do circuito
A, B, C, D: in bit;
-- Saidas para os leds do mostrador de 7 segmentos. Note que o nome a, b, .. g foi mudado para ssd_a, ssd_b, ... ssd_g pois o VHDL é insensível a caixa
ssd_a, ssd_b, ssd_c, ssd_d, ssd_e, ssd_f, ssd_g : out bit
);
end entity;
architecture ifsc_v1 of BCD2SSD is
begin
-- descreva a expressão lógica obtida para cada uma das saídas;
-- Por exemplo: se for a = A + C + (B'.D') + (B.D)
ssd_a <= A or C or (not B and not D) or (B and D);
ssd_g <= ;
end architecture;
|
Unidade 5 - Circuitos lógicos combinacionais (com VHDL)
- 12 ENCONTROS
Unidade 5 - Circuitos lógicos combinacionais (com VHDL) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-------------------------
-- File: bin2gray_v1.vhd --
-------------------------
entity bin2gray_v1 is
port
(
b0, b1, b2, b3 : in bit;
g0, g1, g2, g3 : in bit
);
end entity;
--Exemplo implementando o circuito diretamente com as portas lógicas
architecture ifsc_v1 of ____ is
begin
end architecture;
Como o circuito de um conversor bin2gray, possui uma certa quantidade de bits de entrada e a mesma quantidade de saída, não é adequado descrever esse circuito utilizando o tipo bit. O VHDL dispõe do tipo bit_vector; de vetores para descrever esse tipo de entrada e saída. -------------------------
-- File: bin2gray_v2.vhd --
-------------------------
entity bin2gray_v2 is
port
(
b : in bit_vector(3 downto 0);
g : out bit_vector(3 downto 0)
);
end entity;
--Exemplo implementando o circuito diretamente com as portas lógicas
architecture ifsc_v2 of ____ is
begin
end architecture;
Caso se deseje aumentar o número de bits da entrada, na abordagem acima é necessário aumentar o número de operações ou exclusivo, e para cada quantidade de bits é necessário ter uma nova descrição. Usando corretamente a instrução generic, e a instrução for generate, é possível escrever um código único (genérico) para qualquer numero de bits.
[generic (
cons_name1: const_type const_value;
cons_name2: const_type const_value;
...
cons_nameN: const_type const_value);]
label: FOR identificador IN faixa GENERATE
[Parte_Declarativa
BEGIN]
Instruções_concorrentes
...
END GENERATE [label];
-------------------------
-- File: bin2gray_v3.vhd --
-------------------------
entity bin2gray_v3 is
generic (N : natural := 4 );
port
(
b : in bit_vector(N-1 downto 0);
g : out bit_vector(N-1 downto 0)
);
end entity;
architecture ifsc_v3 of ____ is
begin
end architecture;
Considerando o que aprendeu com as versões do conversor bin2gray, descreva o circuito do conversor gray2bin. Inicie descrevendo o código VHDL para 4 bits, em seguida busque tornar o código genérico para qualquer número de bits. -------------------------
-- File: gray2bin.vhd --
-------------------------
entity gray2bin is
generic (N : natural := 4 )
port
(
g : in std_logic_vector(____)
b : out std_logic_vector(____)
)
end entity
architecture ifsc_v1 of ____ is
begin
end architecture
architecture ifsc_v2 of ____ is
begin
end architecture
Um multiplexador digital de N entradas e 1 saída, frequentemente abreviado como MUX N:1, é um circuito digital muito utilizado para rotear sinais digitais Ele desempenha a função de selecionar uma das entradas para ser encaminhada para a saída com base em um sinal de seleção (ou controle).
A tabela verdade que descreve um MUX2:1 é mostrada abaixo:
O MUX2:1 também pode ser representado de forma resumida por:
Onde o X0 e X1 na entrada podem assumir os valores 0 ou 1, e o simbolo "-" corresponde ao don't care (em VDHL) A função booleana que descreve a operação de um MUX 2:1 pode ser representada da seguinte forma:
O MUX4:1 pode ser representado de forma resumida pela tabela verdade:
A função booleana que descreve a operação de um MUX 4:1 pode ser representada da seguinte forma:
entity mux4x1 is
port
(
-- Input ports
X: in bit_vector (3 downto 0);
Sel : in bit_vector (1 downto 0);
-- Output ports
Y : out bit
);
end entity;
-- Implementação com lógica pura
architecture v_logica_pura of mux4x1 is
begin
Y <= (X(0) and (not Sel(1)) and (not Sel(0))) or
...
end architecture;
No entanto, o MUX4:1 também pode ser descrito utilizando a instrução WHEN-ELSE <optional_label>: <target> <=
<value> when <condition> else
<value> when <condition> else
<value> when <condition> else
...
<value>;
Warning (13012): Latch ... has unsafe behavior
No caso do MUX4:1 ele poderia ser descrito como: -- Implementação com WHEN ELSE
architecture v_WHEN_ELSE of mux4x1 is
begin
Y <= X(0) when Sel = "00" else
X(1) when Sel = "01" else
X(2) when Sel = "10" else
X(3);
end architecture;
Outra forma de descrever o MUX4:1 seria utilizando a instrução WITH-SELECT <optional_label>: with <expression> select
<target> <=
<value> when <choices>,
<value> when <choices>,
<value> when <choices>,
...
<value> when others;
Error (10313): VHDL Case Statement error ...: Case Statement choices must cover all possible values of expression
-- Implementação com WITH SELECT
architecture v_WITH_SELECT of mux4x1 is
begin
with Sel select
Y <= X(0) when "00", -- note o uso da ,
X(1) when "01",
X(2) when "10",
X(3) when others; -- note o uso de others, para todos os demais valores.
-- Não pode ser substituido por "11" mesmo que o signal seja bit_vector.
end architecture;
-- Design Unit que associa a architecture com a entity
configuration cfg_ifsc of mux4x1 is
for v_logica_pura end for;
-- for v_WHEN_ELSE end for;
-- for v_WITH_SELECT end for;
end configuration;
Figura 2.1 - Código RTL do mux4x1 v_logica_pura ![]() Figura 2.2 - Código RTL do mux4x1 v_WHEN_ELSE ![]() Figura 2.3 - Código RTL do mux4x1 v_WITH_SELECT ![]()
Figura 2.4 - Technology Map do mux4x1 para a família Cyclone ![]()
Figura 2.5 - Elemento Lógico usado no mux4x1 para a família Cyclone (node properties) ![]()
No entanto se utilizarmos um dispositivo FPGA da família Aria 10, que tem LUT tem 6 entradas, será necessário apenas 1 LE, conforme ilustrado a seguir. Figura 2.5 - Technology Map do mux4x1 para a família Aria 10 ![]()
entity demux1x4 is
port(
X : in _____;
A : ___ bit_vector__________;
y : ___ bit_vector__________
);
end entity;
architecture ______ of _____ is
begin
y(0) <= X and (not A(1)) and (not A(0));
y(1) <=
end architecture;
library ieee;
use ieee.std_logic_1164.all;
entity bin2ssd is
port(
bin : in std_logic_vector (3 downto 0);
ssd : out std_logic_vector (6 downto 0)
);
end entity;
architecture when_else of bin2ssd is
begin
ssd <= "0111111" when bin = "0000" else
...
end architecture;
-- Isso eh uma linha de comentario y <= a * b ; --o sinal y recebe o resultado da multiplicacao a x b
caracter: 'A' 'x' '#' (com aspas simples)
type string is array (positive range <>) of character;
string: "IFSC" "teste" "teste123"
elemento ("bit") único: '0' '1' 'Z' (entre aspas simples) vetor de elementos ("bits"): "0110" "101001Z" (entre aspas duplas) vetor de 1 elemento ("bit"): "0" "1" (entre aspas duplas) inteiros: 5 1101 1102 (sem aspas)
0 -> '0' 7 (em base 2) -> "0111" ou b"0111" ou B"0111" 1023 (em base 2) -> "001111111111" ou b"1111111111" ou B"1111111111"
44 (em base 8) -> 5*8^1 + 4*8^0 -> O"54" ou o"54" 1023 (em base 8)-> 1*8^3 + 7*8^2 + 7*8^1 + 7*8^0 -> o"1777" 8#1777#
1023 (em base 16) -> 3*16^2 + 15*16^1 + 15*16^0 = X"3FF" ou x"3FF" 16#3FF#
1023 -> 1023 ou 1_023 1000 -> 1000 ou 1_000 ou 1E3 ou 10#1000#
85 (em base 5) -> (3*5^2 + 2*5^1 + 0*5^0) -> 5#320# 1539 (em base 3) -> (2*3^2+0*3^1+1*3^0)*3^4 -> 3#201#E4
O objeto CONSTANT pode ser declarado na parte declarativa da ENTITY, ARCHITECTURE, PACKAGE, PACKAGE_BODY, BLOCK, GENERATE, PROCESS, FUNCTION e PROCEDURE. constant <constant_name> : <type> := <constant_value>;
-- Declarações comuns de constantes
constant GND : std_logic := '0';
constant VCC : std_logic := '1';
constant SSD_0 : std_logic_vector(0 to 6) := "1111110";
constant MAX : natural := 44;
O objeto SIGNAL pode ser declarado na parte declarativa da ENTITY, ARCHITECTURE, PACKAGE, BLOCK, GENERATE. Os sinais não podem ser declarados no código sequencial (PROCESS, FUNCTION e PROCEDURE), mas podem ser usados. -- Signal sem valor default
-- Para atribuir um valor a um signal use "<=" como operador.
signal <name> : <type>;
-- Signal com valor default
signal <name> : <type> := <default_value>;
-- Declarações comuns de signals
signal <name> : std_logic;
signal <name> : std_logic_vector(<msb_index> downto <lsb_index>);
signal <name> : integer;
signal <name> : integer range <low> to <high>;
O objeto VARIABLE (variável) só pode ser declarada e usada dentro do escopo no código sequencial (PROCESS, FUNCTION e PROCEDURE). -- Variables devem ser declarada em process ou subprogramas.
-- Para atribuir um valor a um variable use ":=" como operador.
-- Variable sem valor default.
variable <name> : <type>;
-- Variable com valor default.
variable <name> : <type> := <default_value>;
-- Declarações comuns de variables
variable <name> : std_logic;
variable <name> : std_logic_vector(<msb_index> downto <lsb_index>);
variable <name> : integer;
variable <name> : integer range <low> to <high>;
Exemplos de declaração de CONSTANT, SIGNAL, VARIABLE, inicializando o valor usando o agregados CONSTANT a: BIT_VECTOR(5 DOWNTO 0) := (OTHERS => '0'); -- "000000"
CONSTANT b: BIT_VECTOR(7 DOWNTO 0) := (7 => '0', OTHERS => '1'); -- "01111111"
CONSTANT c: BIT_VECTOR(7 DOWNTO 0) := (7 => '0', 6 DOWNTO 0 => '1'); -- "01111111"
CONSTANT d: BIT_VECTOR(7 DOWNTO 0) := "01111111";
SIGNAL e: STD_LOGIC_VECTOR(7 DOWNTO 0); -- Not initialized
SIGNAL f: STD_LOGIC_VECTOR(1 TO 8) := (2|3|8 => '1', 4 => 'Z', OTHERS => '0' ); -- "011Z0001"
VARIABLE g: BIT_VECTOR(1 TO 16); -- Not initialized
VARIABLE h: BIT_VECTOR(1 TO 16) := (1 TO 8 => '1', OTHERS => '0'); -- "1111111100000000"
A biblioteca standard.vhd define os tipos BIT, BIT_VECTOR, BOOLEAN, INTEGER, NATURAL, POSITIVE, CHARACTER, STRING. package standard is
type boolean is (false,true);
type bit is ('0', '1');
type severity_level is (note, warning, error, failure);
type integer is range -2147483647 to 2147483647;
type real is range -1.0E308 to 1.0E308;
type time is range -2147483648 to 2147483647
units
fs;
ps = 1000 fs;
ns = 1000 ps;
us = 1000 ns;
ms = 1000 us;
sec = 1000 ms;
min = 60 sec;
hr = 60 min;
end units;
subtype natural is integer range 0 to integer'high;
subtype positive is integer range 1 to integer'high;
type string is array (positive range <>) of character;
type bit_vector is array (natural range <>) of bit;
A biblioteca Std logic 1164.vhd define os tipos STD_(U)LOGIG, STD_(U)LOGIG_VECTOR. PACKAGE std_logic_1164 IS
TYPE std_ulogic IS ( 'U', -- Uninitialized
'X', -- Forcing Unknown
'0', -- Forcing 0
'1', -- Forcing 1
'Z', -- High Impedance
'W', -- Weak Unknown
'L', -- Weak 0
'H', -- Weak 1
'-' -- Don't care
);
TYPE std_ulogic_vector IS ARRAY ( NATURAL RANGE <> ) OF std_ulogic;
SUBTYPE std_logic IS resolved std_ulogic;
TYPE std_logic_vector IS ARRAY ( NATURAL RANGE <>) OF std_logic;
ATUAL
A biblioteca Std logic 1164.vhd ainda define algumas funções importantes como a rising_edge que determina se um sinal está na borda de subida (usado em sinais de clock). -------------------------------------------------------------------
-- conversion functions
-------------------------------------------------------------------
FUNCTION To_bit ( s : std_ulogic; xmap : BIT := '0') RETURN BIT;
FUNCTION To_bitvector ( s : std_logic_vector ; xmap : BIT := '0') RETURN BIT_VECTOR;
FUNCTION To_StdULogic ( b : BIT ) RETURN std_ulogic;
FUNCTION To_StdLogicVector ( b : BIT_VECTOR ) RETURN std_logic_vector;
-------------------------------------------------------------------
-- edge detection
-------------------------------------------------------------------
FUNCTION rising_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN;
FUNCTION falling_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN;
-------------------------------------------------------------------
-- edge detection
-------------------------------------------------------------------
FUNCTION rising_edge (SIGNAL s : std_ulogic) RETURN BOOLEAN IS
-- altera built_in builtin_rising_edge
BEGIN
RETURN (s'EVENT AND (To_X01(s) = '1') AND
(To_X01(s'LAST_VALUE) = '0'));
END;
A biblioteca Numeric std.vhd define os tipos UNSIGNED e SIGNED. package NUMERIC_STD is
type UNSIGNED is array (NATURAL range <>) of STD_LOGIC;
type SIGNED is array (NATURAL range <>) of STD_LOGIC;
A biblioteca Numeric std.vhd ainda define os operadores (abs, "+", "-", "*", "/", rem, mod, sll, slr, ror, rol), comparações ("=", '/=', ">", ">=", "<", "<=") e operadores lógicos (not, and, nand, or, nor, xor, xnor) para os tipos SIGNED e UNSIGNED. Além disso também define algumas funções muito utilizadas como: --============================================================================
-- RESIZE Functions
--============================================================================
function RESIZE (ARG: SIGNED; NEW_SIZE: NATURAL) return SIGNED;
function RESIZE (ARG: UNSIGNED; NEW_SIZE: NATURAL) return UNSIGNED;
--============================================================================
-- Conversion Functions
--============================================================================
function TO_INTEGER (ARG: UNSIGNED) return NATURAL;
function TO_INTEGER (ARG: SIGNED) return INTEGER;
function TO_UNSIGNED (ARG, SIZE: NATURAL) return UNSIGNED;
function TO_SIGNED (ARG: INTEGER; SIZE: NATURAL) return SIGNED;
library ieee;
use ieee.std_logic_1164.all;
entity tri_state is
generic (N: NATURAL := 1);
port
(
input : in std_logic_vector(N-1 downto 0);
ena : in std_logic;
output : out std_logic_vector(N-1 downto 0);
);
end entity;
architecture tri_state of tri_state is
begin
output <= input when ena = '1' else "Z";
end architecture;
|
Unidade 6 - Circuitos aritméticos (com VHDL)
- 5 ENCONTROS
Unidade 6 - Circuitos aritméticos (com VHDL) |
---|
|
Avaliações
Durante o semestre serão realizadas 4 avaliações. As avaliações devem ser enviadas pela plataforma Moodle com os arquivos solicitados.
- Data das avaliações
- A1 - : 05/03 - 1ª parte A1a (3 pontos) (Sistema de Numeração e códigos);
- A2 - :
- R - Recuperação de A1 a A2 :
Atividade relâmpago (AR)
As atividades relâmpago devem ser entregues no Moodle da disciplina. A não entrega dessas atividades não gera nenhum desconto, apenas geram pontos de BÔNUS que são adicionados aos conceitos das avaliações A1 a AN.
Atividade extra-classe (AE)
A média ponderada das atividades extra-classe será considerada no cálculo do conceito final da UC. A entrega das mesmas será feita pelo Moodle, e cada dia de atraso irá descontar 0,2 na nota da atividade. Muitas dessas atividades também geram pontos de BÔNUS que são adicionados aos conceitos das avaliações A1 a AN. Para os BÔNUS só serão considerados projetos entregues no prazo.
Objetivos
Projetar um circuito digital que realize a conversão de uma entrada BCD para um saída de um mostrador de 7 segmentos.
Descrever através de uma tabela verdade o funcionamento de um circuito.
Usar a técnica do mapa de Karnaugh para minimizar a função lógica de cada saída.
AE1 - Projeto de um conversor de binário para mostrador de 7 segmentos
AE1 - Projeto de um conversor de binário para mostrador de 7 segmentos |
---|
|
AE2 - Conhecendo os dispositivos lógicos programáveis
AE2 - Conhecendo os dispositivos lógicos programáveis |
---|
|
AE3 - Programação do kit Mercurio IV
AE3 - Programação do kit Mercurio IV | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
-- A bibliteca std e o pacote standard são autodeclarados, então as linhas abaixo podem ser comentadas com "--"
--library std;
--use std.standard.all;
entity BCD2SSD is
port (
-- Entradas ABCD do circuito
eA, eB, eC, eD: in bit;
-- Saidas para os leds do mostrador de 7 segmentos. Note que o nome a, b, .. g foi mudado para ssd_a, ssd_b, ... ssd_g pois o VHDL é insensível a caixa
ssd_a, ssd_b, ssd_c, ssd_d, ssd_e, ssd_f, ssd_g : out bit
);
end entity;
architecture ifsc_v1 of BCD2SSD is
begin
-- descreva a expressão lógica obtida para cada uma das saídas;
-- Por exemplo: se for a = A + C + (B'.D') + (B.D)
ssd_a <= eA or eC or (not eB and not eD) or (eB and eD);
ssd_g <= ;
end architecture;
Veja os detalhes em Preparando para gravar o circuito lógico no FPGA. Após escolher o kit a ser usado no projeto, é necessário informar ao Quartus II a família e o dispositivo (device) que será utilizado
Para evitar que saídas de circuitos da placa sejam ligadas ao terra através do FPGA, defina como alta impedância o estado dos pinos não utilizados no projeto.
Atribua os pinos conforme a necessidade do projeto.
eA V21 eB W22 eC W21 eD Y22
ssd_a V2 ssd_b V1 ssd_c U2 ssd_d U1 ssd_e Y2 ssd_f Y1 ssd_g W2
![]() Uma vez completada a configuração e pinagem, execute o Fitter (Place & Route). Após a compilação a mensagem de warning "Critical Warning (XXXXX): No exact pin location assignment(s) for XX pins of XX total pins" não deverá mais ser mostrada. Caso seja mostrada verifique qual o pino que não foi configurado corretamente e corrija.
Veja o procedimento de como deve ser feita a programação do FPGA em Programando o FPGA através da USB-Blaster
|
Referências Bibliográficas: