4. Arquitectura del Imager CNN Simplicial
4.5. Variaciones en la arquitectura
6.5.2. Tareas Paso a Paso y Simulaciones
En esta sección se describe paso a paso algunas de las tareas que ejecuta el imager. mostrando las simulaciones realizadas con el ModelSim.
SelBusOut BusOut 1 BUSINT 2 ROW 3 HPWM 4 HCNT 5 BusData 6 Enabling 7 Proc 8 CLKs 9 ChainDir A Chain B Pi3 C Pi5 D Counter0,0 E Fog F F(7..0) 0 MICRO3
Procedimiento de Lectura y escritura de una imagen o de un valor en un registro
Para almacenar una imagen en el arreglo, se debe direccionar una por una las celdas, y con el dato a guardar en el bus de entrada, aplicar una señal de CLK habilitando el registro correspondiente. Para su lectura, debe ser direccionado, y la salida muestra el valor del registro. La Fig. 6.13 muestra la secuencia de señales para lectura y escritura. BUSIN VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV ROW VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV COL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV LX LLLLLLLLH LLLLLH LLLLLH LLLLLH LLLLLH LLLLLH LLLLLH LLLLLH LLLLLLLLLL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV BUSF LU LLLH LLLLLH LLLLLH LLLLLH LLLLLH LLLLLH LLLLLH LLLLLH LLLLLH LLLLL VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV BUSG SELBUSIN VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV BUSIN VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0 1 2 3 4 5 6 7 8 0 1 3 5 7 9 11 13 15 0 2 4 6 8 10 12 14 16
BusG BusF BusG BusF
0 2 4 5 7 9 10 12 14 15 16
Figura 6.13: Secuencia de lectura y escritura de los registros.
Procedimiento de Procesamiento de imagen
Para realizar el procedimiento de cálculo, como fue explicado previamente, se necesitan 2 pasos, primero evaluar el valor de la celda con la Rampadeprograma,
obtener el valor de la función e integrarlo. Dado que el generador pwm y el acceso a la memoria esta compartido por las celdas, estos dos pasos no se pueden hacer en la misma celda simultáneamente, porque los valores de todos los vecinos de la celda deben estar actualizados para obtener la dirección del vértice. Es por eso, que hay 2 habilitaciones, una para acceder al comparador, y otra para acceder a la memoria. Una vez que todos los vecinos de la celda fueron actualizados, se accede al
HCNT VVVVVVVVVVVVVVVVVV...VVVVVVVVVVVVVVVV...VVVVVVVVVVVVV...VVVVVVVVVVVVVVV LF LLL L L L LL...LL L L L L LL...LL L L L LL...LL LLLLLLLLLLLLLLLLL LG LLL L L L LL...LL L L L L LL...LL L L L LL...LL LLLLLLLLLLLLLLLLL CLKCont LLLLLLLLLLLLL L LL...LL L L L L LL...LL L L L LL...LL L L LLLLLLL CBusb LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLHH LX LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL L 0 1 45 46 47 0 1 45 46 47 0 45 46 47
Figura 6.14: Secuencia de señales para realizar el procesamiento S-CNN
Para realizar el procesamiento de la imagen, como primer paso se debe cargar la función que se desea aplicar (tanto F como G). Luego se selecciona el tipo de vecindad a la cual se le va a aplicar la función. Luego se aplica laRampadeprograma
(cada paso puede constar de uno o de dos ciclos de reloj, teniendo en cuenta si se va a utilizar una función o las dos). Como último paso se debe cargar el valor del contador en un registro. A continuación se explica con más detalle los pasos para realizar estas tareas.
1- Carga de la Función:
Como primer paso se deben cargar las funciones F y G en el registro serie. Una vez cargados los valores se almacenan en los latches, para que los buers transmitan la información a las 1536 celdas.
2- Selección de Vecindad y Operación entre F y G:
Con las señales SelV ecF y SelV ecG se selecciona la vecindad que van a tener
los registros F y G. Con la señal F oG(es una señal de 2 bits) se selecciona que tipo
de fusión se aplicara a la 3- Rampa de programa:
PWM de cada celda, y una vez que se tiene el valor de todos los vecinos, se obtiene el valor de la función. No se puede realizar la comparación y leer la función en la misma celda, dado que todos los vecinos tienen que tener actualizado su señal pwm. La obtención de la función se hace una vez que todos los vecinos de las celdas hayan realizado la comparación, en la forma de procesar de este circuito, la señal HPWM debe ir una columna más adelante que HCNT, tal como lo muestra la Fig. 6.14.
4- Almacenamiento del nuevo estado en un registro:
En este paso el valor del contador se almacena en uno de los dos registros de la celda. Con la señal CBusb se selecciona que al contador como entrada de dato de
todos los registros y luego con un pulso de reloj en el registro destino se almacena el valor, tal como lo muestra la Fig. 6.14, donde el valor del contador se almacena en el registro X.
La distribución de la memoria, y la precisión de los registros hacen que el circuito procese como máximo en 126∗2∗48 + 2 = 12098 donde 126 son los ciclos de la
Rampadeprograma para una imagen de 7 bits, 2 ciclos de reloj para aplicar la
función F y la función G, 48 ciclos para realizar la generación de la señal PWN, y dos más para realizar la integración de los valores de la función. Como minimo, son necesarios 1∗48 + 2 = 50 ciclos de reloj, para una imagen blanco y negro a la cual se le aplica una sola funcion(F o G).
HabSel VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV COL ZZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV REGF ZZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV SUMOut ZZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV EnSel ZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV CLK LLLLH LH LH LH LH LH LH LH LH LH LH LH LH LH LH LLLLL INTOut VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV HabSel EnSel 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 64 128 192 256 320 384 448 512 576 640 704 768 832 896 960 64 192 384 640 960 1344 1792 2304 2880 3520 4224 4992 5824 6720 7680
Figura 6.15: Simulación de uso del integrador
Uso del multiplicador y del divisor
Para usar tanto el divisor como el multiplicador se necesitan cargar los dos datos de 8 bits, de sus entradas, multiplicando y multiplicador, dividendo y divisor. Esto se hace a través de la señal loadA y LoadB. La Fig. 6.16 muestra la secuencia de
pasos para la utilización del multiplicador. Uso del Microprocesador
Para usar el microprocesador es necesario que la entrada microExtb este en el estado lógico alto. La memoria de programa en este caso no se integró, lo que signica que debe estar conectado al chip por medio de los pines denidos para ese n.
Las Fig 6.17 y 6.18 muestran pantallas de las simulaciones realizadas con el software ModelSim.
BusExterno VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV SelBusIn VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV EnSel VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV CLK LLH LLH LLH LLH LLH LLH LLH LLH LLH LLH LLH LLH LLLLLLLLLLLLLLL DATAIN VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV LatchA LHHHHH LLLLLLLLLLLLHHHHH LLLLLLLLLLLLHHHHH LLLLLLLLLLLLHHHHH LLLLLLLLLLLLLLLLLLLLLLLLLL LatchB LLLLLLLLHHHHH LLLLLLLLLLLLHHHHH LLLLLLLLLLLLHHHHH LLLLLLLLLLLLHHHHH LLLLLLLLLLLLLLLLLLL MultOut ZZZZZZZZZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV DivOut ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV BusIn VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
BusExterno MULT BusExterno DIV BusExterno MULT BusExterno DIV
MULT DIV MULT DIV
0 1 2 3 4 5 6 7 8 9 10 11 12
0 1 0 3 4 192 6 7 49 9 10 230
0 49
0.110000000=0,75 0.11100110 = 0.8984
0 1 0 3 4 192 6 7 49 9 10 230
Figura 6.16: Simulación de uso de multiplicador y divisor.