Variables globales en Quartus

Cuestiones generales sobre uso de Quartus y diseño digital con él (las cuestiones que sean específicas de UnAmiga, dirigirlas a "Desarrollo" del foro UnAmiga)
Avatar de Usuario
jepalza
Spartan 3
Mensajes: 226
Registrado: 14 Ago 2018, 18:51

Variables globales en Quartus

Mensaje por jepalza » 17 Ago 2018, 19:07

Si defines variables globales en Quartus, al estilo "`define LOQUESEA 1000" y luego, necesitas emplear su hermana "IF" al estilo "ìf LOQUESEA=1000", debes saber, que las variables deben definirse como globales, para que "todos" los módulos que componen el proyecto, las vean. Si no lo haces de ese modo, al llegar a un módulo externo, donde no se ha definido la variable, es como si no existiera, por lo tanto, como si fuera valor "0", con lo cual, esa condición, nunca se cumple, y te puedes volver loco buscando el error.

Ahora viene el cachondeo :oops: : Lo mas seguro, es que en algún lugar del Quartus, se pueda activar una casilla que diga, que las variables son globales, no locales (no de cada módulo, sino de todos ellos), al estilo de como tiene el ISE WebPack de la placas XILINX.

Como yo soy novato en esto, y autodidacta, no he encontrado esa opción, así que, el mejor truco, lo he encontrado modificando el fichero de lectura del proyecto, el que lleva extensión ".QSF" y va siempre acompañando al fichero principal del proyecto, extensión ".QPF"
Ese fichero QSF es un fichero de texto normal y corriente, editable con el notepad++. Lo abrimos y buscamos nuestro fichero TOP (ademas, siguiendo las normas usadas por el mismo Quartus o por la gente que desarrolla en él, generalmente, lleva las letras "TOP" en su nombre.
Una vez localizado LO MOVEMOS (cortar/pegar la línea entera) y lo ponemos SOBRE el primero de todos los ficheros del proyecto. El Quartus al leer este fichero, sabe que el primero de todos, el TOP, es el principal, y todo lo que va dentro de este TOP definido con "`define" se convierte en global.
Ejemplo de TOP dentro del QSF:
set_global_assignment -name VERILOG_FILE ../../rtl/soc/minimig_mist_top.v

Como podéis ver, soy muy amigo del notepad++ (https://notepad-plus-plus.org/download/v7.5.8.html), pero si no queréis usar algo tan arcaico, desde dentro del Quartus, se puede hacer:
menu "project", submenu "Add/remove files in project"
Sale el menú con todos los ficheros del proyecto. Elegimos de la lista, el TOP (o fichero con los "defines", no tiene que ser el TOP), y en los botones del lado derecho, vamos pulsando "UP" hasta dejarlo arriba del todo, aceptamos y listo, ya es el principal. Si luego, vamos al fichero QSF con el notepad, veremos que ya está arriba.

Responder

Volver a “Quartus”