mikrocontroller.net

Forum: FPGA, VHDL & Co. Bildspeicher mit Reset lässt sich nicht synthetisieren


Autor: Hans (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin ein VHDL-Anfänger und arbeite mich momentan durch das Buch 
VHDL-Synthese von Jürgen Reichhardt.

In der Übungsaufgabe 5.9 soll man einen taktsynchronen Bildspeicher 
synthetisieren, der 128 x 128 Pixel im Schwarz-Weiß-Format aufnehmen 
kann. Die entity ist dabei vorgegeben.

Mein Problem besteht nun darin, dass das Synthese Tool (ISE 12.2 von 
Xilinx) ewig für die Synthese benötigt, wenn ich versuche ein 
asynchrones Reset zu implementieren. Ohne Reset funktioniert die 
Synthese einwandfrei. Das Tool generiert mir dann einen entsprechenden 
Rambaustein.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_Arith.ALL;

--taktsynchroner Bildspeicher 128x128 Pixel in Schwarz='1' und Weiß= '0'

entity Aufgabe59 is
    Port ( Clock : in  STD_LOGIC;
           RESET : in  STD_LOGIC;
           Z_IND : in  STD_LOGIC_VECTOR (6 downto 0);
           SP_IND : in  STD_LOGIC_VECTOR (6 downto 0);
           RNW : in  STD_LOGIC;
           D : inout  STD_LOGIC);
end Aufgabe59;

architecture Behavioral of Aufgabe59 is
Signal MEM: STD_LOGIC_VECTOR(0 to 16383);
begin

Display_Mem: process(Clock,RESET)
Variable Index: Natural range 0 to 16383:= 0;
Variable Index_Vect: STD_LOGIC_VECTOR(13 downto 0):=(others => '0');
begin
if RESET = '1' then
  MEM <= (others => '0');
elsif Rising_Edge(Clock) then
  Index_Vect := Z_IND & SP_IND;
  Index := CONV_INTEGER(unsigned(Index_Vect));
  if RNW = '0' then
    MEM(Index) <= D;
  else
    D <= MEM(Index);
  end if;
end if;
end process Display_Mem;
end Behavioral;

Ich weiß ehrlich gesagt nicht, wie ich dieses Problem lösen kann bzw. 
warum das Tool mit dem Reset nicht zurecht kommt.

Das angehängte Bild entspricht der RTL Schematic ohne Reset.

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das was Du da hast, ist ein Speicher. Der muß im FPGA abgebildet werden. 
Das geht mit Logik-Flipflops (lange Synthese, eingeschrängte Größe) oder 
mit eingebauten Block-RAMs (kurze Synthese, etwas weniger eingeschränkte 
Größe).

Die Block-RAMS haben aber kein Reset (schon gar kein asynchrones). Daher 
zwingst Du die Synthese mit Deinem Reset die Logik-FF zu verbraten.

Mein Tipp: Laß den Reset weg.

Duke

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Duke Scarring

Hallo Duke,

vielen Dank für die einleuchtende Antwort.

Allerdings verstehe ich dann ehrlich gesagt nicht, warum die in ihrem 
Buch ein asynchrones Reset einbinden (steht sogar in der Lösung!).

Außerdem sieht man doch auf dem Bild eindeutig, dass der Ram-Baustein 
einen Eingang mit der Bezeichnung RSTA hat, ist das nicht ein 
Reset-Eingang bzw. kann ich damit vielleicht ein synchrones Reset 
realisieren?

Gruß
Hans

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> kann ich damit vielleicht ein synchrones Reset realisieren?
Du kannst ein BRAM nicht auf einen Schlag mit einem Pin zurücksetzen. 
Das kommt irgendwie jedes Jahr mal wieder wie im 
Beitrag "Xilinx Block-RAM voll resetten"

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Miller,

danke für die Antwort und den Link.

Dann ist die im Buch vorgeschlagene Lösung wohl nicht ganz stimmig.

Ich lasse das Zurücksetzen einfach weg.

Gruß
Hans

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hans: Ich kenne jetzt das Buch nicht im Detail, aber ich glaube nicht, 
daß es sich konkret auf z.B. Xilinx-Bausteine bezieht. Von daher ist es 
nicht wirklich falsch. Nur insofern, daß mir auch kein anderer 
Hersteller bekannt ist, der an seinem RAM einen Reset anbietet.

(Das Reset was Du gesehen hast, wirkt wahrscheinlich auf die 
Ausgangsregister des Block-RAMs.)

Duke

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Duke,

>Ich kenne jetzt das Buch nicht im Detail, aber ich glaube nicht,
>daß es sich konkret auf z.B. Xilinx-Bausteine bezieht.

Im Vorwort des Buches VHDL-Synthese (Entwurf digitaler Schaltungen und 
Systeme) von Jürgen Reichhard und Bernd Schwarz steht aber:

"Auf der Suche nach geeignetem Unterrichtsbegleitmaterial mussten wir 
feststellen, dass der deutschsprachige Lehrbuchmarkt kein diesen 
Vorstellungen entsprechendes Angebot enthält. Deshalb haben wir 
begonnen, zunächst im Rahmen einer Wahlfachverantstaltung "VHDL-Synthese 
für XILINXs-FPGAs" eine praxinahe und hochsprachenorientierte 
Entwurfsmethodik in der Lehre zu erproben."

Einen Bezug zu Xilinx kann man daher nicht völlig von der Hand weisen 
und so wie ich Miller und auch dich verstanden habe, gibt es keinen 
Blockram, den man mit einem Pin zurücksetzen kann. Wenn die auf 
praktikable Lösungen wertlegen, so wie es im Vorwort steht, dann trifft 
das auf diese Aufgabe definitiv nicht zu.

Ich meine was hat das in einem Übungsbuch zu suchen, soll der Lernende 
dem Synthesetool stundenlang beim synthetisieren zuschauen?

Egal. Ich danke euch für eure hilfreichen Antworten zu diesem Thema.

Auf Millers Seite habe ich dann noch einige Ausführungen zum Thema 
asynchrones Reset gefunden, die ich ziemlich interessant fand. In dem 
Buch wird das ständig verwendet ohne das Für und Wider zu erklären...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.