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 |
| 14 | + | clock: in STD_LOGIC; |
| 15 | uitgang: out STD_LOGIC | |
| 16 | ); | |
| 17 | end ontdenderCircuit; | |
| 18 | ||
| 19 | ||
| 20 | architecture Behavioral of ontdenderCircuit is | |
| 21 | begin | |
| 22 | ||
| 23 | - | signal uitgang : std_logic; |
| 23 | + | |
| 24 | ||
| 25 | ontdenderen: process(clock, knop) | |
| 26 | variable counter : INTEGER range 0 to 1000000; | |
| 27 | begin | |
| 28 | ||
| 29 | -- Knop gedrukt? begin met ontdenderen! | |
| 30 | if rising_edge(clock) then | |
| 31 | if (knop = '1') then | |
| 32 | ontdenderen <= '1'; | |
| 33 | end if; | |
| 34 | end if; | |
| 35 | ||
| 36 | ||
| 37 | -- Terug op oorspronkelijke waarde plaatsen | |
| 38 | if (counter = "0") then | |
| 39 | counter := 1000000; | |
| 40 | ontdenderen <= '0'; | |
| 41 | uitgang <= '0'; | |
| 42 | end if; | |
| 43 | ||
| 44 | ||
| 45 | -- Aantal keren aftellen en signaal hoog zetten/houden | |
| 46 | if (ontdenderen = '1') then | |
| 47 | counter := counter - 1; | |
| 48 | uitgang <= '1'; | |
| 49 | end if; | |
| 50 | ||
| 51 | ||
| 52 | -- Bovenstaande if's van plaats verwisselen zorgt ervoor dat niet telkens | |
| 53 | -- na 100000 clock pulsen uitgang 1 clockpuls op "0" komt wanneer de knop hoog blijft. | |
| 54 | ||
| 55 | -- Het "nadeel" nu is dat mogelijk 1 clockpuls later de uitgang op 1 komt, | |
| 56 | -- daar gecontrolleerd wordt op ontdenderen, die pas NA de cyclus te doorlopen hoog komt | |
| 57 | -- en dus de laatste if niet triggert. Dit is echter te verwaarlozen. | |
| 58 | ||
| 59 | -- Als maar 20ns op de knop gedrukt wordt zal de uitgang ook nooit hoog komen, | |
| 60 | -- de kans op die situatie is nihil en wordt dus ook verwaarloost. | |
| 61 | ||
| 62 | ||
| 63 | end process; | |
| 64 | ||
| 65 | end Behavioral; |