Mudanças entre as edições de "DLP29007-2018-2"
Ir para navegação
Ir para pesquisar
Linha 77: | Linha 77: | ||
*Finalizar a atividade: | *Finalizar a atividade: | ||
**[http://tele.sj.ifsc.edu.br/~roberto.matos/dlp2/pratica_cap7.zip Prática Cap. 7] | **[http://tele.sj.ifsc.edu.br/~roberto.matos/dlp2/pratica_cap7.zip Prática Cap. 7] | ||
+ | |||
+ | |||
+ | =Aula 14 (01/10/2018) – Eficiência de Circuitos Sequenciais = | ||
+ | |||
+ | |||
+ | <syntaxhighlight lang=vhdl> | ||
+ | |||
+ | --============================= | ||
+ | -- Listing 8.10 universal shift register | ||
+ | --============================= | ||
+ | library ieee; | ||
+ | use ieee.std_logic_1164.all; | ||
+ | entity shift_register is | ||
+ | port( | ||
+ | clk, reset: in std_logic; | ||
+ | ctrl: in std_logic_vector(1 downto 0); | ||
+ | d: in std_logic_vector(3 downto 0); | ||
+ | q: out std_logic_vector(3 downto 0) | ||
+ | ); | ||
+ | end shift_register; | ||
+ | |||
+ | architecture two_seg_arch of shift_register is | ||
+ | signal r_reg: std_logic_vector(3 downto 0); | ||
+ | signal r_next: std_logic_vector(3 downto 0); | ||
+ | begin | ||
+ | -- register | ||
+ | process(clk,reset) | ||
+ | begin | ||
+ | if (reset='1') then | ||
+ | r_reg <= (others=>'0'); | ||
+ | elsif (clk'event and clk='1') then | ||
+ | r_reg <= r_next; | ||
+ | end if; | ||
+ | end process; | ||
+ | -- next-state logic | ||
+ | with ctrl select | ||
+ | r_next <= | ||
+ | r_reg when "00", --no op | ||
+ | r_reg(2 downto 0) & d(0) when "01", --shift left; | ||
+ | d(3) & r_reg(3 downto 1) when "10", --shift right; | ||
+ | d when others; | ||
+ | -- output | ||
+ | q <= r_reg; | ||
+ | end two_seg_arch; | ||
+ | </syntaxhighlight> |
Edição das 16h31min de 1 de outubro de 2018
Dispositivos Lógicos Programáveis 2
- Professor: Roberto de Matos
- Horário das aulas e atendimento paralelo
- Plano de Ensino (NÃO OFICIAL - SENDO REVISTO)
Aula 1 (27/07/2018) – Apresentação
- Apresentação do professor.
- Apresentação dos alunos: Nome, perfil, preferências, etc.
- Apresentação da disciplina.
- Projetos com FPGA
Aula 2 (03/08/2018) – Complexidade e Projeto de Sistemas Digitais
Aula 3 (06/08/2018) – Prática Signal Tap
- Finalização do assunto sobre complexidade
Aula 4 (10/08/2018) – Tempos de Propagação e Logic Lock
- Medição de tempos de propagação em circuitos combinacionais
- Uso de Logic Lock para definir a área a ser ocupada pelo circuito
Aula 5 (17/08/2018) – Tempos de Propagação (cont.) e Complexidade
- Como desconsiderar o tempo de propagação de entrada e saída.
Aula 6 (20/08/2018) – Síntese do VHDL
- Lecture 02: Synthesis of VHDL Code
- Concepção dos operadores em VHDL
- Criação da tabela de operadores
Aula 7 (20/08/2018) – Síntese do VHDL
- Criação da tabela de operadores (cont.)
Aula 8 (31/08/2018) – Síntese do VHDL
- Análise tabela
- Correção problema operador
Aula 9 (03/09/2018) – Síntese do VHDL
- Lecture 02: Synthesis of VHDL Code
- Concepção dos tipos de dados em VHDL
Aula 10 (10/09/2018) – Trabalho A1 (Aula Extra)
Aula 11 (14/09/2018) – Eficiência de Circuitos Combinacionais
- Leitura recomendada:
- Capítulo 7 do livro do Chu;
- Notas de aula 03.
- Lecture 03: Efficient Design of Combinational Circuits
Aula 12 (17/09/2018) – Aula cedida Prof. Noronha
Aula 13 (21/09/2018) – Eficiência de Circuitos Combinacionais (cont.)
- Finalizar a atividade:
Aula 14 (01/10/2018) – Eficiência de Circuitos Sequenciais
--=============================
-- Listing 8.10 universal shift register
--=============================
library ieee;
use ieee.std_logic_1164.all;
entity shift_register is
port(
clk, reset: in std_logic;
ctrl: in std_logic_vector(1 downto 0);
d: in std_logic_vector(3 downto 0);
q: out std_logic_vector(3 downto 0)
);
end shift_register;
architecture two_seg_arch of shift_register is
signal r_reg: std_logic_vector(3 downto 0);
signal r_next: std_logic_vector(3 downto 0);
begin
-- register
process(clk,reset)
begin
if (reset='1') then
r_reg <= (others=>'0');
elsif (clk'event and clk='1') then
r_reg <= r_next;
end if;
end process;
-- next-state logic
with ctrl select
r_next <=
r_reg when "00", --no op
r_reg(2 downto 0) & d(0) when "01", --shift left;
d(3) & r_reg(3 downto 1) when "10", --shift right;
d when others;
-- output
q <= r_reg;
end two_seg_arch;