adc-fpga-Schnittstellenrichtlinien für vhdl

Ich möchte 3 separate ADS8548 ADC mit XC3S200AN fpga verbinden. Das FPGA beherrscht die Steuerleitungen der ADCs und erfasst auch die digitalen Daten von den ADCs über den parallelen Bus.

Ich muss Daten von allen drei Adcs gleichzeitig erfassen. Ich bin VHDL-Anfänger und habe keine Ahnung von der Zeitspanne der Datenerfassung.

Was muss ich in VHDL beachten, um sicherzustellen, dass alle drei Adcs effektiv gesteuert werden und Daten ohne zeitliche Verzögerung zwischeneinander erfasst werden?

Antworten in Bezug auf Logikblöcke im Code und Beispielcode für die ADC-Datenerfassung sind sehr hilfreich.

Antworten (2)

Sie müssen einen Impuls an CONVST_A, CONVST_B, CONVST_C und CONVST_D liefern, damit alle drei ADCs ihre Konvertierungen starten. Verwenden Sie eine externe Uhr (XCLK), um die Konvertierungen zu synchronisieren. Überprüfen Sie den Ausgang BUSY/INT auf das Ende der Konvertierung:

Wenn Bit C27 = 1 (BUSY/INT in CONFIG), ist dieser Pin ein Interrupt-Ausgang. Dieser Pin geht nach Abschluss einer Konvertierung auf High und bleibt bis zum nächsten Lesezugriff High. Dieser Modus kann nur verwendet werden, wenn alle acht Kanäle gleichzeitig abgetastet werden (alle CONVST_x miteinander verbunden). Die Polarität des BUSY/INT-Ausgangs kann mit Bit C26 (BUSY L/H) im Konfigurationsregister geändert werden. ( Seite 16 )

Sie können dann die Daten der verschiedenen ADCs in mehrere Register einlesen. In diesem Moment ist das Timing für die Synchronität der Konvertierung nicht mehr relevant.

Ich wusste nicht, dass xclk verwendet wird, um alle drei Adcs zu synchronisieren. danke für den hinweis. In meinem Fall muss ich die Position eines unbemannten Fahrzeugs anhand der Daten von Beschleunigungsmessern steuern, die an mehreren Stellen des Fahrzeugs angebracht sind. Ich habe einen LPC-Controller gewählt, um diese mit einer MCU (Motorsteuereinheit) zu kommunizieren. Das Einlesen der Daten in mehrere Register und das gleichzeitige Verarbeiten all dieser Daten ist also zeitkritisch, oder? möchtest du darauf antworten? Bitte helfen Sie mir auch mit VHDL-Code für die Datenerfassung, den ich mir ansehen und ein paar Gedanken machen kann, bevor ich meinen eigenen starte.
@Vicky - Tut mir leid, keine VHDL-Erfahrung, also fürchte ich, dass ich dir da nicht helfen kann. Wie zeitkritisch die Datenerfassung und -verarbeitung sein wird, hängt von der Geschwindigkeit der Fahrzeugbewegung ab. Ich denke, das Wichtigste ist, dass die ADCs synchronisiert sind, sodass ihre Daten korreliert sind. Wenn sich das Fahrzeug nur langsam bewegt, ist die Berechnungszeit weniger kritisch.

Meiner Meinung nach ist es am besten, 3 Sätze von SPI-Leitungen auf dem FPGA einzurichten. Eine für jeden IC. Teilen Sie die Uhrenlinie, wie Stevenh sagte. Erstellen Sie einen SPI-Block, konfigurieren Sie ihn als Master und lassen Sie ihn mit einem einzelnen Slave kommunizieren. Starten Sie dann eine Schaltplandatei. Setzen Sie 3 Ihrer SPI-Blöcke auf den Schaltplan. Erstellen Sie einen neuen Block, der als Controller fungiert. Verwenden Sie eine Zustandsmaschine, um die Übertragung zu starten, und lassen Sie sie die Werte vom ADC sperren, sobald die Übertragung abgeschlossen ist. Sie können diesen Block verwenden, um die Werte an die Blöcke zu verteilen, die die Verarbeitung durchführen. Denken Sie daran, dass VHDL eine nebenläufige Sprache ist. Wenn Sie schon eine Weile in C programmieren, wird es ein wenig dauern, bis Sie vom sequentiellen in den gleichzeitigen Modus kommen.

Da Sie nicht gesagt haben, welche Art von digitaler Erfahrung Sie haben, würde ich dieses Buch empfehlen. http://www.pearsonhighered.com/tocci/ Es gibt Unmengen von VHDL-Beispielen für alle digitalen Bausteinschaltungen.

Wenn das nicht genug Informationen für den Einstieg sind, werde ich später etwas aufsetzen.