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