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

📄 dac.vhd

📁 芯片ad0809与da0832的实现程序
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY DAC IS
    PORT (P1  : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
          P3  : OUT STD_LOGIC_VECTOR(7 DOWNTO 2);
           CLK    : IN STD_LOGIC;
           CLK1   : IN STD_LOGIC;
             KK   : IN STD_LOGIC;

           DATA   : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
            DD    : OUT INTEGER RANGE 255 DOWNTO 0 ;
         DISPDATA : OUT INTEGER RANGE 255 DOWNTO 0 );
END;
ARCHITECTURE DACC OF DAC IS
    SIGNAL Q       : INTEGER RANGE 63 DOWNTO 0 ;
    SIGNAL D       : INTEGER RANGE 255 DOWNTO 0 ;
    SIGNAL FSS     : STD_LOGIC  ;
    SIGNAL COUNT12  : STD_LOGIC_VECTOR(11 DOWNTO 0) ;
    SIGNAL DATA2   : STD_LOGIC_VECTOR(11 DOWNTO 0) ;
    SIGNAL DATA1   : STD_LOGIC_VECTOR(11 DOWNTO 0) ;
BEGIN
    P1<= "11100011" ;
    P3<= "111111";

    PROCESS(FSS)
    BEGIN
        IF (FSS'EVENT AND FSS = '1') THEN
            Q <= Q + 1;
        END IF;
    END PROCESS;
  PROCESS(Q)
    BEGIN
 CASE Q IS        
WHEN 00=> D<=255; WHEN 01=> D<=254; WHEN 02=> D<=252; WHEN 03=> D<=249;
WHEN 04=> D<=245; WHEN 05=> D<=239; WHEN 06=> D<=233; WHEN 07=> D<=225;
WHEN 08=> D<=217; WHEN 09=> D<=207; WHEN 10=> D<=197; WHEN 11=> D<=186;
WHEN 12=> D<=174; WHEN 13=> D<=162; WHEN 14=> D<=150; WHEN 15=> D<=137;
WHEN 16=> D<=124; WHEN 17=> D<=112; WHEN 18=> D<= 99; WHEN 19=> D<= 87;
WHEN 20=> D<= 75; WHEN 21=> D<= 64; WHEN 22=> D<= 53; WHEN 23=> D<= 43;
WHEN 24=> D<= 34; WHEN 25=> D<= 26; WHEN 26=> D<= 19; WHEN 27=> D<= 13;
WHEN 28=> D<=  8; WHEN 29=> D<=  4; WHEN 30=> D<=  1; WHEN 31=> D<=  0;
WHEN 32=> D<=  0; WHEN 33=> D<=  1; WHEN 34=> D<=  4; WHEN 35=> D<=  8;
WHEN 36=> D<= 13; WHEN 37=> D<= 19; WHEN 38=> D<= 26; WHEN 39=> D<= 34;
WHEN 40=> D<= 43; WHEN 41=> D<= 53; WHEN 42=> D<= 64; WHEN 43=> D<= 75;
WHEN 44=> D<= 87; WHEN 45=> D<= 99; WHEN 46=> D<=112; WHEN 47=> D<=124;
WHEN 48=> D<=137; WHEN 49=> D<=150; WHEN 50=> D<=162; WHEN 51=> D<=174;
WHEN 52=> D<=186; WHEN 53=> D<=197; WHEN 54=> D<=207; WHEN 55=> D<=217;
WHEN 56=> D<=225; WHEN 57=> D<=233; WHEN 58=> D<=239; WHEN 59=> D<=245;
WHEN 60=> D<=249; WHEN 61=> D<=252; WHEN 62=> D<=254; WHEN 63=> D<=255;
WHEN OTHERS => NULL ;
END CASE;
END PROCESS;
  DD <= D ; DISPDATA <= D ;
--YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
  PROCESS(CLK, DATA)
        BEGIN
         IF CLK'EVENT AND CLK = '1' THEN
            IF COUNT12 = "111111100000" THEN
                COUNT12 <= DATA1 ;
                FSS <= '1';                
            ELSE
                COUNT12 <= COUNT12 + 1;
                FSS <= '0';                
            END IF;
        END IF;
  END PROCESS;
  --RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
  DATA1 <= DATA  WHEN KK = '1' ELSE
           DATA2 WHEN KK = '0' ELSE
           DATA2 ;
 
PROCESS(CLK1)
    BEGIN
        IF (CLK1'EVENT AND CLK1 = '1') THEN
            DATA2 <= DATA2 + 1;
        END IF;
    END PROCESS;
END;

⌨️ 快捷键说明

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