ä¸ãJTDKZ
å设4ç§ç¶æåå«ä¸ºï¼AãBãCãDï¼å¨CLKä¸å沿æ¥æ¶ï¼æ ¹æ®SBãSMç¶æå¤æ交éå¤äºä½ç§ç¶æï¼è¯¥ç¶æè¾åºä»ä¹ä¿¡å·ã
设计çåçå¾æ¨¡åï¼
设计æºç¨åºï¼
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY JTDKZ IS
PORT(CLK,SM,SB:IN STD_LOGIC;
MR,MY0,MG0,BR,BY0,BG0:OUT STD_LOGIC);
END ENTITY JTDKZ;
ARCHITECTURE ART OF JTDKZ IS
TYPE STATE_TYPE IS(A,B,C,D);
SIGNAL STATE:STATE_TYPE;
BEGIN
CNT:PROCESS(CLK)IS
VARIABLE S:INTEGER RANGE 0 TO 45;
VARIABLE CLR,EN:BIT;
BEGIN
IF(CLK'EVENT AND CLK='1')THEN
IF CLR='0'THEN S:=0;
ELSIF EN='0'THEN S:=S;
ELSE S:=S+1;
END IF;
CASE STATE IS
WHEN A=>MR<='0';MY0<='0';MG0<='1';BR<='1';BY0<='0';BG0<='0';
IF(SB AND SM)='1' THEN
IF S=45 THEN STATE<=B;CLR:='0';EN:='0';
ELSE STATE<=A;CLR:='1';EN:='1';
END IF;
ELSIF(SB AND(NOT SM))='1'THEN STATE<=B;CLR:='0';EN:='0';
ELSE STATE<=A;CLR:='1';EN:='1';
END IF;
WHEN B=>MR<='0';MY0<='1';MG0<='0';BR<='1';BY0<='0';BG0<='0';
IF S=5 THEN STATE<=C;CLR:='0';EN:='0';
ELSE STATE<=B;CLR:='1';EN:='1';
END IF;
WHEN C=>MR<='1';MY0<='0';MG0<='0';BR<='0';BY0<='0';BG0<='1';
IF(SM AND SB)='1'THEN
IF S=25 THEN STATE<=D;CLR:='0';EN:='0';
ELSE STATE<=C;CLR:='1';EN:='1';
END IF;
ELSIF SB='0' THEN STATE<=D;CLR:='0';EN:='0';
ELSE STATE<=C;CLR:='1';EN:='1';
END IF;
WHEN D=>MR<='1';MY0<='0';MG0<='0';BR<='0';BY0<='1';BG0<='0';
IF S=5 THEN STATE<=A;CLR:='0';EN:='0';
ELSE STATE<=D;CLR:='1';EN:='1';
END IF;
END CASE;
END IF;
END PROCESS CNT;
END ARCHITECTURE ART;
设计仿ççæªå¾ï¼
äºãXSKZ
æ ¹æ®EN45ãEN25ãEN05MãEN05Bçä¿¡å·ä»¥å3个å计æ¶è®¡æ°å¨ç计æ°ç¶æå³å®è¾åº3个å计æ¶è®¡æ°å¨ä¸æ个çç¶æè¾åºã
åçå¾æ¨¡åï¼
设计æºç¨åºï¼
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY XSKZ IS
PORT(EN45,EN25,EN05M,EN05B: IN STD_LOGIC;
AIN45M,AIN45B,AIN25M,AIN25B,AIN05: IN STD_LOGIC_VECTOR(7 downto 0);
DOUTB,DOUTM: OUT STD_LOGIC_VECTOR(7 downto 0));
END ENTITY XSKZ;
ARCHITECTURE ART OF XSKZ IS
SIGNAL A :STD_LOGIC_VECTOR (3 DOWNTO 0);
begin
A<= EN45&EN25&EN05M&EN05B;
PROCESS(A) IS
BEGIN
CASE A IS
WHEN"1000"=>DOUTM<=AIN45M;DOUTB<=AIN45B;
WHEN"1010"=>DOUTM<=AIN05;DOUTB<=AIN05;
WHEN"0100"=>DOUTM<=AIN25M;DOUTB<=AIN25B;
WHEN"0101"=>DOUTM<=AIN05;DOUTB<=AIN05;
WHEN OTHERS=>DOUTM<="00000000";DOUTB<="00000000";
END CASE ;
END PROCESS;
END ARCHITECTURE ART;设计仿ççæªå¾ï¼
ä¸ãCNT45S
CLKä¸å沿å°æ¥æ¶ï¼è¥å°è®¡æ¶ä½¿è½ä¿¡å·åSBä¿¡å·ææï¼CNT45Så¼å§è®¡æ°ï¼å¹¶å°è¾å
¥ç¶æéè¿DOUT45MãDOUT45Båå«è¾åºå°ä¸»ãæ¯å¹²éæ¾ç¤ºã
设计çåçå¾æ¨¡åï¼
设计æºç¨åºï¼
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT45S IS
PORT(SB,CLK,EN45:IN STD_LOGIC;
DOUT45M,DOUT45B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END CNT45S;
ARCHITECTURE ART OF CNT45S IS
SIGNAL CNT6B:STD_LOGIC_VECTOR(5 DOWNTO 0);
BEGIN
PROCESS(SB,CLK,EN45) IS
BEGIN
IF SB='0' THEN CNT6B<=CNT6B-CNT6B-1;
ELSIF(CLK'EVENT AND CLK='1')THEN
IF EN45='1'THEN CNT6B<=CNT6B+1;
ELSIF EN45='0'THEN CNT6B<=CNT6B-CNT6B-1;
END IF;
END IF;
END PROCESS;
PROCESS(CNT6B)IS
BEGIN
CASE CNT6B IS
W
温馨提示:答案为网友推荐,仅供参考