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

📄 mcdesign.vhd

📁 VHDL详尽世界观 用于成品率的的语言,请大家 参考使用,并提出宝贵建议
💻 VHD
字号:
                                                           --------------------------------------------------------------------------------
-- Company: 
-- Engineer:
--
-- Create Date:    10:31:13 10/30/06
-- Design Name:    
-- Module Name:    MCDESIGN - Behavioral
-- Project Name:   
-- Target Device:  
-- Tool versions:  
-- Description:
--
-- Dependencies:
-- 
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
-- 
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use work.COMPONENTLIB.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity MCDESIGN is
    Port ( XD : inout std_logic_vector(7 downto 0);
           XA : in std_logic_vector(15 downto 0);       
           XWE : in std_logic;
           XRD : in std_logic;
		   XCS0 : in std_logic;
		   XCS2 : in std_logic;
		   XINT1 : out std_logic;
		   XINT2 : out std_logic;		
		   NMIINT : out std_logic;		
		
		   GPIOA6    : IN std_logic;		
		   GPIOA7    : IN std_logic;		
		   GPIOA10    : IN std_logic;						
		   GPIOA11    : IN std_logic;		
		   GPIOA12    : IN std_logic;		
		   GPIOA13    : IN std_logic;		
		   GPIOA14    : IN std_logic;		
		   GPIOA15    : IN std_logic;	
		
		   DSPCAP1  : OUT std_logic;		
		   DSPCAP2  : OUT std_logic;
		   DSPCAP6    : OUT std_logic;			
		
		   GPIOB6    : IN std_logic;		
		   GPIOB7    : IN std_logic;		
		   GPIOB8    : IN std_logic;
		   GPIOB9    : IN std_logic;		
	
		   GPIOB11    : IN std_logic;		
		   GPIOB12    : IN std_logic;		
		   GPIOB13    : IN std_logic;		
		   GPIOB14    : IN std_logic;		
		   GPIOB15    : IN std_logic;			
		
		   GPIOD0    : out std_logic;		
		   GPIOD1    : IN std_logic;		
		   GPIOD5    : out std_logic;		
		   GPIOD6    : IN std_logic;	
								
           CLK : in std_logic;
		
--		   SPC3RST : OUT std_logic;
--		   SPC3CS : OUT std_logic;
	--	   SPC3ALE    : OUT std_logic;		
--		   SPC3INT    : IN std_logic;				
--		   SPC3RDY    : IN std_logic;
		
		   LEDCTRL    : OUT std_logic_vector(5 downto 0);			

		   CAPTUREIN    : IN std_logic;
		
		   ANAIN_DI   : IN std_logic_vector(7 downto 0);
		
		   DARST : OUT std_logic;
		   DACS : OUT std_logic;
		   DALOAD : OUT std_logic;
		
--		   MAX280OSC : OUT std_logic;
		
           ADCLK : OUT std_logic;
		   ADEOC 	: IN std_logic_vector(3 downto 0);
		   ADBUSY 	: IN std_logic_vector(3 downto 0);		
		   ADFD 	: IN std_logic_vector(3 downto 0);				
		   ADCS 	: OUT std_logic_vector(3 downto 0);		
		   ADCONV 	: OUT std_logic_vector(3 downto 0);				
		   
		   DATALEN : OUT std_logic;				
		   DATAHEN : OUT std_logic;				
		   DOEN  : out std_logic_vector(1 downto 0);
		   DI  : IN std_logic_vector(15 downto 0);
		   DO  : out std_logic_vector(15 downto 0);
		   PWMIN : IN std_logic_vector(11 downto 0);	
		   DRIVER :	out std_logic_vector(13 downto 0));
		
		
		
		
end MCDESIGN;

architecture Behavioral of MCDESIGN is

signal ADEOCasig             : std_logic;
signal ADFDasig             : std_logic;
signal ADBUSYasig             : std_logic;

signal LEDCLK             : std_logic;
signal DRVCLK             : std_logic;
signal CLKINNER             : std_logic;
signal CLKCOUNTER           : std_logic_vector(14 downto 0);
signal ADINTFLAG1              : std_logic;
signal ADINTFLAG2              : std_logic;
signal ADINTFLAG3              : std_logic;
signal ADINTFLAG4              : std_logic :='1';
signal DSPCTRLEN              : std_logic :='1';
signal ADSAMPTIMER             : std_logic;
signal ADCLKCOUNTER           : std_logic_vector(2 downto 0);
signal ADCLKCOUNTER1           : INTEGER RANGE 0 TO 4096 := 0;
signal ADCLKCOUNTER2           : INTEGER RANGE 0 TO 4096 := 0;

signal CLREOCCOUNTER             : std_logic;
signal  ADEOCCOUNTER1 :INTEGER RANGE 0 TO 15 := 0;
signal  ADEOCCOUNTER2 :INTEGER RANGE 0 TO 15 := 0;
signal  ADEOCCOUNTER3 :INTEGER RANGE 0 TO 15 := 0;
signal  ADEOCCOUNTER4 :INTEGER RANGE 0 TO 15 := 0;

signal CLKCOUNTER1           : INTEGER RANGE 0 TO 511 := 0;
signal CLKCOUNTER2           : INTEGER RANGE 0 TO 511 := 0;
--signal CLKCOUNTER           : INTEGER RANGE 0 TO 4096 := 0;
--signal Test             : INTEGER RANGE 0 TO 10 := 0;

--signal CLKCHANGELOGIC           :INTEGER RANGE 0 TO 1024 := 0;
--signal CLKEOCaCOUNTER           :INTEGER RANGE 0 TO 1024 := 0;
--signal CLKEOCbCOUNTER           :INTEGER RANGE 0 TO 1024 := 0;
--signal CLKEOCcCOUNTER           :INTEGER RANGE 0 TO 1024 := 0;

signal DISCHARGECOUNTER           :INTEGER RANGE 0 TO 4096 := 0;
signal DISCHARGEFLAG             : std_logic := '0';

signal CAPTUREOUT1             : std_logic;
signal CAPTUREOUT2             : std_logic;
signal HADDEALDLEDGE             : std_logic;
signal HADDEALULEDGE             : std_logic;
signal CAPTURECOUNTER1           :INTEGER RANGE 0 TO 1024 := 0;
signal CAPTURECOUNTER2           :INTEGER RANGE 0 TO 1024 := 0;

signal ANAERROR             : std_logic;
signal ANAINDI             : std_logic;
signal DLACTFLAG             : std_logic;
signal DL1ACTDSPSET             : std_logic :='1';
signal DL3ACTDSPSET             : std_logic :='1';
signal ANAERRORCOUNTER           :INTEGER RANGE 0 TO 255 := 0;
--signal TRIPDEALCOUNTER           :INTEGER RANGE 0 TO 10240 := 0;
signal DL1ACTAUTO             : std_logic :='0';
signal DL3ACTAUTO             : std_logic :='0';
signal MRST             : std_logic :='0';
signal MRSTCOUNTER           :INTEGER RANGE 0 TO 511 := 0;
signal ACTCOUNTER1           : std_logic_vector(3 downto 0);		
signal LEDDIS             : std_logic :='0';

begin				  
	
		
	ADCS(0) <= '0' WHEN (XA >= B"0010100000000000" AND XA < B"0010100000000010" AND XCS0 ='0') ELSE
		'1';--0x2800---0x2802
	ADCS(1) <= '0' WHEN (XA >= B"0010100000000011" AND XA < B"0010100000000101" AND XCS0 ='0') ELSE
		'1';--0x2803---0x2805
	ADCS(2) <= '0' WHEN (XA >= B"0010100000000110" AND XA < B"0010100000001000" AND XCS0 ='0') ELSE
		'1';--0x2806---0x2808
	ADCS(3) <= '0' WHEN (XA >= B"0010100000001001" AND XA < B"0010100000001011" AND XCS0 ='0') ELSE
		'1';--0x2809---0x280b

	DATALEN <= '0' WHEN (((XA >= B"0010100000000000" AND XA <= B"0010100000010000" ) or (XA >= B"0010000100000000" AND XA <= B"0010000100000100" ) )AND XCS0 ='0') ELSE
		'1';--2800---2810
	DATAHEN <= '0' WHEN (((XA >= B"0010100000000000" AND XA <= B"0010100000010000" ) or (XA >= B"0010000100000000" AND XA <= B"0010000100000100" ) )AND XCS0 ='0') ELSE
		'1';--2800---2810
	
	DACS <= '0' WHEN (XA >= B"0010000100000000" AND XA < B"0010000100000100" AND XCS0 ='0') ELSE
		'1';--0x2100---0x2104	

	
--	SPC3ALE <= '0';			
--	SPC3CS <= '1' ;--WHEN (XA >= B"0001000000000" AND XA < B"0000000000000" AND XCS0 ='0') ELSE
--		'0';--0x3000---0x3800
--	NMIINT <= '0';--SPC3INT;	
--	XINT1 <= '0';	
--	XINT2 <= '0';						

--	ANAINDI <=  DI(6) OR DI(7) OR (NOT (DI(0) AND DI(1) AND DI(2) AND DI(4) AND DI(5) AND DI(3)));--DI(7) OR DI(6) OR (NOT (DI(0) AND DI(1) AND DI(2)));
--	LEDDIS <= (DI(0) AND DI(1) AND DI(2) AND DI(4) AND DI(5) AND DI(3));
	
   	DOEN(0)<= '1';  
   	DOEN(1)<= '1';
		


LEDSIM:
	PROCESS(CLK,ANAIN_DI(5),DISCHARGEFLAG)	
	BEGIN
	    IF (CLK 'EVENT AND CLK ='0' ) THEN
        	CLKCOUNTER <= CLKCOUNTER + 1;    		     
	      	LEDCLK <= CLKCOUNTER(12);	--11	
			ADCLK  <= CLKCOUNTER(2);	  		  
        END IF;   
	
		IF (LEDCLK 'EVENT AND LEDCLK ='0' ) THEN
        	CLKCOUNTER2 <= CLKCOUNTER2 + 1;    		     
			IF(CLKCOUNTER2 < 100) THEN
				LEDCTRL(0) <='1';
			ELSIF(CLKCOUNTER2 >= 100 AND (CLKCOUNTER2 < 200)) THEN
				LEDCTRL(0) <= '0';					
			ELSE
				CLKCOUNTER2 <= 0;
			END IF;	
        END IF;   


	end PROCESS;	


	
DATABUS:
	PROCESS(XD,XWE,XRD)
	BEGIN
				
		IF (XA = B"0010000000000001" AND XCS0 = '0' AND XRD = '0') THEN	--0X2001
			  XD <= DI(7 downto 0);
        ELSIF (XA = B"0010000000000010" AND XCS0 = '0' AND XRD = '0') THEN --0X2002
 			  XD <= DI(15 downto 8);	
        ELSIF (XA = B"0010000000000011" AND XCS0 = '0' AND XRD = '0') THEN --0X2002
 			  XD <= ANAIN_DI(7)&ANAIN_DI(5)&ANAIN_DI(2)&ANAIN_DI(3)&ANAIN_DI(6)&'0'&'0'&'0';	
      	ELSIF (XA = B"0010100000010001" AND XCS0 = '0' AND XRD = '0') THEN --0X2811
 			  XD <= ADEOC(0)&ADFD(0)&ADBUSY(0)&ADINTFLAG1&'1'&'0'&'1'&'0';	
      	ELSIF (XA = B"0010100000010010" AND XCS0 = '0' AND XRD = '0') THEN --0X2812
 		  	  XD <= ADEOC(1)&ADFD(1)&ADBUSY(1)&ADINTFLAG2&'1'&'0'&'1'&'0';	
      	ELSIF (XA = B"0010100000010011" AND XCS0 = '0' AND XRD = '0') THEN --0X2813
 			  XD <= ADEOC(2)&ADFD(2)&ADBUSY(2)&ADINTFLAG3&'1'&'0'&'1'&'0';	
      	ELSIF (XA = B"0010100000010100" AND XCS0 = '0' AND XRD = '0') THEN --0X2814
 			  XD <= ADEOC(3)&ADFD(3)&ADBUSY(3)&ADINTFLAG4&'1'&'0'&'1'&'0';	
      	ELSIF (XA = B"0010100000010101" AND XCS0 = '0' AND XRD = '0') THEN --0X2815
 			  XD <= ADBUSY(3)&ADBUSY(2)&ADBUSY(1)&ADBUSY(0)&'1'&'0'&'1'&'0';	
      	ELSE
			XD <= "ZZZZZZZZ";		  
        END IF;   
		
		IF (XA = B"0010001000000001" AND XCS0 = '0' AND XWE = '0') THEN	--0X2201
--			DO(0) <= XD(0);	
			DO(7 downto 0)<= XD(7 downto 0);	
		ELSIF (XA = B"0010001000000010" AND XCS0 = '0' AND XWE = '0') THEN --0X2202
			DL1ACTDSPSET <= XD(7);	
			DL3ACTDSPSET <= XD(6);
			DO(13) <= XD(5);						
			DO(12) <= XD(4); 
			DO(11) <= XD(3);
			DO(10) <= XD(2);			
			DO(9) <= XD(1);
			DO(8) <= XD(0);						
		ELSIF (XA = B"0010001000000011" AND XCS0 = '0' AND XWE = '0') THEN --0X2203
         	DARST<= XD(0);   
         	DALOAD<= XD(1);
--		ELSIF (XA = B"0010001000000100" AND XCS0 = '0' AND XWE = '0') THEN --0X2204
--         	DOEN(0)<= XD(0);   
--         	DOEN(1)<= XD(1);
		ELSIF (XA = B"0010001000000101" AND XCS0 = '0' AND XWE = '0') THEN --0X2205
         	DSPCTRLEN<= XD(0);  
		ELSIF (XA = B"0010001000000110" AND XCS0 = '0' AND XWE = '0') THEN --0X2206
			ADCONV(0)<= XD(0); 
			ADCONV(1)<= XD(1);
			ADCONV(2)<= XD(2);
			ADCONV(3)<= XD(3);		
		ELSIF (XA = B"0010010000000001" AND XCS0 = '0' AND XWE = '0') THEN	--0X2401
			LEDCTRL(1)<= XD(7);		--3
        END IF;  
     driver(0)<=pwmin(0);
     driver(1)<=pwmin(1);
     driver(2)<=pwmin(2);
     driver(3)<=pwmin(3);
     driver(4)<=pwmin(4);
     driver(5)<=pwmin(5);
	END PROCESS;
	
end Behavioral;










⌨️ 快捷键说明

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