Forum: FPGA, VHDL & Co. 64 Bit zu 4*16 Bit Schieberegister


von Stephan (Gast)


Lesenswert?

Hallo,

ich habe hier ein Problem mit einem Shiftregister!? Ich moechte aus 
einem 64 Bit breiten Fifo auslesen und die ersten 16 Bit verwenden, dann 
schieben und die naechsten 16 Bit auslesen usw.. Versucht habe ich es 
wie folgt:
1
prc1:
2
...
3
when READ =>
4
 EP68_RD <= "00";
5
 if WORD_OUT = 1 then  -- Reset Value von WORD_OUT ist '1'
6
  if USB_ADR_I(0) = '0' then
7
   -- read data from EP6
8
   EP68_RD   <= "10";
9
   LOCAL_RD_DATA  <= EP6_DATA_O;
10
 end if;
11
...
12
prc2:
13
...
14
 if Q_S = READ then
15
  if EP68_RD /= "00" then
16
    EP_RD_DATA <= LOCAL_RD_DATA
17
  end if;
18
  if CNT_SHIFT_O /= "11" then
19
  WORD_OUT <= '0';
20
  S_USB_DATA <= EP_RD_DATA(63 downto 48);
21
  EP_RD_DATA <= EP_RD_DATA(47 downto 0) & x"0000"
22
  CNT_SHIFT_O <= CNT_SHIFT_O + 1;
23
 else
24
  CNT_SHIFT_O <= (others => '0');
25
  WORD_OUT <= '1';
26
 end if;
27
...

Kompilieren tut es aber irgendwie meckert Synplify rum:
Pruning Register S_USB_DATA
Pruning Register EP_RD_DATA
Optimizing register S_USB_DATA to a constant 0

Irgendwie vermute ich, dass ich total auf dem Schlauch stehe und es nen 
dummer Fehler ist. Es waere super wenn mir jmd helfen koennte.

Beste Grusse
Stephan

von Stephan (Gast)


Lesenswert?

Habs geloest, wie ich vermutet habe nen bloeder Denkfehler.

von Gast (Gast)


Lesenswert?

Das geht doch direkt mit instanziierbaren Fifos unterschiedlicher 
Breite.

von Stephan (Gast)


Lesenswert?

Das habe ich vergeblich versucht. Nutze einen Cyclone I. Leider ist die 
Option verschiedene Ein/Ausgangsbreiten des Fifo im Megawizzard Plugin 
nicht auswaehlbar.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.