ELD129002-Engtelecom (Diário) - Prof. Marcos Moecke: mudanças entre as edições
Ir para navegação
Ir para pesquisar
(27 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 | Unidade 1 - Aula inicial, Introdução a disciplina}} | {{collapse top |expand=true | Unidade 1 - Aula inicial, Introdução a disciplina}} | ||
;Encontro 1 (12 ago.): | |||
;Encontro 1 ( | |||
* A '''[[ELD1-EngTelecom (Página) | página da UC]]''' contém os materiais que não alteram entre semestre. | * A '''[[ELD1-EngTelecom (Página) | página da UC]]''' contém os materiais que não alteram entre semestre. | ||
* Relação com as outras UCs do '''Eixo Sistemas Computacionais (Marrom)'''. Ver [https:// | * Relação com as outras UCs do '''Eixo Sistemas Computacionais (Marrom)'''. Ver [https://telegrafo.sj.ifsc.edu.br/ grafo do curriculo] | ||
:*'''ELD129002 - ELETRÔNICA DIGITAL I (ELD1)''': Sistema de numeração e códigos. Lógica booleana. Circuitos combinacionais. Circuitos aritméticos. Linguagem de descrição de hardware. Implementação e teste de circuitos digitais. Projeto de circuitos lógicos. | :*'''ELD129002 - ELETRÔNICA DIGITAL I (ELD1)''': Sistema de numeração e códigos. Lógica booleana. Circuitos combinacionais. Circuitos aritméticos. Linguagem de descrição de hardware. Implementação e teste de circuitos digitais. Projeto de circuitos lógicos. | ||
:*'''ELD129003 - ELETRÔNICA DIGITAL II (ELD2)''': Dispositivos lógicos programáveis. Circuitos sequenciais. Metodologia síncrona. Projeto hierárquico e parametrizado. Máquinas de estados finita. Register Transfer Methodology. Teste de circuitos digitais. Implementação em FPGA. Introdução a Linguagem de Descrição de Hardware. | :*'''ELD129003 - ELETRÔNICA DIGITAL II (ELD2)''': Dispositivos lógicos programáveis. Circuitos sequenciais. Metodologia síncrona. Projeto hierárquico e parametrizado. Máquinas de estados finita. Register Transfer Methodology. Teste de circuitos digitais. Implementação em FPGA. Introdução a Linguagem de Descrição de Hardware. | ||
Linha 24: | Linha 23: | ||
===Unidade 2 - Sistema de numeração e códigos=== | ===Unidade 2 - Sistema de numeração e códigos=== | ||
* | * 5 ENCONTROS | ||
{{collapse top | expand=true| Unidade 2 - Sistema de numeração e códigos}} | {{collapse top | expand=true| Unidade 2 - Sistema de numeração e códigos}} | ||
<!-- | |||
;Encontro 2 (20 mar.): | ;Encontro 2 (20 mar.): | ||
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 387: | Linha 1 387: | ||
* Resolver exercicios do livro (1.64 a 1.67, 1.69) [https://drive.google.com/file/d/1g8mbdH8DOc5_D8CfzUNcUb8P6qy0S4eV/view?usp=drive_link Projeto Digital e Arquitetura de Computadores] (#page=86) | * Resolver exercicios do livro (1.64 a 1.67, 1.69) [https://drive.google.com/file/d/1g8mbdH8DOc5_D8CfzUNcUb8P6qy0S4eV/view?usp=drive_link Projeto Digital e Arquitetura de Computadores] (#page=86) | ||
* Resolver exercicios do livro (5.24, 5.27 a 5.30, 5.31 a 5.32, 5.38) [https://drive.google.com/file/d/1g8mbdH8DOc5_D8CfzUNcUb8P6qy0S4eV/view?usp=drive_link Projeto Digital e Arquitetura de Computadores] (#page=430) | * Resolver exercicios do livro (5.24, 5.27 a 5.30, 5.31 a 5.32, 5.38) [https://drive.google.com/file/d/1g8mbdH8DOc5_D8CfzUNcUb8P6qy0S4eV/view?usp=drive_link Projeto Digital e Arquitetura de Computadores] (#page=430) | ||
--> | |||
{{collapse bottom}} | {{collapse bottom}} | ||
===Unidade 3 - Funções, portas lógicas e álgebra booleana=== | ===Unidade 3 - Funções, portas lógicas e álgebra booleana=== | ||
* | * 13 ENCONTROS | ||
{{collapse top | expand=true| Unidade 3 - Funções, portas lógicas e álgebra booleana }} | {{collapse top | expand=true| Unidade 3 - Funções, portas lógicas e álgebra booleana }} | ||
<!-- | |||
;Encontro 7 (8 abr.) | ;Encontro 7 (8 abr.) | ||
;Funções e portas lógicas: | ;Funções e portas lógicas: | ||
Linha 1 544: | Linha 1 546: | ||
{{fig|3.1|Conjuntos para mostrador de 7 segmentos| 7segment_sets.png| 800 px | }} | {{fig|3.1|Conjuntos para mostrador de 7 segmentos| 7segment_sets.png| 800 px | }} | ||
;Encontro | ;Encontro 14 (6 mai.) | ||
*Simplificação de expressões lógicas - Mapas de Karnaugh-Veitch: | *Simplificação de expressões lógicas - Mapas de Karnaugh-Veitch: | ||
*Uso do ''don't care'' na simplificação | *Uso do ''don't care'' na simplificação | ||
Linha 1 555: | Linha 1 557: | ||
*Preparação da [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] | *Preparação da [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] | ||
;Encontro | ;Encontro 15 (8 mai.) | ||
*Resolver [https://drive.google.com/file/d/16pN70NdO9a-qEKthQwn5OFidA_Y92CTm/view?usp=drive_link Exercícios de álgebra de Boole] | *Resolver [https://drive.google.com/file/d/16pN70NdO9a-qEKthQwn5OFidA_Y92CTm/view?usp=drive_link Exercícios de álgebra de Boole] | ||
*Resolver exercicios do livro (2.1, 2.2, 2.5 a 2.10, 2.13 a 2.18, 2.21 a 2.25) [https://drive.google.com/file/d/1g8mbdH8DOc5_D8CfzUNcUb8P6qy0S4eV/view?usp=drive_link Projeto Digital e Arquitetura de Computadores] (#page=151) | *Resolver exercicios do livro (2.1, 2.2, 2.5 a 2.10, 2.13 a 2.18, 2.21 a 2.25) [https://drive.google.com/file/d/1g8mbdH8DOc5_D8CfzUNcUb8P6qy0S4eV/view?usp=drive_link Projeto Digital e Arquitetura de Computadores] (#page=151) | ||
Linha 1 562: | Linha 1 564: | ||
*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://drive.google.com/file/d/1g8mbdH8DOc5_D8CfzUNcUb8P6qy0S4eV/view?usp=drive_link Projeto Digital e Arquitetura de Computadores] (#page=116) | *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://drive.google.com/file/d/1g8mbdH8DOc5_D8CfzUNcUb8P6qy0S4eV/view?usp=drive_link Projeto Digital e Arquitetura de Computadores] (#page=116) | ||
;Encontro | ;Encontro 16 (13 mai.) | ||
*Avaliação A1b - Funções e portas lógicas, tabela verdade, algebra de Boole, simplificação de equações e mapa de Karnaugh | *Avaliação A1b - Funções e portas lógicas, tabela verdade, algebra de Boole, simplificação de equações e mapa de Karnaugh | ||
;Encontro | ;Encontro 17 (15 mai.) | ||
*Ver os K-Map online: | *Ver os K-Map online: | ||
:*[https://www.docjava.com/cpe210/kmapExplorer.html docjava.com], | :*[https://www.docjava.com/cpe210/kmapExplorer.html docjava.com], | ||
Linha 1 586: | Linha 1 588: | ||
*[https://ieeexplore-ieee-org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=6769983 E. J. McCluskey, "Minimization of Boolean functions," in The Bell System Technical Journal, vol. 35, no. 6, pp. 1417-1444, Nov. 1956, doi: 10.1002/j.1538-7305.1956.tb03835.x] | *[https://ieeexplore-ieee-org.ez130.periodicos.capes.gov.br/stamp/stamp.jsp?tp=&arnumber=6769983 E. J. McCluskey, "Minimization of Boolean functions," in The Bell System Technical Journal, vol. 35, no. 6, pp. 1417-1444, Nov. 1956, doi: 10.1002/j.1538-7305.1956.tb03835.x] | ||
;Encontro | ;Encontro 18 (20 mai.) | ||
*Como transformar uma Expressão booleana em Tabela verdade e em Circuito com portas lógicas, e vice-versa: | *Como transformar uma Expressão booleana em Tabela verdade e em Circuito com portas lógicas, e vice-versa: | ||
*[https://drive.google.com/file/d/1lNvJtT1oXv9JlBUDm-veVWExX2IehtzQ/view?usp=drive_link Expressão booleana - Tabela verdade - Circuito com portas lógicas] | *[https://drive.google.com/file/d/1lNvJtT1oXv9JlBUDm-veVWExX2IehtzQ/view?usp=drive_link Expressão booleana - Tabela verdade - Circuito com portas lógicas] | ||
*[https://drive.google.com/file/d/1O86iYyEQ2ZJ77x1hERSAwaKqQfRanrBx/view?usp=drive_link Projeto de circuitos combinacionais] | *[https://drive.google.com/file/d/1O86iYyEQ2ZJ77x1hERSAwaKqQfRanrBx/view?usp=drive_link Projeto de circuitos combinacionais] | ||
;Encontro | ;Encontro 19 (22 mai.) | ||
Projeto de circuitos combinacionais: | Projeto de circuitos combinacionais: | ||
*Ver resumo em [https://drive.google.com/file/d/1O86iYyEQ2ZJ77x1hERSAwaKqQfRanrBx/view?usp=drive_link Projeto de circuitos combinacionais] | *Ver resumo em [https://drive.google.com/file/d/1O86iYyEQ2ZJ77x1hERSAwaKqQfRanrBx/view?usp=drive_link Projeto de circuitos combinacionais] | ||
Linha 1 597: | Linha 1 599: | ||
*Ler a seção '''2.8.BLOCOS COMBINATÓRIOS''' nas pag 109 a 114 [https://drive.google.com/file/d/1g8mbdH8DOc5_D8CfzUNcUb8P6qy0S4eV/view?usp=drive_link Projeto Digital e Arquitetura de Computadores] (#page=135) | *Ler a seção '''2.8.BLOCOS COMBINATÓRIOS''' nas pag 109 a 114 [https://drive.google.com/file/d/1g8mbdH8DOc5_D8CfzUNcUb8P6qy0S4eV/view?usp=drive_link Projeto Digital e Arquitetura de Computadores] (#page=135) | ||
<!-- | <!-- | ||
Linha 1 615: | Linha 1 615: | ||
===Unidade 4 - Introdução a linguagem VHDL e Quartus/ModelSim=== | ===Unidade 4 - Introdução a linguagem VHDL e Quartus/ModelSim=== | ||
* | * 7 ENCONTROS | ||
{{collapse top |expand=true| Unidade 4 - Introdução a linguagem VHDL e Quartus/ModelSim }} | {{collapse top |expand=true| Unidade 4 - Introdução a linguagem VHDL e Quartus/ModelSim }} | ||
<!-- | |||
;Encontro 20 (24 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] '''PASSOS 0 ''' - - Aprendendo a usar a nuvem do IFSC remotamente | |||
;Encontro 21 a 23 (27 mai. a 3.jun.) | |||
*[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] '''PASSOS 1 a 4''' | |||
;Encontro | ;Encontro 24 (5 jun.) - Linguagem VHDL: | ||
* [https://wiki.sj.ifsc.edu.br/images/7/75/Introdu%C3%A7%C3%A3o_a_linguagem_de_descri%C3%A7%C3%A3o_de_hardware.pdf Introdução a linguagem de descrição de hardware (DHL)] | * [https://wiki.sj.ifsc.edu.br/images/7/75/Introdu%C3%A7%C3%A3o_a_linguagem_de_descri%C3%A7%C3%A3o_de_hardware.pdf Introdução a linguagem de descrição de hardware (DHL)] | ||
Linha 1 705: | Linha 1 711: | ||
;Encontro (10 e 12 jun.) | ;Encontro 25 e 26 (10 e 12 jun.) | ||
*[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] | *[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] | ||
;PARA O PRÓXIMO ENCONTRO: | ;PARA O PRÓXIMO ENCONTRO: | ||
Linha 1 718: | Linha 1 724: | ||
*Consultar e guardar a [[Folha de consulta de VHDL]] | *Consultar e guardar a [[Folha de consulta de VHDL]] | ||
*Ler a seção [https://pt.wikipedia.org/wiki/VHDL#História História] da página VHDL da wikipedia em português e as seções [https://en.wikipedia.org/wiki/VHDL#History History], [https://en.wikipedia.org/wiki/VHDL#Standardization Standardization}, [https://en.wikipedia.org/wiki/VHDL#Design Design] e [https://en.wikipedia.org/wiki/VHDL#Advantages Advantages] da página VHDL na Wikipedia em ingles. | *Ler a seção [https://pt.wikipedia.org/wiki/VHDL#História História] da página VHDL da wikipedia em português e as seções [https://en.wikipedia.org/wiki/VHDL#History History], [https://en.wikipedia.org/wiki/VHDL#Standardization Standardization}, [https://en.wikipedia.org/wiki/VHDL#Design Design] e [https://en.wikipedia.org/wiki/VHDL#Advantages Advantages] da página VHDL na Wikipedia em ingles. | ||
--> | |||
{{collapse bottom}} | {{collapse bottom}} | ||
===Unidade 5 - Circuitos lógicos combinacionais (com VHDL)=== | ===Unidade 5 - Circuitos lógicos combinacionais (com VHDL)=== | ||
* | * 7 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 | <!-- | ||
;Encontro 29 e 30 (24 e 26 jun.) | |||
* 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 917: | Linha 1 924: | ||
Tente encontrar alguma solução observando a regra de mudança dos bits no código Gray. Não esqueça que apenas o valor atual da entrada é conhecido. | Tente encontrar alguma solução observando a regra de mudança dos bits no código Gray. Não esqueça que apenas o valor atual da entrada é conhecido. | ||
;Encontro | ;Encontro 31 (1 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 2 177: | Linha 2 184: | ||
{{fig|2.6|Technology Map do mux4x1 para a família Aria 10 | TM_mux4x1_S3.png| 400 px |}} | {{fig|2.6|Technology Map do mux4x1 para a família Aria 10 | TM_mux4x1_S3.png| 400 px |}} | ||
;Encontro | ;Encontro 32 (3 jul.) | ||
*Avaliação A1c. | *Avaliação A1c. | ||
;Encontro | ;Encontro 33 (8 jul.) | ||
*Nova modelagem do decodificador (conversor) de binário para sete segmentos '''bin2ssd''': | *Nova modelagem do decodificador (conversor) de binário para sete segmentos '''bin2ssd''': | ||
: | :*Considere o decodificador que havia sido implementado na AE3 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 implementar esse decodificador, descrevendo-o diretamente através da sua tabela verdade. | :*Ver a tabela verdade na página do [https://wiki.sj.ifsc.edu.br/index.php/Display_de_7_segmentos#Codificador_de_bin%C3%A1rio_para_mostrador_de_7_segmentos display de sete segmentos]. | ||
:*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 implementar esse decodificador, descrevendo-o diretamente através da sua tabela verdade. | |||
::A correspondencia dos bits do vetor ssd seria: a => ssd(0), b => ssd(1), ... g => ssd(6). | |||
::A correspondencia dos bits do vetor bin seria: A => bin(3), B => bin(2), C => bin(1), D => bin(0). | |||
* Usando a instrução '''when else''' | * Usando a instrução '''when else''' | ||
<syntaxhighlight lang=vhdl> | <syntaxhighlight lang=vhdl> | ||
Linha 2 191: | Linha 2 202: | ||
port( | port( | ||
bin : in std_logic_vector (3 downto 0); | bin : in std_logic_vector (3 downto 0); | ||
ssd : out std_logic_vector (6 downto 0) | ssd : out std_logic_vector (6 downto 0) -- indices decrescentes | ||
-- ssd : out std_logic_vector (0 to 6) -- indices crescentes | |||
); | ); | ||
end entity; | end entity; | ||
Linha 2 198: | Linha 2 210: | ||
begin | begin | ||
-- indices decrescentes | |||
ssd <= "0111111" when bin = "0000" else | ssd <= "0111111" when bin = "0000" else | ||
... | ... | ||
-- indices crescentes | |||
-- ssd <= "1111110" when bin = "0000" else | |||
end architecture; | end architecture; | ||
</syntaxhighlight > | </syntaxhighlight > | ||
* Usando a instrução '''with select''' | * Usando a instrução '''with select''' | ||
<syntaxhighlight lang=vhdl> | |||
architecture with_select of bin2ssd is | |||
begin | |||
end architecture; | |||
</syntaxhighlight > | |||
;DESAFIO: | ;DESAFIO: | ||
*Faça a implementação de um conversor de binário para ssd que forneça na saída as seguintes letras: | *Faça a implementação de um conversor de binário para ssd que forneça na saída as seguintes letras: | ||
Linha 2 209: | Linha 2 234: | ||
:*Veja a [[ELD129002-Engtelecom (Diário) - Prof. Marcos Moecke#AE3_-_Programação_do_kit_Mercurio_IV | AE3 - Programação do kit Mercurio IV ]]para fazer a configuração dos pinos. | :*Veja a [[ELD129002-Engtelecom (Diário) - Prof. Marcos Moecke#AE3_-_Programação_do_kit_Mercurio_IV | AE3 - Programação do kit Mercurio IV ]]para fazer a configuração dos pinos. | ||
;Encontro | ;Encontro 34 (10 jul.) | ||
Demultiplexador de 1 para 4 [https://tinyurl.com/yrvmxgq7] | Demultiplexador de 1 para 4 [https://tinyurl.com/yrvmxgq7] | ||
:*Implementar em VHDL | :*Implementar em VHDL | ||
Linha 2 409: | Linha 2 434: | ||
;Encontro 31 e 32 (16 e 21 nov.) | ;Encontro 31 e 32 (16 e 21 nov.) | ||
;Encontro 31 (4 fev.) | ;Encontro 31 (4 fev.) | ||
Linha 2 743: | Linha 2 766: | ||
===Unidade 6 - Circuitos aritméticos (com VHDL) === | ===Unidade 6 - Circuitos aritméticos (com VHDL) === | ||
* 5 ENCONTROS | * 5 ENCONTROS | ||
{{collapse top | Unidade 6 - Circuitos aritméticos (com VHDL)}} | {{collapse top | expand=true| Unidade 6 - Circuitos aritméticos (com VHDL)}} | ||
<!-- | <!-- | ||
;Encontro | ;Encontro 35 (15 jul.) | ||
*Circuitos aritméticos: somadores, incrementador, decrementador, complemento de dois, multiplicador, comparadores | *Circuitos aritméticos: somadores, incrementador, decrementador, complemento de dois, multiplicador, comparadores | ||
:* [https://drive.google.com/file/d/1kql0io2sh9Mp4FfnqpEPrdUFkVhHBx6_/view?usp=drive_link slides] | :* [https://drive.google.com/file/d/1kql0io2sh9Mp4FfnqpEPrdUFkVhHBx6_/view?usp=drive_link slides] | ||
Linha 2 755: | Linha 2 778: | ||
*Ver <ref name="PEDRONI2010a"> PEDRONI, Volnei A. Eletrônica digital moderna e VHDL; 1ª ed. Rio de Janeiro:Elsevier, 2010. 619p. . ISBN 9788535234657 </ref> | *Ver <ref name="PEDRONI2010a"> PEDRONI, Volnei A. Eletrônica digital moderna e VHDL; 1ª ed. Rio de Janeiro:Elsevier, 2010. 619p. . ISBN 9788535234657 </ref> | ||
*Usando o tipo '''integer''' | *Usando o tipo '''integer''' | ||
Para implementar circuitos aritméticos, ao invés de se descrever o circuito com portas lógicas conforme mostrado para somadores, subtratores, comparadores e multiplicadores, deve-se utilizar os operadores aritméticos, e o compilador realizará a escolha do melhor circuito para cada caso. Inicialmente apresentamos alguns exemplos utilizando dados do tipo '''integer'''. | Para implementar circuitos aritméticos, ao invés de se descrever o circuito com portas lógicas conforme mostrado para somadores, subtratores, comparadores e multiplicadores, deve-se utilizar os operadores aritméticos, e o compilador realizará a escolha do melhor circuito para cada caso. Inicialmente apresentamos alguns exemplos utilizando dados do tipo '''integer'''. | ||
Linha 2 776: | Linha 2 795: | ||
end architecture; | end architecture; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{fig| | {{fig|6.1|Código RTL do somador com tipo integer sem range| RTL_somadorv1.png| 300 px |}} | ||
{{fig| | {{fig|6.2|Technology Map do somador com tipo integer sem range| TM_somadorv1.png| 1000 px |}} | ||
Por isso, o uso correto do tipo integer, exige que se limite a faixa de valores ('''range 0 to 15'''), o que fará com que o compilador atribua para os sinais a quantidade correta de bits, gerando circuitos de tamanho adequado. | Por isso, o uso correto do tipo integer, exige que se limite a faixa de valores ('''range 0 to 15'''), o que fará com que o compilador atribua para os sinais a quantidade correta de bits, gerando circuitos de tamanho adequado. | ||
Linha 2 794: | Linha 2 813: | ||
end architecture; | end architecture; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{fig| | {{fig|6.3|Código RTL do somador com tipo integer com range| RTL_somadorv2.png| 300 px |}} | ||
{{fig| | {{fig|6.4|Technology Map do somador com tipo integer com range| TM_somadorv2.png| 600 px |}} | ||
Para fazer uma subtração, basta trocar o operador "+" pelo "-", e o compilador irá implementar um subtrator realizando o complemento 2 da entrada b. | Para fazer uma subtração, basta trocar o operador "+" pelo "-", e o compilador irá implementar um subtrator realizando o complemento 2 da entrada b. | ||
Linha 2 812: | Linha 2 831: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{fig| | {{fig|6.5|Código RTL do subtrator com tipo integer com range| RTL_subtratorv1.png| 300 px |}} | ||
Note nesta figura que as entradas b[3..0] são conectadas ao B[4..1] do somador, e que o B[0] é conectado ao Vcc ("1"). O mesmo ocorre com a entrada A. Ao mesmo tempo a entrada b é invertida, gerando assim o complemento de dois dessa entrada. Assim para realizar uma subtração pode ser utilizado o mesmo circuito do somador. | Note nesta figura que as entradas b[3..0] são conectadas ao B[4..1] do somador, e que o B[0] é conectado ao Vcc ("1"). O mesmo ocorre com a entrada A. Ao mesmo tempo a entrada b é invertida, gerando assim o complemento de dois dessa entrada. Assim para realizar uma subtração pode ser utilizado o mesmo circuito do somador. | ||
Linha 2 830: | Linha 2 849: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{fig| | {{fig|6.6|Código RTL do incrementador com tipo integer com range| RTL_incrementadorv1.png| 300 px |}} | ||
Note que no incrementador apenas a segunda entrada do módulo RTL somador passa a ter um valor fixo '1'. Isso faz com que o hardware necessário para efetuar a soma (+1) é reduzido. | Note que no incrementador apenas a segunda entrada do módulo RTL somador passa a ter um valor fixo '1'. Isso faz com que o hardware necessário para efetuar a soma (+1) é reduzido. | ||
Linha 2 849: | Linha 2 868: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{fig| | {{fig|6.7|Código RTL do decrementador com tipo integer com range| RTL_decrementadorv1.png| 300 px |}} | ||
Note que no decrementador apenas a segunda entrada do módulo RTL somador passa a ter um valor fixo, mas também nas duas entradas o sinal A(0) e B(0) recebem o valor fixo '1', para produzir um ''carry_in'' para a soma do bit A(1) com B(1). | Note que no decrementador apenas a segunda entrada do módulo RTL somador passa a ter um valor fixo, mas também nas duas entradas o sinal A(0) e B(0) recebem o valor fixo '1', para produzir um ''carry_in'' para a soma do bit A(1) com B(1). | ||
;Encontro 36 (17 jul.) | |||
*Multiplicação digital | |||
{{fig|6.8|Algoritmo de multiplicação sem sinal| Multiplier_Alg.png| 500 px |}} | |||
{{fig|6.9|Circuito de multiplicação sem sinal| Multiplier_Hw.png| 500 px |}} | |||
Para fazer uma multiplicação, basta usar o operador "*"e o compilador irá implementar um multiplicador. Neste caso para evitar o overflow é importante definir o range da saída com um tamanho suficiente para comportar o maior produto | Para fazer uma multiplicação, basta usar o operador "*"e o compilador irá implementar um multiplicador. Neste caso para evitar o overflow é importante definir o range da saída com um tamanho suficiente para comportar o maior produto | ||
Linha 2 918: | Linha 2 941: | ||
{{fig|4.10|Código RTL do multiplicador por 10| RTL_multiplicador10.png| 300 px |}} | {{fig|4.10|Código RTL do multiplicador por 10| RTL_multiplicador10.png| 300 px |}} | ||
;Encontro 37 | ;Encontro 37 (22 jul.) | ||
*A biblioteca [[Numeric std.vhd]] define os tipos UNSIGNED e SIGNED. | *A biblioteca [[Numeric std.vhd]] define os tipos UNSIGNED e SIGNED. | ||
Linha 2 935: | Linha 2 958: | ||
function RESIZE (ARG: SIGNED; NEW_SIZE: NATURAL) return SIGNED; | function RESIZE (ARG: SIGNED; NEW_SIZE: NATURAL) return SIGNED; | ||
function RESIZE (ARG: UNSIGNED; NEW_SIZE: NATURAL) return UNSIGNED; | function RESIZE (ARG: UNSIGNED; NEW_SIZE: NATURAL) return UNSIGNED; | ||
* Utilizar a função RESIZE para aumentar o número de bits na entrada de um operador. Isso visa aumentar o número de bits a ser usado pelo operador. | |||
* Utilizar a função RESIZE para aumentar o número de bits na saída de uma pperação. Isso visa apenas adequar o número de bits ao número especificado na porta da entidade. | |||
* Em números usando o tipo UNSIGNED, o RESIZE apenas acrescenta ZEROS a esquerda até atingir o número de bits. | |||
* Em números usando o tipo SIGNED, o RESIZE apenas repete o MSB a esquerda até atingir o número de bits. | |||
--============================================================================ | --============================================================================ | ||
Linha 2 963: | Linha 2 991: | ||
|background colour=#F5FFFA}} | |background colour=#F5FFFA}} | ||
</center> | </center> | ||
* A recomendação da IEEE é utilizar nas portas das entidades sempre tipos std_logic e std_logic_vector. | |||
* Para realizar operações aritméticas utilize preferencialmente os tipos UNSIGNED e SIGNED | |||
* Implementar as diferentes unidades aritméticas (incrementador, decrementador, somador, subtrator, multiplicador, divisor) usando o tipo UNSIGNED e também SIGNED. | |||
<!-- | |||
;Encontro 37 e 38 (22 e 25 fev.) | |||
*Unidade de Aritmética UA). | *Unidade de Aritmética UA). | ||
Linha 3 146: | Linha 3 181: | ||
Durante o semestre serão realizadas 4 avaliações. As avaliações devem ser enviadas pela plataforma Moodle com os arquivos solicitados. | 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: | ;Data das avaliações: | ||
*A1a - (3 pontos) Sistema de Numeração e códigos : | *A1a - (3 pontos) Sistema de Numeração e códigos : XX/2025 | ||
*A1b - (4 pontos) Expressões lógicas e mapa de Karnaugh : | *A1b - (4 pontos) Expressões lógicas e mapa de Karnaugh : XX/2025 | ||
*A1c - (4 pontos) Circuitos lógicos, Introdução ao VHDL e revisão de A1a e | *A1c - (4 pontos) Circuitos lógicos, Introdução ao VHDL e revisão de A1a e A1b : XX/2025 | ||
* | *A2 - (10 pontos) Circuitos combinacionais e ariméticos : XX/2025 | ||
* | *R1 - Recuperação de A1: XX/2025 | ||
* | *R2 - Recuperação de A2: XX/2025 | ||
Folhas de consulta: | Folhas de consulta: | ||
*A1b, A1c [[Media:Algebra_booleana.pdf | Álgebra booleana]] | *A1b, A1c [[Media:Algebra_booleana.pdf | Álgebra booleana]] | ||
Linha 3 157: | Linha 3 192: | ||
*A2b [[Media:Numeric_std_conversions.png | Conversões do pacote numeric_std]] ou [[Media:Numeric_stdConvertions.gif | Conversões do pacote numeric_std (DOULOS)]] | *A2b [[Media:Numeric_std_conversions.png | Conversões do pacote numeric_std]] ou [[Media:Numeric_stdConvertions.gif | Conversões do pacote numeric_std (DOULOS)]] | ||
<!-- | |||
== Atividade relâmpago (AR) == | == 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. | 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) == | == 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. | 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. | ||
<!-- | |||
===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=== | ||
{{collapse top | bg=lightyellow | 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}} | ||
Linha 3 357: | Linha 3 394: | ||
|} | |} | ||
* Configurar como entrada os seguintes pinos: | * Configurar como entrada os seguintes pinos: | ||
eA | eA Y22 | ||
eB | eB W21 | ||
eC | eC W22 | ||
eD | eD V21 | ||
*Observe a tabela com a pinagem dos display (mostrador de sete segmentos) disponíveis neste kit. | *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;" | {| class="wikitable" style="vertical-align:middle; background-color:#FFF; color:#222;" | ||
Linha 3 461: | Linha 3 498: | ||
:* Apêndice (se desejar pode ser disponibilizados vídeos do funcionamento do circuito no Passo 4 | :* 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. | * 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 07h59min de 12 de agosto de 2025
1 Registro on-line das aulas
1.1 Unidade 1 - Aula inicial, Introdução a disciplina
- 1 ENCONTRO
Unidade 1 - Aula inicial, Introdução a disciplina |
---|
|
1.2 Unidade 2 - Sistema de numeração e códigos
- 5 ENCONTROS
Unidade 2 - Sistema de numeração e códigos |
---|
1.3 Unidade 3 - Funções, portas lógicas e álgebra booleana
- 13 ENCONTROS
Unidade 3 - Funções, portas lógicas e álgebra booleana |
---|
1.4 Unidade 4 - Introdução a linguagem VHDL e Quartus/ModelSim
- 7 ENCONTROS
Unidade 4 - Introdução a linguagem VHDL e Quartus/ModelSim |
---|
1.5 Unidade 5 - Circuitos lógicos combinacionais (com VHDL)
- 7 ENCONTROS
Unidade 5 - Circuitos lógicos combinacionais (com VHDL) |
---|
1.6 Unidade 6 - Circuitos aritméticos (com VHDL)
- 5 ENCONTROS
Unidade 6 - Circuitos aritméticos (com VHDL) |
---|
2 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
- A1a - (3 pontos) Sistema de Numeração e códigos : XX/2025
- A1b - (4 pontos) Expressões lógicas e mapa de Karnaugh : XX/2025
- A1c - (4 pontos) Circuitos lógicos, Introdução ao VHDL e revisão de A1a e A1b : XX/2025
- A2 - (10 pontos) Circuitos combinacionais e ariméticos : XX/2025
- R1 - Recuperação de A1: XX/2025
- R2 - Recuperação de A2: XX/2025
Folhas de consulta:
- A1b, A1c Álgebra booleana
- A2a, A2b Tabelas das figuras 3.6, 3.10 e 4.1 do livro do Pedroni.
- A2b Conversões do pacote numeric_std ou Conversões do pacote numeric_std (DOULOS)
3 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.
4 Referências Bibliográficas: