Frequency.vhd
上传用户:jnxfc1
上传日期:2022-08-09
资源大小:363k
文件大小:3k
源码类别:

VHDL/FPGA/Verilog

开发平台:

Others

  1. ---------------------------------------------------------------------------------------------------
  2. --*************************************************************************************************
  3. --  CreateDate  :  2007-07-12 
  4. --  ModifData   :  2007-07-12 
  5. --  Description :  Frequency 
  6. --  Author      :  Explorer01 
  7. --  Version     :  V1.0  
  8. --*************************************************************************************************
  9. ---------------------------------------------------------------------------------------------------
  10. -- VHDL library Declarations 
  11. LIBRARY IEEE;
  12. USE IEEE.std_logic_1164.ALL;
  13. USE IEEE.STD_LOGIC_ARITH.ALL;
  14. USE IEEE.std_logic_unsigned.ALL;
  15. ---------------------------------------------------------------------------------------------------
  16. ---------------------------------------------------------------------------------------------------
  17. -- The Entity Declarations 
  18. ENTITY Frequency IS
  19. PORT 
  20. (
  21. RESET:  IN STD_LOGIC; 
  22. GCLKP1:  IN STD_LOGIC; 
  23. GCLKP2:  IN STD_LOGIC; 
  24. ClockScan: OUT STD_LOGIC;
  25. CLK: OUT STD_LOGIC;
  26. CLK8Hz: OUT STD_LOGIC
  27. );
  28. END Frequency;
  29. ---------------------------------------------------------------------------------------------------
  30. ---------------------------------------------------------------------------------------------------
  31. -- The Architecture of Entity Declarations 
  32. ARCHITECTURE Frequency_arch OF Frequency IS
  33. --Clock: 
  34. SIGNAL Period1uS, Period1mS: STD_LOGIC;
  35. BEGIN
  36. -------------------------------------------------
  37. -- GCLK: 1MHz(1uS), 1KHz(1mS), 1Hz(1S) 
  38. PROCESS( RESET, GCLKP1, Period1uS, Period1mS )
  39. VARIABLE Count  : STD_LOGIC_VECTOR(3 DOWNTO 0);
  40. VARIABLE Count1 : STD_LOGIC_VECTOR(9 DOWNTO 0);
  41. VARIABLE Count2 : STD_LOGIC_VECTOR(9 DOWNTO 0);
  42. BEGIN 
  43. ------------------------------------
  44. --Period: 1uS (Period1uS <= GCLKP1; )
  45. IF( GCLKP1'EVENT AND GCLKP1='1' ) THEN 
  46. IF( Count>"1000" ) THEN  Count := "0000";
  47. ELSE                   Count := Count + 1;
  48. END IF;
  49. Period1uS <= Count(3);
  50. END IF;
  51. ------------------------------------
  52. --Period: 1mS 
  53. IF( Period1uS'EVENT AND Period1uS='1' ) THEN 
  54. IF( Count1>"1111100110" ) THEN  Count1 := "0000000000";
  55. ELSE                   Count1 := Count1 + 1;
  56. END IF;
  57. Period1mS <= Count1(9);
  58. CLK <= Count1(0); -- 1uS 
  59. END IF;
  60. ------------------------------------
  61. --Period: 1S (1111100110: 998)
  62. IF( Period1mS'EVENT AND Period1mS='1' ) THEN 
  63. IF( Count2>"1111100110" ) THEN  Count2 := "0000000000";
  64. ELSE                   Count2 := Count2 + 1;
  65. END IF;
  66. -- Period1S <= Count2(9); 
  67. ------------------------------------
  68. ClockScan <= Count2(1); 
  69. CLK8Hz   <= Count2(7); 
  70. END IF;
  71. END PROCESS;
  72. END Frequency_arch;