großen Counter simulieren

Gast #1183641
Lesenswert?
• ▲
▼
...
signal counter : std_logic_vector (0 to 43);

begin
process(reset,clk)
begin

   if reset='0' then
      counter <= "00000000000000000000000000000000000000000000";
    elsif rising_edge(clk)then
      counter <= counter +1;

end if;
end process;
Q_0_1s <= counter(15) and counter(13) and counter(12) and counter(11) 
and counter(10) and counter(9) and counter(7) and counter(5) and 
counter(4) and counter(3) and counter(2);

Hab so einen großen Vector, damit ich auch 20s zeitverzögern kann..
Moderator (Firma: Titel) Persönliche Seite #1183663
Lesenswert?
• ▲
▼
> (0 to 43)
Das kann aber ins Auge gehen...
> "00000000000000000000000000000000000000000000"
Wo ist denn hier dein Bit 0 und welches das Bit 43? LSB? MSB?
> Q_0_1s <= counter(15) and counter(13) and counter(12)....


Wenn du 20s simulieren willst, dauert das.
Da beißt keine Maus keine Faden ab ;-)


BTW:
Mach Zähler besser mit Integer, das sieht schöner aus.
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4
:
5
signal cnt : integer range 0 to 20*50000000; -- 20 sec bei 50MHz
6
signal counter : std_logic_vector (43 downto 0); -- DOWNTO: so werden Vektoren definiert
7
:
8
begin
9
process(reset,clk)
10
begin
11
   if reset='0' then
12
      cnt <= 0;
13
   elsif rising_edge(clk)then
14
      cnt <= cnt+1;
15
   end if;
16
end process;
17
:
18
counter <= std_logic_vector(unsigned(cnt,44));
19
Q_0_1s <= counter(15) and counter(13) and counter(12) and counter(11)
20
and counter(10) and counter(9) and counter(7) and counter(5) and
21
counter(4) and counter(3) and counter(2);
Gast #1183679
Lesenswert?
• ▲
▼
OK. So genau hab ich das noch garnicht betrachtet. Danke.



Was macht eigentlich "std_logic_vector(unsigned(cnt,44)"?

Ich nehme an du machst ein casting um von Integer auf std_logic__vector 
zu

kommen?!

Wie frage ich dann ein Signal bei 20sec.,oder 1 sec. ab?

MFG
Gast #1183814
Lesenswert?
• ▲
▼
Eine Frage: Sind 50 MHz Taktfrequenz notwendig?
Wenn die restliche Schaltung mit geringerer Clockfrequnz auskommt, 
solltest du sie verringern. Hat normalerweise auch Vorteile in der 
Leistungsaufnahme und im EMV-Verhalten.
Wenn es nicht möglich ist, kannst du in der Simulation tricksen, um die 
20 Sekunden abzukürzen. Einige Simulatoren gestatten das direkte 
Verändern von Signalwerten (forcen). Da kann man z.B. den counter 
einfach mal während der Simulation hochsetzen und somit viel Zeit 
sparen.

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