ChipScope zeigt komischen Counter

Gast #1814048
Lesenswert?

Ich habe folgenden output eines counters in chipscope. Warum sieht der 
so komisch aus?
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.all;
3
use IEEE.STD_LOGIC_ARITH.all;
4
use IEEE.STD_LOGIC_UNSIGNED.all;
5

6
entity doedel is
7
port (
8
    CLK1_FB     : in  std_logic;
9
    -- deleted
10
);
11
end doedel ;
12

13
architecture a of doedel is
14

15
signal counter : std_logic_vector(15 downto 0);
16

17

18
begin
19

20
  registers : process (CLK1_FB, RESETl)
21
  begin
22
    if RESETl = '0' then
23
    counter <= (others => '0');
24
    
25
   elsif CLK1_FB = '1' and CLK1_FB'event then
26
  
27
    --counter <= std_logic_vector(unsigned(counter) + 1);
28
    counter <= counter + 1;
29
   end if;
30
  end process;
31
end a;

Kann das ein Abtastproblem durch die chipscope clock sein? Eigentlich 
müssten doch die counter bits alternierend ca 50%:50% sein und nicht nur 
peeks.

???
Angehängte Dateien:
(Firma: www.das-labor.org) #1814088
Lesenswert?

>
1
 if RESETl = '0' then
2
    counter <= (others => '0');
3
>

Wo kommt denn dein Reset1 her ?
Und willst du wirklich einen Reset bei '0' ? Üblicherweise macht man das 
bei '1'

Wie verhält sich denn eine Simulation ?

Ausserdem beschreibst du einen Asynchronen Reset. Meistens wirst du mit 
einem Synchronen Reset glücklicher.

>
1
 registers : process (CLK1_FB)
2
  begin
3
    
4
   if CLK1_FB = '1' and CLK1_FB'event then
5
    if RESETl = '1' then
6
    counter <= (others => '0');
7
    else  
8
     counter <= counter + 1;
9
   end if;
10
  end process;
11
>

Ausserdem hast du einen undefinierten Startwert
Du kannst den Startwert 0 auch ohne Reset vorgeben:
>
1
signal counter : std_logic_vector(15 downto 0):= (others => '0');
2
>
Gast #1814146
Lesenswert?

Der Reset kommt von aussen und funktioniert.
Der Zähler zählt ja auch ohne Reset. Es geht mit um das komische 
Verhalten des Zählers. Es könnte aber sein, daß der nicht korrekt 
implementiert ist, weil ich nicht alle Bits abfrage und die Synthese 
möglicherweise etwas anderes gebaut hat. Ich checke das gerade.
#1814460
Lesenswert?

Moin,

wie die Signalnamen (alle mit _CY am Ende) vermuten lassen,
handelt es sich nicht um den Zählerausgang, sondern um die Carry-Chain 
des Zählers!

Die Carry-Signale bewirken jeweis das Umschalten (Toggle)
des zugehörigen Zähler-Bits.

Betrachtet man die Signale als Clock-Enables für Toggle-Flipflops,
kommt exakt der normale Binärzählerablauf raus...

Gruß,
Thorsten

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