Gast
#2411061
Moin Moin! Wir sitzen seit längerer Zeit an einem Problem an unserer aktuellen Aufgabe. Auf einer Virtex 2 Pro FPGA-Plattform haben wir ein VHDL-Programm zur asynchronen Kommunikation implementiert. Wie auf dem Blockschaltbild zu sehen ist, erzeugt ein Produzent byteweise Zufallszahlen die dann in einem 16 Byte großen FIFO gespeichert werden. Im Consumer werden diese wieder ausgelesen und mit den dort erzeugten Zufallszahlen (selbes Generatorpolynom wie im Producer) verglichen und zur Kontrolle auf einer Sieben-Segement-Anzeige ausgegeben. Die Enable Eingänge des Producers und des Consumers werden von den FULL und EMPTY Signalen des FIFO invertiert angesteuert. Stimmen im Consumer die Daten nicht überein wird eine ERROR LED angeschaltet. Das ganze System funktioniert bei kleineren Taktfrequenzen im kHz-Bereich, doch leider nicht im MHz-Bereich. Bis 50 MHz muss es später (morgen) funktionieren. Erwähnt sei noch, dass die beiden Take von ausserhalb natürlich zuerst auf IBUFG und BUFG Treiber gegeben werden. Auffällig war außerdem, dass es längere Zeit (etwa 10 Sekunden) funktioniert, wenn der Producer schneller getaktet ist, als der Consumer. Umgekehrt erscheint die ERROR LED sehr viel schneller. Es muss irgendein generelles Timing-Problem sein. In unserer ModelSim-Simulation können wir die Fehler nicht nachstellen. Entsprechend ratlos sind wir zur Zeit. Jede Idee ist herzlich Willkommen :) Vielen Dank!!
