param‐bitk - Obijuan/Icestudio-Digital GitHub Wiki
Circuito 003-param-bitk
⬅️ Prev | Navegar por los circuitos | Next ➡️ |
---|
Contenido
- Ficha: Bit genérico constante. Parámetro
- Descargas
- Descripción
- Metacircuitos y circuitos reales
- Falso cable
- Utilidad de los parámetros
- Circuitos LEDON-INF y LEDOFF-INF
- Cronograma
- Recursos
- Conceptos nuevos
- Enlaces
- Autor
- Licencia
Ficha: Bit genérico constante. Parámetro
Descargas
- Circuito Icestudio: param-bitk.ice
- Ficha circuito: (SVG) (PDF) (PNG)
Descripción
Este circuito saca un Bit genérico por el pin de salida, donde hay conectado un LED. Es el primer circuito donde se utiliza un parámetro para definir este bit genérico. El parámetro empleado se ha denominado Test, y lo que hace este circuito es enviar este parámetro TEST al LED de salida. Como el valor usado para Test es 1, el circuito enciende el LED. Se comporta exactamente igual que el circuito ax-bit1. Decimos que son circuitos equivalentes
Matemáticamente podríamos describir este circuito como el que realiza esta asignación $$LED = Test$$
Es decir, que saca por el LED el valor definido en Test (que es un bit que vale 0 ó 1)
De esta forma, el comportamiento del circuito depende del valor asignado al parámetro Test
- Cuando $Test = 1$ el circuito es equivalente a ax-bit1. El LED está encendido indefinidamente
- Cuando $Test = 0$ el circuito es equivalente a ax-bit0. El LED está apagado siempre
Las constante genéricas, que representan un bit constante, se implementan en Icestudio con el bloque generic disponible en la colección iceK. Por eso los denotamos como icek.generic
Para definir el nombre de la constante y asignarle un valor, utilizamos el bloque de Icestudio Constant accesible desde el menú Basic. Lo denotamos como basic.constant
Metacircuitos y circuitos reales
El circuito param-bitk es en realidad un Metacircuito. El dibujo NO coincide con el circuito real que se implementa en la FPGA, sino que describe 2 circuitos reales diferentes según el valor de la constante Test. Como ya hemos visto anteriormente, si $Test=1$ el circuito real es ax-bit1. Pero si $Test=0$, el circuito real ahora es ax-bit0
Esta conversión del metacircuito en un circuito u otro se produce en el momento de la síntesis. El sintetizador lee el valor del parámetro y genera el circuito correspondiente, que es el que se carga en la FPGA. Estas ideas se muestra en la siguiente figura:
Los metacircuitos son herramientas muy potentes. Se utilizan en la fase de diseño y nos permiten ahorrar tiempo y describir con un esquema simple varios circuitos reales. El sintetizador lee el valor de los parámetros del metacircuito, asigna los valores correspondientes, construye el circuito real y lo sintetiza en la FPGA
Si mediante "Rayos x" pudiésemos ver el circuito que hay dentro de la FPGA, no aparecería nada relacionado con los parámetros. En el ejemplo del circuito param-bitk no veríamos nada del parámetro Test. Sólo veríamos el circuito real: ax-bit1 ó ax-bit0
Lo que utilizamos en los diseños son normalmente metacircuitos, pero nunca empleamos ese término. Siempre los llamamos circuitos, porque en nuestra cabeza estamos pensando en el circuito real que se generará a partir del metacircuito
Falso cable
El bit genérico se especifica mediante 2 bloques en Icestudio. Por un lado tenemos el bloque icek.generic que representa un bit genérico. Por otro lado usamos el bloque Basic.constant de Icestudio para definir un nombre y un valor para el bit genérico
La asignación de un nombre y valor al bit genérico se realiza uniendo ambos bloques mediante un cable. Pero en realidad, este cable es un Falso cable. Sólo existe en el Metacircuito, pero desaparece en el circuito real
En Icestudio distinguimos los falsos cables de los cables reales porque los primeros entran siempre por la parte superior de los bloques, mientras que los cables reales llegan al bloque por la izquierda y salen por la derecha. Pero ambos cables se dibujan igual, con el mismo color y grosor
Utilidad de los parámetros
Ya hemos visto cómo en nuestros (Meta)circuitos podemos definir valores genéricos de bits, a los que les asignamos un nombre y un valor. ¿Qué utilidad tiene esto?. Muchas. El uso principal de parámetros de bits es para configurar partes de nuestro circuito. Típicamente se usan para activar o no partes del circuito. Como esto se hace en la fase de síntesis, si hemos deshabilitado una parte del circuito, porque no la vamos a usar, NO SE SINTETIZA. Y por tanto no consume recursos
Otro uso frecuente es el de establecer valores iniciales para las señales
En icestudio podríamos optar por no usar bits genéricos y sustituirlos directamente por los bloques bit-1 ó bit-0. Es decir, podríamos trabajar con el circuito real directamente. Sin embargo, cuando queremos establecer configuraciones o valores iniciales, aunque se puede hacer de esta manera, es mucho más cómodo hacer mediante parámetros. En el editor de Icestudio es más rápido establecer el valor de la constante (0 ó 1) que cambiar un bloque por otro. Además, si usamos los parámetros, la persona que abre el circuito intuye que son bits que se pueden cambiar. Mientras que el uso de bits fijos suele indicar que siempre deben estar con ese valor, o de lo contrario el circuito no funcionará
Esa será la semántica que utilizaremos en los circuitos futuros: Bit genérico con parámetro para indicar que ese valor se puede cambiar. Bloques Bit-0 y Bit-1 para indicar que NO se puede cambiar
Circuitos LEDON-INF y LEDOFF-INF
El (Meta)circuito param-bitk agrupa en un sólo esquema las implementaciones de los dos circuitos que ya conocemos: LEDON-INF, que enciende un LED indefinidamente y LEDOFF-INF que lo mantiene apagado
- El circuito param-bitk(Test=1) es una implementación de LEDON-INF
- El circuito param-bitk(Test=0) es una implementación de LEDOFF-INF
Cronograma
Dado el que circuito param-bitk en realidad representa dos circuitos reales diferentes, en el cronograma se han incluido ambos. Se ha dibujado su señale de salida, D0 para ambos circuitos, que se diferencian en el valor del parámetro Test
- Con $Test=1$ el cronograma es el mismo que el del circuito ax-bit1
- Test $Test=0$ el cronograma es el mismo que el del circuito ax-bit0
Recursos
Los recursos consumidos dependen del circuito real sintetizado
- Parámetro $Test=1$. Circuito Real: ax-bit1
Recurso | Candidad | Máximo | Descripcioin |
---|---|---|---|
LC | 1 | 7680 | Celdas lógicas |
IO | 1 | 256 | Bloques de E/S |
- Parámetro $Test=0$. Circuito Real: ax-bit0
Recurso | Candidad | Máximo | Descripcioin |
---|---|---|---|
LC | 2 | 7680 | Celdas lógicas |
IO | 1 | 256 | Bloques de E/S |
Conceptos nuevos
- Metacircuito
- Circuito Real
- Bit genérico: Bloque icek.generic
- Parámetro: Creado con el bloque Basic.contant
- Nombre del parámetro
- Valor del parámetro
- Falso cable: Asignación de nombre y valor a un bit genérico, conectando los bloques Basic.constant con icek.generic
Enlaces
- Colección iceK: Colección para Icestudio. Constantes. Cotiene el bloque generic usado para definir constantes genéricas de 1 bit
Autor
- Juan González-Gómez (Obijuan)