⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ilx509_driver.vhd

📁 本文件是用CPLD(EPM7064)驱动线阵CCD(ILX509)
💻 VHD
字号:
--30M to 40M Oscillator;
--Divide per 30;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ILX509_Driver IS
 PORT
 (
  CLK:IN STD_LOGIC;
  SH,RS,PULSE:OUT STD_LOGIC;  --Signals of CCD;PULSE:to PULSE1 and PULSE2 through a WIRE gat and a NOT gat; 
  PULSE2,ROG:BUFFER STD_LOGIC;
  LED: OUT STD_LOGIC
 );
END ILX509_Driver;
ARCHITECTURE A OF ILX509_Driver IS
 SIGNAL Q: INTEGER RANGE 0 TO 29;
 SIGNAL NUM: INTEGER RANGE 0 TO 63899;
 SIGNAL NUMLED: INTEGER RANGE 0 TO 255;
BEGIN
 PROCESS(CLK)
 BEGIN
  IF CLK'EVENT AND CLK='1' THEN
  CASE Q IS
   WHEN 16|17 =>
    RS<='1';
    SH<='0';
    Q<=Q+1;
   WHEN 20|21=>
    SH<='1';
    RS<='0';
    Q<=Q+1;
   WHEN 29 =>
    RS<='1';
    SH<='1';
    PULSE2<=NOT PULSE2;
    Q<=0;
   WHEN OTHERS =>
    RS<='1';
    SH<='1';
    Q<=Q+1;
   END CASE;
  END IF;
 END PROCESS;
 PROCESS(CLK)
 BEGIN
  IF CLK'EVENT AND CLK='0' THEN
   IF NUM=63899 THEN  NUM<=0;
   ELSE
    IF (NUM>1)AND(NUM<25) THEN
     ROG<='1';
    ELSE
     ROG<='0';
    END IF;
    NUM<=NUM+1;
   END IF;
  END IF;
 END PROCESS;
PULSE<= NOT PULSE2;


 PROCESS(ROG)
 BEGIN
  IF ROG'EVENT AND ROG='1' THEN
    IF NUMLED<128 THEN LED<='1';
    ELSE LED<='0';
    END IF;
    NUMLED<=NUMLED+1;
  END IF;
 END PROCESS;
      
END A;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -