【正文】
ount重新計數(shù),full=1; count=00。 full=39。139。 ELSE count=count+1。 END IF。 END IF。 END PROCESS。 s0=count(0)。 s1=count(1)。END counter_model_arch。程序14 數(shù)碼管顯示譯碼模塊的VHDL程序LIBRARY IEEE。USE 。ENTITY decoder_model IS PORT (b1,b2,b3,b4:IN std_logic。 a,b,c,d,e,f,g:OUT std_logic)。END decoder_model。ARCHITECTURE decoder_model_arch OF decoder_model IS SIGNAL data_tmp:std_logic_vector(6 DOWNTO 0)。BEGIN PROCESS (b1,b2,b3,b4) VARIABLE b: std_logic_vector(3 DOWNTO 0)。BEGIN b:=b4amp。b3amp。b2amp。b1。 CASE b IS WHEN 0000=data_tmp=0111111。 WHEN 0001=data_tmp=0000110。 WHEN 0010=data_tmp=1011011。 WHEN 0011=data_tmp=1001111。 WHEN 0100=data_tmp=1100110。 WHEN 0101=data_tmp=1101101。 WHEN 0110=data_tmp=1111101。 WHEN 0111=data_tmp=0100111。 WHEN 1000=data_tmp=1111111。 WHEN 1001=data_tmp=1101111。 WHEN OTHERS=data_tmp=0000000。 END CASE。END PROCESS。a=data_tmp(0)。 b=data_tmp(1)。 c=data_tmp(2)。d=data_tmp(3)。 e=data_tmp(4)。 f=data_tmp(5)。g=data_tmp(6)。END decoder_model_arch。程序15 RS觸發(fā)器的VHDL程序 LIBRARY IEEE。USE 。ENTITY rs_df IS PORT (r,s:IN std_logic。 q:OUT std_logic)。END rs_df。ARCHITECTURE rtl OF rs_df IS SIGNAL tmp1,tmp2:std_logic。 信號定義;BEGIN 元件連接聲明; tmp2=r NAND tmp1。 tmp1=tmp2 NAND s。 q=tmp2。END rtl。程序16 指示電路模塊的VHDL程序LIBRARY IEEE。USE 。ENTITY indicator_model IS PORT (wait_l:IN std_logic。 s_lg:IN std_logic。 s_lr:IN std_logic。 clk_div1:IN std_logic。 led_g,led_r,alert:OUT std_logic)。END indicator_model。ARCHITECTURE indicator_model_arch OF indicator_model IS COMPONENT rs_df PORT (r,s:IN std_logic。 q:OUT std_logic)。 END COMPONENT rs_df。 SIGNAL tmp1,tmp2:std_logic。BEGIN U1:rs_df PORT MAP(wait_l,s_lg,led_g)。 U2:rs_df PORT MAP(wait_l,s_lr,tmp1)。 tmp2 =NOT tmp1。 alert=tmp2 AND clk_div1。 led_r=tmp1。END indicator_model_arch。程序17 控制器模塊的VHDL程序。LIBRARY IEEE。USE 。ENTITY control_model IS PORT (c11,c22,c33,c44,c55:IN std_logic。 data_in:IN std_logic。 dep:IN std_logic。 full:IN std_logic。 clk_div2:IN std_logic。 en:OUT std_logic。 wr,rd:OUT std_logic。 p,reset:OUT std_logic。 s_lr,s_lg,wait_l:OUT std_logic)。 END control_model。ARCHITECTURE control_model_arch OF control_model IS TYPE state IS(QA,QB,QC,QD,QE,QF,QG)。SIGNAL current_state:state:=QA。BEGIN PROCESS BEGIN WAIT UNTIL clk_div239。event AND clk_div2 = 39。139。 wait_l= 39。139。 CASE current_state IS WHEN QA =en=39。039。 建立等待狀態(tài) IF (c11 =39。039。 ) THEN current_state = QA。 ELSE current_state = QB。 wait_l = 39。039。 s_lg = 39。139。 s_lr =39。139。 END IF。 WHEN QB = wait_l =39。139。 en =39。039。 準備就緒狀態(tài) IF (c33 =39。039。 ) THEN current_state = QB。 ELSE current_state = QC。 reset =39。139。 END IF。 WHEN QC= reset =39。039。 p = 39。039。 en = 39。139。 密碼輸入狀態(tài) IF (c44 =39。139。 ) THEN current_state = QF。 s_lr =39。039。 ELSIF (c33 =39。139。 ) THEN current_state = QC。 reset =39。139。 ELSIF (full =39。139。 ) THEN current_state = QD。 ELSIF (data_in =39。039。 ) THEN current_state = QC。 ELSE p = 39。139。 rd=39。139。 IF (dep =39。039。 ) THEN current_state = QE。 ELSIF (full =39。139。 ) THEN current_state = QD。 ELSE current_state = QC。 END IF。 END IF。 WHEN QD= en = 39。139。 啟動狀態(tài) IF (data_in =39。139。 ) THEN current_state = QE。 ELSIF (c33 =39。139。 ) THEN current_state = QC。 reset =39。139。 ELSIF (c44 =39。039。 ) THEN current_state = QD。 ELSE s_lg =39。039。 。 current_state = QA。 END IF。 WHEN QE= en = 39。139。 報警狀態(tài) IF (c33 =39。139。 ) TH