【正文】
0 TO 2。 BEGIN IF CLRN=39。039。 THEN HB := 0。 HA := 0。 ELSIF CLK39。EVENT AND CLK=39。139。 THEN IF EN=39。139。 THEN IF (HB=2 AND HA=3) THEN HA:=0。HB:=0 。COUT=39。139。 ELSIF HA=9 THEN HA:=0。HB:=HB+1。COUT=39。039。 ELSE HA:=HA+1。COUT=39。039。 END IF。 END IF。 END IF 。 QHA=HA。QHB=HB。 END PROCESS 。 END ONE。 江西財(cái)經(jīng)大學(xué)普通本科畢業(yè)設(shè)計(jì) 26 定時(shí)模塊 VHDL 程序: LIBRARY ieee。 USE 。 ENTITY ctrl_memo IS PORT( res,k1,up_key:IN STD_LOGIC。 Qhourb : OUT INTEGER RANGE 0 TO 2。 Qhoura : OUT INTEGER RANGE 0 TO 9。 Qminueb : OUT INTEGER RANGE 0 TO 5。 Qminuea : OUT INTEGER RANGE 0 TO 9)。 END ctrl_memo。 ARCHITECTURE a OF ctrl_memo IS BEGIN PROCESS(res,k1,up_key) VARIABLE Qtmpma: INTEGER RANGE 0 TO 9。 VARIABLE Qtmpmb: INTEGER RANGE 0 TO 5。 VARIABLE Qtmpha: INTEGER RANGE 0 TO 9。 VARIABLE Qtmphb: INTEGER RANGE 0 TO 2。 BEGIN IF res=39。039。 THEN Qtmpma:= 0。 Qtmpmb:= 0。Qtmpha:= 0。 Qtmphb:= 0。 ELSIF up_key39。event AND up_key=39。139。 THEN IF k1=39。139。 THEN IF Qtmphb=2 AND Qtmpha=3 THEN Qtmphb:=0。 Qtmpha:=0 。 ELSIF Qtmpha=9 THEN Qtmpha:=0。 Qtmphb:=Qtmphb+1。 ELSE Qtmpha:=Qtmpha+1。 END IF。 else IF Qtmpmb=5 AND Qtmpma=9 THEN Qtmpmb:=0。 Qtmpma:=0 。 ELSIF Qtmpma=9 THEN Qtmpma:=0。 Qtmpmb:=Qtmpmb+1。 ELSE Qtmpma:=Qtmpma+1。 END IF。 END IF。 END IF 。 Qhourb=Qtmphb。 Qhoura=Qtmpha。 Qminueb=Qtmpmb。 Qminuea=Qtmpma。 江西財(cái)經(jīng)大學(xué)普通本科畢業(yè)設(shè)計(jì) 27 END PROCESS 。 END a。 選擇模塊 VHDL 程序: LIBRARY ieee。 USE 。 ENTITY NOR_ARM_CTL IS PORT( k2: IN STD_LOGIC。 QSAI,QMAI,QHAI:IN INTEGER RANGE 0 TO 9。 QSBI,QMBI:IN INTEGER RANGE 0 TO 5。 QHBI:IN INTEGER RANGE 0 TO 2。 QH_ARM_A,QM_ARM_A: IN INTEGER RANGE 0 TO 9。 QH_ARM_B: IN INTEGER RANGE 0 TO 2。 QM_ARM_B: IN INTEGER RANGE 0 TO 5。 Q_HAO,Q_MAO,Q_SAO:OUT INTEGER RANGE 0 TO 9。 Q_HBO: OUT INTEGER RANGE 0 TO 2。 Q_MBO,Q_SBO : OUT INTEGER RANGE 0 TO 5)。 END NOR_ARM_CTL。 ARCHITECTURE a OF NOR_ARM_CTL IS BEGIN Q_HAO=QHAI WHEN K2=39。139。 ELSE QH_ARM_A。 Q_HBO=QHBI WHEN K2=39。139。 ELSE QH_ARM_B。 Q_MAO=QMAI WHEN K2=39。139。 ELSE QM_ARM_A。 Q_MBO=QMBI WHEN K2=39。139。 ELSE QM_ARM_B。 Q_SAO=QSAI WHEN K2=39。139。 ELSE 0。 Q_SBO=QSBI WHEN K2=39。139。 ELSE 0。 END a。 江西財(cái)經(jīng)大學(xué)普通本科畢業(yè)設(shè)計(jì) 28 鬧鈴模塊 VHDL 程序: LIBRARY ieee。 USE 。 ENTITY BIJIAOQI IS PORT( CLk0: IN STD_LOGIC。 QH_A,QM_A: IN INTEGER RANGE 0 TO 9。 QH_B: IN INTEGER RANGE 0 TO 2。 QM_B: IN INTEGER RANGE 0 TO 5。 HARM_A,MARM_A: IN INTEGER RANGE 0 TO 9。 HARM_B: IN INTEGER RANGE 0 TO 2。 MARM_B: IN INTEGER RANGE 0 TO 5。 SPEAK: OUT STD_LOGIC)。 END BIJIAOQI。 ARCHITECTURE a OF BIJIAOQI IS SIGNAL Y: STD_LOGIC。 BEGIN SPEAK=CLK0 AND Y。 Y=39。139。 WHEN (QH_A=HARM_A) AND (QM_A=MARM_A) AND (QH_B=HARM_B) AND (QM_B=MARM_B) ELSE 39。039。 END a。 江西財(cái)經(jīng)大學(xué)普通本科畢業(yè)設(shè)計(jì) 29 打鈴模塊 VHDL 程序: LIBRARY ieee。 USE 。 ENTITY bell IS PORT( K3: IN STD_LOGIC。 Q_HA,Q_MA: IN STD_LOGIC_VECTOR(3 DOWNTO 0)。 Q_HB: IN STD_LOGIC_VECTOR(1 DOWNTO 0)。 Q_MB: IN STD_LOGIC_VECTOR(2 DOWNTO 0)。 Q_Y: OUT STD_LOGIC)。 END bell。 ARCHITECTURE a OF bell IS SIGNAL QTIME:STD_LOGIC_VECTOR(12 DOWNTO 0)。 BEGIN QTIME=Q_HB amp。 Q_HA amp。 Q_MB amp。 Q_MA。 PROCESS(QTIME,K3) BEGIN IF K3=39。139。 THEN CASE QTIME IS WHEN 0010000000000 = Q_Y=39。139。WHEN 0010001000101 = Q_Y=39。139。 WHEN 0010001010101 = Q_Y=39。139。WHEN 0010011000000 = Q_Y=39。139。 WHEN 0100000100000 = Q_Y=39。139。WHEN 0100010000101 = Q_Y=39。139。 WHEN 0100010010101 = Q_Y=39。139。WHEN 0100100000000 = Q_Y=39。139。 WHEN 0101000000000 = Q_Y=39。139。WHEN 0101001000101 = Q_Y=39。139。 WHEN 0101001010101 = Q_Y=39。139。WHEN 0101011000000 = Q_Y=39。139。 WHEN 0101011010000 = Q_Y=39。139。WHEN 0101100110101 = Q_Y=39。139。 WHEN 0110000110000 = Q_Y=39。139。WHEN 0110010010101 = Q_Y=39。139。 WHEN 0110010100101 = Q_Y=39。139。WHEN 1000000010000 = Q_Y=39。139。 WHEN 1000000100000 = Q_Y=39。139。WHEN 1000010000101 = Q_Y=39。139。 WHEN OTHERS= Q_Y=39。039。 END CASE。 END IF。 END PROCESS。 END a。 江西財(cái)經(jīng)大學(xué)普通本科畢業(yè)設(shè)計(jì) 30 打鈴時(shí)長(zhǎng)控制程序: LIBRARY ieee。 USE 。 ENTITY s20 IS PORT( QY,CLK: IN STD_LOGIC。 q_20s: out STD_LOGIC)。 END s20。 ARCHITECTURE a OF s20 IS BEGIN PROCESS(CLK) VARIABLE tmp: INTEGER RANGE 0 TO 63。 BEGIN IF CLK39。event AND CLK=39。139。 THEN IF QY=39。139。 THEN IF tmp=20 THEN tmp:=tmp+1。Q_20S=39。139。 ELSE tmp:=tmp+1。Q_20S=39。039。 END IF。 ELSE tmp:=0。Q_20S=39。039。 END IF。 END IF 。 END PROCESS 。 END a。