2016-05-10 25 views
0

Ich versuche, einen Shifter mit d-Flip-Flop als Komponente zu entwerfen .. Der Flip-Flop funktioniert gut .. aber der Shifter-Ausgang bleibt undefined, wie soll ich es beheben? dies ist der shiftier Codezyklische Verschiebung mit d-Flip-Flop vhdl

entity cyclicSR is -- 3-bit cyclic shift register 
port (CLK: in bit; Qout: out bit_vector(1 to 3)) ; 
end cyclicSR; 
architecture cyclicSR3 of cyclicSR is 
component DFF 
port (D, CLK: in bit; Q: out bit); 
end component; 
signal Q1, Q2, Q3: bit; 
begin 
FF1: DFF port map (Q3, CLK, Q1); 
FF2: DFF port map (Q1, CLK, Q2); 
FF3: DFF port map (Q2, CLK, Q3); 
Qout <= Q1&Q2&Q3; 
end cyclicSR3; 

Soll ich einen Wert q3 zuweisen ?? wie kann ich das machen?

Antwort

1

Während Sie kein Minimal, Complete, and Verifiable example angegeben haben, ist das Problem in Ihrem Codebeispiel sichtbar.

Sie müssen einen Anfangswert angeben oder mindestens ein Flipflop 'setzen'. Ansonsten verschiebt es gerne alle Nullen zyklisch - der Standardwert für den Typ BIT.

Alternativ können Sie einen Eingang in etwa dem ersten Flip-Flop verklemmen, wenn alle drei 0:

architecture jam of cyclicsr is 

    component dff is 
     port (
      d, clk: in bit; 
      q:  out bit 
     ); 
    end component; 

    component or2 is 
     port (
      a:  in bit; 
      b:  in bit; 
      y:  out bit 
     ); 
    end component; 

    component nor3 is 
     port (
      a:  in bit; 
      b:  in bit; 
      c:  in bit; 
      y:  out bit 
     ); 
    end component; 

    signal q1, q2, q3: bit; 

    signal inp:  bit; -- added 
    signal all_zero: bit; 

begin 

ff1: dff port map (inp, clk, q1); -- was q3 
ff2: dff port map (q1, clk, q2); 
ff3: dff port map (q2, clk, q3); 

    qout <= q1 & q2 & q3; 

orgate: 
    or2 
     port map (
      a => all_zero, 
      b => q3, 
      y => inp 
     ); 
allzero: 
    nor3 
     port map (
      a => q1, 
      b => q2, 
      c => q3, 
      y => all_zero 
     ); 

end architecture; 

Und das gibt:

cyclicsr_tb.png

Und beachten Sie irgendein Muster-Set können Sie Wollen Sie mit einem Anfangswert oder mit einem einzigen Wechselrichter das Schieberegister in eine Johnson counter schalten.