📄 codec.vhd
字号:
--By DJ. 片选译码
--Mapper: A0-10 8K
--A000H-A7FFH 1M_SEL 0 valid
--A800H-AFFFH 2M_SEL 0 valid
--B000H-B7FFH 3M_SEL 0 valid
--B800H-BFFFH 4M_SEL 0 valid
--Transceiver: A0-9 4K
--C000H-C3FFH 1T_CS 0 valid
--C400H-C7FFH 2T_CS 0 valid
--C800H-CBFFH 3T_CS 0 valid
--CC00H-CFFFH 4T_CS 0 valid
--双口RAM:A0-12 8K
--8000H-9FFFH IDT_CS 0 valid
--RAM HM62256:A0-14 32K
--0000H-7FFFH HM_CS 0 valid
--D000H-DFFFH SEML 0 valid
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CoDec IS
PORT (DD8,DD9,DD10,DD11,DD12,DD13,DD14,DD15 : IN STD_LOGIC;
M1_INT,M2_INT,M3_INT,M4_INT,T1_INT,T2_INT,T3_INT,T4_INT:IN STD_LOGIC;
AAIND1,AAIND2,AAIND3,AAIND4: IN STD_LOGIC;
LED_C1,LED_C2,ADC1J1,ADSPE,VC4CLK: IN STD_LOGIC;
SELA,SELB,RST: IN STD_LOGIC;
SFP,AAIND,AS,BS,OEM,NOEM: OUT STD_LOGIC;
LED1,LED2,INT1: OUT STD_LOGIC;
MS1,MS2,MS3,MS4: OUT STD_LOGIC;
TS1,TS2,TS3,TS4: OUT STD_LOGIC;
HM_CS,IDT_CS,SEML: OUT STD_LOGIC);
END CoDec;
ARCHITECTURE dataflow OF CoDec IS
SIGNAL indata6:STD_LOGIC_VECTOR(0 TO 5);
SIGNAL indata5:STD_LOGIC_VECTOR(0 DOWNTO 4);
SIGNAL indata4:STD_LOGIC_VECTOR(0 DOWNTO 3);
SIGNAL indata2:STD_LOGIC_VECTOR(1 downto 0);
SIGNAL COUNT_24:STD_LOGIC_VECTOR(23 DOWNTO 0);
SIGNAL TMP,TMP2,OEMTMP:STD_LOGIC;
SIGNAL COUNT_20:STD_LOGIC_VECTOR(19 DOWNTO 0);
BEGIN
G1:
BLOCK
BEGIN
--NRST<='1';--NRST<= not RST;
BS<=SELB;
AS<=SELA;
AAIND<=AAIND1 and AAIND2 and AAIND3 and AAIND4;
INT1<=NOT (M1_INT OR M2_INT OR M3_INT OR M4_INT OR (NOT T1_INT) OR (NOT T2_INT) OR (NOT T3_INT) OR (NOT T4_INT));
END BLOCK G1;
G2:
BLOCK
BEGIN
indata6<=DD15&DD14&DD13&DD12&DD11&DD10;
indata5<=DD15&DD14&DD13&DD12&DD11;
indata4<=DD15&DD14&DD13&DD12;
PROCESS(DD15,DD14,DD13,DD12,DD11,DD10)
BEGIN
MS1<='1';MS2<='1';MS3<='1';MS4<='1';TS1<='1';TS2<='1';TS3<='1';TS4<='1';IDT_CS<='1';HM_CS<='1';SEML<='1';OEMTMP<='1';
if (DD15='0') then HM_CS<='0'; OEMTMP<='1';
elsif (indata4="1000")or(indata4="1001") then IDT_CS<='0';OEMTMP<='1';
elsif indata6="110011" then TS4<='0';OEMTMP<='1';
elsif indata6="110010" then TS3<='0';OEMTMP<='1';
elsif indata6="110001" then TS2<='0';OEMTMP<='1';
elsif indata6="110000" then TS1<='0';OEMTMP<='1';
elsif indata5="10111" then MS4<='0';OEMTMP<='0';
elsif indata5="10110" then MS3<='0';OEMTMP<='0';
elsif indata5="10101" then MS2<='0';OEMTMP<='0';
elsif indata5="10100" then MS1<='0';OEMTMP<='0';
elsif indata4="1101" then SEML<='0';OEMTMP<='1';
end if;
END PROCESS;
OEM<=OEMTMP;
NOEM<=NOT OEMTMP;
END BLOCK G2;
G3:
BLOCK
BEGIN
PROCESS(VC4CLK)
BEGIN
IF (VC4CLK'EVENT AND VC4CLK='1') THEN
IF COUNT_20="11111111111111111111" THEN
TMP<=NOT TMP;
COUNT_20<="00000000000000000000";
ELSE COUNT_20<=COUNT_20+'1';
END IF;
IF COUNT_24="111111111111111111111111" THEN
TMP2<=NOT TMP2;
COUNT_24<="000000000000000000000000";
ELSE COUNT_24<=COUNT_24+'1';
END IF;
END IF;
END PROCESS;
SFP<=TMP;
LED2<='1' WHEN (LED_C1='0' AND LED_C2='0') ELSE --GREEN DARK RED DARK
'0' WHEN (LED_C1='0' AND LED_C2='1') ELSE --GREEN LIGHT RED DARK
'0' WHEN (LED_C1='1' AND LED_C2='0') ELSE --GREEN LIGHT RED FAST, SERIOUS ALARM
'0' WHEN (LED_C1='1' AND LED_C2='1'); --GREEN LIGHT RED SLOW, NON SERIOUS ALARM
LED1<='1' WHEN (LED_C1='0' AND LED_C2='0') ELSE --GREEN DARK RED DARK
'1' WHEN (LED_C1='0' AND LED_C2='1') ELSE --GREEN LIGHT RED DARK
TMP WHEN (LED_C1='1' AND LED_C2='0') ELSE --GREEN LIGHT RED FAST, SERIOUS ALARM
TMP2 WHEN (LED_C1='1' AND LED_C2='1'); --GREEN LIGHT RED SLOW, NON SERIOUS ALARM
END BLOCK G3;
END dataflow;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -