【正文】
在設(shè)計電路中,往往是先仿真后連接實物圖,但有時候仿真和電路連接并不是完全一致的,例如在對具體模塊的仿真的過程中,往往沒有考慮到整體設(shè)計的層面以及與上下模塊接口的設(shè)計??偟膩碚f,通過這次的設(shè)計實驗更進一步地增強了實驗的動手能力,對數(shù)字鐘的工作原理也有了更加透徹的理解,更進一步地熟悉有關(guān)數(shù)字電路的知識和具體應(yīng)用,學(xué)會了利用Quartus II軟件進行原理圖的繪制,硬件描述語言VHDL的編寫,程序的仿真等工作。整體模塊圖如下所示:圖418 數(shù)碼管位選實現(xiàn)電路顯示模塊總的仿真圖如下所示:圖419 顯示模塊仿真波形圖5 結(jié)論與研究展望 結(jié)論數(shù)字鐘設(shè)計重在于按鍵的控制和各個模塊代碼的編寫,雖然能把鍵盤接口和各個模塊的代碼編寫出來,并能正常顯示,但對于各個模塊的優(yōu)化設(shè)計還有一定的缺陷和不足。 END PROCESS。 WHEN OTHERS = dataout_xhdl1 = 00000011。 WHEN 8 = dataout_xhdl1 = 10000000。 WHEN 6= dataout_xhdl1 = 10000010。 WHEN 4 = dataout_xhdl1 = 10011001。 WHEN 2 = dataout_xhdl1 = 10100100。process(data4)begin case data4 is WHEN 0 = dataout_xhdl1 = 11000000。 end case。 when 0111= data4=tlast。 when 11111110= data4=Q_SAO。 when 11111011= data4=Q_MAO。 when 11101111= data4=Q_HAO。 end process。 end case。 when101= en_xhdl=11111110。 when011= en_xhdl=11111011。 when001= en_xhdl=11101111。139。 elsif(clk39。039。 end process。)then div_t=div_t+1。event and clk=39。)then div_t=0000000000000000000000000。 process(clk,rst) begin if(rst=39。begin dataout=dataout_xhdl1。signal dataout_xhdl1 : std_logic_vector(7 downto 0)。ARCHITECTURE arch OF seg1 ISsignal div_t : std_logic_vector(24 downto 0 )。 en : OUT std_logic_vector(7 DOWNTO 0))。 Q_MBO,Q_SBO : IN INTEGER RANGE 0 TO 10。 Q_HAO,Q_MAO,Q_SAO:IN INTEGER RANGE 0 TO 10。ENTITY seg1 IS PORT ( clk : IN std_logic。use 。另外,還需要譯碼電路,將數(shù)字轉(zhuǎn)換成LED碼,其代碼如下:library IEEE。 ELSE 0。 Q_SBO=QSBI WHEN K2=39。139。 ELSE QM_ARM_B。 Q_MBO=QMBI WHEN K2=39。139。 ELSE QH_ARM_B。 Q_HBO=QHBI WHEN K2=39。139。END NOR_ARM_CTL。 Q_HBO: OUT INTEGER RANGE 0 TO 10。 QM_ARM_B: IN INTEGER RANGE 0 TO 10。 QH_ARM_A,QM_ARM_A: IN INTEGER RANGE 0 TO 10。 QSBI,QMBI:IN INTEGER RANGE 0 TO 10。ENTITY NOR_ARM_CTL ISPORT( k2: IN STD_LOGIC。顯示選擇模塊的代碼如下圖所示:LIBRARY ieee。END a。 END IF 。039。 ELSE tmp:=0。039。 ELSE tmp:=tmp+1。Q_20S=39。139。139。 BEGIN IF CLK39。END s20。ENTITY s20 ISPORT( QY,CLK: IN STD_LOGIC。其代碼如下所示:LIBRARY ieee。 END a。 END IF。039。139。139。139。139。139。139。139。139。139。139。139。139。139。139。139。139。139。139。139。139。139。139。139。 END CASE。 WHEN OTHERS= Q_Y=39。 WHEN 1000001000000 = Q_Y=39。 WHEN 0110011010101 = Q_Y=39。 WHEN 0110011000101 = Q_Y=39。 WHEN 0110010000000 = Q_Y=39。 WHEN 0101111000000 = Q_Y=39。 WHEN 0101101010101 = Q_Y=39。 WHEN 0101101000101 = Q_Y=39。 WHEN 0101100000000 = Q_Y=39。 WHEN 0101011010000 = Q_Y=39。 WHEN 0101010000101 = Q_Y=39。 WHEN 0101001010101 = Q_Y=39。 WHEN 0101000010000 = Q_Y=39。 WHEN 0101000000000 = Q_Y=39。 WHEN 0100010110000 = Q_Y=39。 WHEN 0100001000101 = Q_Y=39。 WHEN 0100000110101 = Q_Y=39。 WHEN 0010011010000 = Q_Y=39。 WHEN 0010010110000 = Q_Y=39。 WHEN 0010001000101 = Q_Y=39。 WHEN 0010000110101 = Q_Y=39。 WHEN 0001111010000 = Q_Y=39。 WHEN 0001111000000 = Q_Y=39。 THEN CASE QTIME IS WHEN 0001101010000 = Q_Y=39。 PROCESS(QTIME,K3) BEGIN IF K3=39。 Q_MB amp。 QTIME=Q_HB amp。 Q_MA = conv_std_logic_vector (QM_A,4)。 BEGIN Q_HA = conv_std_logic_vector (QH_A,4)。SIGNAL Q_MA:STD_LOGIC_VECTOR (3 DOWNTO 0)。SIGNAL Q_HA:STD_LOGIC_VECTOR(3 DOWNTO 0)。END COMP_TIME。 QM_B: IN INTEGER RANGE 0 TO 10。 QH_A,QM_A: IN INTEGER RANGE 0 TO 10。 USE 。本模塊的代碼如下:LIBRARY ieee。頂層模塊圖如下圖所示:圖415 定時鬧鐘比較模塊頂層圖 校園打鈴鬧鈴模塊 校園打鈴模塊校園打鈴的原理和定時鬧鈴相似,只是沒有設(shè)置模塊,所有的打鈴時間都是預(yù)設(shè)好的,并且分為春季作息時間和夏季作息時間。039。139。 BEGIN SPEAK=CLK0 AND Y。END parer。 MARM_B: IN INTEGER RANGE 0 TO 10。 HARM_A,MARM_A: IN INTEGER RANGE 0 TO 10。 QH_B: IN INTEGER RANGE 0 TO 10。ENTITY parer ISPORT( CLk0: IN STD_LOGIC。的代碼如下:LIBRARY ieee。END a。 Q_minuea=Q_tmpma。 Q_houra=Q_tmpha。 END IF 。 END IF。 Q_tmpmb:=Q_tmpmb+1。 Q_tmpma:=0 。 END IF。 Q_tmphb:=Q_tmphb+1。 Q_tmpha:=0 。139。139。 ELSIF up_key39。Q_tmpha:= 0。 THEN Q_tmpma:= 0。BEGIN IF reset=39。 VARIABLE Q_tmpha: INTEGER RANGE 0 TO 10。ARCHITECTURE a OF ctrl_memo IS BEGIN PROCESS(reset,k1,up_key) VARIABLE Q_tmpma: INTEGER RANGE 0 TO 10。 Q_minuea : OUT INTEGER RANGE 0 TO 10)?!皶r”高位 Q_houra : OUT INTEGER RANGE 0 TO 10。ENTITY ctrl_memo ISPORT( reset,k1,up_key: IN STD_LOGIC。 鬧鈴控制模塊控制部分的代碼如下所示:LIBRARY ieee。其中,控制部分的功能和時鐘校時模塊的功能相同,但是實現(xiàn)方式不太相同。 帶校時功能的整體時鐘模塊將上面的模塊聯(lián)合在一起,就得到了整體時鐘模塊,并且可以實現(xiàn)校時功能。 END PROCESS COM1 。 WHEN OTHERS = y=11 。 WHEN st1 = y = 01 。 END PROCESS COMREG 。 END CASE 。 WHEN st2 = STX = st0。 THENCASE STX IS WHEN st0 = STX = st1。EVENT AND CLK = 39。 THEN STX = st0。 BEGIN COMREG : PROCESS(CLK,RESET) BEGIN 決定轉(zhuǎn)換狀態(tài)的進程 IF RESET =39。ARCHITECTURE behav OF StateMachine IS TYPE states IS (st0, st1, st2)。 y : OUT STD_LOGIC_VECTOR(1 DOWNTO 0))。 USE 。利用上述計數(shù)電路的特點,可通過人為產(chǎn)生脈沖的方法來產(chǎn)生計數(shù)的增加,以便實現(xiàn)校時功能。END a。QSB=tmpsb。 END IF 。 END IF。COUT1=39。 tmpSb:=tmpSb+1。139。 tmpSb:=0 。139。139。 ELSIF CLK39。 COUT1=39。 THEN tmpsb := 0。BEGIN IF CLRN=39。ARCHITECTURE a OF clock_24 ISBEGIN PROCESS(CLK,CLRN) VARIABLE tmpsa: INTEGER RANGE 0 TO 10。 Qsb : OUT INTEGER RANGE 0 TO 10)。 cout1: out STD_LOGIC。 USE 。圖412 秒計數(shù)模塊框圖同樣,輸入端口EN是秒時鐘使能信號,也是整個數(shù)字鐘的使能信號,高電平有效;CLRN是異步清零信號;CLK是秒脈沖輸入