2 Bit Counter ohne Peak.

Gast #800214
Lesenswert?
• ▲
▼
Hallo miteinander, ich habe folgenden Code für einen FPGA geschrieben,
leider gibt es hier immer einen kleinen PEAK wenn der Wert auf '10' 
geht, da er hier anschließend auf '00' gesetzt werden soll...

Wie kann ich es lösen dass mir der PEAK nicht erscheint?!

Hier der Code:

begin
  process (clk, count, clear)
    begin
     if clear = '1' then
      Pre_Q <= Pre_Q-Pre_Q;  -- is '0'
     elsif rising_edge (clk) then
       if count = '1' then
           PRE_Q <= Pre_Q+1;
       else
        Pre_Q(0) <= '0';
        Pre_Q(1) <= '0';
      end if;
    end if;

  if (Pre_Q(0)='1') AND (Pre_Q(1)='1') then
   PRE_Q(0) <= '0';
   PRE_Q(1) <= '0';
   Q <= Pre_Q;
  else
    Q <= Pre_Q;
  end if;

end process;
Gast #800234
Lesenswert?
• ▲
▼
Hallo,

VHDL ist nicht "case sensitive". Du hast in deinem Code Pre_Q und PRE_Q. 
Das ist unsauber. Die if-Abfrage ausserhalb rising_edge Blocks, was 
immer sie dort zu suchen hat, ist auch unsauber und, ich denke, an der 
Stelle falsch.

Gruß,
Alex
Gast #800598
Lesenswert?
• ▲
▼
Was bitte baust du da? Soll das etwa ein Counter sein? Erstmal: 
Sensitivity List in einem sequentiell Prozess enthält nur die CLK und 
das RST signal.

Machs mal so: (n ist ein integer)
1
pcnt: process (clk, rst)
2
  begin
3
    if rst = '1' then
4
     n <= 0;
5
    elsif clk'event and clk = '1' then
6
      if n=3 then
7
        n <= 0;
8
      else
9
        n <= n + 1;
10
      end if; 
11
    end if;
12
  end process pcnt;

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