*Revisão dos conceitos sobre circuitos combinacionais vistos em CIL/ELD1
*Revisão dos conceitos sobre circuitos combinacionais vistos em CIL/ELD1
*Para alunos que não cursaram ELD1 (não conhecem VHDL), irei fornecer uma sequência de estudos para conhecer melhor as instruções concorrentes do VHDL.
*Para alunos que não cursaram ELD1 (não conhecem VHDL), irei fornecer uma sequência de estudos para conhecer melhor as instruções concorrentes do VHDL.
*Ler [https://moodle.ifsc.edu.br/pluginfile.php/336168/mod_resource/content/1/Introdu%C3%A7%C3%A3o%20a%20linguagem%20de%20descri%C3%A7%C3%A3o%20de%20hardware.pdf Introdução a linguagem de descrição de hardware (DHL)]
*Ler [https://drive.google.com/file/d/1VNUqU3nBkNWv3w-yT3HT18eY878JcgXz/view?usp=drive_link Introdução a linguagem de descrição de hardware (DHL)]
1.1 Unidade 1 - Aula inicial, Introdução a disciplina
1 ENCONTRO
Unidade 1 - Aula inicial, Introdução a disciplina
Encontro 1 (18 mar.)
A página da UC contém os materiais que não alteram entre semestre.
Relação com as outras UCs do Eixo Sistemas Computacionais (Marrom). Ver grafo do curriculo
ELD129002 - ELETRÔNICA DIGITAL I (ELD1): Sistema de numeração e códigos. Lógica booleana. Circuitos combinacionais. Circuitos aritméticos. Linguagem de descrição de hardware. Implementação e teste de circuitos digitais. Projeto de circuitos lógicos.
ELD129003 - ELETRÔNICA DIGITAL II (ELD2): Dispositivos lógicos programáveis. Circuitos sequenciais. Metodologia síncrona. Projeto hierárquico e parametrizado. Máquinas de estados finita. Register Transfer Methodology. Teste de circuitos digitais. Implementação em FPGA. Introdução a Linguagem de Descrição de Hardware.
AOC129004 - ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES (AOC): Introdução à Arquitetura Computadores. Linguagem Assembly. Linguagem de Máquina. Programação Assembly. Modos de Endereçamento. Processo de compilação e carga de um programa. Introdução à Organização de Computadores. Organização Monociclo e Multiciclo. Pipeline. Memória e Sistema de E/S.
MIC129007 - MICROCONTROLADORES (MIC): Introdução a Microcontroladores e Aplicações. Arquitetura de um microcontrolador. Pilha e Subrotinas. Interrupção. Contadores e Temporizadores. Interface com Periféricos. Programação em alto nível (ex.: C, C++ e RUST) para Microcontroladores: Mapeamento de tipos e estruturas de alto nível para sistemas com recursos limitados. Projeto de hardware e firmware com microcontroladores.
STE129008 - STE - SISTEMAS EMBARCADOS (STE): Conceitos em Sistemas Embarcados. Metodologia de Desenvolvimento de Sistemas Embarcados. Sistemas Operacionais para Sistemas Embarcados. Ferramentas de desenvolvimento e depuração. Barramentos e dispositivos de acesso a redes. Desenvolvimento de Projeto.
A entrega de atividades e avaliações será através da plataforma Moodle. A inscrição dos alunos é automática a partir do SIGAA.
Para a comunicação entre professor-aluno, além dos avisos no SIGAA, utilizaremos o chat institucional. A princípio todos os alunos já estão previamente cadastrados pelo seu email institucional. Confiram enviando uma mensagem de apresentação.
Utilizaremos durante as aulas algumas ferramentas computacionas como o site do Falstad para entender circuitos digitais e fazer simulações básicas.
Também utilizaremos os softwares Quartus Light e ModelSim instalados nas maquinas do laboratório para praticar a parte de programação de hardware (descrição de hardware). Esses softwares também podem ser usados através da Nuvem do IFSC..
LER PARA O PRÓXIMO ENCONTRO
Revisão dos conceitos sobre circuitos combinacionais vistos em CIL/ELD1
Para alunos que não cursaram ELD1 (não conhecem VHDL), irei fornecer uma sequência de estudos para conhecer melhor as instruções concorrentes do VHDL.
As atividades relâmpago devem ser entregues no Moodle da disciplina. A não entrega dessas atividades não gera nenhum desconto, apenas geram pontos de BÔNUS que são adicionados aos conceitos das avaliações A1 a AN.
4 Atividade extra-classe (AE)
A média ponderada das atividades extra-classe será considerada no cálculo do conceito final da UC. A entrega das mesmas será feita pelo Moodle, e cada dia de atraso irá descontar 0,2 na nota da atividade. Muitas dessas atividades também geram pontos de BÔNUS que são adicionados aos conceitos das avaliações A1 a AN. Para os BÔNUS só serão considerados projetos entregues no prazo.
4.1 AE1 - Conhecendo os dispositivos lógicos programáveis
AE1 - Conhecendo os dispositivos lógicos programáveis
Objetivos
Conhecer o Quartus Prime e as características dos dispositivos lógicos programáveis
Analisar os tempos de propagação em um circuito combinacional
Alterar configurações do compilador
Fazer a simulação funcional e temporal de um circuito combinacional.
Ao escolher a família de FPGAS, escolha inicialmente um dispositivo da família Max II. Anote o código desse dispositivo.
Capture as telas solicitadas e depois utilize-as no relatório da atividade.
Anote o tempo utilizado para cada uma das etapas do processo de compilação.
Anote o número de elementos lógicos utilizados e o número de pinos utilizados, bem com o percentual em relação ao número total do dispositivo.
Anote algum erro (Error) ou alertas (Warnings) que o Quartus II indicar no painel de mensagens [Messages]
Ao final salve o projeto em um arquivo QAR (sugestão PJ1.QAR)
PASSO 2: Repita a atividade descrita em Conhecendo os dispositivos lógicos programáveis - QUARTUS PRIME, trocando a família e dispositivo a ser usado na implementação. Escolha nesta vez um dispositivos da família Cyclone IV E ou Stratix II GX. Anote o código desse dispositivo.
Observe as mudanças que ocorrem tanto no tipo de Elemento Lógico disponível, no Chip Planner, no Pin Planner, e no circuito dos pinos de I/O. Note que estes FPGAs também apresenta novos componentes, tais como: Memória, Multiplicadores, DSP, PLL, DLL, etc. Verifique se consegue encontra-los no leiaute mostrado no Chip Planner, e documente aqueles que encontrar.
Compare os resultados obtidos nos procedimentos do PASSO 1 e PASSO 2.
Ao escolher a família de FPGAS, escolha um dispositivo FPGA da família Cyclone IV E. Anote o código desse dispositivo.
Capture as telas mostradas no roteiro e depois utilize-as no relatório da atividade.
Anote o máximo tempo de propagação entre entrada e saída.
Anote o número de elementos lógicos utilizados e o número de pinos utilizados, bem com o percentual em relação ao número total do dispositivo.
Experimente modificar as configurações do compilador, conforme mostrado em Configurando o compilador. Se desejar mude a semente inicial trocando o valor de [Seed: 1]
Experimente inserir diferentes restrições de atraso máximo para o compilador, e analise o resultado obtido.
Anote algum erro (Error) ou alertas (Warnings) que o Quartus II indicar no painel de mensagens [Messages]
Ao final salve o projeto em um arquivo QAR (sugestão PJ2.QAR)
PASSO 4: Realize a simulação funcional de um dos projetos CI74161 ou do cálculo da distância de Hamming
Capture as telas que mostram o circuito funcionando e depois utilize-as no relatório da atividade.
Entregas
Envie um arquivo QAR contendo todos os arquivos necessário para compilar cada um dos projetos.
Envie um relatório em PDF, incluindo as imagens capturadas (inclua um título para cada figura) e escreva para cada imagem um texto comentando o que representa. O relatório também deve ter a identificação (autor, título, data) uma breve introdução e uma conclusão. A descrição dos procedimentos feita na página wiki não precisa incluída no relatório.
Use preferencialmente o Overleaf para gerar o relatório. Mas o uso de MS-Word, Libreoffice e Google Docs também é permitida.
A entrega será feita através do Moodle da disciplina. Observe o prazo de entrega.
4.2 AE2 - Laboratório de programação de FPGA - Relógio HHMMSS
AE2 - Laboratório de programação de FPGA - Relógio HHMMSS
Objetivos
Desenvolver sistemas utilizando componentes já desenvolvidos.
Apreender a instanciar componentes e conectá-los com sinais.
Projete um relógio para indicar hora (HH), minuto (MM) e segundo (SS), mostrando as unidades e dezenas em 6 Display de 7 segmentos, usando os seguintes componentes: 1) Divisor de clock para obter um sinal de período de 1 segundo. (div_clk); 2) Contador configurável BCD de 00 a 99 (contador_bcd) 3) Conversor de BCD para SSD, com configuração de apagamento do zero e tipo de ligação dos segmentos.
Componente 1 - Divisor de Clock, com o valor da divisão configurável pelo parâmetro fclk2. O sinal de saída será usado como "enable" ou "clock" a cada 1 segundo para o componente contador_bcd.
componentdiv_clkisgeneric(fclk2:natural:=50);-- frequencia para simulacaoport(clk_in:instd_logic;rst:instd_logic;clk_out:outstd_logic);endcomponent;
Componente 2 - Contador de 00 a 99 com saída em BCD, (pode ser um contador em BCD (ou um contador binário + conversor bin2bcd). O valor final deve ser configurável pelos parâmetros max_dezena e max_unidade
Para esse contador pode ser usado o desenvolvido em aula, mas ele precisa ser modificado para permitir que o clock seja síncrono em todos os flip-flops. Assim é necessário usar um sinal de enable_in para habilitar a contagem durante um período de clock. Também será necessário gerar o sinal de enable_out para habilitar a contagem do próximo contador.
Componente 3 - Conversor de BCD para SSD, com um parâmetro configurável ac_ccn para selecionar o tipo de mostrador (Anodo Comum / Catodo Comum).
componentbcd2ssdisgeneric(ac_ccn:natural:=0);-- 1 para mostrador de anodo comum, 0 para mostrador de catodo comumport(bcd_in:instd_logic_vector(3downto0);z_opc:instd_logic;-- 1 o zero é mostrado, 0 - o zero é apagado.ssd_out:outstd_logic_vector(6downto0));endcomponent;
O valor ac_ccn será utilizado para configurar o circuito de modo a acender os segmentos com ALTO para display de catodo comum (ac_ccn=0), ou BAIXO para display de anodo comum (ac_ccn=1).
A entrada zero_option pode ser usada para apagar a dezena da HH, MM e SS.
Opção 1 - Na entidade TOP LEVEL, podem ser instanciados os seguintes componentes: um div_clk; três contador_bcd e seis bcd2ssd. Além disso, se necessário podem ser inseridos os inversores necessários para adequar ao hardware do kit DE2-115.
Opção 2 - Se quiser, você pode criar um componente com um contador_bcd e dois bcd2ssd e replicar 3 vezes esse componente na entidade TOP LEVEL.
IMPORTANTE: É necessário incluir um RESET no circuito sequencial e também uma entrada de enable no contador.
entityrelogio_HHMMSSIS-- O valor do fclk2 corresponde a metade do periodo do clock de entrada em Hzgeneric(fclk2:natural:=50);-- ao simular o circuito utilize um valor baixo para acelerar a simulaçao-- generic (fclk2 : natural := 25000000); -- ao implementar no hardware use o valor do clock em Hzport(clk_50MHz_kit:inSTD_LOGIC;rst_SW:inSTD_LOGIC;-- use uma chave deslizante para essa função RESETstop_SW:inSTD_LOGIC;-- use uma chave deslizante para essa função PARAR e CONTINUAR z_opc_SW:inSTD_LOGIC;-- use uma chave deslizante para essa função apagar o zero das dezenas ssd_DS,ssd_DM,ssd_DH:outSTD_LOGIC_VECTOR(6downto0);ssd_US,ssd_UM,ssd_UH:outSTD_LOGIC_VECTOR(6downto0));endentity;
Figura AE2.a - RTL do Relógio Digital de 24 horas
Fonte: Elaborado pelo autor.
Passo 2 - Simule os componentes e o relógio completo
Efetue a simulação funcional do div_clock, definindo a entrada de clk_in como um sinal de 100 Hz, e realizando a simulação para produzir um clk_out de 1Hz. Certifique-se que a duração do sinal alto é de apenas 1 período do sinal de clk_in.
Efetue a simulação funcional do contador_bcd fazendo a contagem de 00 a 99 e também de 00 a DU, onde DU é um valor qualquer configurável pelo genéricos D e U. O contador só deverá contar se o enable_in estiver ALTO. Durante a mudança de DU para 00 o enable_out deverá ir para ALTO. Na simulação use um clock de 1 segundo, e faça uma simulação de pelo menos 120 segundos.
Efetue a simulação do bcd2ssd testando o circuito para as estradas bcd_in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9). Para os valores inválidos de entrada (10, 11, 12, 13, 14, 15), a saída deve mostrar "E" (de erro).
Nas simulações dos circuitos sequencias é necessário iniciar o circuito com um RESET de 10 ps.
Realize a simulação do relógio completo relogio_HHMMSS durante 48 horas. Para esta simulação é importante configurar o divisor de clock para realizar uma divisão com um fator menor que aquele a ser usado no circuito final (veja o comentário no código acima).
Figura AE4.b - Simulação funcional do Relógio Digital de 24 horas
Fonte: Elaborado pelo autor.
Figura AE4.c - Simulação funcional do Relógio Digital de 24 horas - detalhe enable 1sec
Fonte: Elaborado pelo autor.
Passo 3 - Implemente o relógio no kit DE2-115
Após verificar que a simulação do circuito está funcionando, configurar um FPGA para implementar este circuito. Existem duas opções de kit disponíveis com displays de sete segmentos. As informações necessárias estão em Preparando para gravar o circuito lógico no FPGA. Neste caso iremos usar o kit DE2-115 da TERASIC, pois precisamos de 6 mostradores de 7 segmentos.
Analise no diagrama esquemático como funcionam as chaves e também o mostrador de sete segmentos. Note que no projeto o signal RST foi descrito como normalmente ALTO, por isso dependendo da chave que usar pode ser necessário acrescentar um inversor neste sinal para que funcione corretamente. O Display de 7 segmentos da DE2-115 é do tipo anodo comum (aplicando um nível lógico '0' no pino correspondente fará com que o segmento acenda, enquanto a aplicação do nível lógico '1' fará com com que o segmento apague).
Anote a pinagem que será utilizada para conectar o circuito projetado no FPGA aos circuitos externos do kit (mostradores, chaves e leds).
definição dos pinos
To
Direction
Location
clk50MHz
Input
PIN_Y2
clk_1sec_LED
Output
PIN_F17
rst_sw
Input
PIN_AB28
ssd_DHH[0]
Output
PIN_AD17
ssd_DHH[1]
Output
PIN_AE17
ssd_DHH[2]
Output
PIN_AG17
ssd_DHH[3]
Output
PIN_AH17
ssd_DHH[4]
Output
PIN_AF17
ssd_DHH[5]
Output
PIN_AG18
ssd_DHH[6]
Output
PIN_AA14
ssd_DMM[0]
Output
ssd_DMM[1]
Output
ssd_DMM[2]
Output
ssd_DMM[3]
Output
ssd_DMM[4]
Output
ssd_DMM[5]
Output
ssd_DMM[6]
Output
ssd_DSS[0]
Output
ssd_DSS[1]
Output
ssd_DSS[2]
Output
ssd_DSS[3]
Output
ssd_DSS[4]
Output
ssd_DSS[5]
Output
ssd_DSS[6]
Output
ssd_UHH[0]
Output
ssd_UHH[1]
Output
ssd_UHH[2]
Output
ssd_UHH[3]
Output
ssd_UHH[4]
Output
ssd_UHH[5]
Output
ssd_UHH[6]
Output
ssd_UMM[0]
Output
ssd_UMM[1]
Output
ssd_UMM[2]
Output
ssd_UMM[3]
Output
ssd_UMM[4]
Output
ssd_UMM[5]
Output
ssd_UMM[6]
Output
ssd_USS[0]
Output
ssd_USS[1]
Output
ssd_USS[2]
Output
ssd_USS[3]
Output
ssd_USS[4]
Output
ssd_USS[5]
Output
ssd_USS[6]
Output
Dica para testar o relógio sem aguardar 24 horas. Acelere o clock de entrada do contador de segundos de 60 (ou 1440 vezes), com isso o sistema realizará a contagem de 00:00:00 a 23:59:59 em 24 minutos (ou 1 minuto).
Passo 4 - Entregas
Documentar o experimento em um relatório técnico que contenha no mínimo:
Descrição dos componentes utilizados e do sistema completo. Cada componente deve ser descrito em termos funcionais, e também deve ter uma simulação que demonstre o seu funcinamento.
resultados obtidos (com imagens dos itens importantes) e análise dos resultados;
apresente tabelas da pinagem utilizada na configuração do FPGA, número de elementos lógicos usados em cada componente e pelo sistema completo.
conclusão.
apêndice (se desejar pode ser disponibilizados vídeos do funcionamento do circuito
O relatório deve também responder as questões levantadas e mostrar que os objetivos apresentados na introdução foram atendidos.
O arquivo QAR contendo o projeto
Os arquivos para simulação (DO) necessárias para simular o sistema relogio_HHMMSS e seus componentes.
4.3 AE3 - Projeto de uma FSM para controle semafórico
AE3 - Projeto de uma FSM para controle semafórico
Objetivos
Aplicar o conhecimento de FSM no projeto de um controle semafórico.
Obter a especificação do projeto pela observação do funcionamento do equipamento atual
Fazer a simulação funcional dos componentes individuais e do controle semafórico
Utilizar saídas do tipo Moore (para os focos luminosos) e Meally (inicialização das temporizações)
O projeto será desenvolvido por equipes de até 2 estudantes, e cada equipe deverá escolher um cruzamento de vias que tenha além de dois grupos semafóricos progressivo, também pelo menos um semáforo de pedestre.
Cada equipe deverá sugerir e implementar uma melhoria em relação ao equipamento atual instalado no cruzamento das vias. Um dos objetivos do projeto é buscar por soluções semafóricas inovadoras, incluindo aprimoramentos específicos para o período noturno ou economia de energia. O objetivo é proporcionar uma experiência mais segura e visível para veículos e pedestres ao cruzar vias durante o dia e a noite.
PASSO 1 - fazer o levantamento do semáforo selecionado para o projeto.
Selecionar um semáforo e obter a imagem das vias e da área de conflito que é controlada pelo semáforo.
Figura AE3.1 - Imagem aérea do Google do cruzamento Shibuya Crossing, em Tóquio, Japão
Fonte: Google maps.
Fazer um croqui das vias e passagens de pedestre dessa área.
Figura AE3.2 - Diagrama do cruzamento Shibuya Crossing
Fonte: Google Maps.
Elaborar um rascunho ou foto dos semáforos existentes
Figura AE3.3 - Imagem do Google Street do cruzamento Shibuya Crossing
Fonte: Google Street.
Elaborar um rascunho do diagrama de estágiospag. 72 e pag. 150
Medir os tempos de ciclo do semáforo.
Elaborar um rascunho do diagrama de intervalos luminosos (Diagrama de barras). pag.72 e pag. 190
PASSO 2 - Projetar a FSM do controlador de semáforo
Desenhar o diagrama de transições da FSM
Desenhar o ASM
Escrever o código em VHDL da FSM
Fazer a Análise e Síntese no Quartus
Observar e analisar o RTL e o diagrama de estados no Quartus
Verificar o número de elementos lógicos usados
Fazer Timing Analysis e anotar as FMax
Fazer a simulação funcional, permitindo um (ou dois) ciclos completo do controlador semafórico (Dica utilize cores verde, vermelha e amarela para facilitar a visualização dos semáforos).
PASSO 3 - Implementar um sistema hierárquico para o controlador
Para a geração do tempo do controlador de semáforo utilize pelo menos um componente para o contador de segundos (binário ou BCD).
O controlador semafórico deve ser um componente separado
Se preferir utilize também um componente para o divisor de clock para gerar o sinal de 1 segundo a partir do clock de 50MHz, não esqueça de usar um divisor menor na simulação (sugestão 5)
O Top Level do projeto deve conter apenas a instanciação dos componentes do projeto.
Observar e analisar o RTL e o diagrama de estados no Quartus
Verificar o número de elementos lógicos usados e o FMax
Fazer a simulação funcional de um ciclo completo do controlador semafórico.
Entregas
Envie um arquivo QAR contendo todos os arquivos necessário para compilar e simular o projeto. O QAR deve conter todos os arquivos .vhd e arquivos .do dos componentes e do top level.
Envie um relatório em PDF, incluindo as imagens capturadas (inclua um título para cada figura) e escreva para cada imagem um texto comentando o que representa. O relatório também deve ter a identificação (autor, título, data) uma breve introdução e uma conclusão. A descrição dos procedimentos feita na página wiki não precisa incluída no relatório. Dados numéricos devem ser apresentados na forma gráfica ou tabela, jamais como imagem capturada de tela.
Use preferencialmente o Overleaf para gerar o relatório. Mas o uso de MS-Word, Libreoffice e Google Docs também é permitida.
A entrega será feita através do Moodle da disciplina. Observe o prazo de entrega.
4.4 AE4 - Comparação de Hardware projetado por FSMD e Dataflow
AE4 - Comparação de Hardware projetado por FSMD e Dataflow
Objetivos
Analisar o funcionamento de diferentes versões de FSMD para multiplicação de dois números.
Analisar o funcionamento de diferentes versões de algoritmos dataflow para multiplicação de dois números.
Fazer a simulação funcional de várias FSMDs e comparar com a implentação estruturada em fluxo de dados.
Analisar a influência do número de bits sobre o número de elementos lógicos, frequencia máxima e tempo total de cálculo.
O projeto será desenvolvido por equipes de até 2 estudantes.
Cada exipe deverá realizar a simulação com pelo menos duas multiplicações, uma com um fator baixo (< 5) e outra com ambos fatores > 10. As equipes devem informar de antemão os valores que irão utilizar, e não poderão usar valores iguais as demais equipes.
Atividades
PASSO 1 - Entender e testar os códigos das Listing (L11.1 ou L11.2 ou L11.3), L11.5, L11.6, L11.7 e L11.8 do livro do CHU.
Entre as L11.1, L11.2 e L11.3, escolha apenas uma delas para os testes. A L11.4 fica de fora pois conter erro.
Realize a Analyses e Synthesis, Fitter e Timing Analysis de cada versão
Obtenha os valores de frequência máxima (Fmax) e número de elementos lógicos (Nel) de cada versão
Efetue a simulação utilizando um clock de 1 ns com pelo menos duas multiplicações, uma com um fator baixo (< 5) e outra com ambos fatores > 10. Essa etapa ajuda a determinar o número de clocks
Meça o número de clocks (Nclk) necessário para realizar a operação, e calcule o tempo total (Tcal) para realizar a operação.
PASSO 2 - Análise da variação do número de bits
Altere o código do CHU para que funcione para um número genérico de bits.
Dica: Para gerar um vetor de N zeros, crie uma constante e utilize a constante no código.
Repita o PASSO 1 variando o tamanho do multiplicador para 4, 8, 16, 32, 64 bits.
Nota: A simulação com 32 e 64 bits da (L11.1 ou L11.2 ou 11.3) ficará muito longa, e por isso não deve ser feita. Nestes casos estime o número de clocks a partir dos fatores multiplicadores.
Anote em uma tabela os valores Fmax, Nel, Nclk, Tcal para cada uma das versões e número de bits
Guarde a imagem do circuito RTL para 4 bits obtido em cada versão, incluindo o diagrama de estado da FSM se for o caso.
Ao efetuar a simulação use um fator alto que seja proporcional ao número de bits. Ou seja para 8 bits use um número maior que 128 = 2^(8-1).
PASSO 3 - Análise de um multiplicador direto
Escreva um código de um multiplicador que utilize diretamente a função de multiplicação
r<=a*b;
Também insira registradores nas duas entradas de dados e também na saída, de modo que fique semelhante ao destacado na figura em contorno vermelho.
Figura AE4.1 - RTL do multiplicador direto
Fonte: Elaborado pelo autor.
Faça toda a análise para 4, 8, 16, 32, 64 bits.
Anote em uma tabela os valores Fmax, Nel, Nclk, Tcal para cada número de bits
Guarde a imagem do circuito RTL para 4 bits obtido.
Ao efetuar a simulação use os mesmos fator utilizados no PASSO 2 para cada tamanho do multiplicador.
PASSO 4 - Análise de um multiplicador por somas sucessivas
Escreva um código de um multiplicador que efetue somas sucessivas para efetuar a multiplicação
-- declare o sinal aux como um vetor de dados do tipo unsignedtypeuns_vectorisarray(0to2**W)ofunsigned(2*W-1downto0);signalaux:uns_vector;-- utilize o vetor aux para guardar as sucessivas somas da entrada a_in-- utilize a entrada b_in para decidir qual dos somas correspode ao resultado.-- NOTA: este código é muito ineficiente, e está apenas sendo usado para comparar com os códigos desenvolvidos com a metodologia RT;aux(0)<=to_unsigned(0,2*W);l1:forkin0to2**W-1generateaux(k+1)<=aux(k)+resize(unsigned(a_in),2*W);endgenerate;r<=std_logic_vector(aux(to_integer(unsigned(b_in))));
Também insira registradores nas duas entradas de dados e também na saída, de modo que fique semelhante ao destacado na figura em contorno vermelho.
Figura AE4.2 - RTL do multiplicador por somas sucessivas
Fonte: Elaborado pelo autor.
Faça toda a análise para 4 e 8 bits apenas.
Anote em uma tabela os valores Fmax, Nel, Nclk, Tcal para cada número de bits
Guarde a imagem do circuito RTL para 4 bits obtido.
Ao efetuar a simulação use os mesmos fator utilizados no PASSO 2 para cada tamanho do multiplicador.
Entregas
Envie um arquivo QAR contendo todos os arquivos necessário para compilar e simular o projeto. O QAR deve conter todos os arquivos .vhd e arquivos .do.
Envie um relatório em PDF, incluindo as imagens capturadas (inclua um título para cada figura) e escreva para cada imagem um texto comentando o que representa. O relatório também deve ter a identificação (autor, título, data) uma breve introdução e uma conclusão. A descrição dos procedimentos feita na página wiki não precisa incluída no relatório. Dados numéricos devem ser apresentados na forma gráfica ou tabela, jamais como imagem capturada de tela.
Faça uma extensa análise sobre o tempo de cálculo x áreas que o circuito ocupa no FPGA para as diferentes versões. Faça a análise para os diferentes tamnhos do barramento de entrada e saída.
Sugira qual circuito utilizaria em diferentes situações e quais jamais utilizaria.
Escreva uma boa conclusão sobre isso
Use preferencialmente o Overleaf para gerar o relatório. Mas o uso de MS-Word, Libreoffice e Google Docs também é permitida.
A entrega será feita através do Moodle da disciplina. Observe o prazo de entrega.