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

VHDL/FPGA/Verilog

开发平台:

Others

  1. ---------------------------------------------------------------------------------------------------
  2. --*************************************************************************************************
  3. --  CreateDate  :  2007-07-12 
  4. --  ModifData   :  2007-07-12 
  5. --  Description :  PS2 ( Synchronous, Data bits: 8 ) 
  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_unsigned.ALL;
  14. ---------------------------------------------------------------------------------------------------
  15. ---------------------------------------------------------------------------------------------------
  16. -- The Entity Declarations 
  17. ENTITY PS2VHDL IS
  18. PORT 
  19. (
  20. RESET:  IN STD_LOGIC;
  21. KBDATA: IN STD_LOGIC; 
  22. KBCLK:  IN STD_LOGIC;
  23. EOC:   OUT STD_LOGIC;
  24. PDATA: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
  25. );
  26. END PS2VHDL;
  27. ---------------------------------------------------------------------------------------------------
  28. ---------------------------------------------------------------------------------------------------
  29. -- The Architecture of Entity Declarations 
  30. ARCHITECTURE PS2VHDL_arch OF PS2VHDL IS
  31. SIGNAL spdata:  STD_LOGIC_VECTOR(10 DOWNTO 0);
  32. SIGNAL TT:      STD_LOGIC;
  33. SIGNAL cnt8:    INTEGER RANGE 0 TO 10;
  34. BEGIN
  35. -------------------------------------------------
  36. -- Optimize ??????????????????????????????????
  37. PROCESS( KBCLK, TT )
  38. BEGIN
  39. IF KBCLK = '0' THEN TT <= '0';
  40. ELSE TT <= '1';
  41. END IF; 
  42. END PROCESS; 
  43. -------------------------------------------------
  44. -- Recevie 
  45. Recevie: PROCESS( RESET, TT, KBDATA, spdata, cnt8 )
  46. BEGIN
  47. IF RESET = '0' THEN 
  48. cnt8 <= 0; spdata <= "00000000000";
  49. ELSIF TT'event AND TT = '0' THEN 
  50. IF( cnt8 < 10 ) THEN 
  51. spdata(cnt8) <= KBDATA;
  52. cnt8 <= cnt8 + 1;
  53. ELSE 
  54. cnt8 <= 0; 
  55. END IF; 
  56. END IF; 
  57. END PROCESS; 
  58. -------------------------------------------------
  59. -- End of recevie ???????????????????????????
  60. PROCESS( RESET, cnt8 )
  61. BEGIN
  62. IF RESET = '0'  THEN EOC <= '0';
  63. ELSIF cnt8 /= 0 THEN EOC <= '1';
  64. ELSE  EOC <= '0';
  65. END IF; 
  66. END PROCESS; 
  67. -------------------------------------------------
  68. -------------------------------------------------
  69. PDATA <= spdata( 8 downto 1 );
  70. END PS2VHDL_arch;