View difference between Paste ID: s5aBLMVd and RFFYTHjW
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
22
	signal ontdenderen : std_logic;
23
	signal uitgang : std_logic;
24
25
	ontdenderen: process(clock, knop)
26-
		signal ontdenderen : std_logic;
26+
27-
		signal uitgang : std_logic;
27+
28
	
29-
		begin
29+
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;