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

📄 dac.vhd

📁 利用EDA
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
	ENTITY DAC IS
    PORT ( CLK	: 	IN  STD_LOGIC;--256Hz
            RD  : 	OUT STD_LOGIC;
			WR	:	OUT STD_LOGIC;
			CS	:	OUT STD_LOGIC;
			ledcs 	:OUT STD_LOGIC;
			P13 	:OUT  STD_LOGIC;  			
			RAMCS   :OUT  STD_LOGIC;  			 
			nRESET 	:IN  STD_LOGIC;  
			DBUS	:INOUT STD_LOGIC_VECTOR(7 downto 0));			
END;
ARCHITECTURE DAC OF DAC IS
SIGNAL AD_VALUE :	STD_LOGIC_VECTOR(7 downto 0);
SIGNAL STATUS	: 	INTEGER RANGE 0 TO 32;
SIGNAL CS1		:	STD_LOGIC; 
SIGNAL RD1		:	STD_LOGIC; 
SIGNAL WR1		:	STD_LOGIC; 
SIGNAL P131		:	STD_LOGIC; 
BEGIN		
	RAMCS <= '1';
	PROCESS(CLK)
    BEGIN		
		IF(CLK'EVENT AND CLK = '1')THEN 
			IF( STATUS >=31) THEN STATUS <= 0;
			ELSE STATUS <= STATUS + 1;
			END IF;	
		END IF;	
    END PROCESS;

    PROCESS(STATUS)
    BEGIN	
		IF(nRESET = '0') THEN
			DBUS <= "ZZZZZZZZ";	
			CS1 <= '1';
			RD1 <= '1';
			WR1 <= '1';		
			P131 <= '1';			
		ELSIF(STATUS = 0) THEN	
			CS1 <= '1';
			RD1 <= '1';
			WR1 <= '1';	
			P131 <= '1';
			DBUS <= "ZZZZZZZZ";	
		ELSIF(STATUS = 1) THEN
			RD1 <= '1';
            CS1 <= '0';
			WR1 <= '1';	
			P131 <= '1';
			DBUS <= "ZZZZZZZZ";	
        ELSIF(STATUS = 2) THEN
			RD1 <= '1';
            CS1 <= '0';
			WR1 <= '0';
			P131 <= '1';
			DBUS <= "ZZZZZZZZ";	
		ELSIF(STATUS = 3) THEN
			RD1 <= '1';
            CS1 <= '0';
			WR1 <= '1';
			P131 <= '1';
			DBUS <= "ZZZZZZZZ";	
		ELSIF(STATUS = 4) THEN	
            CS1 <= '1';
			RD1 <= '1';
			WR1 <= '1';	
			P131 <= '1';		
			DBUS <= "ZZZZZZZZ";	
		ELSIF(STATUS = 5) THEN
			CS1 <= '0';
			RD1 <= '1';
			WR1 <= '1';	
			P131 <= '1';			
			DBUS <= "ZZZZZZZZ";		
		ELSIF(STATUS = 6) THEN
			CS1 <= '0';
			RD1 <= '0';
			WR1 <= '1';	
			P131 <= '1';		
			DBUS <= "ZZZZZZZZ";	
		ELSIF(STATUS = 7) THEN
			CS1 <= '0';
			RD1 <= '0';			
			WR1 <= '1';	
			P131 <= '1';
			AD_VALUE <= DBUS;
			DBUS <= "ZZZZZZZZ";						
		ELSIF(STATUS = 8) THEN		
			CS1 <= '0';
			RD1 <= '1';
			WR1 <= '1';	
			P131 <= '1';			
			DBUS <= "ZZZZZZZZ";	
		ELSIF(STATUS = 9) THEN
			CS1 <= '1';
			RD1 <= '1';
			WR1 <= '1';	
			P131 <= '1';									
		ELSIF(STATUS = 10) THEN
			CS1 <= '1';
			RD1 <= '1';
			WR1 <= '1';	
			P131 <= '1';			
			IF( (AD_VALUE(7) = '0')AND(AD_VALUE(6) = '0')AND(AD_VALUE(5) = '0')AND(AD_VALUE(4) = '0')) THEN							
				DBUS <= "00000000";
			ELSIF( (AD_VALUE(7) = '0')AND(AD_VALUE(6) = '0')AND(AD_VALUE(5) = '0')AND(AD_VALUE(4) = '1'))THEN							
				DBUS <= "00000001";	
			ELSIF( (AD_VALUE(7) = '0')AND(AD_VALUE(6) = '0')AND(AD_VALUE(5) = '1'))THEN							
				DBUS <= "00000011";		
			ELSIF( (AD_VALUE(7) = '0')AND(AD_VALUE(6) = '1')AND(AD_VALUE(5) = '0'))THEN						
				DBUS <= "00000111";		
			ELSIF( (AD_VALUE(7) = '0')AND(AD_VALUE(6) = '1')AND(AD_VALUE(5) = '1'))THEN							
				DBUS <= "00001111";		
			ELSIF( (AD_VALUE(7) = '1')AND(AD_VALUE(6) = '0')AND(AD_VALUE(5) = '0'))THEN							
				DBUS <= "00011111";		
			ELSIF( (AD_VALUE(7) = '1')AND(AD_VALUE(6) = '0')AND(AD_VALUE(5) = '1'))THEN							
				DBUS <= "00111111";		
			ELSIF( (AD_VALUE(7) = '1')AND(AD_VALUE(6) = '1')AND(AD_VALUE(5) = '0'))THEN							
				DBUS <= "01111111";		
			ELSIF( (AD_VALUE(7) = '1')AND(AD_VALUE(6) = '1')AND(AD_VALUE(5) = '1'))THEN						
				DBUS <= "11111111";		
			ELSE			
				DBUS <= "00000000";				
			END IF;														
		ELSIF(STATUS = 11) THEN
			CS1 <= '1';
			RD1 <= '1';
			WR1 <= '1';						
			ledcs <= '1';		
			P131 <= '0';
		ELSIF(STATUS = 12) THEN			
			CS1 <= '1';
			RD1 <= '1';
			WR1 <= '0';		
			ledcs <= '0';
			P131 <= '0';	
		ELSIF(STATUS = 12) THEN	
			CS1 <= '1';
			RD1 <= '1';
			WR1 <= '1';		
			P131 <= '0';	
		ELSIF(STATUS = 13) THEN	
			CS1 <= '1';
			RD1 <= '1';
			WR1 <= '1';		
			P131 <= '1';	
		ELSE			
			CS1 <= '1';
			RD1 <= '1';
			WR1 <= '1';		
			P131 <= '1';
			DBUS <= "ZZZZZZZZ";				
        END IF;			
		CS <= CS1;
		RD <= RD1;
		WR <= WR1;	
		P13 <= P131;	
    END PROCESS;
END;

⌨️ 快捷键说明

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