mikrocontroller.net

Forum: FPGA, VHDL & Co. Verzögerung mit Schieberegister in VHDL


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich versuche gerade einen Verzögerer in VHDL zu bauen. Leider 
funktioniert das noch nicht.
ARCHITECTURE verzoegerung_architecture OF verzoegerung IS
  signal reg : std_logic_vector (3 downto 0);
  BEGIN

  verarbeitung: process(clk,dv)
  begin
    if clk'event and clk='1'then
      if rst = '1' then
        reg <= b"0000";
      end if;
      reg sll 1; 
      reg(0) <= dv;
      read_enable <= reg(2);      
    end if;    
  end process verarbeitung;
END verzoegerung_architecture;

Wo liegt mein Fehler? Es sieht so aus als würde er meine shiftoperation 
nicht mögen.

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Schreib anstatt:
reg sll 1;
reg(0) <= dv;

das hier:
reg <= reg(reg'length-2 downto 0) & dv;

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du kurz erklären wie das funktioniert?

Autor: Daniel R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
reg <= reg(reg'length-2 downto 0) & dv;

wenn du dir das Register vorstellst:
reg = "3210" (wobei die Zahlen jetzt die Bitstellen symbolisieren)

reg(reg'length-2 downto 0) & dv;

d.h. die Stellen "210" werden vom alten Registerwert genommen und mit "& 
dv" wird dein neues Bit "0" hinzugefügt!
Bit 3 geht verloren (da linksschieben)

ergo: reg(neu) = unteren 3 Bits von reg_alt und das dv-Bit auf Stelle 0 
dazusetzen.

Autor: Thomas Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll das sll ein ShiftLeft werden ?

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, hatte ich so in verschiedenen VHDL Anleitungen gefunden.

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.