📄 dac.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 + -