Guest User

Untitled

a guest
Apr 17th, 2013
39
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.     signal ontdenderen : std_logic;
  23.     signal uitgang : std_logic;
  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;
Advertisement
Add Comment
Please, Sign In to add comment