SHOW:
|
|
- or go back to the newest paste.
| 1 | ------------------------------------------- | |
| 2 | -- KHBO Dept.IW&T | |
| 3 | -- DS2 Ontdendercode | |
| 4 | -- Maxim Lambert | |
| 5 | ------------------------------------------- | |
| 6 | ||
| 7 | library IEEE; | |
| 8 | use IEEE.STD_LOGIC_1164.ALL; | |
| 9 | use ieee.numeric_std.all; | |
| 10 | ||
| 11 | ||
| 12 | entity ontdenderCircuit is | |
| 13 | port ( knop : in STD_LOGIC; | |
| 14 | clock: in STD_LOGIC | |
| 15 | ); | |
| 16 | end ontdenderCircuit; | |
| 17 | ||
| 18 | ||
| 19 | architecture Behavioral of ontdenderCircuit is | |
| 20 | begin | |
| 21 | - | process ontdenderCircuit(clock, knop) |
| 21 | + | |
| 22 | ontdenderen: process(clock, knop) | |
| 23 | begin | |
| 24 | ||
| 25 | variable counter : INTEGER range 0 to 1000000; | |
| 26 | signal ontdenderen : std_logic; | |
| 27 | signal uitgang : std_logic; | |
| 28 | ||
| 29 | begin | |
| 30 | ||
| 31 | -- Knop gedrukt? begin met ontdenderen! | |
| 32 | if rising_edge(clock) then | |
| 33 | - | end if; |
| 33 | + | |
| 34 | ontdenderen <= '1'; | |
| 35 | end if; | |
| 36 | end if; | |
| 37 | ||
| 38 | ||
| 39 | -- Terug op oorspronkelijke waarde plaatsen | |
| 40 | if (counter = "0") then | |
| 41 | counter := 1000000; | |
| 42 | ontdenderen <= '0'; | |
| 43 | uitgang <= '0'; | |
| 44 | end if; | |
| 45 | ||
| 46 | ||
| 47 | -- Aantal keren aftellen en signaal hoog zetten/houden | |
| 48 | if (ontdenderen = '1') then | |
| 49 | counter := counter - 1; | |
| 50 | uitgang <= '1'; | |
| 51 | end if; | |
| 52 | ||
| 53 | ||
| 54 | -- Bovenstaande if's van plaats verwisselen zorgt ervoor dat niet telkens | |
| 55 | -- na 100000 clock pulsen uitgang 1 clockpuls op "0" komt wanneer de knop hoog blijft. | |
| 56 | ||
| 57 | -- Het "nadeel" nu is dat mogelijk 1 clockpuls later de uitgang op 1 komt, | |
| 58 | -- daar gecontrolleerd wordt op ontdenderen, die pas NA de cyclus te doorlopen hoog komt | |
| 59 | -- en dus de laatste if niet triggert. Dit is echter te verwaarlozen. | |
| 60 | ||
| 61 | -- Als maar 20ns op de knop gedrukt wordt zal de uitgang ook nooit hoog komen, | |
| 62 | -- de kans op die situatie is nihil en wordt dus ook verwaarloost. | |
| 63 | ||
| 64 | ||
| 65 | end process; | |
| 66 | ||
| 67 | end Behavioral; |