ELD129002-Engtelecom (Diário) - Prof. Marcos Moecke: mudanças entre as edições

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Moecke (discussão | contribs)
Moecke (discussão | contribs)
 
(45 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 (18 mar.):
* 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://docente.ifsc.edu.br/moecke/ppc-engtelecom/PPC2023/ grafo do curriculo]
* 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===
* 4 ENCONTROS
* 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===
* 10 ENCONTROS
* 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 16 (6 mai.)
;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 17 (8 mai.)
;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 18 (13 mai.)
;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 19 (15 mai.)
;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 20 (20 mai.)
;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 21 (22 mai.)
;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)


;Encontro 22  (27 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, 1 e 2'''
<!--
<!--


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===
* 6 ENCONTROS
* 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  (5  jun.) - Linguagem VHDL:
;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 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 704: Linha 1 710:
*Guardar [[Folha de consulta de VHDL]]  
*Guardar [[Folha de consulta de VHDL]]  


====ATUAL====
 
;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]
*ver também [[Preparando para gravar o circuito lógico no FPGA]]
;PARA O PRÓXIMO ENCONTRO:
*ver [[Preparando para gravar o circuito lógico no FPGA]].
*ver [[Como arquivar um projeto]].
*ver [[Simulação Funcional usando o ModelSim]].
*ver [[Como utilizar a matriz de leds do kit Mercurio IV da Macnica]] - caso alguém deseje acender os leds conforme as chaves de entrada são selecionados.
*ver [[Acesso_ao_IFSC-CLOUD_(NUVEM)#Como_transferir_arquivos_entre_o_computador_local_e_a_NUVEM-IFSC | Como_transferir_arquivos_entre_o_computador_local_e_a_NUVEM-IFSC]].
*ver [[Acesso_ao_IFSC-CLOUD_(NUVEM)#Configuração_do_X2GO | Como configurar o X2Go para acessar a nuvem de seu computador pessoal]].
*ver [[Preparando_para_gravar_o_circuito_lógico_no_FPGA#Programando_o_kit_FPGA_usando_comando_de_linha | Programando o kit FPGA usando comando de linha]].
 
*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.
*Consultar e guardar a [[Folha de consulta de VHDL]]
-->
{{collapse bottom}}
{{collapse bottom}}


===Unidade 5 - Circuitos lógicos combinacionais (com VHDL)===
===Unidade 5 - Circuitos lógicos combinacionais (com VHDL)===
* 12 ENCONTROS
* 7 ENCONTROS
{{collapse top |Unidade 5 - Circuitos lógicos combinacionais (com VHDL)}}
{{collapse top |expand=true |Unidade 5 - Circuitos lógicos combinacionais (com VHDL)}}
<!--
<!--
;Encontro 20 e 21 (21 e 26 nov.)  
;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 801: Linha 1 816:
* Descubra quantas portas ou exclusivo seriam necessárias para o caso de N bits.
* Descubra quantas portas ou exclusivo seriam necessárias para o caso de N bits.


 
*Implemente um conversor Gray para Binário (gray2bin):
;DESAFIO - Implemente um conversor Gray para Binário (gray2bin):
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.
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.


Linha 1 827: Linha 1 841:
end architecture
end architecture
</syntaxhighlight>
</syntaxhighlight>
;Encontro 22  (28 nov.)
*Avaliação A1b
;Encontro 23 e 24  (03 e 05 dez.) 
* Conhecer o [[Código Gray]]
* Implementação de incrementador Gray  (inc_gray)
* Implementação de incrementador Gray  (inc_gray)


Linha 1 858: Linha 1 866:
port
port
(
(
g_in  : in bit_vector(3 downto 0);
g_in  : in std_logic_vector(3 downto 0);
g_out  : out bit_vector(3 downto 0)
g_out  : out std_logic_vector(3 downto 0)
);
);
end entity;
end entity;


architecture ifsc_v1 of inc_gray is
architecture ifsc_v1 of inc_gray is
signal b_in   : bit_vector(3 downto 0);
signal bin   : std_logic_vector(3 downto 0);
signal b_in   : bit_vector(3 downto 0);
signal bin_inc   : std_logic_vector(3 downto 0);
begin
begin
-- Converter a entrada de g_in para b_in
-- Converter a entrada de g_in para b_in
Linha 1 881: Linha 1 889:
O problema nesta solução é como fazer o incremento de um número em binário.  Será necessário aprender:
O problema nesta solução é como fazer o incremento de um número em binário.  Será necessário aprender:
* somar em binário, pois incrementar é somar 1.
* somar em binário, pois incrementar é somar 1.
<syntaxhighlight lang=vhdl>
-- necessário usar os pacotes std_logic_1164 e numeric_std da  biblioteca ieee
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
-- Declare um signal do tipo unsigned para usar operador aritmético sobre ele
signal bin_uns  : unsigned(3 downto 0);
-- converta o valor binário para unsigned
bin_uns <= (unsigned(bin));
bin_inc <= std_logic_vector(bin_uns + 1);
</syntaxhighlight>
architecture ifsc_v1 of inc_gray is
signal b_in  : std_logic_vector(3 downto 0);
signal b_inc  : std_logic_vector(3 downto 0);
begin
-- Converter a entrada de g_in para b_in
-- código visto e aula anterior
-- Incrementar e binário  b_out = b_in + 1
-- aqui falta conhecimento de linguagem para fazer.
-- Converter a entrada de b_out para g_out
-- código visto e aula anterior
end architecture;
</syntaxhighlight>
* os tipos de dados que permitem fazer operações aritméticas em binário,
* os tipos de dados que permitem fazer operações aritméticas em binário,
* como fazer a conversão entre tipos de dados em VHDL ('''integer''', '''bit_vector''', '''std_logic_vector''', '''unsigned''').  
* como fazer a conversão entre tipos de dados em VHDL ('''integer''', '''bit_vector''', '''std_logic_vector''', '''unsigned''').  


'''Fica a pergunta.'''  Seria possível fazer o incremento direto em gray sem passar primeiro para o binário?   
'''Fica a pergunta.'''  Seria possível fazer o incremento direto em gray sem passar primeiro para o binário?   
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 25 (10 dez.)
;Encontro 31 (1 jul.)  
*Realização da etapa 3 da avaliação A1 (60 minutos):
 
;Encontro 26 (12 dez.)  
* 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 150: 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 27 (17 dez.)
;Encontro 32 (3 jul.)
*Realize a simulação das 3 arquiteturas do MUX4:1 no Modelsim
*Avaliação A1c.
*Crie um arquivo tb_mux4x1_v1.do que repita a simulação da arquitetura v1
 
<syntaxhighlight lang=tcl>
;Encontro 33  (8 jul.)
#file_name: tb_mux4x1_v1.do
*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).
:*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'''
<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) -- indices decrescentes
    -- ssd : out std_logic_vector (0 to 6)    -- indices crescentes
    );
end entity;
 
architecture when_else of bin2ssd is
 
begin
    -- indices decrescentes
    ssd <= "0111111" when bin = "0000" else
          ...
 
    -- indices crescentes
--  ssd <= "1111110" when bin = "0000" else


#preparando o simulador
end architecture;
vlib rtl_work
</syntaxhighlight >
vmap work rtl_work
#vcom -93 -work work {/home/moecke/ELD1/ANO2024.2/Aula26/mux4x1.vhd}
# substitua o caminho absoluto pelo relativo ../../
vcom -93 -work work {../../mux4x1.vhd}
vsim work.mux4x1(v_logica_pura)


#adicionando os sinais a aba wave
* Usando a instrução '''with select'''
add wave -position end  sim:/mux4x1/X
<syntaxhighlight lang=vhdl>
add wave -position end  sim:/mux4x1/Sel
architecture with_select of bin2ssd is
add wave -position end  sim:/mux4x1/Y


#definindo o valor de um estimulo  (valor instante_de_tempo)
begin
force -freeze sim:/mux4x1/X 0101 0
 
#definindo varios valores de um estimulo  pares (valor instante_de_tempo) separados por virgula
end architecture;
force -freeze sim:/mux4x1/Sel 00 0, 01 100, 10 200, 11 300
</syntaxhighlight >
# Execução da simulação. run ou run tempo
;DESAFIO:
# Se não tiver unidade é ps (pico segundos)
*Faça a implementação de um conversor de binário para ssd que forneça na saída as seguintes letras:
# fs            => femto segundos
{{fig|5.20|Alfabeto usando mostrador de 7 segmentos| alfabeto_ssd.png| 400 px | }}
# ps = 1000 fs;  => pico segundos
*Use o kit Mercúrio IV para implementar o hardware.  As chaves SW0 a SW3 devem ser usadas como as entradas binárias bin(0) a bin(3), e o display de sete segmentos DISP0 como saída ssd(0) a ssd(6).
# ns = 1000 ps;  => nano segundos
:*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.
# us = 1000 ns;  => micro segundos
# ms = 1000 us;  => mili segundos
# sec = 1000 ms; => segundos
# min = 60 sec;  => minutos
# hr = 60 min;   => horas
run 400
force -freeze sim:/mux4x1/X 1100 0
force -freeze sim:/mux4x1/Sel 00 0, 01 100, 10 200, 11 300
run 400
force -freeze sim:/mux4x1/X 0011 0
force -freeze sim:/mux4x1/Sel 00 0, 01 100, 10 200, 11 300
run 400
</syntaxhighlight>
{{fig|2.7|Resultado da simulação do mux4x1 | SIM_mux4x1.png| 600 px |}}


*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 v3
*opcionalmente é possível apenas mudar a arquitetura a ser simulado na linha, deixando 2 comentadas e uma ativa
<syntaxhighlight lang=tcl>
#vsim work.mux4x1(v_logica_pura)
#vsim work.mux4x1(v_WHEN_ELSE)
vsim work.mux4x1(v_WITH_SELECT)
</syntaxhighlight>
*Inclua todos os arquivos .do no projeto do Quartus e salve o arquivo QAR


;Encontro 28 (19 dez.)  
;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
<syntaxhighlight lang=vhdl>
<syntaxhighlight lang=vhdl>
Linha 2 222: Linha 2 254:
end architecture;
end architecture;
</syntaxhighlight>
</syntaxhighlight>
;Encontro 29  (28 jan.)
*Revisão dos circuitos do multiplexador mux4x1 e demux4x1. 
*Revisão do uso do simulador ModelSim e do script de simulação.
;Encontro 30 (30 jan.)


;Entender a importância do tipo de dado STD_LOGIC:
;Entender a importância do tipo de dado STD_LOGIC:
Linha 2 346: Linha 2 371:
:(13) e (14) - o sinal Y está sendo mostrado como um grupo de bits e separado por bit.  Para tal é necessário clicar sobre o [+] antes sinal Y [[Arquivo:Expand.png]].
:(13) e (14) - o sinal Y está sendo mostrado como um grupo de bits e separado por bit.  Para tal é necessário clicar sobre o [+] antes sinal Y [[Arquivo:Expand.png]].


*Nova modelagem do decodificador de binário para sete segmentos '''bin2ssd''':
<!--
::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).
*Realize a simulação das 3 arquiteturas do MUX4:1 no Modelsim
::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 o decodificador.
*Crie um arquivo tb_mux4x1_v1.do que repita a simulação da arquitetura v1
 
<syntaxhighlight lang=tcl>
<syntaxhighlight lang=vhdl>
#file_name: tb_mux4x1_v1.do
library ieee;
 
use ieee.std_logic_1164.all;
#preparando o simulador
entity bin2ssd is
vlib rtl_work
    port(
vmap work rtl_work
        bin : in std_logic_vector (3 downto 0);
#vcom -93 -work work {/home/moecke/ELD1/ANO2024.2/Aula26/mux4x1.vhd}
        ssd : out std_logic_vector (6 downto 0)
# substitua o caminho absoluto pelo relativo ../../
    );
vcom -93 -work work {../../mux4x1.vhd}
end entity;
vsim work.mux4x1(v_logica_pura)
 
 
architecture when_else of bin2ssd is
#adicionando os sinais a aba wave
 
add wave -position end  sim:/mux4x1/X
begin
add wave -position end  sim:/mux4x1/Sel
    ssd <= "0111111" when bin = "0000" else
add wave -position end  sim:/mux4x1/Y
          ...
 
end architecture;
#definindo o valor de um estimulo  (valor instante_de_tempo)
</syntaxhighlight >
force -freeze sim:/mux4x1/X 0101 0
 
#definindo varios valores de um estimulo  pares (valor instante_de_tempo) separados por virgula
<!--
force -freeze sim:/mux4x1/Sel 00 0, 01 100, 10 200, 11 300
;Encontro 29  (25 jul.)  
# Execução da simulação. run ou run tempo
*Implementação de um MUX4:1 usando chips comerciais de portas lógicas.
# Se não tiver unidade é ps (pico segundos)  
;Encontro 27 e 28  (ANP e 7 nov.)  
# fs            => femto segundos
*[[Laboratório - Implementação de um MUX4:1 em protoboard | AE2 - Atividade de Laboratório 2 ]] Passos 1 e 2
# ps = 1000 fs;  => pico segundos
;Encontro 29  (9 nov.)  
# ns = 1000 ps;  => nano segundos
*[[Laboratório - Implementação de um MUX4:1 em protoboard | AE2 - Atividade de Laboratório 2 ]] Passos 3 e 4
# us = 1000 ns; => micro segundos
*Entrega do relatório no Moodle (até 14 dias).
# ms = 1000 us;  => mili segundos
;Encontro 30  (14 nov.)
# sec = 1000 ms; => segundos
 
# min = 60 sec; => minutos
;Encontro 31 e 32  (16 e 21 nov.)
# hr = 60 min;   => horas
 
run 400
-->
force -freeze sim:/mux4x1/X 1100 0
<!--
force -freeze sim:/mux4x1/Sel 00 0, 01 100, 10 200, 11 300
 
run 400
;Encontro 31  (4 fev.)
force -freeze sim:/mux4x1/X 0011 0
*Comentários no código (duplo traço --)
force -freeze sim:/mux4x1/Sel 00 0, 01 100, 10 200, 11 300
  -- Isso eh uma linha de comentario
run 400
  y <= a * b ; --o sinal y recebe o resultado da multiplicacao a x b  
</syntaxhighlight>
*Representação de caracteres, strings e números em VHDL.  No circuito, os caracteres são representados através de bits de acordo com a [https://www.lookuptables.com/text/ascii-table tabela ASCII] básica (00 a 7F). A definição dessa tabela é feita o pacote '''[[standard.vhd]]''' da biblioteca '''std'''.
{{fig|2.7|Resultado da simulação do mux4x1 | SIM_mux4x1.png| 600 px |}}
:*Caracteres (entre aspas simples)
 
  caracter:  'A' 'x' '#' (com aspas simples)
*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 v3
:*Palavras (entre aspas duplas), é definida no VHDL como um vetor de caracteres.
*opcionalmente é possível apenas mudar a arquitetura a ser simulado na linha, deixando 2 comentadas e uma ativa
<syntaxhighlight lang=vhdl>
<syntaxhighlight lang=tcl>
   type string is array (positive range <>) of character;
#vsim work.mux4x1(v_logica_pura)
</syntaxhighlight>
#vsim work.mux4x1(v_WHEN_ELSE)
   
vsim work.mux4x1(v_WITH_SELECT)
</syntaxhighlight>
*Inclua todos os arquivos .do no projeto do Quartus e salve o arquivo QAR
;Encontro 29  (25 jul.)  
*Implementação de um MUX4:1 usando chips comerciais de portas lógicas.
;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.)  
*[[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).
;Encontro 30  (14 nov.)
 
;Encontro 31 e 32  (16 e 21 nov.)
 
 
;Encontro 31  (4 fev.)
*Comentários no código (duplo traço --)
  -- Isso eh uma linha de comentario
  y <= a * b ; --o sinal y recebe o resultado da multiplicacao a x b  
*Representação de caracteres, strings e números em VHDL.  No circuito, os caracteres são representados através de bits de acordo com a [https://www.lookuptables.com/text/ascii-table tabela ASCII] básica (00 a 7F). A definição dessa tabela é feita o pacote '''[[standard.vhd]]''' da biblioteca '''std'''.
:*Caracteres (entre aspas simples)
  caracter:  'A' 'x' '#' (com aspas simples)
 
:*Palavras (entre aspas duplas), é definida no VHDL como um vetor de caracteres.
<syntaxhighlight lang=vhdl>
   type string is array (positive range <>) of character;
</syntaxhighlight>
   
  string: "IFSC" "teste" "teste123"
  string: "IFSC" "teste" "teste123"


Linha 2 714: 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 33 (11 fev.)
;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 726: 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>


;Encontro 34  (13 fev.)
* Avaliação A2a - Circuitos combinacionais em VHDL
;Encontro 35  (18 fev.)
*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 747: Linha 2 795:
end architecture;
end architecture;
</syntaxhighlight>
</syntaxhighlight>
{{fig|4.1|Código RTL do somador com tipo integer sem range| RTL_somadorv1.png| 300 px |}}
{{fig|6.1|Código RTL do somador com tipo integer sem range| RTL_somadorv1.png| 300 px |}}
{{fig|4.2|Technology Map do somador com tipo integer sem range| TM_somadorv1.png| 1000 px |}}
{{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 765: Linha 2 813:
end architecture;
end architecture;
</syntaxhighlight>
</syntaxhighlight>
{{fig|4.3|Código RTL do somador com tipo integer com range| RTL_somadorv2.png| 300 px |}}
{{fig|6.3|Código RTL do somador com tipo integer com range| RTL_somadorv2.png| 300 px |}}
{{fig|4.4|Technology Map do somador com tipo integer com range| TM_somadorv2.png| 600 px |}}
{{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 783: Linha 2 831:
</syntaxhighlight>
</syntaxhighlight>


{{fig|4.5|Código RTL do subtrator com tipo integer com range| RTL_subtratorv1.png| 300 px |}}
{{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 801: Linha 2 849:
</syntaxhighlight>
</syntaxhighlight>


{{fig|4.6|Código RTL do incrementador com tipo integer com range| RTL_incrementadorv1.png| 300 px |}}
{{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 820: Linha 2 868:
</syntaxhighlight>
</syntaxhighlight>


{{fig|4.7|Código RTL do decrementador com tipo integer com range| RTL_decrementadorv1.png| 300 px |}}
{{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 |}}


;Encontro 36  (20 fev.)
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 889: 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 e 38 (22 e 25 fev.)
;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 906: 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 934: 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 117: 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 : 17/04/2025   
*A1a - (3 pontos) Sistema de Numeração e códigos : XX/2025   
*A1b - (4 pontos) Expressões lógicas e mapa de Karnaugh : 13/05/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 A21b() :  
*A1c - (4 pontos) Circuitos lógicos, Introdução ao VHDL e revisão de A1a e A1b : XX/2025
*A2a - (5 pontos) Circuitos combinacionais :   
*A2 - (10 pontos) Circuitos combinacionais e ariméticos XX/2025
*A2b - (5 pontos) Circuitos aritméticos :  
*R1 - Recuperação de A1: XX/2025
*R12 - Recuperação de A1 a A2 :  
*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 128: 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 311: Linha 3 377:


*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.
*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;"
{| class="wikitable" style="vertical-align:middle; background-color:#FFF; color:#222;"
|- style="font-weight:bold;"
|- style="font-weight:bold;"
Linha 3 318: Linha 3 385:
! I/O Standard
! I/O Standard
|-
|-
| SW[0] || PIN_Y22 || Chave tipo Slide Switch 0 || 3.3V
| SW[0] || PIN_V21 || Chave tipo Slide Switch 3 || 3.3V
|-
|-
| SW[1] || PIN_W21 || Chave tipo Slide Switch 1 || 3.3V
| SW[1] || PIN_W22 || Chave tipo Slide Switch 2 || 3.3V
|-
|-
| SW[2] || PIN_W22 || Chave tipo Slide Switch 2 || 3.3V
| SW[2] || PIN_W21 || Chave tipo Slide Switch 1 || 3.3V
|-
|-
| SW[3] || PIN_V21 || Chave tipo Slide Switch 3 || 3.3V
| SW[3] || PIN_Y22 || Chave tipo Slide Switch 0 || 3.3V
|}
|}
* Configurar como entrada os seguintes pinos:
* Configurar como entrada os seguintes pinos:
  eA V21
  eA Y22
  eB W22
  eB W21
  eC W21
  eC W22
  eD Y22
  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 431: 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
Encontro 1 (12 ago.)
  • A 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 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.
  • 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.
  • AOC129004 - ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES (AOC): Introdução à Arquitetura Computadores. Linguagem Assembly. Linguagem de Máquina. Programação Assembly. Modos de Endereçamento. Processo de compilação e carga de um programa. Introdução à Organização de Computadores. Organização Monociclo e Multiciclo. Pipeline. Memória e Sistema de E/S.
  • MIC129007 - MICROCONTROLADORES (MIC): Introdução a Microcontroladores e Aplicações. Arquitetura de um microcontrolador. Pilha e Subrotinas. Interrupção. Contadores e Temporizadores. Interface com Periféricos. Programação em alto nível (ex.: C, C++ e RUST) para Microcontroladores: Mapeamento de tipos e estruturas de alto nível para sistemas com recursos limitados. Projeto de hardware e firmware com microcontroladores.
  • STE129008 - STE - SISTEMAS EMBARCADOS (STE): Conceitos em Sistemas Embarcados. Metodologia de Desenvolvimento de Sistemas Embarcados. Sistemas Operacionais para Sistemas Embarcados. Ferramentas de desenvolvimento e depuração. Barramentos e dispositivos de acesso a redes. Desenvolvimento de Projeto.
  • Nesta página está o Registro diário dos encontros e avaliações.
  • A entrega de atividades e avaliações será através da plataforma Moodle. A inscrição dos alunos é automática a partir do SIGAA.
  • Para a comunicação entre professor-aluno, além dos avisos no SIGAA, utilizaremos o chat institucional. A princípio todos os alunos já estão previamente cadastrados pelo seu email institucional. Confiram enviando uma mensagem de apresentação.
  • Utilizaremos durante as aulas algumas ferramentas computacionas como o site do Falstad para entender circuitos digitais e fazer simulações básicas.
  • Também utilizaremos os softwares Quartus Light e ModelSim instalados nas maquinas do laboratório para praticar a parte de programação de hardware (descrição de hardware). Esses softwares também podem ser usados através da Nuvem do IFSC..
LER PARA O PRÓXIMO ENCONTRO

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:


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:


Curso de Engenharia de Telecomunicações