Forum: FPGA, VHDL & Co. Frage zu merkwürdigem Verhalten


von TheMason (Gast)


Lesenswert?

Hallo Leute,

ich habe wiedermal ein Problem bei dem ich nicht weiterkomme.
Vorab sei gesagt das ich keinen Code posten kann (der ist zum einen zu 
groß, zum zweiten unkommentiert und zum dritten hätte wahrscheinlich eh 
keiner Zeit und Lust sich durch 30 Dateien zu klicken).
Ich bin (wiedermal oder immernoch) dabei mir meinen Audio-Prozessor zu 
basteln.
Ich bin mittlerweile in der Lage Audio-Signale einzulesen und auszugeben 
(I2S) und zu verarbeiten. Dazu habe ich mir eine 32x32-Bit MAC Einheit 
programmiert welche ihre ablauf-informationen aus einem Block-Ram nimmt.
Das ganze wird über ein SPI-Interface angesteuert. Der SPI-Datenstrom 
wird über einen Dispatcher (Mux) an mehrere Bausteine gegeben (der 
Audio-Prozessor ist einer dieser Bausteine).
Es funktioniert alles hervorragend. Mein Problem ist nun folgendes :
Sobald ich änderungen am Audio-prozessor mache (z.b. das ich die 
Ablaufsteuerung, sprich das BlockRAM, anschließe um es von einem uC aus 
zu programmieren) läuft nichts mehr.
Verwende ich beispielsweise einen einfachen DCM als Takt-teiler, läuft 
der Kern zwar noch, gibt aber nur müll raus (das Audio-Signal verzerrt).
Weiterhin habe ich folgende kuriosität :
Unter ISE 6.2 lässt sich alles synthetisieren und implementieren. Unter 
ISE 8.2 schafft der das nicht mehr. Es bleiben immer 2 "leitungen" übrig 
die nicht geroutet werden können.
Ich vermute das ich mir irgendwo in meinem Design was "einfange", bzw. 
irgendwo einen kleinen Fehler gemacht habe (ich denke dabei noch 
nichtmal an den audio-prozessor sondern eher an den SPI-Dispatcher)
der das ganze System Amok laufen lässt.
Das Amok laufen geht sogar soweit das Teile die nichts mit dem Prozessor 
zu tun haben (z.b. noch eine komponente um die 7-Segement Anzeige des 
Spartan 3 Boards am laufen zu bringen) sich gar nicht mehr ansprechen 
lassen.

Mir ist klar das mir keiner sagen kann : "Schau mal in Zeile 33 der 
Datei blablabla ...", aber woran kann es liegen das ein Design welches 
läuft, durch eine Änderung, die zudem auch NICHT die Synchronität des 
Designs verletzt, sich auf das gesamte System auswirkt ?
Ich bin mir ziemlich sicher das ALLE signale die ich verwende mehrfach 
eingeclockt sind (3 FF pro signal, und ich habe nur 4 Signale die 
eingeclockt werden müssen : SPI_CLK, SPI_CS, I2S_BCLK, I2S_LRCLK, die 
restlichen Signale übernehme ich wenn meine externen Clocks stabil 
sind).
Vielleicht werde ich doch noch den Code posten (zumal es für das 
Audio-Projekt hier ist, welches ja immer noch "brach" liegt), aber ich 
möchte ehrlich gesagt erstmal weiterkommen.

Gruß
Rene

von J. S. (engineer) Benutzerseite


Lesenswert?

Da bleibt einen nur, Designs teilweise abzuschalten, um die 
Rückwirkungen zu testen. In einem gesunden Design sollte sowieso jedes 
größere Modul einen Testport haben, mit dem man es konfigurieren kann, 
um zum Beispiel Standardaten auszugeben oder eine Standardprodzeudrur / 
Ablauf zu fahren.

Es müsste sich dann eigenlich rasch finden lassen, ob irgendwo was an 
falsch übernommenen Takten, fehl laufenden oder angehaltenen state 
machines bzw logischen Ablaufproblemen exisitert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.