Mudanças entre as edições de "DLP2-EngTel (página)"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Edição 2015-1)
(Redirecionamento removido para DLP29007-2020-1)
Etiqueta: Redirecionamento removido
 
(202 revisões intermediárias por 5 usuários não estão sendo mostradas)
Linha 1: Linha 1:
Orignalmente publicada em [[DLP29007-2015-1]].
+
Página da disciplina hospedada no [https://moodle.ifsc.edu.br/course/view.php?id=7452 Moodle]
  
= EngTel: Programmable Logic Devices II - 2015-1 =
 
  
*'''Lecturers:''' [[Arliones Hoeller]] e [[Marcos Moecke]]
+
<!--
*'''Class:''' 29007
 
*'''Meetings:''' tuesdays at 9:40 and thursdays at 7:30 at Laboratório de Programação.
 
*'''Extra-class hours:'''
 
**Arliones
 
*** Tuesdays, 14:30 to 15:30
 
*** Thursdays, 10:30 to 11:30
 
**Marcos
 
*** Tuesdays, 13:30 to 14:30
 
*** Thursdays, 10:30 to 11:30
 
  
== [[DLP2-EngTel_(Plano_de_Ensino)|'''Course Plan''']] (in Portuguese) ==
+
#REDIRECT[[DLP29007-2020-1]]
  
== [[Cronograma de atividades (DLP2-EngTel)|'''Class Schedule''']] ==
+
= Dispositivos Lógicos Programáveis II =
  
== Grades ==
+
*'''Professor:''' [[Roberto de Matos]]
 +
*[[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]] ('''NÃO OFICIAL - SENDO REVISTO''')
 +
*[[Cronograma de atividades (DLP2-EngTel) | Cronograma]]
 +
*[[Horários dos Cursos do IFSC Campus São José | Horário das aulas e atendimento paralelo]]
  
{| class="wikitable"
+
= Material de aula =
|-
 
! Registration
 
! T0
 
! T1
 
! T2
 
! T3
 
! T4
 
! T5
 
! Final
 
|-
 
|  ||  ||  ||  ||  ||  ||  ||
 
|}
 
  
= Class Material =
+
*[[DLP29007-2019-1 | Semestre 2019-1 - Prof. Roberto de Matos]]
  
== Bibliographic References ==
 
  
#Pong P. Chu, RTL Hardware Design Using VHDL: Coding for Efficiency, Portability, and Scalability. Wiley-IEEE Press, Hoboken, 2006, Pages 1-22, ISBN 0471720925.
+
{{collapse top | Semestres Anteriores}}
#David Money Harris and Sarah L. Harris, Digital Design and Computer Architecture, Morgan Kaufmann, Burlington, 2007, Pages 3-48, ISBN 9780123704979, http://dx.doi.org/10.1016/B978-012370497-9/50002-0.
+
*[[DLP29007-2018-2 | Semestre 2018-2 - Prof. Roberto de Matos]]
 +
*[[DLP29007-2018-1 | Semestre 2018-1 - Prof. Roberto de Matos]]
 +
*[[DLP29007-Engtelecom(2017-2) - Prof. Marcos Moecke | Semestre 2017-2 - Prof. Marcos Moecke]] - Wiki
 +
*[https://moodle.sj.ifsc.edu.br/course/view.php?id=179 Semestre 2017-2 - Prof. Arliones] - Moodle
 +
*[[DLP29007-Engtelecom(2017-1) - Prof. Marcos Moecke | Semestre 2017-1 - Prof. Marcos Moecke]] - Wiki
 +
*[https://moodle.sj.ifsc.edu.br/course/view.php?id=151 Semestre 2017-1 - Prof. Arliones] - Moodle
 +
*[[DLP2-EngTel (página) - 2016-2 (prof. Arliones e Marcos) | Semestre 2016-2 - Prof. Marcos Moecke e Arliones]]
 +
*[[DLP2-EngTel (página) - 2016-1 (prof. Arliones e Marcos) | Semestre 2016-1 - Prof. Marcos Moecke e Arliones]]
 +
*[[DLP2-EngTel (página) - 2015-2 (prof. Arliones e Marcos) | Semestre 2015-2 - Prof. Marcos Moecke e Arliones]]
 +
*[[DLP29007-2015-1 | Semestre 2015-1 - Prof. Marcos Moecke e Arliones]]
 +
{{collapse bottom}}
 +
== Notas de aula ==
  
== Lecture Notes ==
+
Estas notas de aula são baseadas nas dispobilizadas pelo Prof. Pong P. Chu em [http://academic.csuohio.edu/chu_p/rtl/rtl_hardware.html].
  
These lecture notes are based on the ones made available by Prof. Pong P. Chu at [http://academic.csuohio.edu/chu_p/rtl/rtl_hardware.html].
+
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture01-complexity.pdf Lecture 01: Complexity Mangement and the Design of Complex Digital Systems]
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture02-synthesis.pdf Lecture 02: Synthesis of VHDL Code]
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture03-efficient_comb_circuits.pdf Lecture 03: Efficient Design of Combinational Circuits]
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture04-efficient_seq_circuits.pdf Lecture 04: Efficient Design of Sequential Circuits]
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture05-sequetial_circuit_design.pdf Lecture 05: Design of Sequential Circuits: Practice]
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture06-fsm.pdf Lecture 06: Finite State Machines: Principle and Practice]
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture07-register_transfer.pdf Lecture 07: Register Transfer Methodology: Principle]
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/slides/dlp29007-lecture08-register_transfer_examples.pdf Lecture 08: Register Transfer Methodology: Practice]
 +
*[https://www.dropbox.com/s/wts1ai0ltlg27p9/DLP29007%20-%20Projeto%20Hierarquico%20Parametrizado%20v2.pdf?dl=0 Projeto Hierárquico e Parametrizado]
  
* [[Media:dlp29007-lecture01-complexity.pdf | Lecture 01: Complexity Mangement and the Design of Complex Digital Systems]]
+
== Roteiros ==
* [[Media:dlp29007-lecture02-efficient_comb_circuits.pdf | Lecture 02: Efficient Design of Combinational Circuits]]
 
* [https://www.dropbox.com/s/j8pbw4nm8vg9ybd/dlp29007-lecture03-efficient_seq_circuits.pdf?dl=0 Lecture 03: Efficient Design of Sequential Circuits]
 
* [https://www.dropbox.com/s/6safyxmvm0444zf/dlp29007-lecture04-sequetial_circuit_design.pdf?dl=0 Lecture 04: Design of Sequential Circuits: Practice]
 
* [https://www.dropbox.com/s/ol888ifacn5gx1e/dlp29007-lecture05-fsm.pdf?dl=0 Lecture 05: Finite State Machines: Principle and Practice]
 
* [https://www.dropbox.com/s/zqrvwyzbbcdf1m2/dlp29007-lecture06-register_transfer.pdf?dl=0 Lecture 06: Register Transfer Methodology: Principle]
 
* [https://www.dropbox.com/s/zqrvwyzbbcdf1m2/dlp29007-lecture07-register_transfer.pdf?dl=0 Lecture 07: Register Transfer Methodology: Practice]
 
* [https://www.dropbox.com/s/5sj2vnsznjvuzn3/chap13.pdf?dl=0 Lecture 08: Hierarchical Design]
 
  
* [ Lecture 09: Parameterized Design: Principle]
+
* [[Medição de tempos de propagação em circuitos combinacionais]]
* [ Lecture 10: Parameterized Design: Practice]
+
* [[Uso de Logic Lock para definir a área a ser ocupada pelo circuito]]
* [ Lecture 11: Clock and Synchronization: Principle and Practice]
+
* [[Laboratórios com Altera NIOS2]]
 +
* [[Configuração e uso do Signal Tap]]
  
<!--
+
==Avaliação==
* [[Media:dlp29007-lecture03-efficient_seq_circuits.pdf | Lecture 03: Efficient Design of Sequential Circuits]]
+
Neste tópico serão listadas as Atividades Práticas realizadas ao longo do semestre. Para cada uma dessas atividades o aluno/equipe que não entrega-la no prazo preestabelecido, poderá entregar a atividade com: uma semana de atraso obtendo no máximo o valor 8; duas semanas de atraso obtendo no máximo o valor 6; três semanas de atraso obtendo no máximo o valor 4;
Sugestão: Só tornar permanente depois que não tiver mais alterações.
 
-->
 
  
== Recursos de Laboratório ==
+
Os critérios de avaliação estão descritos no [[DLP2-EngTel_(Plano_de_Ensino)| Plano de Ensino]].
Para uso fora do IFSC dos recursos computacionais com licença educacional, o IFSC disponibiliza para seus alunos o IFSC-CLOUD.  Atualmente a forma mais eficiente de acesso é através do Cliente X2GO.  O procedimento de instalação/ configuração e uso do Quartus/Modelsim/QSIM está descrito em [[Acesso ao IFSC-CLOUD#Cliente X2GO (recomendado)]].
 
  
* [[Media:dlp29007-lecture02-efficient_comb_circuits-operator_sharing-src.zip | 2-1: Operator Sharing Source Code]]
+
===PARA ENTREGAR===
* [[Media:dlp29007-lecture02-efficient_comb_circuits-function_sharing-src.zip | 2-2: Function Sharing Source Code]]
+
Neste semestre as atividades avaliativas estão sendo entregues através da [http://moodlenovo.sj.ifsc.edu.br/course/view.php?id=151 plataforma Moodle]. O aluno deverá fazer o login usando o login e senha do portal do aluno.
* [[Media:dlp29007-lecture02-efficient_comb_circuits-layout_related-src.zip | 2-3: Layout-Related Source Code]]
 
  
Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma  [http://200.135.233.26:3000/project Sharelatex do IFSC-CLOUD]. Utilize preferencialmente o [http://200.135.233.26:3000/project/54750cb57ae8187440d60acd  modelo de artigo no padrão ABNT].
 
  
== Homework ==
+
{{collapse top | AE1 - Projeto de SoC baseado em NIOS2 (prazo 05/10/2016)}}
 +
Nesta atividade, você vai integrar os desenvolvimentos realizados nos laboratórios envolvendo NIOS2 e SignalTap. As etapas a serem executadas são as seguintes:
  
{{collapse top| Homework 01: Combinational Circuits (Deadline: 19/02/2015)}}
+
* Crie um processador NIOS2 com três on-chip FIFOs: duas saídas de 32 bits e uma entrada de X bits (sendo X a saída adequada à operação);
Download the [[Media:dlp29007-Unidade2_Ex1-2-4.qar | Operator Sharing Source Code (qar)]] or [[Media:dlp29007-lecture02-efficient_comb_circuits-operator_sharing-src.zip | Operator Sharing Source Code (qar.zip)]] and, for each architecture of each one of the three examples, do the following:
+
* Conecte a este processador, via FIFOs, um componente externo (ver relação de componentes abaixo);
* Choose one of the available FPGA families for your project (e.g. Cyclone IV GX);
+
* Implemente uma aplicação (software) que gere valores aleatórios para as saídas e leia o resultado da operação feita em hardware na entrada;
* Select the "Fastest" "Speed grade";
+
* Utilize o SignalTap para verificar quantos ciclos de clock são necessários para completar uma operação no hardware;
* Select the smallest device available in the family;
+
* Implemente a operação equivalente do módulo de hardware em software;
* For each architecture of the example, compile the it, analyze the RTL output, and take note of the number of logic elements/LUTs consumed, and of the highest delay in the circuit;
+
* Utilize um timer para medir o tempo da operação em software;
* Change to the largest device available in the family;
+
* Utilize os performance counters para medir o tempo para realizar a operação em software;
* For each architecture of the example, compile the it, analyze the RTL output, and take note of the number of logic elements/LUTs consumed, and of the highest delay in the circuit;
+
* Relate e discuta seus resultados, apresentando o esquema dos seus testes, os códigos-fontes das aplicações, em formato de artigo e com 6 páginas no máximo.
 +
* Envie o artigo em pdf para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE1.
  
Write a report containing the numeric results of your experiments. For each example, answer the following questions:
+
Módulos para serem usados por cada grupo:
#Was there any differences between the RTL generated for each architecture? Why did this happen (or not)?
+
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_mult.vhd Multiplicador] => Iago, Marcos
#Was there any differences between the RTL generated, for the same architecture, for different devices? Why did this happen (or not)?
+
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_xor.vhd XOR] => André, Helen
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_dist.vhd Distância (sqrt(a^2 + b^2))] => Katharine, Kristine
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_add.vhd Soma] => Gabriel, Maria
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_div.vhd Divisão] => Fernando, João
 +
* [http://docente.ifsc.edu.br/arliones.hoeller/dlp2/code/fifo_mod.vhd Módulo] => Gustavo, Tamara
 +
*Observação: para alguns circuitos pode ser necessário utilizar um clock mais lento. Para isto, utilize um LPM_COUNTER criado pela ferramenta MegaWizard, como fizemos em aula para gerar alguns componentes.
 +
{{collapse bottom}}
  
Email the results to the professors until 17/02/2015.
 
{{collapse bottom}}
 
  
{{collapse top| Homework 02: Combinational Circuits (Deadline 26/02/2015)}}
+
{{collapse top | AE2 - Circuitos Combinacionais  (prazo 19/10/2016 as 23h59)}}
Download the [[Media:dlp29007-lecture02-efficient_comb_circuits-function_sharing-src.zip | Function Sharing Source Code (qar.zip)]] and, for each architecture of each one of the examples, do the following:
+
* Formar equipes com 2 alunos. A formação das equipes deve ser informado no [https://www.facebook.com/groups/DLP29007/ Facebook] de DLP29007. Cada equipe deverá trabalhar com um dos temas de 1 a 6.
* Choose one of the available FPGA families for your project (e.g. Cyclone IV GX);
+
:'''TEMA 1''' - Implementar o circuito "barrel shifter" (Listing 7.13/7.14, 7.29).  pag. 178-180; 192-196
* Select the "Fastest" "Speed grade";
+
::Realize os testes com 8 e 16 bits de entrada.
* Select the smallest device available in the family;
+
:'''TEMA 2''' - Implementar o circuito "XOR" e "XOR vector" (Listing 7.17, 7.18, 7.21, 7.22, 14.12).  pag. 180-187; 514-515.
* For each architecture of the example, compile the it, analyze the RTL output, and take note of the number of logic elements/LUTs consumed, and of the highest delay in the circuit;
+
::Realize os testes com 8 e 16 bits de entrada.
* Change to the largest device available in the family;
+
:'''TEMA 3''' - Implementar os circuitos codificadores de prioridade (Listing 7.24, 7.25 + 7.26). pag. 187-192;
* For each architecture of the example, compile the it, analyze the RTL output, and take note of the number of logic elements/LUTs consumed, and of the highest delay in the circuit;
+
::Realize os testes com 16 entradas 4 bits de saída, 32 entradas 5 bits de saída.
 +
:'''TEMA 4''' - Implementar os circuitos incrementadores de código Gray (Listing 7.30, 7.31). pag. 196-199
 +
::Realize os testes com 4 e 5 bits. para L.7.30, e 4, 5 e 8 bits para L.31.
 +
::Transforme ambos circuitos em decrementadores de código Gray.
 +
:'''TEMA 5''' -  Implementar os circuitos para cálculo da [https://en.wikipedia.org/wiki/Hamming_distance distância de Hamming] (Listing 7.36, 7.37) pag. 206-208
 +
::Realize os testes com 8 bits de entrada e com 16 bits.
 +
:'''TEMA 6''' -  Implementar o circuito multiplicador baseado em somas (Listing 7.34, 7.35). pag. 203-206
 +
::Realize os testes com entradas de 8 bits e saída 16 bits de saída, e com entradas de 12 bits e saída 24 bits de saída.
 +
::Compare os resultados com um multiplicador baseado no operador de multiplicação "*" do VHDL.
  
Write a report containing the numeric results of your experiments. For each example, answer the following questions:
+
* Compare o hardware necessário para implementar os circuitos utilizando a famílias de FPGA [CYCLONE]. Utilize sempre o menor '''Device''' que possua os elementos e pinos suficientes para o circuito proposto.
#Was there any differences between the RTL generated for each architecture? Why did this happen (or not)?
+
*Realize a simulação funcional de cada circuito usando sempre o mesmo padrão de sinais de entrada.
#Was there any differences between the RTL generated, for the same architecture, for different devices? Why did this happen (or not)?
+
* Para cada circuito anote os resultados de: número de pinos, número de elementos lógicos/ALUT (indicando os Normais | Aritméticos), atraso de propagação, caminho crítico.
 +
::Esses dados estão disponíveis nos seguintes relatórios: ('''Fitter > Resource Section > Resource Usage'''), ('''TimeQuest Timing Analyser > Datasheet Report > Propagation Delay''')
 +
*No caso do atraso de propagação, verifique para o caminho crítico o atraso de propagação interno, anote e subtraia os tempos dos pinos de I/O, os tempos de propagação do sinal até o primeiro elemento lógico e o tempo de propagação após o último elemento lógico.
 +
::Ver:[[Medição de tempos de propagação em circuitos combinacionais]]
 +
*Para o circuito com maior número de bits, 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.
 +
set_max_delay -from [get_ports *] -to [get_ports *]  tp
  
Email the results to the professors until next class.
+
* Escreva um relatório técnico na forma de artigo com 4 a 8 paginas A4. O relatório além das tabelas com os dados, deverá conter as figuras dos circuitos RTL que expliquem as diferenças entre os circuitos, simulações funcionais e uma análise dos resultados obtidos.  O arquivo com o QAR do projeto deve ser também enviado.
 +
* Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma  [http://200.135.233.26:3000/project Sharelatex do IFSC-CLOUD]. Utilize preferencialmente o [http://200.135.233.26:3000/project/54750cb57ae8187440d60acd  modelo de artigo no padrão ABNT].
 +
* Envie o artigo em pdf para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE2 - Projeto de Circuitos Combinacionais.
 
{{collapse bottom}}
 
{{collapse bottom}}
  
{{collapse top| Homework 03: Combinational Circuits (Deadline: 03/03/2015)}}
+
{{collapse top | AE3 - Circuitos Sequencias (prazo 04/11/2016 23h59)}}
Groups of two students will study and explain to the class one of these circuits in Chapter 7 of bibliographic reference 1: 7.5.2 (Programmable Priority Encoder), 7.5.4 (Combinational Adder-Based Multiplier), 7.5.5 (Hamming Distance Circuit).
+
* Formar equipes com 2 ou 3 alunos. A formação das equipes deve ser informado no [https://www.facebook.com/groups/DLP29007/ Facebook] de DLP29007. Cada equipe deverá trabalhar com um dos temas de 1 a 6. (todos os contadores devem ser genéricos para N bits)
{{collapse bottom}}
+
 
 +
:'''TEMA 1''' - Estudar e implementar o Contador Gray
 +
::* Versão 1 (Listing 9.7). pag. 265
 +
::* Versão 2 [https://www.altera.com/support/support-resources/design-examples/design-software/vhdl/vhd-gray-counter.html]
 +
::* Versão 3 [http://www.asic-world.com/examples/vhdl/gray.html]
 +
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
  
{{collapse top| Homework 04: Synchronous Project - Timer (hour, minute, second) - (Deadline: 24/03/2015)}}
+
:'''TEMA 2''' - Estudar e implementar o Contador em Anel
* '''Groups of 2 students!'''
+
::* Versão 1 (Listing 9.8).  pag. 267
* Implement a timer with outputs seconds, minutes and hour (in binary mode);
+
::* Versão 2 (Listing 9.9). pag. 268
* Version 1: Use derived clocks of 1 second, 1 minute, and 1 hour, all from a 50 MHz source.
+
::* Versão 3 [http://www.embarcados.com.br/implementacao-de-um-shift-register-em-vhdl] [http://www.andrecastelan.com.br/implementacao-de-um-shift-register-em-vhdl/] 
* Version 2: Build a synchronous desing using a global clock.
+
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.  
* Simulate the timer (both versions), showing the correct behaviour.
 
* Analyse the RTL and report the number of logic elements used.
 
* Create a '''timer.sdc''' file and include it in the project (to define a clock restriction)
 
create_clock -name CLK50MHz -period 20 [get_ports {clk}]
 
OR
 
create_clock -name CLK50MHz -period 250MHz [get_ports {clk}]
 
* Check at '''{Compilation Report > TimeQuest Timing Analyser}''' if the maximum clock of the circuit is greater than 50 MHz.
 
{{collapse bottom}}
 
  
{{collapse top| Homework 05: Sequential Circuits (Deadline: 26/03/2015)}}
+
:'''TEMA 3''' - Estudar e implementar o Contador Decimal e Contador One Hot
Each student will synthesize and analyze a counter, according to the list bellow.   
+
::* Versão 1 (Listing 9.12).  pag. 273
*Danilo: Binary Counter
+
::* Versão 2 (Listing 9.13).  pag. 274
*Elton: Decimal Counter
+
::* Versão 3 Contador One Hot [http://www.asic-world.com/examples/vhdl/one_hot.html#One_Hot_Counter].
*Ernani: Gray Counter
+
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
*Jean: Johnson Counter
 
*Leonan: LFSR Counter
 
*Thiago Henrique: PWM Counter
 
*Thiago Werner: Ring Counter
 
  
Students must:
+
:'''TEMA 4''' - Estudar e implementar o Contador LFSR (Linear Feedback Shift Register)
# Use synchronous design methodology, with separate segment for memory, next-state logic and output logic;
+
::* Versão 1 (Listing 9.10).  pag. 270
# Use a GENERIC constant to define the counter size, and test the counter for 3 and 8 bits.
+
::* Versão 2 (Listing 9.11). pag. 272
# Simulate the counter (and variations), showing the correct behaviour.
+
::* Versão 3 [http://www.asic-world.com/examples/vhdl/lfsr.html#Random_Counter_(LFSR)]
# Analyze the RTL and report the number of logic elements used. Observe that the clock is global and without interruptions by ports.
+
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.  
# Create a '''counter.sdc''' file and include it in the project (to define a clock restriction)
 
create_clock -name CLK250MHz -period 250MHz [get_ports {clk}]
 
# Report area of the design (and variations);
 
# Report maximum delays and clock of the design using the SDC file to set up a target clock;
 
# Modify circuits to increase maximum frequency in a Cyclone;
 
# Try to synthesize the counter at 250MHz in any other FPGA.
 
{{collapse bottom}}
 
  
{{collapse top| Homework 06: Finite State Mahines with Datapath (Deadline: 19/05/2015)}}
+
:'''TEMA 5''' - Estudar e implementar o PWM
In this homework you must produce a report in the format of an article. The article template can be downloaded [https://www.dropbox.com/s/qszkjbid16m414w/lab_report-template.zip?dl=0 here].
+
::* Versão 1 (Listing 9.14).  pag. 275
The report will describe a lab experiment including the exercises from the Pong Chu book, enumerated bellow.
+
::* Versão 2 [https://eewiki.net/download/attachments/20939345/pwm_v1_0.vhd?version=1&modificationDate=1420836042247&api=v2]
You must simulate your designs to show that they work properly, and report differences in area and maximum clock among different designs.
+
::* Versão 3 [http://fpgacenter.com/examples/servo/VhdlCode.php]
Don't forget to include the FSM/FSMD and/or ASM/ASMD in the report.
+
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.  
When modifying a design shown in the book, compare the results with the original design.
 
  
Exercises:
+
:'''TEMA 6''' - Estudar e implementar relógio HH:MM:SS,  considerando o clock de entrada de 50 MHz
* Group 1 (names here): 10.3, 10.4, 11.6
+
::* Versão 1 (alterar a Listing 9.5), página 263 para incluir a hora
* Group 2 Elton e Thiago Henrique: 10.8, 11.7
+
::* Versão 2 (alterar a Listing 9.6), página 265 para incluir a hora
* Group 3 Leonan e Thiago Werner: 10.10, 11.5
+
::* Versão 3 Implementar o Digital Clock com SSDs da seção 12.5 de <ref name="PEDRONI2010b"> PEDRONI, Volnei A. '''Circuit Design and Simulation with VHDL'''; 2ª ed. Massachusetts-EUA:MIT, 2010. 608 p. ISBN  9780262014335 </ref>, pag 337-340, removendo o ajuste de segundos, minutos e horas.
 +
::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.  
  
 +
* Para cada circuito indicado torne o código genérico para N bits e teste para 4 e 32 bits.
 +
* Teste cada uma das arquiteturas e anote em uma tabela todos os resultados de: número de pinos, número de elementos lógicos/ALUT (indicando os Normais | Aritméticos), 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''')
 +
*Insira restrições temporais para obter um circuito com maior Frequência Máxima.
 +
create_clock -name CLKXXXMHz -period XXXMHz [get_ports {nome_do_sinal_de_clock}]
 +
*Realize a simulação funcional de cada circuito com 4 bits.
 +
* Escreva um relatório técnico na forma de artigo com 2 a 4 paginas A4. O relatório além das tabelas com os dados, deverá conter as figuras dos circuitos RTL para 4 bits, simulações funcionais e uma análise textual dos resultados obtidos.  O arquivo com o QAR do projeto deve ser também enviado.
 +
* Para a geração de documentação/relatórios técnicos/artigos, está disponibilizada a plataforma  [http://200.135.233.26:3000/project Sharelatex do IFSC-CLOUD]. Utilize preferencialmente o [http://200.135.233.26:3000/project/54750cb57ae8187440d60acd  modelo de artigo no padrão ABNT].
 +
* Envie o artigo em pdf para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE3 - Circuitos Sequencias.
 
{{collapse bottom}}
 
{{collapse bottom}}
  
= Class log =
+
{{collapse top |expand = true| AE4 - FSM/RTM (prazo 18/12/2016)}}
  
== 05/02: Course presentation. Complexity Management. Overview of Complex Digital Systems Desgin. ==
+
Nesta atividade, cada dupla entregará uma implementação do jogo QuickFinger (explicado em aula).
 +
Além da implementação padrão, cada dupla realizará uma modificação diferente (lista ao final, por dupla). A figura abaixo apresenta uma visão geral do sistema do jogo:
  
=== Recommended reading ===
+
http://docente.ifsc.edu.br/arliones.hoeller/dlp2/figs/quick_finger-block_diagram.png
*Chapter 1 of bibliographic references 1 AND 2.
 
*Lecture notes 1.
 
  
 +
Um relatório final em forma de artigo PDF contendo os itens abaixo deve ser entregue:
 +
* Introdução descrevendo os objetivos do trabalho e apresentando uma visão geral do jogo;
 +
* Descrição da implementação padrão e da modificação do jogo contendo, para cada um:
 +
** Algoritmo em pseudo-código que resolve o problema;
 +
** Diagrama de máquina de estados com datapath (FSMD ou ASMD - preferível ASMD);
 +
** Diagrama de blocos do sistema;
 +
** RTL do circuito gerado por sua implementação;
 +
** Relatório de eficiência do circuito (Fmax, LE/LUT, registradores, etc);
 +
* Conclusão sugerindo pontos positivos e negativos de sua implementação e relatando possíveis melhorias.
 +
* '''Observações:'''
 +
** Não incluir código-fonte no artigo;
 +
** Não ultrapassar 4 páginas de texto (não incluso figuras);
 +
** Não há limite de páginas para figuras.
 +
* Deve ser entregue também o .qar do projeto.
 +
* Envie o trabalho para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE4.
  
== 12/02 - 26/02: Design of efficient combinational circuits ==
+
{{collapse bottom}}
  
=== Recommended reading ===
+
;JÁ ENCERRADAS:
* Chapter 7 of bibliographic reference 1.
+
;ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO:
* Lecture notes 2.
+
{{collapse top  | AL1 - Tempo de propagação em circuitos combinacionais}}
* [http://quartushelp.altera.com/14.0/mergedProjects/report/rpt/rpt_file_multicorner_timing.htm  TimeQuest Help], mainly Propagation Delay Report.
+
*[[Medição de tempos de propagação em circuitos combinacionais]]
 +
{{collapse bottom}}
  
== 12/02: Design of efficient combinational circuits: Operator sharing ==
 
  
=== Recommended reading ===
+
== Recursos de Laboratório ==
* Chapter 7 of bibliographic reference 1.
+
Para uso fora do IFSC dos recursos computacionais com licença educacional, o IFSC disponibiliza para seus alunos o '''IFSC-CLOUD'''.  Atualmente a forma mais eficiente de acesso é através do Cliente X2GO. O procedimento de instalação/ configuração e uso do Quartus/Modelsim/QSIM está descrito em [[Acesso ao IFSC-CLOUD#Cliente X2GO (recomendado)]].
* Lecture notes 2.
 
  
 +
Para a geração de documentação/relatórios técnicos/artigos, use a plataforma  [https://www.sharelatex.com?r=d418c690&rm=d&rs=b Sharelatex]
  
== 19/02: Design of efficient combinational circuits: Function sharing ==
+
Para estudo de FPGAs o Laboratório de Programação dispõe de kits '''Mercúrio IV da Macnica-DHW''' e também '''DE2-115 da Terasic'''.  Veja como utilizar estes kits em '''[[Preparando para gravar o circuito lógico no FPGA]]''', one além de acesso aos manuais dos fabricantes, você tem acesso a uma descrição resumida da pinagem mais utilizada desses kits.
  
=== Recommended reading ===
+
Para depurar seu circuito em uma FPGA de verdade, pode ser interessante utilizar o SignalTapII da Altera, que permite realizar análise lógica dos sinais no seu circuito. Para iniciar o uso da ferramenta, siga [[Tutorial Altera SignalTapII |este tutorial]].
* Chapter 7 of bibliographic reference 1.
 
* Lecture notes 2.
 
  
 +
Para determinar os caminhos críticos do projeto (ou os tempos de propagação entre quaisquer nós de um projeto, utilize a [[Análise de Caminho Crítico com Qaurtus II]].
  
== 26/02: Design of efficient combinational circuits: Layout Considerations ==
+
==Referências Bibliográficas:==
 +
<references/>
 +
 +
{{ENGTELECO}}
  
=== Recommended reading ===
+
= Conteúdo =
* Chapter 7 of bibliographic reference 1.
 
* Lecture notes 2.
 
  
 +
{{collapse top| bg=lightyellow | expandir=true | Gerenciamento de Complexidade e Visão Geral de Sistemas Digitais Complexos}}
  
== 03/03: Design of efficient combinational circuits: General Circuits ==
+
==Gerenciamento de Complexidade e Visão Geral de Sistemas Digitais Complexos==
  
Students presented and discussed the general circuits of section 7.5 of bibliographic reference 1.
+
*Leituras recomendadas:
 +
**Capítulo 1 do livro do Chu;
 +
**Capítulo 1 do livro do Harris;
 +
**Notas de aula 01.
  
=== Recommended reading ===
+
{{collapse bottom}}
* Chapter 7 of bibliographic reference 1.
 
* Lecture notes 2.
 
  
== 05/03: Design of efficient sequential circuits: principle ==
+
{{collapse top| bg=lightyellow | expandir=true | Síntese de Código VHDL}}
  
=== Recommended reading ===
+
==Síntese de Código VHDL==
* Chapter 8 of bibliographic reference 1.
 
* Lecture note 3.
 
  
== 12/03, 17/03, 26/03 and 31/03: Design of efficient sequential circuits: principle and practice ==
+
*Leitura recomendada:
 +
**Capítulo 6 do livro do Chu;
 +
**Notas de aula 02.
  
=== Recommended reading ===
+
{{collapse bottom}}
* Chapter 8 of bibliographic reference 1.
 
* Chapter 9 of bibliographic reference 1.
 
* Lecture notes 3.
 
* Lecture notes 4.
 
* [http://quartushelp.altera.com/14.0/mergedProjects/tafs/tafs/tcl_pkg_sdc_ver_1.5_cmd_create_clock.htm Quartus II help - create_clock] - ALTERA
 
  
 +
{{collapse top| bg=lightyellow | expandir=true | Eficiência de Circuitos Combinacionais}}
  
== 07/04, 09/04 and 16/04: Design of Efficient Finite State Machines: principle and practice ==
+
==Eficiência de Circuitos Combinacionais==
  
=== Recommended reading ===
+
*Leitura recomendada:
* Chapter 10 of bibliographic reference 1.
+
**Capítulo 7 do livro do Chu;
* Lecture notes 5.
+
**Notas de aula 03.
  
== 23/04: Register Transfer Methodology: Principle ==
+
*[[Medição de tempos de propagação em circuitos combinacionais]]
  
=== Recommended reading ===
+
{{collapse bottom}}
* Chapter 11 of bibliographic reference 1.
 
* Lecture notes 6.
 
  
 +
{{collapse top| bg=lightyellow | expandir=true | Eficiência de Circuitos Sequenciais}}
  
== 11/06: Embedded Processors (SoC) ==
+
==Eficiência de Circuitos Sequenciais==
  
In this class we will follow an Altera tutorial to build a System-on-a-Chip (SoC), synthesizing a NIOS processor softcore in a FPGA and loading an OS on it. Later on we will integrate our own logic with this processor.
+
*Leitura recomendada:
 +
**Capítulos 8 e 9 do livro do Chu;
 +
**Notas de aula 04 e 05.
  
The guidelines to this tutorial are on [https://www.altera.com/support/support-resources/design-examples/intellectual-property/embedded/nios-ii/exm-hardware-tutorial.html this page].
+
{{collapse bottom}}
  
You will need these additional components:
+
{{collapse top| bg=lightyellow | expandir=true | Eficiência de Máquinas de Estado}}
  
* [http://www.macnicadhw.com.br/c/document_library/get_file?uuid=0612db45-0434-4737-a380-ac846cf662b3&groupId=10157 MercurioIV schematic]
+
==Eficiência de Máquinas de Estado==
  
 +
*Leitura recomendada:
 +
**Capítulo 10 do livro do Chu;
 +
**Notas de aula 06.
  
If the Eclipse SBT for Nios II does not start in your Ubuntu 14.04 system, you may need to install libGTK2:
+
{{collapse bottom}}
sudo apt-get install libgtk2.0-0:i386
 
  
== 23/06: Final Project ==
+
{{collapse top| bg=lightyellow | expandir=true | Register Transfer Methodology}}
  
=== Overview ===
+
==Register Transfer Methodology==
  
[[Arquivo:ProcessadorDeAudioSeguro.png]]
+
*Leitura recomendada:
 +
**Capítulos 11 e 12 do livro do Chu;
 +
**Notas de aula 07 e 08.
  
In this project you'll implement a secure audio transceiver using Macnica's Mercurio IV platform with an Cyclone IV E FPGA. A general overview is presented in the figure above, which is comprised of these blocks:
+
{{collapse bottom}}
*'''''Inputs'''''
 
** ''in'' ADC: the ADC chip avaliable in the board. It is connected to the FPGA through an SPI interface, delivering a 12-bit decimal value.
 
** ''in'' Shared Key: a 128-bit shared key for the AES block cipher.
 
** ''out'' DAC: the DAC chip avaliable in the board. It is connected to the FPGA through an SPI interface, receiving a 12-bit decimal value.
 
*'''''Processing blocks'''''
 
** Nios II: The Nios II will act as SPI master to read data from the ADC and write data to the DAC. The software in the CPU will read data from the ADC at a 8KHz rate and insert the 12-bit values in an 8-position, 32-bit output FIFO. It will also read data from the input FIFO at an 8KHz rate and write it to the DAC. Note: you will only use the 12 LSB of FIFOs' entries.
 
** Lei A: the LeiA block of the sending segment will read each 12-bit entry from the FIFO and generate a compressed 8-bit output. In the receive segment, the LeiA block will receive 8-bit values from the AES block and expand them to 12-bit values.
 
** AES: The data will be encrypted using an AES-128 algorithm. In the transmission segment, the AES block will need to receive successive 8-bit results from the LeiA block and assembly a 128-bit block to input the cipher. In the receive segment, the AES block will receive successive 8-bit data from the UART block to assembly a 128-bit block to input to the decrypt algorithm.
 
** UART: data transmission will be performed through an UART interface connected to an RS-232 transceiver in the board. The UART receiver and transmitter must be extended from the UART receiver studied in class to include the transceiver and the RTS and CTS signals.
 
  
 +
{{collapse top| bg=lightyellow | expandir=true | Projeto Hierárquico e Parametrizado}}
  
* The following files are avaliable to integrate to your project:
+
==Projeto Hierárquico e Parametrizado==
** [https://www.dropbox.com/s/t6hi13yz8loifo5/secure_audio_alunos.qar?dl=0 Download here] a QAR File containing the ADC and DAC adaptation circuit and a Nios2 processor. From this file, you will use a the ADC_OUT FIFO as a data source to your LawA compressor, and the DAC_IN FIFO as a data destination for your LawA decompressor.
 
** [https://www.dropbox.com/s/31rpm08dz0zlknt/secure_audio_alunos_application.zip?dl=0 Download here] the ecliplse project of the application that should run on the Nios2 processor. You will need to generate the BSP (sopcinfo file is in the QAR).
 
  
=== Material de apoio para o projeto ===
+
*Leitura recomendada:
 +
**Capítulos 13, 14 e 15 do livro do Chu;
 +
**Notas de aula 09, 10 e 11.
  
* Conversores Analógico-Digital (CAD) e Conversor Digital-Analógico (CDA)
+
{{collapse bottom}}
:Ver: [http://www.sj.ifsc.edu.br/~fabiosouza/Tecnologo/Telefonia%201/Telefonia%20Digital%20PCM%20-%20parte%202de%202%20antiga.pdf Moecke, M. Curso de Telefonia Digital, ETFSC, 1998]
 
  
* Implementação de um codificador/decodificador para Lei A.
+
{{collapse top| bg=lightyellow | expandir=true | Clock e Sincronização}}
[[Arquivo:LeiA.png | Compressão e descompressão pela Lei A]]
 
:FONTE: [http://www.sj.ifsc.edu.br/~fabiosouza/Tecnologo/Telefonia%201/Telefonia%20Digital%20PCM%20-%20parte%202de%202%20antiga.pdf Moecke, M. Curso de Telefonia Digital, ETFSC, 1998], [https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-G.711-198811-I!!PDF-E&type=items ITU-T, Recommendation G.711 (11/88)]
 
*Implementação de uma [[Interface Serial Assíncrona]].
 
  
== 25/06: Final Project ==
+
==Clock e Sincronização==
  
* Implementation of VHDL description of an AES 128 cypher operating with 128-bit keys and 128-bit data blocks.
+
*Leitura recomendada:
** See [https://en.wikipedia.org/wiki/Advanced_Encryption_Standard this article] for the description of the algorithm;
+
**Capítulo 16 do livro do Chu;
** Read printed book segment handed on to you in class.
+
**Notas de aula 12.
** Check out these software implementations that may help you with the Register Transfer Methodology to implement AES. The software in Python is a high-level implementation (easy to understand). The C++ implementations are Object-Oriented and easy to integrate in software projects, but their code show several tweaks to make it faster in x86 machines with ssse3 instructions, or certain DSP devices (only recommended for those with a strong heart).
 
*** [https://github.com/bozhu/AES-Python Python]
 
*** [http://www.cryptopp.com/ C++]
 
*** [http://botan.randombit.net/ C++]
 
  
 +
{{collapse bottom}}
  
 +
= Links Auxiliares =
 +
*[https://cs.wmich.edu/gupta/teaching/cs5260/5260Sp15web/lectureNotes/thm14%20-%20parallel%20prefix%20from%20Ottman.pdf Parallel Prefix Computation]
 +
*[https://www.youtube.com/watch?v=bFmTHLZ3DGs#t=469.057233 Getting Started with the TimeQuest Timing Analyzer] Altera
 +
*[[Modelos de Temporização nos FPGAs]]
 +
::
 +
*[http://academic.csuohio.edu/chu_p/rtl/rtl_hardware.html Materiais auxiliares do livro do Pong Chu]
 +
*[http://academic.csuohio.edu/chu_p/rtl/chu_rtL_book/rtL_src_code.rar Código dos Exemplos do livro do Pong Chu]
 +
*[http://www.alterawiki.com/uploads/e/e6/FittingAlgorithms_and_SeedSweeps.pdf Fitting Algorithms, Seeds, and Variation] - ALTERA
 +
*[http://www.alterawiki.com/uploads/6/61/Tips_for_IncrementalCompilation_LogicLock.pdf Tips for Incremental Compilation and LogicLock] - ALTERA
  
[[Arquivo:AES128_overview.png]]
+
-->

Edição atual tal como às 13h36min de 8 de junho de 2021

Página da disciplina hospedada no Moodle