Aula 6, Exp 5: Implementação de Atrasos com FIFO www.decom.fee.unicamp.br/~cardoso Aula 6, Exp 5: Implementação de Atrasos com FIFO Fabbryccio Cardoso Dalton S. Arantes DECOM-FEEC-UNICAMP
Objetivo do Experimento No Experimento 4 foi implementada a equação de diferenças y(n) = x(n) + 0.8*x(n – 6000), onde: 1 slice e 1 bit -> 2 SRL16 + 2 Reg -> Ratraso = 34 ciclos/slice 1 slice e 16 bits -> Ratraso = 34/16 = 2.125 ciclos/slice Nslice = 6000 / 2.125 = 2824 (XCV2P30 tem 13969). Utilizar FIFOs, implementadas com BRAM, para implementar atrasadores e economizar slices de lógica; Obs: A FPGA XC2VP30 possui 136 BRAMs de 18kb cada; 6000x16 = 96 kb ~6 BRAMs de 18kb
Configuração Física do Experimento
Metodologia Utilizar o netlist do projeto principal (top-level) “xupv2pro_wrapper.ngc” e UCF “xupv2pro_wrapper.ucf” do Experimento 4 ; Gerar o bitstream do projeto a partir do SysGen (observe que o SysGen irá gerar o componente audio_clk_wrapper.ngc a partir do modelo audio.mdl para então executar a fase de implementação do fluxo de projeto, ligando o componente SysGen ao projeto principal) A implementação da equação de diferenças deve ser feita no modelo “audio.mdl” que irá gerar o componente audio_clk_wrapper para o projeto principal;
Implementação de Componente no SysGen Editar o modelo “audio.mdl”: não renomear o modelo nem as portas (gateways); certificar que as portas estão configuradas para 16 bits; (se estes requisitos não forem atendidos haverá um descasamento entre o componente audio_clk_wrapper.ngc esperado pelo projeto principal e o gerado pelo ISE, resultando em erro na fase de implementação) Implementar a equação de diferenças para os canais esquerdo e direito do modelo a partir de FIFOS: y(n) = x(n) + 0.8*x(n – 6000); Usar o bloco Resource Estimator para estimar os recursos da FPGA necessários para implementação do componente.
Módulo System Generator fpt dbl audio_right_out audio_right_in audio_left_out audio_left_in y_out ST xlregister d q Display System Generator double Fix_16_14 Adicionar Sub-Sistema para implementar equações de diferenças.
Interface do System Generator: Bitstream
Dicas Gerais Aproveite o modelo do Experimento 4 e use um subsystem para implementar o atrasador desejado em substituição ao bloco “delay” do SysGen; Na FIFO, din é o sinal de entrada e dout é o sinal de saída; as portas we e re são para controle; e empty, %full e full são para inspecionar o estado da FIFO; Se a FIFO não estourar ou esvaziar, todo sinal que é escrito na FIFO (din) quando we = 1 deve ser recuperado em dout quando re = 1, seguindo a lógica first in first out;
Lógica do atrasador Cont: 1 2 3 4 71 72 73 1 we: re: din: A B C D E 1 2 3 4 71 72 73 1 we: re: din: A B C D E F G H I J dout: A B C D Atraso de leitura. Atraso total = 72 + 1 = 73 Use o bloco “terminator” da biblioteca Simulink/Sinks nas portas de saída não utilizadas
Testes Inspecionar os sinais de entrada e saída da FIFO para comprovar se a lógica obtém o atraso desejado; Verifique se funciona, por exemplo, para um atraso de 5; Para inspecionar os resultados use o bloco “scope” da biblioteca Simulink/Sinks; Para se inspecionar os sinais do SysGen com o scope também é necessário utilizar o bloco Gateway Out para converter os dados para o formato do Simulink.
Dicas para a fase de testes de simulação Atraso total Atraso de leitura Primeira amostra é zero. Resultado esperado para atraso de 5.
Avaliação Visto do experimento = 7 pontos; Modelo do Projeto SysGen = 3 pontos.
O que deve ser entregue No lugar do relatório, deverá ser entregue o modelo SysGen do projeto com o netlist e o UCF do projeto principal. Adicionar comentário no modelo comparando a ocupação de área (slices) e de BRAMS dos atrasadores dos experimentos 4 e 5. Entregar também o modelo de teste com atraso de 5 ciclos.