Projeto RTL: Aceleradores de CNN
Aprenda a indexação da convolução e os contratos numéricos de inteiros; depois, janelas em fluxo, mapeamento de PEs e divisão em blocos. Verifique uma referência executável e um pequeno caminho de inferência separando valores, estimativas de cronograma e tráfego.
O que você vai aprender
- Calcular dimensões e índices de convolução incluindo passo, preenchimento, dilatação e canais
- Especificar unidades de ponto fixo, escalas, pontos zero, largura do acumulador, arredondamento e saturação
- Comparar convolução direta com um modelo de referência im2col
- Gerar janelas com buffers de linha e aceitação de transferências que preserve o estado em pausa
- Calcular reutilização de PEs, armazenamento de blocos, tráfego e premissas de cronograma
- Informar resultados numéricos e limites das evidências de um pequeno caminho de inferência
Antes de começar
Os exercícios no navegador usam modelos educacionais; não compilam nem executam HDL. Para executar o código separadamente, siga o guia do Digital Design Studio para seu sistema operacional e entre na conta quando a operação exigir.
Instalação e primeiro uso ↗ · Downloads ↗Programa
- O contrato de inferência
- Inferência e treinamentoConceito
Se apenas os canais de saída aumentarem de três para seis, como mudarão a quantidade de MACs e a quantidade de vieses armazenados?
- Convolução e correlação cruzadaConceito
Quais são os resultados da correlação cruzada e do kernel invertido para [1,2;4,5] com kernel [1,0;0,-1]?
- Dimensões, passo, preenchimento e dilataçãoConceito
Para H=7,R=3,passo 2,preenchimento superior 0,inferior 1,dilatação 2, calcule Ho e a coordenada de entrada para h=1,r=2.
- Verificação: dimensões e quantidade de MACsVerificação
Use N=1,C=2,H=W=5,M=3,kernel 3×3,passo 2,preenchimento um em todos os lados,dilatação um. Quais são a dimensão da saída e a quantidade de MACs?
- O contrato numérico
- Bits e unidades de ponto fixoConceito
Multiplique 0.5 e −1.25 em F=4 e depois some o viés 0.25 em F=8. Quais são o código do acumulador e o valor real?
- Escala e ponto zeroConceito
Para sx=0.25,zx=128, quais são o código de preenchimento e o valor real de q=132? Qual código de viés representa 0.75 com sw=0.5?
- Largura do acumulador, arredondamento e saturaçãoConceito
Dezoito bits com sinal são suficientes para nove produtos int8 com sinal e viés zero?
- Laboratório: execute o contrato de quantizaçãoPrática
Quantize −40 com as mesmas configurações uint8. Quais são seu código e valor desquantizado, e qual asserção você acrescentaria?
- Operadores de referência
- Referência de convolução diretaConceito
Para entradas [2,3], pesos [4,−1] e viés um, qual resultado errado ocorre se o viés for somado uma vez por iteração de canal de entrada?
- im2col e multiplicação de matrizesConceito
Para H=W=4,C=1 e um kernel 3×3 sem preenchimento, calcule os elementos originais da entrada, P,K e os elementos expandidos dos recortes.
- Conexão de ReLU e max poolingConceito
Com ponto zero de saída uint8 igual a 100, aplique ReLU e max pooling 2×2 a [98,103;101,97].
- Verificação: ordem do processamento de saídaVerificação
Aplique multiplicador 0.5,zy=0,arredondamento para o par mais próximo,saturação int8,ReLU e max pooling 2×2 aos acumuladores [−1,2;3,−4]. Qual é o código final?
- Geração de janelas em fluxo
- Buffers de linha e janelas 3×3Conceito
Para W=8,H=6, calcule as posições de armazenamento, o primeiro índice válido de entrada aceita e o total de janelas.
- Ready/valid e estado em pausaConceito
O estágio de saída mantém A com out_ready=0 enquanto a entrada B é válida. O que o estágio e o produtor devem fazer na próxima borda?
- Laboratório: janelas que sobrevivem a pausasPrática
Se, em vez disso, os ciclos zero,um,dois forem pausados e todas as entradas forem eventualmente aceitas, os valores ou a quantidade de janelas mudam? Qual é a quantidade total de ciclos?
- Verificação: temporização da primeira janelaVerificação
Um gerador 4×4, de largura quatro e janelas 3×3 sem preenchimento, não aceita entrada nos quatro primeiros ciclos e depois aceita um pixel por ciclo. Quais são o índice de entrada aceita e o ciclo decorrido da primeira janela, ambos começando em zero?
- Mapeamento para PEs e memória
- PEs, fluxo de dados e reutilização de MACsConceito
Mapeie P=3,M=2,K=8 para quatro PEs com saídas estacionárias. Quais são os ciclos MAC e a utilização útil das posições MAC, excluindo escritas?
- Blocos, halos e somas parciaisConceito
Para Th=Tw=2,Tc=1,Tm=2,kernel 3×3,passo dois,dilatação um, calcule os bytes de entrada/pesos/somas de 32 bits/viés com buffer único.
- Limites de largura de banda e de cálculoConceito
Para 1152 MACs e 224 bytes, use oito PEs, mas mantenha a largura de banda em 0.5 bytes/ciclo. Qual é o limite inferior com sobreposição perfeita?
- Cronogramas, caudas e buffers duplosConceito
Para K=10,quatro saídas,três PEs e um ciclo extra por saída, calcule os ciclos modelados e a utilização apenas de MACs.
- Verificação e projeto final mensurável
- Modelos de referência e classificação de falhasConceito
A referência [37,47;67,77] difere de [38,48;68,78]. O que você inspecionaria primeiro e o que registraria?
- Laboratório: desafie os casos de bordaPrática
No caso de teste de preenchimento, substitua cada peso do kernel por um. Qual é a primeira saída e por que um teste apenas no centro é insuficiente?
- Projeto final: pequeno caminho de inferência e relatórioPrática
Mantenha K=9,quatro saídas e um ciclo extra por saída, mas use três PEs. Quais são os ciclos totais modelados e a utilização das posições apenas de MACs?
- Verificação final: afirmações e evidênciasVerificação
A execução em Node do projeto final verifica concordância numérica, 36 MACs, um modelo de cronograma de 24 ciclos e 90% de uso das posições MAC. Qual afirmação de conclusão é precisa?