[[dtpr_sram_echo]]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

dtpr_sram_echo [2021/06/14 09:59]
beckmanf created
dtpr_sram_echo [2021/06/14 10:41] (current)
beckmanf more echo
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,​ der mit einer Modulofunktion für jedes ankommende Audiosample hochzählt. Diese Adresse wird dann für den Zugriff auf das SRAM benutzt. Führen Sie dazu ein Steuersignal ein, dass den Adresszähler um eins erhöht. Auch dieses Steuersignal soll aus dem Steuerautomaten kommen. Jetzt soll der Gesamtablauf für das Echosystem mit dem Lese- und dem Schreibzugriff entworfen werden. Der Zugriff wird mit dem adc_valid Signal gestartet. Die Schreibdaten aus dem Audiomodul sollen auch in einem Register zwischengespeichert werden.
 +
 +  * 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 "​de1_sram_echo"​ um. Kopieren Sie auch die Testbench und passen Sie alle entitynamen an.
 +  * Fügen Sie alle Signale für das SRAM in den Toplevel ein und passen Sie die Testbench an.
 +  * Ersetzen Sie das Modul "​ringbuf"​ durch das Modul neue Modul "​sram_echo"​.
 +  * Im neuen Modul "​sram_echo"​ soll der Steuerautomat,​ das Leseregister,​ das Schreibregister und der Adresszähler sein.
 +  * Der Tri-State Buffer soll auf dem de1_sram_echo Toplevel beschrieben sein. Das Interface von "​sram_echo"​ darf keine bidirektionalen Ports haben.
 +  * Zeichnen Sie ein Blockschaltbild mit dem Tri-Statetreiber,​ dem Schreib- und Leseregister,​ dem Adressregister,​ dem Steuerautomaten und dem SRAM. Machen Sie im Blockschaltbild deutlich wo die FPGA Pins sind. Zeichnen Sie auch ein welche Komponenten im Modul "​sram_echo"​ sind.
 +  * Definieren Sie das Interface vom Modul "​sram_echo"​. ​
 +
 +==== 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.
 +
 +
 +
  
  
  • dtpr_sram_echo.1623657549.txt.gz
  • Last modified: 2021/06/14 09:59
  • by beckmanf