Hallo Miteinander,
ich bin kein VHDL Programmierer. Der Kollege dazu ist nicht erreichbar
und ich muss meine Hardware zum laufen kriegen.
Es gibt ein Signal (End_Of_Startup), wenn dieses mit dem ersten '1'
Impuls anliegt soll an einem Ausgang (Startup1) des Xilinc FPGA
Bausteins, der Ausgang auch auf '1' gehen und einige Zeit bzw. Takte
halten. Nach dem eine Taktzahl/Zeit erreicht ist soll es wieder auf '0'
gehen. So eine Art Ausschaltverzögerung.
Nun habe ich mit meine Unkenntnissen versucht so etwas im großen
vorhandene VHDL Code dazu reinzumachen. Da bisher der Eingang mit der
Bezeichnung End_Of_Startup einfach an den Ausgang mit der Bez. Startup1
gelegt wurde. Zwischen den beiden Ports habe ich nun versucht einen
Block reinzumachen, die eine bestimmte Aufgabe hat. Das Resultat ist
dass wenn am Eingang ein Impuls erfolgt dass der Ausgang genauso
aussieht ohne dass der Ausgang länger gehalten wurde.
Vielleicht entdeckt jemand den Fehler im Code. Vielen Dank. jens
Der Code mit Ausschnitten aus der Haupdatei und der Sub-Datei sieht
folgendermassen aus:
1 | ---------------------Main.vhd---------------------
|
2 |
|
3 | -- Einbinden der Komponente Startup_Counter
|
4 | component Startup_Counter is
|
5 | Port ( IN_STARTUP1 : in std_logic; -- Input
|
6 | CLK : in std_logic; -- Clock for timer
|
7 | OUT_STARTUP1 : out std_logic); -- Output =
|
8 | end component;
|
9 |
|
10 | -- .......................................................................
|
11 | -- Begin of the Design Description
|
12 | -- .......................................................................
|
13 | begin
|
14 | -- Connect each signal of the entities with the others
|
15 | -- like in a schematic
|
16 |
|
17 | STARTUP : Startup_Counter port map( IN_STARTUP1 => End_Of_Startup,
|
18 | CLK => IntCLK5,
|
19 | OUT_STARTUP1 => Startup1
|
20 | );
|
21 |
|
22 |
|
23 | ---------------------
|
Die andere Datei mit dem Block Startup_Counter
1 | ---------------------Startup_Counter.vhd---------------------
|
2 | -- ***********************************************************************
|
3 | -- Include Libraries
|
4 | -- ***********************************************************************
|
5 | library IEEE;
|
6 | use IEEE.STD_LOGIC_1164.ALL;
|
7 | use IEEE.STD_LOGIC_ARITH.ALL;
|
8 | use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
9 |
|
10 | -- ***********************************************************************
|
11 | -- Entity Definition
|
12 | -- ***********************************************************************
|
13 | entity Startup_Counter is
|
14 | Port ( IN_STARTUP1 : in std_logic; -- input
|
15 | CLK : in std_logic; -- Clock
|
16 | OUT_STARTUP1 : out std_logic); -- Output
|
17 | end Startup_Counter;
|
18 |
|
19 | -- ***********************************************************************
|
20 | -- Architecture Description
|
21 | -- ***********************************************************************
|
22 | architecture Behavioral of Startup_Counter is
|
23 |
|
24 | -- .......................................................................
|
25 | -- Internal Signals
|
26 | -- .......................................................................
|
27 | signal cnt : std_logic_vector(4 downto 0) := "00000";
|
28 |
|
29 |
|
30 | begin
|
31 |
|
32 | process(CLK)
|
33 | begin
|
34 | --if rising_edge(CLK) then
|
35 | if CLK'event and CLK = '1' then
|
36 |
|
37 | if IN_STARTUP1='1'
|
38 | cnt <= "00000";
|
39 | elsif cnt /=100 then
|
40 | cnt <= cnt+1;
|
41 | end if;
|
42 |
|
43 | if cnt=100 then
|
44 | OUT_STARTUP1 <='0';
|
45 | else
|
46 | OUT_STARTUP1 <='1';
|
47 | end if;
|
48 |
|
49 |
|
50 | end if;
|
51 | end process;
|
52 |
|
53 | end Behavioral;
|