Todos los diseños necesitan estructura para facilitar el desarrollo y mantenimiento. Todos usamos la abstracción en nuestros diseños, ya sea electrónica, software o máquinas. En este artículo, veremos cómo usar Hierarchy en código VHDL.
Todos los diseños necesitan estructura para facilitar el desarrollo y mantenimiento. Todos usamos la abstracción en nuestros diseños, ya sea electrónica, software o máquinas. En este artículo, veremos cómo usar Hierarchy en código VHDL.
Hasta ahora, todo el código VHDL está en un archivo en un nivel. Por ejemplo, al diseñar una placa de circuito impreso, no se diseña una placa completa a partir de componentes discretos. Sin embargo, diseñamos piezas como microcontroladores, chips de memoria u otros dispositivos como “componentes” que pueden realizar funciones. En algunos casos, la misma parte puede usarse varias veces en el tablero. No quiero duplicar este trabajo.
Si piensa en el diseño de VHDL un poco como el diseño de PCB, puede pensar en él como un PCB sin procesar de un solo nivel con muchos dispositivos o componentes. El PCB en sí no realiza otra función que la de unir todos los cables y conectarlos al mundo exterior. Este mismo enfoque también se puede realizar en VHDL, como se muestra en el siguiente ejemplo.
Este ejemplo usó un diseño muy básico con solo unos pocos componentes en el nivel de la señal. Sin embargo, si sabe cómo hacerlo, puede agregar fácilmente tantas capas como desee. Veamos primero el código VHDL.
Enumere todos los “componentes” que usa en la parte superior de la sección Arquitectura de su código. El nombre que sigue a la palabra clave COMPONENT es el nombre de la ENTIDAD del dispositivo o componente que se va a usar, generalmente en un archivo separado. Puede ver que también enumera la definición de PUERTO que le permite ver la interfaz. Eso es todo lo que necesitas saber sobre estos bloques. Mirando hacia atrás en el diseño, vemos que hay dos dispositivos NEGROS y un dispositivo ROJO y NARANJA. Sin embargo, solo tuve que enumerar las partes NEGRAS una vez.
Ahora tenemos que considerar conectar las partes e incorporar el mundo exterior. Esto se puede demostrar en la siguiente sección de código. Aquí simplemente enumeramos los componentes, sus MAPAS DE PUERTOS o sus conexiones, y las líneas de señal a las que queremos conectarlos. Para algunas señales, por ejemplo, se conectan directamente con el mundo exterior.A través de las señales A, B, C, etc.
Las señales S1, etc. se utilizan como pistas de interconexión en la PCB para enrutar señales de un componente a otro.
Siempre trato de generar un diagrama de bloques antes de escribir cualquier código porque puede ser difícil rastrear todo el diseño a partir de una lista de componentes interconectados. De esta forma, puede segmentar su diseño y bloquear características y áreas individuales de su diseño. Esto hará que sea más fácil conectar todo más tarde.
Entonces, veamos qué produce el software después de todo esto. Desde el primer nivel (prácticamente todo el diseño o las conexiones de PCB si lo desea) puede ver todas las conexiones de nivel superior como A, B, C, etc. más niveles
Aquí puede ver claramente cada componente ingresado en el diseño y la reutilización de los componentes NEGROS. Todo el enrutamiento y las conexiones son como vimos por primera vez en el diseño ideal de PCB.
He incluido un nivel más para mostrar la integridad del componente interno. Hasta ahora no hemos hablado de sus partes internas. En cierto modo, ese es el punto. Como piezas completamente abstractas, estos bloques pueden contener cualquier cosa. También es posible cambiar, modificar o reescribir el espaciado sin afectar el resto del diseño, siempre que la interfaz permanezca sin cambios.
Puede ver puertas lógicas simples en el interior, pero podrían ser interconexiones entre otros componentes o más. En lo que respecta a la arquitectura FPGA, no existen componentes lógicos simples o básicos. Siempre hay más niveles, pero no hay niveles. Por ahora tienes que sumergirte.