|
|
Linha 57: |
Linha 57: |
| | | |
| ===PARA ENTREGAR=== | | ===PARA ENTREGAR=== |
− | {{collapse top | AE4 - Projeto Hierárquico Parametrizado (prazo 26/07/2016)}} | + | {{collapse top | AE1 - XXXX (prazo XX/XX/2016)}} |
− | * Formar equipes com 2 ou 3 alunos. Cada equipe deverá realizar todo o projeto descrito abaixo:
| + | * 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 - XXXX. |
− | * Implementar a FIFO mostrada no capítulo 9 usando projeto hierárquico, definindo um componente para cada uma das áreas hachureadas nos diagramas mostrados nos slides 62, 63 e 64 de [https://www.dropbox.com/s/wts1ai0ltlg27p9/DLP29007%20-%20Projeto%20Hierarquico%20Parametrizado%20v2.pdf?dl=0 Projeto Hierárquico e Parametrizado]
| |
− | :* '''Versão 1''':
| |
− | ::*O projeto deverá ser genérico de modo que o tamanho da palavra de dados possa ser definida através do GENERIC MAP durante a instanciação do componente de top-level '''FIFO_DLP_IFSC'''.
| |
− | ::*Os contadores dos ponteiros da FIFO devem ser do tipo binários crescentes, implementados com um bit adicional para detectar o estado de FIFO cheia ou vazia.
| |
− | :* '''Versão 2''':
| |
− | ::* O tamanho da palavra de dados deve ser obtidos a partir do sinal de entrada e saída da FIFO.
| |
− | ::* Use parâmetros GENERIC junto com IF GENERATE para selecionar o tipo de contador a ser usado nos ponteiros da FIFO. Deve ser possível escolher entre contador binário crescente, binário decrescente, LFSR, Gray. No caso dos contadores binário e Gray deve ser usado o bit adicional no contador para determinar o estado de FIFO cheia ou vazia. No caso do LFSR é necessário usar FLAGs para indicar estes estados.
| |
− | :* '''Versão 3''': (BONUS)
| |
− | ::* Torne genérico também o tamanho da FIFO utilizando como base o decodificador da Listing 15.7 e o multiplexador da Listing 15.8.
| |
− | * Escreva um relatório técnico contendo os resultados em 4 a 6 paginas A4. O relatório além das tabelas com os dados de frequência máxima, número de componente, número de pinos, deverá conter as figuras dos circuitos RTL para uma FIFO de 16 bits com 4 posições para dados, simulações funcionais e uma análise textual dos resultados obtidos. O arquivo com o QAR do projeto, e os arquivos .do do MODELSIM devem ser também enviados.
| |
− | * 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 - AE4 - Projeto Hierárquico Parametrizado. | |
| {{collapse bottom}} | | {{collapse bottom}} |
− |
| |
− | <!--
| |
− | {{collapse top |expand=true | AE5 - Projeto Hierárquico Parametrizado com Register Transfer Methodology (prazo 26/07/2016)}}
| |
− | * 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 em um dos temas listados, realizando o processo definido.
| |
− | *Temas, módulos e parâmetros
| |
− | ** [https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter UART - Universal Asynchronous Reciver/Transmitter] (sem handshake)
| |
− | *** Módulos: ao menos gerador de baudrate, receiver e transmitter
| |
− | *** Parâmetros: baudrate, data bits, stop bits, paridade.
| |
− | ** [https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus SPI - Serial Peripheral Interface] (slave)
| |
− | *** Módulos: ao menos receiver e transmitter
| |
− | *** Parâmetros: polaridade do clock, MSB/LSB.
| |
− | ** [https://en.wikipedia.org/wiki/I%C2%B2C I2C - Inter-Integrated Circuit] (slave)
| |
− | *** Módulos: ao menos receiver e transmitter
| |
− | *** Parâmetros: endereço do escravo (7bits)
| |
− | ** [https://en.wikipedia.org/wiki/UNI/O UNI/O - Universal I/O]
| |
− | *** Módulos: ao menos receiver e transmitter
| |
− | *** Parâmetros: endereço do escravo (12bits), bitrate (entre 10kbps e 100kbps)
| |
− |
| |
− | * Especificar diagrama de blocos do projeto, definindo:
| |
− | ** as interfaces entre os blocos (quais sinais e com quantos bits cada);
| |
− | ** os parâmetros de configuração de cada bloco;
| |
− | ** a técnica de implementação de cada bloco (i.e., combinacional, sequencial, máquina de estados, máquina de estados com caminho de dados);
| |
− | ** interface de entrada e saída do projeto para integração ao NIOS2 através de uma FIFO (registrador de dado a ser transmitido, registrador com dado recebido, sinal de start, etc).
| |
− | ** '''ATENÇÃO: é IMPORTANTÍSSIMO validar este diagrama com os professores antes de iniciar a implementação!'''
| |
− | * Implementar os módulos propostos;
| |
− | * Realizar simulação funcional dos módulos;
| |
− | * Integrar projeto a um processador NIOS2;
| |
− | * Implementar aplicação de teste utilizando 2 placas MercuiroIV comunicando-se entre si utilizando o seu projeto;
| |
− | * Apresentar seminário de 15 minutos apresentando os resultados do projeto (no dia 26/07/2016);
| |
− | * Enviar os slides em pdf para (<tt>moecke AT ifsc.edu.br</tt> E <tt>arliones.hoeller AT ifsc.edu.br</tt>), com o ASSUNTO: DLP29007 - AE5.
| |
− | {{collapse bottom}}
| |
− | -->
| |
− |
| |
| | | |
| ;JÁ ENCERRADAS: | | ;JÁ ENCERRADAS: |
− | {{collapse top | AE1 - Circuitos Combinacionais (prazo 26/04/2016)}}
| |
− | * 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 5. As equipes 1 a 4 também devem trabalhar o tema 6. A equipe 5 apenas irá trabalhar o tema 5.
| |
− | :'''TEMA 1''' - Implementar o circuito de diferença (Listing 7.6, 7.7. 7.8 e 7.9). pag. 175-177
| |
− | ::Torne o código genérico para N bits e teste para entradas "a" e "b" de 4, 8 e 16 bits.
| |
− | :'''TEMA 2''' - Implementar os circuitos codificadores de prioridade de 16 entradas 4 bits de saída (Listing 7.24, 7.25 + 7.26). pag. 187-192
| |
− | ::Implemente o circuito codificadores de prioridade programável (Listing 7.32)
| |
− | :'''TEMA 3''' - Implementar os circuitos incrementadores de código Gray (Listing 7.30, 7.31). pag. 196-199
| |
− | ::Transforme os circuitos em decrementadores de código Gray.
| |
− | :'''TEMA 4''' - Implementar os circuitos para cálculo da [https://en.wikipedia.org/wiki/Hamming_distance distância de Hamming] (Listing 7.36, 7.37) e o exemplo mostrado na AL1. pag. 206-208
| |
− | ::Transforme os circuitos para determinar o [https://en.wikipedia.org/wiki/Hamming_weight peso de Hamming].
| |
− | :'''TEMA 5''' - Implementar o circuito de soma para entradas "com sinal" e saídas de status (Listing 7.33). pag. 201-203
| |
− | ::Torne o código genérico para N bits e teste para entradas "a" e "b" de 8, 16 e 32 bits.
| |
− | ::Utilize o circuito de 8 bits como componente para realizar um somador de 32 bits (são necessários 4 componentes iguais).
| |
− |
| |
− | :'''TEMA 6''' - Implementar o circuito multiplicador baseado em somas (Listing 7.34, 7.35). pag. 203-206
| |
− | ::Compare os resultados com um multiplicador baseado no operador de multiplicação "*" do VHDL.
| |
− | *Para a versão de 8 bits comparar o hardware necessário para implementar os circuitos abaixo utilizando as seguintes famílias de FPGA [CYCLONE & STRATIX II]. Utilize sempre o menor '''Device''' de cada família, que possua os elementos e pinos suficientes para o circuito proposto.
| |
− |
| |
− | *Compilar cada circuito (com 8 bits) utilizando diferentes técnicas de otimização [Area | Balanceada | Velocidade].
| |
− | ::ver:[[Escolha da técnica de otimização no Quartus II]]
| |
− | * Para a arquitetura de menor tempo de propagação, realizar os testes com variação de 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), 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]]
| |
− | *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
| |
− | ::Ver:[[Medição de tempos de propagação em circuitos combinacionais]]
| |
− | *Realize a simulação funcional de cada circuito usando sempre o mesmo padrão de sinais de entrada.
| |
− |
| |
− | * 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, 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 - AE1 - Projeto de Circuitos Combinacionais.
| |
− | {{collapse bottom}}
| |
− |
| |
− | {{collapse top | AE2 - Circuitos Sequencias (prazo 20/06/2016 08h00)}}
| |
− | * 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 5. (todos os contadores devem ser genéricos para N bits)
| |
− |
| |
− | :'''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''.
| |
− |
| |
− | :'''TEMA 2''' - Estudar e implementar o Contador em Anel
| |
− | ::* Versão 1 (Listing 9.8). pag. 267
| |
− | ::* Versão 2 (Listing 9.9). pag. 268
| |
− | ::* Versão 3 [http://www.andrecastelan.com.br/implementacao-de-um-shift-register-em-vhdl/]
| |
− | ::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
| |
− |
| |
− | :'''TEMA 3''' - Estudar e implementar o Contador Decimal e Contador One Hot
| |
− | ::* Versão 1 (Listing 9.12). pag. 273
| |
− | ::* Versão 2 (Listing 9.13). pag. 274
| |
− | ::* Versão 3 Contador One Hot [http://www.asic-world.com/examples/vhdl/one_hot.html#One_Hot_Counter].
| |
− | ::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
| |
− |
| |
− | :'''TEMA 4''' - Estudar e implementar o Contador LFSR (Linear Feedback Shift Register)
| |
− | ::* Versão 1 (Listing 9.10). pag. 270
| |
− | ::* Versão 2 (Listing 9.11). pag. 272
| |
− | ::* Versão 3 [http://www.asic-world.com/examples/vhdl/lfsr.html#Random_Counter_(LFSR)]
| |
− | ::* Versão 4 Modifique a versão 3, separando claramente a lógica ''combinacional de next-state'', ''combinacional de output'', e ''register''.
| |
− |
| |
− | :'''TEMA 5''' - Estudar e implementar o PWM
| |
− | ::* Versão 1 (Listing 9.14). pag. 275
| |
− | ::* Versão 2 [https://eewiki.net/download/attachments/20939345/pwm_v1_0.vhd?version=1&modificationDate=1420836042247&api=v2]
| |
− | ::* Versão 3 [http://fpgacenter.com/examples/servo/VhdlCode.php]
| |
− | ::* 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 - AE2 - Circuitos Sequencias.
| |
− | {{collapse bottom}}
| |
− | <!--
| |
− | {{collapse top |expand=true | AE3 - Componente Sequencial com Pipeline (prazo ??/??/2016)}}
| |
− | {{collapse bottom}}
| |
− | -->
| |
− |
| |
− | {{collapse top | AE3 - Máquinas de Estado (prazo 24/06/2016)}}
| |
− | * 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 TODOS os temas abaixo.
| |
− |
| |
− | * Comparar o hardware necessário para implementar os circuitos abaixo utilizando a FPGA da plataforma MercurioIV utilizada na disciplina.
| |
− | * Compile cada circuito utilizando as otimizações Balanceada, Velocidade e Área.
| |
− | ::ver:[[Escolha da técnica de otimização no Quartus II]]
| |
− | * Teste cada uma das arquiteturas e anote em uma tabela todos os resultados de: Elementos Lógicos/ALUT (separando em Normais, Aritméticos, c/ registradores, etc), Frequência Máxima, Potencia total.
| |
− | ::Os dados acima estão disponíveis nos seguintes relatórios: (Fitter > Resource Section > Resource Usage), (PowerPlay Pawer Analyser Summary > Summary), (TimeQuest Timing Analyser > Slow 1200mV 85C Model > Fmax Summary > Fmax)
| |
− | * Meça os tempos de propagação internos Tnext (do registrador de estado até a saída da lógica de próximo estado) e o Tmo (do registrador de estado até a saída Moore).
| |
− | ::Ver:[[Medição de tempos de propagação em circuitos combinacionais]]
| |
− | * Para os circuitos modificados, apresentar no relatório a máquina de estados, o ASM, além do relatório de compilação do novo circuito.
| |
− | * Realize a simulação funcional de cada circuito usando sempre o mesmo padrão de sinais de entrada.
| |
− |
| |
− | :'''TEMA 1''' - Implementar os circuitos de detecção de borda (Listing 10.7 a 10.11); Modificar o 10.9 para detectar qualquer mudança de borda, e não apenas a borda de subida como no código original;
| |
− | :'''TEMA 2''' - Implementar os circuitos Árbitro (Listing 10.12 e 10.13); Modificar o de prioridade fixa para preemptar o recurso alocado caso um sinal externo de abort (ex.: timeout) ocorra E houver requisições aguardando;
| |
− | :'''TEMA 3''' - Implementar os circuitos DRAM strober (Listing 10.14 e 10.15); Modificar o 10.15 para operar com períodos de clock de 20ns;
| |
− | :'''TEMA 4''' - Estudar a implementação dos circuitos de codificação Manchester (Listing 10.16 e 10.17). Crie o decoder conforme instruções no exercício 10.11 do livro. Integre o encoder e o decoder, mapeie as entradas do decoder para switches e as saídas do decoder para LEDs da placa MercurioIV, e utilize o SignalTap para demonstrar que o circuito funciona.
| |
− |
| |
− | * Escreva um relatório técnico na forma de artigo em formato A4. O relatório deverá ter entre 3 e 4 páginas, sem contar as figuras. O relatório além das tabelas com os dados, deverá conter as figuras dos circuitos RTL, simulações funcionais e uma análise textual dos resultados obtidos. '''NÃO INCLUIR CÓDIGO VHDL NO RELATÓRIO!''' 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 - Máquinas de Estados.
| |
− | {{collapse bottom}}
| |
| | | |
| ;ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO: | | ;ESTUDOS SEM ENTREGA DE DOCUMENTAÇÃO: |