Forum: FPGA, VHDL & Co. ChipScope zeigt komischen Counter


von Samuel (Gast)


Angehängte Dateien:

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.

???

von Michael S. (Firma: www.das-labor.org) (laborsauron)


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
>

von Samuel (Gast)


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.

von Samuel (Gast)


Lesenswert?

Tja, in der Tat hat sich die Synthese einen Teil des Counters gespart 
und eine Art SR realisiert. Wenn man mehr counter-signale herausführt, 
sieht chipscope auch einen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Tja, in der Tat hat sich die Synthese einen Teil des Counters gespart
> und eine Art SR realisiert.
Wenn überhaupt kein Signal des Couters nach aussen geführt und/oder 
verwendet wird, hätte die Synthese den Counter komplett in die Tonne 
hauen können... ;-)

von Thorsten S. (thosch)


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

von Frank (Gast)


Lesenswert?

Das hätte ich jetzt auch gesagt. Wenn man die toogle bits gedanklich 
integriert, ergibt sich ein Zähler.

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.