Guest User

Untitled

a guest
Apr 17th, 2013
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.     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.                         if (knop = '1') then
  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;
Advertisement
Add Comment
Please, Sign In to add comment