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 : 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.
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)
Ir a
- General
- ↳ Avisos
- ↳ Sobre la web
- ↳ Cajón de sastre
- ↳ Otros chips/placas
- ↳ ZX-EVO
- ↳ ReVerSE-U16
- ↳ FleaFPGA
- ↳ MSX Zemmix Neo
- ↳ Linchee Tang
- UnAmiga
- ↳ General
- ↳ Cores
- ↳ Arcades
- ↳ Atari 800XL
- ↳ CBS Colecovision
- ↳ Commodore 64
- ↳ Minimig A500/A600
- ↳ MIST AGA A1200
- ↳ MSX (MSX1FPGA)
- ↳ MSX2+ (One Chip MSX)
- ↳ Next186 PC-XT
- ↳ Nintendo Entertainment System (NES)
- ↳ Nintendo Gameboy
- ↳ PC-Engine (Turbografx)
- ↳ S80186 PC-XT con CGA
- ↳ Sega Master System
- ↳ Sega Megadrive
- ↳ Sinclair QL
- ↳ SPEC256 de Iñigo Ayo
- ↳ TS-Conf (ZX-EVO)
- ↳ ZX Spectrum
- ↳ Otros cores / En preparación
- ↳ Placa UnAmiga
- ↳ Firmware
- ↳ Hardware
- ↳ Desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- ↳ In English
- ZXDOS y ZX-DOS+
- ↳ General
- ↳ Cores
- ↳ Arcades
- ↳ Amstrad CPC
- ↳ Atari 2600
- ↳ Atari 800
- ↳ C64
- ↳ Colecovision
- ↳ MSX (MSX1FPGA)
- ↳ MSX2+ (alias MSX3, ocm)
- ↳ Next186 PC-XT
- ↳ Nintendo NES
- ↳ Pong AY-3-8500
- ↳ Sega Master System
- ↳ Vectrex
- ↳ Videopac
- ↳ ZX Spectrum
- ↳ ZX Spectrum Next
- ↳ Otros cores / En preparación
- ↳ Placas ZX-DOS y ZX-DOS+
- ↳ Firmware
- ↳ Hardware
- ↳ Desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- ↳ In English
- ZX-TRES, ZX-TRES+ y ZX-TRES++
- ↳ General
- ↳ Cores
- ↳ Placas ZX-TRES, ZX-TRES+ y ZX-TRES++
- ↳ Firmware
- ↳ Hardware
- ↳ Desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- ↳ In English
- ZX Spectrum Next / N-GO
- ↳ General
- ↳ Cores
- ↳ Spectrum Next
- ↳ Spectrum ZX-Uno
- ↳ MSX1
- ↳ NES
- ↳ Placa ZX Spectrum Next
- ↳ Firmware
- ↳ Hardware
- ↳ Software de desarrollo
- ↳ Placa N-GO
- ↳ Firmware
- ↳ Hardware
- ↳ Software de desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- Pano Logic
- ↳ General
- ↳ Documentación y howtos
- ↳ Cores
- ↳ In English
- MiST / Mistica FPGA16 / SiDi
- ↳ General
- ↳ Cores
- ↳ Menú de arranque
- ↳ Acorn Archimedes
- ↳ Acorn BBC Micro
- ↳ Acorn Electron
- ↳ Amstrad CPC
- ↳ Apogee BK-01 / Radio-86K
- ↳ Apple II+
- ↳ Apple Macintosh
- ↳ Atari 2600
- ↳ Atari 5200
- ↳ Atari 800
- ↳ Atari ST
- ↳ Bally Astrocade
- ↳ Chip8
- ↳ Commodore 16, Plus/4
- ↳ Commodore 64
- ↳ Commodore Amiga
- ↳ Commodore PET
- ↳ Commodore VIC-20
- ↳ ColecoVision
- ↳ Electronika BK0010 - BK0011M
- ↳ HT1080Z - School Computer / EACA VideoGenie / TRS-80 Model 1
- ↳ Jupiter Ace
- ↳ Laser 310
- ↳ Mattel Aquarius
- ↳ Microkey Primo
- ↳ MSX2+ (One Chip MSX)
- ↳ Nintendo Gameboy
- ↳ Nintendo NES
- ↳ Oric 1 / Atmos
- ↳ PC-Engine (consola TurboGrafx)
- ↳ SAM Coupè
- ↳ Sega Master System
- ↳ Sega Mega Drive (Genesis)
- ↳ Sinclair ZX Spectrum
- ↳ Sinclair QL
- ↳ Sinclair ZX80/ZX81
- ↳ Sinclair ZX81
- ↳ Specialist/MX
- ↳ Vector-06C
- ↳ Vectrex
- ↳ Videopac
- ↳ Videoton TV-Computer
- ↳ Arcade cores
- ↳ Cores en preparación
- ↳ Placa MiST - Mistica FPGA16 - SiDi
- ↳ Firmware
- ↳ Hardware
- ↳ Software de desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- MiSTer
- ↳ General
- ↳ Cores
- ↳ Menú de arranque
- ↳ Acorn Archimedes
- ↳ Acorn BBC Micro
- ↳ Amstrad CPC
- ↳ ao486
- ↳ Apogee BK-01 / Radio-86K
- ↳ Apple II+
- ↳ Apple Macintosh Plus
- ↳ Atari 2600
- ↳ Atari 5200
- ↳ Atari 800
- ↳ ColecoVision
- ↳ Commodore 16, Plus/4
- ↳ Commodore 64
- ↳ Commodore Amiga
- ↳ Commodore PET
- ↳ Commodore VIC-20
- ↳ Electronika BK0010 - BK0011M
- ↳ Jupiter ACE
- ↳ Mattel Aquarius
- ↳ MSX2
- ↳ Multicomp
- ↳ Nintendo Gameboy
- ↳ Nintendo NES
- ↳ PC-Engine (consola TurboGrafx)
- ↳ SAM Coupè
- ↳ Sega Master System
- ↳ Sega Megadrive
- ↳ Sinclair QL
- ↳ Sinclair ZX Spectrum
- ↳ Specialist/MX
- ↳ TS-Conf
- ↳ Vector-06C
- ↳ Vectrex
- ↳ X68000
- ↳ Arcade cores
- ↳ Cores en preparación
- ↳ Placa MiSTer
- ↳ Firmware
- ↳ Hardware
- ↳ Software de desarrollo
- ↳ Accesorios
- ↳ Preguntas y peticiones
- ↳ Recursos en Internet
- ATLAS
- ↳ General
- ↳ V001&V002
- ↳ V003
- ↳ Cores
- ↳ Firmware/Framework
- Placas OpenFPGA - "FPGAWars"
- ↳ Alhambra
- ↳ Colorlight
- ↳ IceSugar
- ↳ ULX3
- ↳ Otras placas libres
- Xilinx
- ↳ Chips
- ↳ Placas entrenadoras
- ↳ ISE
- ↳ Vivado
- Altera / Intel
- ↳ Chips
- ↳ Placas entrenadoras
- ↳ Quartus
- Diseño con HDL
- ↳ General
- ↳ VHDL
- ↳ Verilog / SystemVerilog
- ↳ Otros lenguajes HDL