Mudanças entre as edições de "DLP29006-Engtelecom(2017-1) - Prof. Marcos Moecke"
Ir para navegação
Ir para pesquisar
Figura 2.2 - Código RTL do Exemplo 2.2
Figura 2.3 - Technology Map do Exemplo 2.2
Figura 2.4 - Chip Planner do Exemplo 2.2
Figura 2.5 - Código RTL do Exemplo 2.3
(→ATUAL) |
|||
Linha 356: | Linha 356: | ||
*Entrega dos Atividades Extraclasse ao longo do semestre AE1 a AE(N-1). Os prazos serão indicados aqui na Wiki | *Entrega dos Atividades Extraclasse ao longo do semestre AE1 a AE(N-1). Os prazos serão indicados aqui na Wiki | ||
*Projeto Final APF (XX/XX/2017). | *Projeto Final APF (XX/XX/2017). | ||
+ | |||
+ | ====ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO==== | ||
+ | Os exemplos e exercícios essenciais estão destacados em negrito na listagens abaixo. | ||
+ | |||
+ | {{collapse top | EL1 - Resolução dos exercícios do Cap 2}} | ||
+ | *Resolva os exercícios do capítulo 2 (1, 2, 3) pag. 28 a 30 | ||
+ | ;Exercise 2.1: Multiplexer: | ||
+ | |||
+ | *Complete o código VHDL abaixo para que ele seja correspondente a um multiplexador que selecione a entrada A quando sel ="01", B quando sel ="10", coloque "0...0" na saída quando sel ="00" e mantenha a saída em alta impedância "Z...Z" quando sel="11". | ||
+ | ::*Compile o código e em seguida faça a simulação, para verificar se o circuito funciona conforme | ||
+ | especificado. | ||
+ | ::*Anote as mensagens de warning do compilador. | ||
+ | |||
+ | <syntaxhighlight lang=vhdl> | ||
+ | --------------------------------------- | ||
+ | -- File: mux.vdh | ||
+ | --------------------------------------- | ||
+ | -- Declaração das Bibliotecas e Pacotes | ||
+ | -- | ||
+ | LIBRARY ieee; | ||
+ | USE _________________________ ; | ||
+ | |||
+ | --------------------------------------- | ||
+ | -- Especificação das entradas e saídas e nome da ENTITY | ||
+ | ENTITY mux IS | ||
+ | PORT ( | ||
+ | __ , __ : ___ STD_LOGIC_VECTOR (7 DOWNTO 0); | ||
+ | sel : IN ____________________________ ; | ||
+ | ___ : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); | ||
+ | END _____ ; | ||
+ | --------------------------------------- | ||
+ | ARCHITECTURE example OF _____ IS | ||
+ | BEGIN | ||
+ | PROCESS (a, b, ____ ) | ||
+ | BEGIN | ||
+ | IF (sel = "00") THEN | ||
+ | c <= "00000000"; | ||
+ | ELSIF (__________) THEN | ||
+ | c <= a; | ||
+ | _____ (sel = "10") THEN | ||
+ | c <= __; | ||
+ | ELSE | ||
+ | c <= (OTHERS => '__'); | ||
+ | END ___ ; | ||
+ | END _________ ; | ||
+ | END _________ ; | ||
+ | --------------------------------------- | ||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | <!-- | ||
+ | {{collapse top | EL3 - Conversor de Binário para BCD}} | ||
+ | *Considere um número decimal entre 0000 e 9999. Usando operadores predefinidos, obtenha na saída os digitos decimais separados. | ||
+ | :*Escreva o código VHDL e analise o número de elementos lógicos necessários. | ||
+ | :*Faça a simulação funcional do circuito. | ||
+ | <center> [[Arquivo:tb_bin2bcd.jpg]]<br> '''Fig. 20 - Simulação da conversão de binário para BCD''' </center> | ||
+ | :*Compare sua implementação com os outros estudantes e analise as diferenças, observe o código RTL, o número de elementos lógicos e também o tempo de propagação. | ||
+ | ::Para separar os dígitos decimais do número de entrada pense nos operadores de "+", "-", "*", "/", "REM" e "MOD". | ||
+ | ::Para facilitar os testes e a troca de informações entre as equipes, a ENTITY deverá ter o seguinte formato: | ||
+ | <syntaxhighlight lang=vhdl> | ||
+ | entity bin2bcd is | ||
+ | port ( | ||
+ | X_bin : in std_logic_vector(13 downto 0); -- 0000 a 9999 | ||
+ | M_bcd : out std_logic_vector(3 downto 0); -- Milhar | ||
+ | C_bcd : out std_logic_vector(3 downto 0); -- Centena | ||
+ | D_bcd : out std_logic_vector(3 downto 0); -- Dezena | ||
+ | U_bcd : out std_logic_vector(3 downto 0)); -- Unidade | ||
+ | |||
+ | end entity; | ||
+ | |||
+ | architecture example of bin2bcd is | ||
+ | --declaração de sinais auxiliares | ||
+ | |||
+ | begin | ||
+ | --descrição do hardware | ||
+ | |||
+ | end architecture; | ||
+ | </syntaxhighlight> | ||
+ | :: Note que com ''X_bin'' 14 bits é possível representar números sem sinal entre ''0'' e <math> 2^{14}-1 </math>. No entanto, os testes devem ser limitados a números entre 0000 e 9990, pois não há especificação para valores maiores que 9999. | ||
+ | :: Existe um algoritmo [https://en.wikipedia.org/wiki/Double_dabble Double Dabble] que possibilita fazer essa conversão com menos hardware. | ||
+ | ::Dica para converter de INTEGER para STD_LOGIC_VECTOR de 4 bits. | ||
+ | M_bcd <= std_logic_vector(to_unsigned(M,4)); | ||
+ | {{collapse bottom}} | ||
+ | --> | ||
+ | {{collapse top | EL1 - Resolução dos exercícios do Cap 3}} | ||
+ | *Resolva os exercícios do capítulo 3 (1, 2, '''9''', 11, 12, 13, 14-17, '''18''', '''20''', '''22''', 23-30) pag. 81 a 89 | ||
+ | {{collapse bottom}} | ||
+ | <!-- | ||
+ | {{collapse top | EL2 - Resolução dos exercícios do Cap 4}} | ||
+ | *Resolva os exercícios do capítulo 4 (4-8, '''9''', 10-11, 13, 15-16, '''17''' ) pag. 115 a 120 | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | EL3 - Resolução dos exercícios do Cap 5}} | ||
+ | *Resolva os exercícios do capítulo 5 (1, 2, '''3''', 4, '''6''', '''7''', 8-9, '''10-11''', '''14-16''', 17-18, '''19''' ) pag. 144 a 150 | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | EL6 - Resolução dos exercícios do Cap 6}} | ||
+ | *Resolva os exercícios do capítulo 6 (1, '''2''', 3-4, '''5''', 6-7, '''9*''', '''10-11''', 12*, 13*, '''14''', '''15''') pag. 172 a 176. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top | EL7 - Resolução dos exercícios do Cap 8 e 9}} | ||
+ | *Resolva os exercícios da capítulo 8 (1-7, 9*) pag. 219 a 220. | ||
+ | *Resolva os exercícios da capítulo 9 (1-3, 6-9) pag. 238 a 239. | ||
+ | {{collapse bottom}} | ||
+ | --> | ||
==Referências Bibliográficas:== | ==Referências Bibliográficas:== |
Edição das 14h00min de 17 de março de 2017
Registro on-line das aulas
Unidade 1
- Aula 1 (10 Fev)
- Ler Dispositivos Lógicos Programáveis - Kamila Rose da Silva, IFSC
- Aula 2 (14 Fev)
- Introdução aos dispositivos lógicos programáveis:
- Conceito, tipos de PLDs
- SPLD: PAL, PLA e GAL
- CPLDs
Exemplos de PLDs |
---|
|
- Ver In the beginning - ALTERA
- Ver ALTERA history
- Ver pag. 413 a 422 de [1]
- Ver pag. 495 a 499 de [2]
- Arquitetura de FPGAs (Xilinx e Altera): CLB, LAB, RAM, DSP, Clock, PLL, I/O
- Vizualização no Chip Planner de um projeto. (importante todos alunos terem acesso a IFSC-CLOUD
- Aula 3 (17 Fev)
-
- Fabricantes de DLPs/FPGAs e familias de DLPs atuais.
- Preços
- Historia, processo de produção dos chips.
- A Brief History of the Fabless Semiconductor Industry
- Taiwan Semiconductor Manufacturing Corporation (TSMC), [http://www.globalfoundries.com/ GLOBALFOUNDRIES
- Fabless: The Transformation of the Semiconductor Industry, 2014 - Download free
- 14nm FinFET Technology, Samsung & Globalfounfries, Funcionamento do FinFET, Produção do FinFET, [1]
- Processo de fabricação de um chip
Unidade 2
- Aula 4 (20 Fev) - Introdução ao VHDL e ambiente EDA - QUARTUS
- Estrutura do código VHDL
- Declaração das bibliotecas e pacotes LIBRARY / PACKAGE
library library_name; use library_name.package)name.all;
- ENTITY
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
architecture arch_name of entity_name is [declarative_part] begin statement_part end [architecture] [arch_name];
- Exemplo - Declaração de uma porta NAND em VHDL
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;
- Exemplo 2.2 (VHDL) - programação de um flip-flop
-- Declaração das bibliotecas e pacotes
LIBRARY ieee;
USE ieee.std_logic_1164.all;
-- Especificação de todas as entradas e saídas do circuito
ENTITY flip_flop IS
PORT (d, clk, rst: IN STD_LOGIC;
q: OUT STD_LOGIC);
END;
-- Descrição de como o circuito deve funcionar
ARCHITECTURE flip_flop OF flip_flop IS
BEGIN
PROCESS (clk, rst)
BEGIN
IF (rst='1') THEN
q <= '0';
ELSIF (clk'EVENT AND clk='1') THEN
q <= d;
END IF;
END PROCESS;
END;
- Após a criação do projeto em VHDL utilizando a descrição de hardware acima, compile o código VHDL.
- Use o RTL Viewer para ver a descrição RTL do circuito.
- Use o Technology Map Viewer para ver a como o circuito foi mapeado para os elementos lógicos disponíveis no dispositivo FPGA selecionado (EP1C3T100A8)
- Abra o Chip Planner e observe no Node Properties como esse circuito é conectado dentro do dispositivo FPGA selecionado
- Realizar as simulações funcional e temporal do circuito
- Modifique o circuito para que ele passe a ter 16 flip-flops, e realize as simulações funcional e temporal do circuito.
- Aula 5 (21 Fev) - Introdução ao VHDL e ambienta EDA - QUARTUS
- Estrutura do código VHDL
- Exemplo 2.3 (VHDL e QSIM) - programação de um circuito somador com registrador
- Realizar as simulações funcional e temporal do circuito
- Observar o "Technology Map" e o "RTL" do circuito
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY registered_comp_add IS
PORT (clk: IN STD_LOGIC;
a, b: IN INTEGER RANGE 0 TO 7;
reg_comp: OUT STD_LOGIC;
reg_sum: OUT INTEGER RANGE 0 TO 15);
END;
ARCHITECTURE circuit OF registered_comp_add IS
SIGNAL comp: STD_LOGIC;
SIGNAL sum: INTEGER RANGE 0 TO 15;
BEGIN
comp <= '1' WHEN a>b ELSE '0';
sum <= a + b;
PROCESS (clk)
BEGIN
IF (clk'EVENT AND clk='1') THEN
reg_comp <= comp;
reg_sum <= sum;
END IF;
END PROCESS;
END;
- Acrescente saídas para o sinal sum e para o sinal comp, de modo a poder observar estes sinais no simulador QSIM e realize novas simulações funcional e temporal.
- Para conhecer melhor o ambiente do simulador QSIM veja Arquivo:Quartus II Simulation.pdf da ALTERA.
- Ver pag. 3 a 24 de [2]
Unidade 3
- Aula 6 (24 fev)
- Tipos de Dados em VHDL.
- Objetos de VHDL: CONSTANT, SIGNAL, VARIABLE, FILE.
- Palavra chave OTHERS
- Ver pag. 31 a 35 de [2]
- Bibliotecas padrão IEEE (std_logic_1164, numeric_std).
- ATENÇÃO!!! Não use as bibliotecas que não são padrão (std_logic_arith, std_logic_unsigned, std_logic_signed)
- Aula 7 (3 Mar)
-
- Classificação dos tipos de dados.
- Tipos de dados: BIT, BIT_VECTOR, BOOLEAN, INTEGER, NATURAL, POSITIVE, CHARACTER, STRING, STD_(U)LOGIG, STD_(U)LOGIG_VECTOR
- Exemplo 3.1 Buffer Tri-state
- Exemplo 3.2 Circuito com Saida "don't care"
- Ver pag. 39 a 51 de [2]
- Aula 8 (6 Mar)
- Tipos de Dados em VHDL.
- Tipos de dados: SIGNED e UNSIGNED
- Exemplo 3.3 Multiplicador (un)signed
- Tipos de dados: FIXED e FLOAT (apenas conhecer)
- Resumo dos Tipos predefinidos (Tabela 3.6).
- Tipos definidos pelo usuário:
- Escalares (Inteiros e Enumerados)
- Aula 9 (7 Mar)
- Tipos de Dados em VHDL.
- Tipos de Array 1D x 1D, 2D , 1D x 1D x 1D, 3D
- RECORD e SUBTYPE
- Exemplo 3.8: Multiplexador com porta 1D x 1D.
- Ver pag. 51 a 73 de [2]
ATUAL
- Aula 10 (10 Mar)
- Qualificação de tipos, conversão de tipos (automática, casting e funções de conversão).
- Resumo das funções de conversão de tipos (Tabela 3.10) e ver Aritmética com vetores em VDHL
- Exemplo 3.9: Multiplicador com sinal
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.numeric_std.all;
ENTITY signed_multiplier IS
PORT (
a, b: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END ENTITY;
ARCHITECTURE type_conv_arch OF signed_multiplier IS
BEGIN
y <= std_LOGIC_VECTOR(SIGNED(a) * SIGNED(b));
END ARCHITECTURE;
- Exercício:
- Implementar em VHDL um circuito que efetue a operação , utilizando portas do tipo STD_LOGIC_VECTOR para valores de entrada e com sinal e ocupando 4 bits, utilize na saída 8 bits.
- Repita o circuito com as mesmas características, utilizando no entanto portas do tipo INTEGER com range de -8 a 7 nas entradas e range de -128 a 127 na saída.
- Repita o circuito com as mesmas características, utilizando no entanto portas do tipo INTEGER com range de -8 a 7 nas entradas e range de -256 a 255 na saída.
- Em todos os casos faça a simulação funcional do circuito. Teste o circuito no minimo com , e . Note que para valores maiores de entrada e pode ocorrer overflow devido a limitação do número de bits da saída.
- Determine o número de elementos lógicos e pinos e verifique o código RTL obtido. Compare com os colegas.
- Ver pag. 73 a 78 de [2]
Avaliações
- Avaliação A1 - Unidade 2 a 4 (XX/XX/2017) - Local: Lab Redes I.
- Avaliação A2 - Unidade 5 a 7 (XX/XX/2017) - Local: Lab Redes I.
- As avaliações A1 e A2 são com consulta apenas as folhas de consulta entregues VHDL QUICK REFERENCE CARD e VHDL 1164 PACKAGES QUICK REFERENCE CARD. Dica use também como fonte de consulta os templates do Quartus.
- Recuperação R1-2 - Unidade 2 a 7 (XX/XX/2017) - Local: Lab Redes I.
- Ao final das avaliações o aluno deverá enviar para o email moecke AT ifsc.edu.br com os arquivos solicitados.
- Entrega dos Atividades Extraclasse ao longo do semestre AE1 a AE(N-1). Os prazos serão indicados aqui na Wiki
- Projeto Final APF (XX/XX/2017).
ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO
Os exemplos e exercícios essenciais estão destacados em negrito na listagens abaixo.
EL1 - Resolução dos exercícios do Cap 2 |
---|
especificado.
---------------------------------------
-- File: mux.vdh
---------------------------------------
-- Declaração das Bibliotecas e Pacotes
--
LIBRARY ieee;
USE _________________________ ;
---------------------------------------
-- Especificação das entradas e saídas e nome da ENTITY
ENTITY mux IS
PORT (
__ , __ : ___ STD_LOGIC_VECTOR (7 DOWNTO 0);
sel : IN ____________________________ ;
___ : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));
END _____ ;
---------------------------------------
ARCHITECTURE example OF _____ IS
BEGIN
PROCESS (a, b, ____ )
BEGIN
IF (sel = "00") THEN
c <= "00000000";
ELSIF (__________) THEN
c <= a;
_____ (sel = "10") THEN
c <= __;
ELSE
c <= (OTHERS => '__');
END ___ ;
END _________ ;
END _________ ;
---------------------------------------
|
EL1 - Resolução dos exercícios do Cap 3 |
---|
|
Referências Bibliográficas: