Mudanças entre as edições de "DLP29007-2019-1"
Ir para navegação
Ir para pesquisar
(42 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 6: | Linha 6: | ||
*[[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]] | *[[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]] | ||
+ | *[http://docente.ifsc.edu.br/roberto.matos/dlp2_public/adm/notas_dlp2_2019-1.pdf Notas] | ||
+ | |||
+ | == Usando os Kits de FPGA == | ||
+ | *[[Preparando_para_gravar_o_circuito_lógico_no_FPGA | Preparando para gravar o circuito lógico no FPGA]] | ||
+ | *[[Configuração_da_USB_para_programação_do_FPGA_via_JTAG | Configuração da USB para programação do FPGA via JTAG]] | ||
+ | *[[Interfaces_de_entrada_e_sa%C3%ADda_da_DE2-115 | Interfaces de entrada e saída da DE2-115]] | ||
= Aula 11/02/2019 – Aula Cancelada= | = Aula 11/02/2019 – Aula Cancelada= | ||
Linha 43: | Linha 49: | ||
* [[Configuração e uso do Signal Tap]] | * [[Configuração e uso do Signal Tap]] | ||
− | * [http://tele.sj.ifsc.edu.br/~roberto.matos/ | + | * [http://tele.sj.ifsc.edu.br/~roberto.matos/dlp2_public/Labx11.qar Labx11.qar] |
* [http://www.macnicadhw.com.br/sites/default/files/documents/downloads/MercurioIV_esquematico.pdf Esquemático Mercúrio] | * [http://www.macnicadhw.com.br/sites/default/files/documents/downloads/MercurioIV_esquematico.pdf Esquemático Mercúrio] | ||
* PROBLEMA: /etc/udev/rules.d/altera-usb-blaster.rules | * PROBLEMA: /etc/udev/rules.d/altera-usb-blaster.rules | ||
− | =Aula 15/03/2019 – Prática | + | =Aula 15/03/2019 – Síntese do VHDL = |
+ | |||
+ | * [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture02-synthesis.pdf Lecture 02: Synthesis of VHDL Code] | ||
+ | * Concepção dos operadores em VHDL | ||
+ | * Criação da tabela de operadores | ||
+ | |||
+ | |||
+ | * F1 Instances | ||
+ | ** [https://aws.amazon.com/ec2/instance-types/f1/ Amazon F1] | ||
+ | **[https://medium.com/@julsimon/building-fpga-applications-on-aws-and-yes-for-deep-learning-too-643097257192 Building FPGA applications on AWS] | ||
+ | |||
+ | =Aula 25/03/2019 – Síntese do VHDL (cont.) = | ||
+ | |||
+ | =Aula 29/03/2019 – Atividade 1 = | ||
+ | |||
+ | =Aula 01/04/2019 – Eficiência de Circuitos Combinacionais = | ||
+ | *Leitura recomendada: | ||
+ | **Capítulo 7 do livro do Chu; | ||
+ | **Notas de aula 03. | ||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/slides/dlp29007-lecture03-efficient_comb_circuits.pdf Lecture 03: Efficient Design of Combinational Circuits] | ||
+ | |||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/pratica_cap7.zip Prática Cap. 7] | ||
+ | |||
+ | |||
+ | =Aula 08/04/2019 – Eficiência de Circuitos Combinacionais (cont.) = | ||
+ | |||
+ | |||
+ | =Aula 10/04/2019 – EXTRA (choque Prof. Noronha) = | ||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/list_07_06_07_08_09_diff.vhd Exercício Extra] | ||
+ | |||
+ | |||
+ | =Aula 12/04/2019 – Eficiência de Circuitos Combinacionais (cont.) = | ||
+ | *Leitura recomendada: | ||
+ | **Capítulo 7 do livro do Chu; | ||
+ | **Notas de aula 03. | ||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/slides/dlp29007-lecture03-efficient_comb_circuits.pdf Lecture 03: Efficient Design of Combinational Circuits] | ||
+ | |||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/pratica_cap7.zip Prática Cap. 7] | ||
+ | |||
+ | |||
+ | =Aula 15/04/2019 – A2: Eficiência de Circuitos Combinacionais = | ||
+ | * Prática do "barril shifter". | ||
+ | |||
+ | '''ATIVIDADE 2''' | ||
+ | |||
+ | 1-Modifique o circuito "barrel shifter" para uma entrada "a" de 64 bits e a entrada "amt" de 6 bits. | ||
+ | :*Versão 1 - Modifique a Listing 7.13. pag. 178-180. | ||
+ | :*Versão 2 - Modifique a Listing 7.14. pag. 178-180. | ||
+ | :*Versão 3 - Modifique a Listing 7.29. pag. 192-196. | ||
+ | |||
+ | *Faça uma tabela comparando as três versões com área (LE) e delay do caminho crítico do circuito (ns). | ||
+ | *Para as versões 1 e 3 insira restrições temporais para obter um circuito com menor atraso no caminho crítico. Neste caso procure reduzir gradualmente a tempo máximo de propagação "tp" até atingir o menor valor. Apresente os dados de área e delay em uma nova tabela. | ||
+ | :set_max_delay -from [get_ports *] -to [get_ports *] tp | ||
+ | |||
+ | |||
+ | 2-Modifique a versão 3 para uma implementação genérica parametrizável (ver Cap. 15). | ||
+ | *Crie um projeto com a implementação genérica para tratar "a" de 32 bits e "amt" de 5 bits. Realize a simulação funcional criando um arquivo testbench e o Modelsim. Faça 'a' = "10100110101001101101101000011110", altere "lar" entre os valores "00", "01" e "10", e para cada um desses valores, varie a entrada "amt" entre 0 e 31. Analise o resultado da simulação. | ||
+ | |||
+ | |||
+ | 3-Relatório | ||
+ | *Escreva um relatório técnico com tabelas dos dados de cada ATIVIDADE, deverá conter as simulações funcionais e uma análise dos resultados obtidos. | ||
+ | *Para cada ATIVIDADE envie o arquivo QAR correspondente, contendo além dos arquivos VHD os arquivos necessários para realizar a simulação (VHT e DO). | ||
+ | |||
+ | |||
+ | 4-Deadline: 29/04/2019 | ||
+ | |||
+ | |||
+ | =Aula 22/04/2019 – Eficiência de Circuitos Sequenciais = | ||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/slides/dlp29007-lecture04-efficient_seq_circuits.pdf Lecture 04: Efficient Design of Sequential Circuits] | ||
+ | |||
+ | |||
+ | * Prática - Contador mod-10: | ||
+ | <syntaxhighlight lang=vhdl> | ||
+ | library ieee; | ||
+ | use ieee.std_logic_1164.all; | ||
+ | use ieee.numeric_std.all; | ||
+ | entity mod10_counter is | ||
+ | port( | ||
+ | clk, reset: in std_logic; | ||
+ | q: out std_logic_vector(3 downto 0) | ||
+ | ); | ||
+ | end mod10_counter; | ||
+ | |||
+ | architecture two_seg_arch of mod10_counter is | ||
+ | constant TEN: integer := 10; | ||
+ | signal r_reg: unsigned(3 downto 0); | ||
+ | signal r_next: unsigned(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 | ||
+ | r_next <= (others=>'0') when r_reg=(TEN-1) else | ||
+ | r_reg + 1; | ||
+ | -- output logic | ||
+ | q <= std_logic_vector(r_reg); | ||
+ | end two_seg_arch; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | * Modificar para mod-M | ||
+ | |||
+ | |||
+ | =Aula 22/04/2019 – Eficiência de Circuitos Sequenciais (cont.) = | ||
+ | * Adicionar o SDC e comparar a freqüência de operação das duas implementações | ||
+ | : '''create_clock -name clk -period 50MHz [get_ports {clk}]''' | ||
+ | |||
+ | * Problemas clássicos de implementação | ||
+ | * [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture05-sequetial_circuit_design.pdf Lecture 05: Design of Sequential Circuits: Practice] | ||
+ | * Análise dos códigos: [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/ch09_poor_design_practice_rtl.zip RTL codes] | ||
+ | |||
+ | =Aula 29/04/2019 – Finalizar a A2 = | ||
+ | * Dúvidas A2 | ||
+ | |||
+ | =Aula 06/05/2019 – Prática Circuitos Sequencias = | ||
+ | |||
+ | * Projeto prático Timer DE2-115 | ||
+ | ** Adicionar centésimo de segundo | ||
+ | ** Decoder Bin-BCD | ||
+ | ** Decoder BCD-7seg | ||
+ | ** Mapear para gravar na DE2-115 | ||
+ | ** Será parte da A3 | ||
+ | |||
+ | |||
+ | =Aula 10/05/2019 – Prática Circuitos Sequencias = | ||
+ | |||
+ | *http://vhdlguru.blogspot.com/2010/04/8-bit-binary-to-bcd-converter-double.html | ||
+ | *https://en.wikipedia.org/wiki/Double_dabble#VHDL_implementation | ||
+ | |||
+ | =Aula 13/05/2019 – Não houve aula = | ||
+ | * Problemas de saúde | ||
+ | * Reunião com o diretor sobre corte do governo federal | ||
+ | |||
+ | |||
+ | =Aula 20/05/2019 – Prática Circuitos Sequencias = | ||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/double_dabble.tar.gz Double Dabble] | ||
+ | |||
+ | * A3: | ||
+ | ** Implementar e Comparar os 4 circuitos propostos em sala de aula com relação à área e frequência máxima. Esses dados estão disponíveis nos seguintes relatórios: (Fitter > Resource Section > Resource Usage), (TimeQuest Timing Analyser > Datasheet Report > FMax) | ||
+ | ** Forçar o limite da frequência máxima com contraints e NÃO usar LogicLock: | ||
+ | *** create_clock -name CLKXXXMHz -period XXXMHz [get_ports {nome_do_sinal_de_clock}] | ||
+ | ** Todos os circuitos propostos devem estar prontos para gravação na DE2-115 | ||
+ | ** Pontos extras para comparações de diferentes implementações de blocos internos (BIN2BCD e BCD2SSD) | ||
+ | ** Realize a simulação funcional prevendo casos de "borda" para cada um dos contadores CC=99, SS=59 e MM=59. | ||
+ | ** Devem ser entregues o QAR (Quartus 13.0.1) contendo os arquivos *.VHD, *.SDC e os arquivos de simulação (*.VHT e/ou *.do). Além de um relatório com as tabelas de comparações dissertando sobre os resultados e todas as linhas de comando utilizadas para rodar as simulações. | ||
+ | ** Trabalho em dupla com apresentação presencial. | ||
+ | ** Deadline: 09/06/2019 | ||
+ | |||
+ | =Aula 24/05/2019 – Apoio A3 = | ||
+ | |||
+ | |||
+ | =Aula 27/05/2019 – Máquinas de Estado= | ||
+ | |||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/slides/dlp29007-lecture06-fsm.pdf Lecture 06: Finite State Machines: Principle and Practice] | ||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/memctrl_with_cleaver.vhd FSM Memory Controller] | ||
+ | |||
+ | =Aula 03/06/2019 – Apoio A3 = | ||
+ | |||
+ | =Aula 07/06/2019 – Apoio A3 = | ||
+ | |||
+ | =Aula 10/06/2019 – Máquinas de Estado= | ||
+ | |||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/slides/dlp29007-lecture06-fsm.pdf Lecture 06: Finite State Machines: Principle and Practice] | ||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/memctrl_with_cleaver.vhd FSM Memory Controller] | ||
+ | |||
+ | |||
+ | =Aula 17/06/2019 – Máquinas de Estado (cont.)= | ||
+ | * Finalizar o teste do código do controlador de memória | ||
+ | * [http://docente.ifsc.edu.br/roberto.matos/dlp2_public/memctrl_with_cleaver.vhd FSM Memory Controller] | ||
+ | |||
+ | |||
+ | ==Atividade A4== | ||
+ | *Analisar na seção 10.8.2 a implementação do árbitro de prioridade fixa (listing 10.12) e do árbitro de prioridade alternada (listing 10.13). Ambos suportam duas requisições. Completar o diagrama do árbitro de prioridade alternada de "quatro requisições" apresentado na Figura 10.23 e desenvolver o VHDL. Adicionar uma entrada de timeout para evitar que um subsistema não bloqueie o recurso indefinidamente. | ||
+ | ** Derive o diagrama de estados completo. | ||
+ | ** Converta o diagrama de estado em um gráfico ASM. | ||
+ | ** Derive o código VHDL de acordo com o gráfico ASM usando a técnica "look-ahead output buffer" para os sinais de saída. | ||
+ | ** Simule o circuito gerado para verificar seu funcionamento adequado. | ||
+ | ** Testar usando o Nios II - dependente do professor. | ||
+ | |||
+ | ** Entregar: 1) QAR com o *.VHD e simulação (*.VHT ou *.DO); 2) Relatório com os diagramas, relatando implementação, abordagem de teste e técnica "look-ahead output buffer". Indicação de como executar a simulação. | ||
+ | |||
+ | Deadline: 07/07 |
Edição atual tal como às 02h43min de 12 de julho de 2019
Dispositivos Lógicos Programáveis 2
- Professor: Roberto de Matos
Usando os Kits de FPGA
- Preparando para gravar o circuito lógico no FPGA
- Configuração da USB para programação do FPGA via JTAG
- Interfaces de entrada e saída da DE2-115
Aula 11/02/2019 – Aula Cancelada
- Afastamento visita técnica.
Aula 15/02/2019 – Apresentação
- Apresentação do professor.
- Apresentação da disciplina.
- Projetos com FPGA
Aula 18/02/2019 – Complexidade e Projeto de Sistemas Digitais
- Exemplo uC vs. FPGA
- Notas de Aula:
Aula 25/02/2019 – 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 28/02/2019 – Tempos de Propagação e Logic Lock (cont.)
- Definir tempos de propagação para os seguintes casos:
- Circuito original
- Constraint de Tempo
- Logic lock original
- Logic lock com Constraint de Tempo
- Para cada circuito acima fazer a análise do delay:
- Dos pinos de entrada até a saída
- Da "entrada" até a "saída" do circuito
Aula 11/03/2019 – Prática Signal Tap
- PROBLEMA: /etc/udev/rules.d/altera-usb-blaster.rules
Aula 15/03/2019 – Síntese do VHDL
- Lecture 02: Synthesis of VHDL Code
- Concepção dos operadores em VHDL
- Criação da tabela de operadores
- F1 Instances
Aula 25/03/2019 – Síntese do VHDL (cont.)
Aula 29/03/2019 – Atividade 1
Aula 01/04/2019 – 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 08/04/2019 – Eficiência de Circuitos Combinacionais (cont.)
Aula 10/04/2019 – EXTRA (choque Prof. Noronha)
Aula 12/04/2019 – Eficiência de Circuitos Combinacionais (cont.)
- Leitura recomendada:
- Capítulo 7 do livro do Chu;
- Notas de aula 03.
- Lecture 03: Efficient Design of Combinational Circuits
Aula 15/04/2019 – A2: Eficiência de Circuitos Combinacionais
- Prática do "barril shifter".
ATIVIDADE 2
1-Modifique o circuito "barrel shifter" para uma entrada "a" de 64 bits e a entrada "amt" de 6 bits.
- Versão 1 - Modifique a Listing 7.13. pag. 178-180.
- Versão 2 - Modifique a Listing 7.14. pag. 178-180.
- Versão 3 - Modifique a Listing 7.29. pag. 192-196.
- Faça uma tabela comparando as três versões com área (LE) e delay do caminho crítico do circuito (ns).
- Para as versões 1 e 3 insira restrições temporais para obter um circuito com menor atraso no caminho crítico. Neste caso procure reduzir gradualmente a tempo máximo de propagação "tp" até atingir o menor valor. Apresente os dados de área e delay em uma nova tabela.
- set_max_delay -from [get_ports *] -to [get_ports *] tp
2-Modifique a versão 3 para uma implementação genérica parametrizável (ver Cap. 15).
- Crie um projeto com a implementação genérica para tratar "a" de 32 bits e "amt" de 5 bits. Realize a simulação funcional criando um arquivo testbench e o Modelsim. Faça 'a' = "10100110101001101101101000011110", altere "lar" entre os valores "00", "01" e "10", e para cada um desses valores, varie a entrada "amt" entre 0 e 31. Analise o resultado da simulação.
3-Relatório
- Escreva um relatório técnico com tabelas dos dados de cada ATIVIDADE, deverá conter as simulações funcionais e uma análise dos resultados obtidos.
- Para cada ATIVIDADE envie o arquivo QAR correspondente, contendo além dos arquivos VHD os arquivos necessários para realizar a simulação (VHT e DO).
4-Deadline: 29/04/2019
Aula 22/04/2019 – Eficiência de Circuitos Sequenciais
- Prática - Contador mod-10:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity mod10_counter is
port(
clk, reset: in std_logic;
q: out std_logic_vector(3 downto 0)
);
end mod10_counter;
architecture two_seg_arch of mod10_counter is
constant TEN: integer := 10;
signal r_reg: unsigned(3 downto 0);
signal r_next: unsigned(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
r_next <= (others=>'0') when r_reg=(TEN-1) else
r_reg + 1;
-- output logic
q <= std_logic_vector(r_reg);
end two_seg_arch;
- Modificar para mod-M
Aula 22/04/2019 – Eficiência de Circuitos Sequenciais (cont.)
- Adicionar o SDC e comparar a freqüência de operação das duas implementações
- create_clock -name clk -period 50MHz [get_ports {clk}]
- Problemas clássicos de implementação
- Lecture 05: Design of Sequential Circuits: Practice
- Análise dos códigos: RTL codes
Aula 29/04/2019 – Finalizar a A2
- Dúvidas A2
Aula 06/05/2019 – Prática Circuitos Sequencias
- Projeto prático Timer DE2-115
- Adicionar centésimo de segundo
- Decoder Bin-BCD
- Decoder BCD-7seg
- Mapear para gravar na DE2-115
- Será parte da A3
Aula 10/05/2019 – Prática Circuitos Sequencias
- http://vhdlguru.blogspot.com/2010/04/8-bit-binary-to-bcd-converter-double.html
- https://en.wikipedia.org/wiki/Double_dabble#VHDL_implementation
Aula 13/05/2019 – Não houve aula
- Problemas de saúde
- Reunião com o diretor sobre corte do governo federal
Aula 20/05/2019 – Prática Circuitos Sequencias
- A3:
- Implementar e Comparar os 4 circuitos propostos em sala de aula com relação à área e frequência máxima. Esses dados estão disponíveis nos seguintes relatórios: (Fitter > Resource Section > Resource Usage), (TimeQuest Timing Analyser > Datasheet Report > FMax)
- Forçar o limite da frequência máxima com contraints e NÃO usar LogicLock:
- create_clock -name CLKXXXMHz -period XXXMHz [get_ports {nome_do_sinal_de_clock}]
- Todos os circuitos propostos devem estar prontos para gravação na DE2-115
- Pontos extras para comparações de diferentes implementações de blocos internos (BIN2BCD e BCD2SSD)
- Realize a simulação funcional prevendo casos de "borda" para cada um dos contadores CC=99, SS=59 e MM=59.
- Devem ser entregues o QAR (Quartus 13.0.1) contendo os arquivos *.VHD, *.SDC e os arquivos de simulação (*.VHT e/ou *.do). Além de um relatório com as tabelas de comparações dissertando sobre os resultados e todas as linhas de comando utilizadas para rodar as simulações.
- Trabalho em dupla com apresentação presencial.
- Deadline: 09/06/2019
Aula 24/05/2019 – Apoio A3
Aula 27/05/2019 – Máquinas de Estado
Aula 03/06/2019 – Apoio A3
Aula 07/06/2019 – Apoio A3
Aula 10/06/2019 – Máquinas de Estado
Aula 17/06/2019 – Máquinas de Estado (cont.)
- Finalizar o teste do código do controlador de memória
- FSM Memory Controller
Atividade A4
- Analisar na seção 10.8.2 a implementação do árbitro de prioridade fixa (listing 10.12) e do árbitro de prioridade alternada (listing 10.13). Ambos suportam duas requisições. Completar o diagrama do árbitro de prioridade alternada de "quatro requisições" apresentado na Figura 10.23 e desenvolver o VHDL. Adicionar uma entrada de timeout para evitar que um subsistema não bloqueie o recurso indefinidamente.
- Derive o diagrama de estados completo.
- Converta o diagrama de estado em um gráfico ASM.
- Derive o código VHDL de acordo com o gráfico ASM usando a técnica "look-ahead output buffer" para os sinais de saída.
- Simule o circuito gerado para verificar seu funcionamento adequado.
- Testar usando o Nios II - dependente do professor.
- Entregar: 1) QAR com o *.VHD e simulação (*.VHT ou *.DO); 2) Relatório com os diagramas, relatando implementação, abordagem de teste e técnica "look-ahead output buffer". Indicação de como executar a simulação.
Deadline: 07/07