Ladbares Schieberegister seriell auslesen

OP #1989474
Irgendwie komm ich grad nicht weiter.. Hab wohl zuviel Stollen gegessen 
;)
Ich brauche ein 8bit Schieberegister welches mit einer L/H Flanke 
parallel geladen wird und mit CLK (40Mhz) permanent diese 8Bits an OUT 
rausschiebt.
Die Herausforderung ist nun, das Ganze mit den minimalsten Ressorcen zu 
machen, denn ich die sparen weil es langsam eng im CPLD wird.
Könnt Ihr mir nen Tipp geben, wie ich das anstelle ?

Frohe Weihnachten und Danke für Eure Hilfe !!
#1989483
@  Ralph H. (guru)

>Ich brauche ein 8bit Schieberegister welches mit einer L/H Flanke
>parallel geladen wird und mit CLK (40Mhz) permanent diese 8Bits an OUT
>rausschiebt.

74AC165.

>Die Herausforderung ist nun, das Ganze mit den minimalsten Ressorcen zu
>machen, denn ich die sparen weil es langsam eng im CPLD wird.

Aha, du willst das in einen CPLD pressen. Und warum sagst du das nicht 
direkt?

>Könnt Ihr mir nen Tipp geben, wie ich das anstelle ?

Einfach ein Schieberegister halt, braucht 8 Makrozellen.

1
process(clk)
2
begin
3
  if rising_edge(clk) then
4
    if load='1' then  -- parallel laden
5
      sr <= sr_in;  
6
    else
7
      sr <= sr(6 downto 0) & '0'; -- seriall schieben
8
    end if;
9
  end if;
10
end process;
11

12
ser_out <= sr(7);

MFG
Falk
OP #1989660
Nein ich lade ihn am Anfang eben gar nicht !! Planmäßig ist der 
Dateneingang immer "00000000" und wird dann auf "10101011" gesetzt. 
Dieser Werte sollte ins SR übernommen werden (mit der 0-1 Flanke) von 
LoadSRZG
und der geladene Wert sollte rausgeschoben werden. Da aber das SR 
bereits komplett mit 0 ist und das Laden nicht geht, wird auch nichts 
mehr geschoeb :-(.. Ich denke das Laden ist das Problem.
#1989725
Ralph H. schrieb:
> Nein ich lade ihn am Anfang eben gar nicht !! Planmäßig ist der
> Dateneingang immer "00000000" und wird dann auf "10101011" gesetzt.
> Dieser Werte sollte ins SR übernommen werden (mit der 0-1 Flanke) von
> LoadSRZG
> und der geladene Wert sollte rausgeschoben werden. Da aber das SR
> bereits komplett mit 0 ist und das Laden nicht geht, wird auch nichts
> mehr geschoeb :-(.. Ich denke das Laden ist das Problem.

Nachdem Du den Dateneingang auf "10101011" setzt, machst Du eben kein 
loadZGSR <= '1'; Das ist das Problem.
#1989749
Ralph H. schrieb:
> Ne mein Guter das stimmt nicht !
Ich bin nicht Dein Guter.

> Ich mach sehr wohl nach dem "10101011" am Eingang anliegt,
> ein Load = '1! nämlich genau 10 ns NACHDEM am Eingang
> das "10101011" anliegt ! Ist auch im ISIM prima zu sehen.
Unten ist dein Code. Zeigst Du mir bitte, wo genau? Ich sehe es nicht.
1
   -- Stimulus process
2
   stim_proc: process
3
   begin    
4
      ZGOut <= "00000000"  ;    
5
    wait for 100 ns;  
6
    loadZGSR <= '0' , '1' after 10 ns , '0' after 15 ns ;
7
    ZGOut <= "10101011"  ;
8
    wait for 100 ns;
9
    ZGOut <= "00000000"  ;    
10
      -- insert stimulus here 
11
      wait;
12
   end process;
OP #1989759
Anguel S. schrieb:
> Ich bin nicht Dein Guter.
Sorry, wollte Dir nicht zu nahe treten. Dennoch Danke für die Hilfe!

>     loadZGSR <= '0' , '1' after 10 ns , '0' after 15 ns ;
>     ZGOut <= "10101011"  ;
Nach meiner Interpretation (und auch ISIM Simulation) werden
loadZGSR=0 und ZGOut="10101011" parallel geladen.
Das Signal loadZGSR wechselt aber nach 10 ns auf 1 und nach 15 ns
wieder auf 0 zurück, erzeugt sozusagen einen 1 Impuls.
ZGOut bleibt auf "10101011" und müsste ins SR übernommen werden.
#1989786
Ralph H. schrieb:
> Nach meiner Interpretation (und auch ISIM Simulation) werden
> loadZGSR=0 und ZGOut="10101011" parallel geladen.
> Das Signal loadZGSR wechselt aber nach 10 ns auf 1 und nach 15 ns
> wieder auf 0 zurück, erzeugt sozusagen einen 1 Impuls.
> ZGOut bleibt auf "10101011" und müsste ins SR übernommen werden.

Ok, tut mir leid. Du hast Recht, das "after" hatte mich etwas verwirrt. 
Kannst du auch den Register-Code posten?
OP #1989978
Hallo.. Du meinst den Code der zu testenden Datei oder ? Hier ist er...
1
process(clkVideo)
2
begin
3
  if rising_edge(clkVideo) then
4
    if loadZGSR= '1' then  -- parallel laden
5
      SR_ZGOut <= ZGOut ;  
6
    else
7
      SR_ZGOut <= SR_ZGOut(6 downto 0) & '0'; -- serial schieben
8
    end if;
9
  end if;
10
end process;
11
  SROut   <= SR_ZGOut ; -- Ausgänge laden nur zum Test
12
  VideoOut <= SR_ZGOut(7);
13
-- fertig Videodaten ausschieben
14

15
end VERHALTEN;
Gast #1990478
Ralph H. schrieb:
> Ich brauche ein 8bit Schieberegister welches mit einer L/H Flanke
> parallel geladen wird und mit CLK (40Mhz) permanent diese 8Bits an OUT
> rausschiebt.

Also nur beim kurz drueber gucken faellt mir auf: Du schiebst in dein 
Schieberegister eine '0' nach, also nach ein paar Clocks kommen dann 
auch Nullen raus...

Und wie schon angemerkt, du hast keinen 'load' Eingang in deine 
Komponente...
OP #1990548
@Berndl... also ich hab sehr wohl ein load (nämlich mein loadZGSR) !!
Auch die 0 im Schieberegister nachzuschieben ist richtig !
aaaaber.. ich lade ja normalerweise das Schieberegister mit nem Wert der 
rauszuschieben ist. Nur genau eben das laden geht nicht :-(
Hier meine Daten... Habt ihr noch nen Tipp wie ich das Bild von ISIM 
einfacher als über nen Hardcopy hier rauskriege?
Angehängte Dateien:
#1990558
Ralph H. schrieb:
> @Berndl... also ich hab sehr wohl ein load (nämlich mein loadZGSR) !!
loadZGSR geht aber nicht in den UUT der Testbench rein. Dein Unit Under 
Test bekommt also nicht mit, dass sich das Signal ändert. Du hast das 
Signal wahrscheinlich nachträglich zur Komponente zugefügt und die 
Testbench nicht upgedatet.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.