Verzögerung mit Schieberegister in VHDL

Gast #909271
Lesenswert?

Hallo,

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

5
  verarbeitung: process(clk,dv)
6
  begin
7
    if clk'event and clk='1'then
8
      if rst = '1' then
9
        reg <= b"0000";
10
      end if;
11
      reg sll 1; 
12
      reg(0) <= dv;
13
      read_enable <= reg(2);      
14
    end if;    
15
  end process verarbeitung;
16
END verzoegerung_architecture;
Wo liegt mein Fehler? Es sieht so aus als würde er meine shiftoperation 
nicht mögen.
Gast #909309
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren