| Passwort vergessen?
Sie sind nicht angemeldet. |  Anmelden

Sprache auswählen:

Wumpus Gollum Forum von
Wumpus Welt der (alten) Radios
Sie sind nicht angemeldet.
 Anmelden

Historische Breitbandaufzeichnungen von AM-Bändern (Projekt Cohiradia)
  •  
 1 2 3 4 5 6
 1 2 3 4 5 6
Gestern 16:15
sturmmoeve 

50-99 Punkte

Gestern 16:15
sturmmoeve 

50-99 Punkte

Re: Historische Breitbandaufzeichnungen von AM-Bändern (Projekt Cohiradia)

Ich habe die Synthese für die FPGA Familien verschiedener genannter Boards durchgeführt. Am unproblematischsten war das für die Intel/Altera-Seite, da die HDL-Dateien dafür direkte Anweisungen enthalten. Typische Vertreter bei Trenz/Elektorboards sind der Cyclone IV den ich auch habe, V und 10.



Nach der Synthese war der Bitstream bereit um auf den FPGA geladen zu werden.

Beim Versuch mit dem GoWin war die Sache nicht so einfach, aber mit Hilfe der KI dennoch leicht zu meistern. Ich will meine Fallstricke aufzeigen und wie die KI das erfolgreich für mich gelöst hat.

Der erste Fehler war:

🚀 Starte Build-Prozess für Tang Primer 20K...

🔹 1/4: Synthese (Yosys)...

multirate_upsampler.v:82: ERROR: syntax error, unexpected TOK_ID, expecting '='


Das Problem, das Synthesetool Yosys für GoWin war noch auf Verilog-2005 eingestellt, die Erweiterung benutzt SystemVerilog, Yosys muss man dies über -sv
mitteilen.

yosys -p "read_verilog -sv $VERILOG_FILES; synth_gowin -top $TOP_MODULE -json hardware.json" > yosys.log

Beim nächsten Durchlauf wurde gemeldet:

🚀 Starte Build-Prozess für Tang Primer 20K...

🔹 1/4: Synthese (Yosys)...

ERROR: no valid mapping found for memory duc_top.baseband_sharpener_inst.coeff_rom_5


Die Erklärung:

Die Ursache: Altera/Intel-spezifische Attribute auf einem Gowin FPGADer Fehler no valid mapping found for memory entsteht, weil der Code in der baseband_sharpener.v stark für Intel/Altera FPGAs optimiert wurde. Dort steht bei den Koeffizienten-ROMs (und auch bei den Ringpuffern) das Attribut (* ramstyle = "M9K" *).

Die Lösung: Attribute anpassen

Öffne die Datei baseband_sharpener.v und suche nach Zeile 60 (im Abschnitt 2. DISKRETE KOEFFIZIENTEN ROMs).

Ersetze diesen Block:

(* ramstyle = "M9K" *) reg signed [15:0] coeff_rom_0 [0:63];
(* ramstyle = "M9K" *) reg signed [15:0] coeff_rom_1 [0:63];
(* ramstyle = "M9K" *) reg signed [15:0] coeff_rom_2 [0:63];
(* ramstyle = "M9K" *) reg signed [15:0] coeff_rom_3 [0:63];
(* ramstyle = "M9K" *) reg signed [15:0] coeff_rom_4 [0:63];
(* ramstyle = "M9K" *) reg signed [15:0] coeff_rom_5 [0:63];

Durch diesen Block:

(* rom_style = "logic" *) reg signed [15:0] coeff_rom_0 [0:63];
(* rom_style = "logic" *) reg signed [15:0] coeff_rom_1 [0:63];
(* rom_style = "logic" *) reg signed [15:0] coeff_rom_2 [0:63];
(* rom_style = "logic" *) reg signed [15:0] coeff_rom_3 [0:63];
(* rom_style = "logic" *) reg signed [15:0] coeff_rom_4 [0:63];
(* rom_style = "logic" *) reg signed [15:0] coeff_rom_5 [0:63];

Damit sagst du Yosys explizit: "Vergiss die Block-RAMs, baue diese kleinen Konstanten-Tabellen einfach aus normalen Logik-Gattern zusammen."

Weiter oben in der Datei werden auch die echten Speicher (ram_i_a_0 etc.) mit (* ramstyle = "M9K" *) deklariert. Meistens ignoriert Yosys das bei echten RAMs (mit Schreib-Port) elegant und mappt sie automatisch auf die Gowin-eigenen "BSRAMs". Solltest du dort gleich den nächsten Fehler bekommen, ändere das M9K dort einfach in den Yosys-Standard (* ram_style = "block" *). also von

(* ramstyle = "M9K" *) reg signed [15:0] ram_i_a_0 [0:127];
// ... bis ...
(* ramstyle = "M9K" *) reg signed [15:0] ram_q_b_5 [0:127];

nach

(* ram_style = "block" *) reg signed [15:0] ram_i_a_0 [0:127];
// ... bis ...
(* ram_style = "block" *) reg signed [15:0] ram_q_b_5 [0:127];

Dadurch sagst du Yosys ganz generisch, dass es hier echtes Block-RAM verwenden soll, welches dann passend auf die Gowin-eigenen BSRAMs gemappt wird.

Proaktiver Fix: Weitere Altera-Attribute entfernen

Da wir gerade beim Beseitigen von Altera-Spezialitäten sind, ziehen wir direkt noch zwei weitere Dateien glatt, die dir andernfalls gleich im nächsten Build-Versuch um die Ohren fliegen:In shared_sine_rom.v:
Hier steht für das physische ROM (* ramstyle = "M4K" *) reg signed [15:0] sine_quarter [0:1023];.
Ändere das M4K (ein alter Altera-Speichertyp) in das allgemeine (* rom_style = "block" *) um.

In sync_fifo.v:
Dort wird für den Speicher das Attribut (* ramstyle = "no_rw_check" *) verwendet.
Dieses Attribut kannst du ersatzlos löschen, sodass dort einfach nur noch reg [DATA_WIDTH-1:0] ram [0:FIFO_DEPTH-1]; steht.

Speichere die Dateien ab und feure dein Synthesescript noch einmal ab.

Soweit die KI Hilfe.

!
!!! Fotos, Grafiken nur über die Upload-Option des Forums, KEINE FREMD-LINKS auf externe Fotos.    

!!! Keine Komplett-Schaltbilder, keine Fotos, keine Grafiken, auf denen Urheberrechte Anderer (auch WEB-Seiten oder Foren) liegen!
Solche Uploads werden wegen der Rechtslage kommentarlos gelöscht!

Keine Fotos, auf denen Personen erkennbar sind, ohne deren schriftliche Zustimmung.

Den Beitrag-Betreff bei Antworten auf Threads nicht verändern!
Gestern 16:16
sturmmoeve 

50-99 Punkte

Gestern 16:16
sturmmoeve 

50-99 Punkte

Re: Historische Breitbandaufzeichnungen von AM-Bändern (Projekt Cohiradia)

Auch die Synthese für GoWin FPGA lief dann erfolgreich ab.




Provisorisch verkabelt konnte ich runtergeladenen Mittelwellenaufzeichnungen bereits frei im Kurzwellenraum platzieren.



In der Software ist der I/Q Modus auszuwählen und der Parameter für die Shiftfrequenz anzupassen. Die Bits des DACs sind nicht mehr frei einstellbar. Der Bus vom Host zum FPGA läuft jetzt immer auf 16 Bit. Die Bitanzahl des DACs muss man jetzt im Topmodul der Erweiterung einstellen und dann die Synthese und Programmierung neu anstarten. Die DAC-Werte sind dann im FPGA und über cst, tcl Datei fest verdrahtet.

Grüße
Roland

Zuletzt bearbeitet am 14.07.26 10:22

Datei-Anhänge
test.png test.png

Mime-Type: image/png, 274 kB

 1 2 3 4 5 6
 1 2 3 4 5 6
Waveshare-ESP32-P4-ETH-High-Performance-Development-Pre-Solder   Projekt   Breitbandaufzeichnungen   Intermodulationsverzerrungen   bearbeitet   Lang-Mittelwellen-Generator   ====================================================   Cohiradia   Intermodulationsfestigkeit   am-modulator-on-legacy-fpga-silicon   Historische   Heimsender-Kaskadierungen   radiomuseum   acompressor=threshold=-10dB   AM-Bändern   Mittelwellenaufzeichnungen   historischer-rundfunk-zum-budget-preis-der-cohiradiastreamer   Amateurfunk-SDR-Transceiver   Zuletzt   Software