Va benissimo il file .qar zippato
Intanto come prima cosa cerchiamo di analizzare i Warning generati dal compilatore:
Warning (10850): Verilog HDL warning at LCDImage.v(76): number of words (504) in memory file does not match the number of elements in the address range [0:511]Ci dice che il file di memoria è più piccolo di 512 byte
Warning (127007): Memory Initialization File or Hexadecimal (Intel-Format) File ".." contains "don't care" values -- overwriting them with 0sQuartus completa il file di memoria con dei don't care che vengono sovrascritti con degli zeri nell'elaborazione finale, ad ogni modo non sono questi i veri problemi, per risolvere questi due Warning puoi aggiungere 00 00 00 00 00 00 00 00 al file Image.mif
Warning (12241): 1 hierarchies have connectivity warnings - see the Connectivity Checks report folderAbbiamo dei problemi che possiamo visualizzare nel report di compilazione "Analysis & Syntesis" sotto alla cartella "Connectivity Checks", sono per LCDImage e sono:
Data -> Stuck at GND
We -> Input port expression (32 bits) is wider than the input port (1 bits) it drives. The 31 most-significant bit(s) in the expression will be dangling if they have no other fanouts.
we[-1] -> Stuck at GND
In sostanza utilizzi la RAM in sola lettura e quindi è corretto che Data e We siano collegati a GND, We (write enable) però è specificato come numero a 32 bit, per eliminare il warning puoi sostituire:
- Code: Select all
single_port_ram_with_init Image(8'h0, Counter, 0, clock, Data);
con
- Code: Select all
single_port_ram_with_init Image(8'h0, Counter, 1'b0, clock, Data);
Warning (332060): Node: CLOCK_50 was determined to be a clock but was found without an associated clock assignment.Warning (332060): Node: Controller_5110:inst2|C5110_InternalClock:IC|bit_clock was determined to be a clock but was found without an associated clock assignment.Un gated clock non è una buona idea su una FPGA, elimina la porta NOT sul segnale di clock per eliminare i rimanenti warning nell'analisi e sintesi
Warning (332153): Family doesn't support jitter analysis.Passiamo adesso al file SDC, il comando
derive_clock_uncertainty che permette di calcolare automaticamente l'incertezza del jitter ed altri effetti non è supportato dalla famiglia Cyclone II, eliminandolo si eviterà il Warning
Per un'analisi delle tempistiche cancella il contenuto del file SDC ed inserisci le seguenti righe:
- Code: Select all
create_clock -name "CLOCK_50" -period 20.000ns [get_ports {CLOCK_50}]
derive_pll_clocks -create_base_clocks
Ti consiglio di utilizzare il menù "Assignments / TimeQuest Timing Analyzer Wizard" per generare il file SDC le prossime volte
Warning (332060): Node: Controller_5110:inst2|C5110_InternalClock:IC|bit_clock was determined to be a clock but was found without an associated clock assignment.Il segnale bit_clock è un clock ma non ha assegnamenti, puoi aggiungere al file SDC il comando
- Code: Select all
derive_clocks -period 1000.000ns
per indicare che gli ulteriori clock rilevati (oltre a CLOCK_50) devono avere periodo massimo ad esempio di 1 MHz, adesso potrai analizzare i risultati di TimeQuest
Appena ho tempo finisco di scrivere a proposito della RAM
Ciao