Diseño RTL: aceleradores CNN
Aprende los índices de convolución y los contratos numéricos enteros y después las ventanas en flujo, la asignación a PE y la división en bloques. Verifica una referencia ejecutable y una pequeña ruta de inferencia, separando valores, estimaciones de planificación y tráfico.
Qué aprenderás
- Calcular dimensiones e índices de convolución, incluidos paso, relleno, dilatación y canales
- Especificar unidades de punto fijo, escalas, puntos cero, anchura del acumulador, redondeo y saturación
- Comparar convolución directa con un modelo de referencia im2col
- Generar ventanas con búferes de línea y aceptación de transferencias que conserve el estado pausado
- Calcular reutilización de PE, almacenamiento de bloques, tráfico y supuestos de planificación
- Informar de resultados numéricos y límites de las pruebas de una pequeña ruta de inferencia
Antes de empezar
Estos ejercicios del navegador usan modelos educativos; no compilan ni ejecutan HDL. Para ejecutar el código por separado, sigue la guía de Digital Design Studio para tu sistema operativo e inicia sesión cuando la operación lo requiera.
Instalación y primer inicio ↗ · Descargas ↗Programa
- El contrato de inferencia
- Inferencia y entrenamientoConcepto
Si solo aumentan los canales de salida de tres a seis, ¿cómo cambian el número de MAC y el de sesgos almacenados?
- Convolución y correlación cruzadaConcepto
¿Cuáles son los resultados de correlación cruzada y de núcleo invertido para [1,2;4,5] con el núcleo [1,0;0,-1]?
- Dimensiones, paso, relleno y dilataciónConcepto
Para H=7,R=3,paso 2,relleno superior 0,inferior 1,dilatación 2, calcula Ho y la coordenada de entrada para h=1,r=2.
- Comprobación: dimensiones y número de MACEvaluación
Usa N=1,C=2,H=W=5,M=3,un núcleo 3×3,paso 2,relleno uno en todos los lados,dilatación uno. ¿Cuáles son las dimensiones de salida y el número de MAC?
- El contrato numérico
- Bits y unidades de punto fijoConcepto
Multiplica 0.5 y −1.25 con F=4 y después añade el sesgo 0.25 con F=8. ¿Cuáles son el código del acumulador y el valor real?
- Escala y punto ceroConcepto
Para sx=0.25,zx=128, ¿cuáles son el código de relleno y el valor real de q=132? ¿Qué código de sesgo representa 0.75 con sw=0.5?
- Anchura del acumulador, redondeo y saturaciónConcepto
¿Son suficientes dieciocho bits con signo para nueve productos int8 con signo y sesgo cero?
- Práctica: ejecuta el contrato de cuantizaciónPráctica
Cuantiza −40 con la misma configuración uint8. ¿Cuáles son su código y su valor descuantizado, y qué aserción añadirías?
- Operadores de referencia
- Referencia de convolución directaConcepto
Para entradas [2,3], pesos [4,−1] y sesgo uno, ¿qué resultado incorrecto aparece si el sesgo se añade una vez por iteración de canal de entrada?
- im2col y multiplicación de matricesConcepto
Para H=W=4,C=1 y un núcleo 3×3 sin relleno, calcula los elementos originales de entrada, P,K y los elementos de parches expandidos.
- Conecta ReLU y agrupación máximaConcepto
Con punto cero de salida uint8 de 100, aplica ReLU y agrupación máxima 2×2 a [98,103;101,97].
- Comprobación: orden del procesamiento de salidaEvaluación
Aplica multiplicador 0.5,zy=0,redondeo al más cercano con desempate al par,saturación int8,ReLU y agrupación máxima 2×2 a los acumuladores [−1,2;3,−4]. ¿Cuál es el código final?
- Generación de ventanas en flujo
- Búferes de línea y ventanas 3×3Concepto
Para W=8,H=6, calcula las posiciones de almacenamiento, el índice de la primera entrada aceptada válida y el total de ventanas.
- Ready/valid y estado detenidoConcepto
La etapa de salida conserva A con out_ready=0 mientras la entrada B es válida. ¿Qué deben hacer la etapa y el productor en el siguiente flanco?
- Práctica: ventanas que sobreviven a las pausasPráctica
Si se pausan en cambio los ciclos cero,uno,dos y finalmente se aceptan todas las entradas, ¿cambian los valores o el número de ventanas? ¿Cuál es el total de ciclos?
- Comprobación: temporización de la primera ventanaEvaluación
Un generador 3×3 sin relleno para una entrada 4×4 de anchura cuatro no acepta entradas durante los cuatro primeros ciclos y después acepta un píxel por ciclo. ¿Cuáles son el índice de entrada aceptada y el ciclo transcurrido de la primera ventana, ambos desde cero?
- Asignación a PE y memoria
- PE, flujo de datos y reutilización MACConcepto
Asigna P=3,M=2,K=8 a cuatro PE de salida estacionaria. ¿Cuáles son los ciclos MAC y la utilización útil de posiciones MAC, excluyendo escrituras?
- Bloques, halos y sumas parcialesConcepto
Para Th=Tw=2,Tc=1,Tm=2,un núcleo 3×3,paso dos,dilatación uno, calcula los bytes de entrada/pesos/sumas de 32 bits/sesgos con un solo búfer.
- Ancho de banda y cotas de cálculoConcepto
Para 1152 MAC y 224 bytes, usa ocho PE pero mantén el ancho de banda en 0.5 bytes/ciclo. ¿Cuál es la cota inferior con solapamiento perfecto?
- Planificaciones, colas finales y doble búferConcepto
Para K=10,cuatro salidas,tres PE y un ciclo adicional por salida, calcula los ciclos modelados y la utilización solo de MAC.
- Verificación y proyecto final medible
- Modelos de referencia y clasificación de fallosConcepto
La referencia [37,47;67,77] difiere de [38,48;68,78]. ¿Qué examinarías primero y qué registrarías?
- Práctica: pon a prueba los casos límitePráctica
En los datos de prueba de relleno, sustituye todos los pesos del núcleo por uno. ¿Cuál es la primera salida y por qué es insuficiente una prueba solo del centro?
- Proyecto final: pequeña ruta de inferencia e informePráctica
Mantén K=9,cuatro salidas y un ciclo adicional por salida, pero usa tres PE. ¿Cuáles son los ciclos modelados totales y la utilización de posiciones solo de MAC?
- Comprobación final: afirmaciones y pruebasEvaluación
La ejecución Node del proyecto final verifica concordancia numérica,36 MAC,un modelo de planificación de 24 ciclos y 90% de uso de posiciones MAC. ¿Qué afirmación de finalización es exacta?