Ich würde count als Signal anlegen und mit 0 initialisieren. Dann
brauchst du nicht unbedingt einen Reset oder Start dafür. Das läuft
dann ab der 1. clk-Flanke los und wird bei 2088 zurückgesetzt. Dafür
musst du aber noch bei der Bedingung count > 2033 ein count <= count +
1 einfügen, sonst bleibt der ja bei 2034 stehen. Weiterhin ist es
besser diese Bedingung in count = 2034 umzuformen, Verhalten wäre das
selbe bei weniger Ressourcenbedarf.
Also ungefähr so:
1 | architecture ... of ... is
|
2 |
|
3 | signal count: integer range 0 to 2088 := 0;
|
4 |
|
5 | begin
|
6 |
|
7 | CCD_CTRL: process (CLK)
|
8 | begin
|
9 | if (CLK'event and CLK = '1') then
|
10 | if ENABLE = '0' then
|
11 | if (count = 2034) then
|
12 | CSTART <= '0' after 140ns;
|
13 | count <= count + 1;
|
14 | end if;
|
15 | if (count = 2088) then
|
16 | CCD_ROG <= '0' after 1000ns;
|
17 | count <= 0;
|
18 | else
|
19 | count <= count + 1;
|
20 | end if;
|
21 | end if;
|
22 | end if;
|
23 | end process CCD_CTRL;
|
Verzögerungen lassen sich mit einem Zähler am einfachsten realisieren.
Im Prinzip wie du schon einen drin hast. Der muss dann in Abhängigkeit
von deinem Takt bis zu einem bestimmten Zählerstand zählen und dann die
Signale zurücksetzen. Das kann ich aber hier nicht auf die Schnelle
machen, muss erstmal in die Hochschule ne Prüfung ablegen ;-)
Aber vielleicht hilft dir jemand anders derweile, gibt ja genug
Experten hier...