Differences
This shows you the differences between two versions of the page.
| dtpr_sram_echo [2021/06/14 09:59] – created beckmanf | dtpr_sram_echo [2021/06/14 10:41] (current) – more echo beckmanf | ||
|---|---|---|---|
| Line 56: | Line 56: | ||
| * Niemals beide Treiber gleichzeitig treiben lassen (Kurzschluss) | * Niemals beide Treiber gleichzeitig treiben lassen (Kurzschluss) | ||
| * Beide Treiber dürfen nur kurzzeitig für weniger als 100 ns gleichzeitig nicht treiben | * Beide Treiber dürfen nur kurzzeitig für weniger als 100 ns gleichzeitig nicht treiben | ||
| + | |||
| + | Weil die Timingverifikation von Tri-State Leitungen nicht ganz einfach ist, sollen alle Tristatebuffer ausschliesslich auf dem Toplevel realisiert werden. Bidirektionale Ports sollen ausschliesslich auf dem Toplevel vorkommen. | ||
| ==== SRAM Zugriff ==== | ==== SRAM Zugriff ==== | ||
| Line 72: | Line 74: | ||
| * Zeichnen Sie ein Timingdiagramm für einen Lesezugriff. Im Timingdiagramm soll der Systemtakt, die Steuerleitungen für das SRAM, das Enablesignal für den Tri-State Treiber auf dem FPGA, das Enablesignal für das Leseregister und die Adress- und Datenleitungen zu sehen sein. | * Zeichnen Sie ein Timingdiagramm für einen Lesezugriff. Im Timingdiagramm soll der Systemtakt, die Steuerleitungen für das SRAM, das Enablesignal für den Tri-State Treiber auf dem FPGA, das Enablesignal für das Leseregister und die Adress- und Datenleitungen zu sehen sein. | ||
| * Zeichnen Sie ein Timingdiagramm für einen Schreibzugriff | * Zeichnen Sie ein Timingdiagramm für einen Schreibzugriff | ||
| + | |||
| + | ==== Echosystem ==== | ||
| + | |||
| + | Für das Echo muss jedes Audiosample im SRAM gespeichert werden. Immer wenn ein neues Audiosample ankommt, dann soll | ||
| + | |||
| + | * Das alte Audiosample aus dem SRAM gelesen werden | ||
| + | * Das neue Audiosample in das SRAM geschrieben werden | ||
| + | |||
| + | Das SRAM soll dabei als Ringbuffer organisiert werden, d.h. es gibt einen Adresszeiger, | ||
| + | |||
| + | * Zeichnen Sie ein Timingdiagramm mit allen SRAM Signalen, den Enablesignalen für den Tri-State Treiber und die Lese- und Schreibregister sowie dem Steuersignal für das Hochzählen des Adresszählers. Im Timingdiagramm soll auch das adc_valid Signal dargestellt werden. | ||
| + | * Erläutern Sie warum alle Timinganforderungen des SRAM erfüllt und ein sicherer Betrieb des Datenbus mit den Tristatetreibern gesichert ist. | ||
| + | |||
| + | Entwerfen Sie nun einen Steuerautomaten mit dem der zeitliche Ablauf realisiert wird. | ||
| + | |||
| + | ==== Implementierung ==== | ||
| + | |||
| + | * Kopieren Sie das de1_audio Design und benennen Sie es in " | ||
| + | * Fügen Sie alle Signale für das SRAM in den Toplevel ein und passen Sie die Testbench an. | ||
| + | * Ersetzen Sie das Modul " | ||
| + | * Im neuen Modul " | ||
| + | * Der Tri-State Buffer soll auf dem de1_sram_echo Toplevel beschrieben sein. Das Interface von " | ||
| + | * Zeichnen Sie ein Blockschaltbild mit dem Tri-Statetreiber, | ||
| + | * Definieren Sie das Interface vom Modul " | ||
| + | |||
| + | ==== Verifikation ==== | ||
| + | |||
| + | Für die Verifikation soll in die Testbench ein Modell des externen SRAM eingefügt werden. Skalieren Sie das Echosystem und des SRAM auf kleinere Speicherwerte um eine Simulation in angemessener Zeit zu ermöglichen. Schreiben Sie ein Verhaltensmodell des SRAM und zeigen Sie die Echofunktion im Simulator. | ||
| + | |||
| + | Wenn Sie sicher sind, dass es zu keinem Kurzschluss auf dem bidirektionalen Datenbus kommt, dann probieren Sie das Design auf dem FPGA Board aus. | ||
| + | |||
| + | |||
| + | |||