【正文】
DL設(shè)計(jì)的了解與認(rèn)識(shí),體會(huì)EDA的巨大作用,了解進(jìn)行硬件系統(tǒng)設(shè)計(jì)的整個(gè)流程,對(duì)生活工作中的電氣設(shè)備有了更深一層次的了解,對(duì)電氣工程專業(yè)有了更多興趣。2)能利用實(shí)驗(yàn)系統(tǒng)上的按鍵實(shí)現(xiàn)年、月、日和時(shí)、分、秒的校對(duì)功能。4)仿真報(bào)時(shí)功能,通過觀察有關(guān)波形確認(rèn)電路設(shè)計(jì)是否正確。萬年歷的設(shè)計(jì)思路與多功能時(shí)鐘的設(shè)計(jì)思路相似。年、月、日同時(shí)顯示,時(shí)、分、秒同時(shí)顯示,通過顯示模式切換來分別顯示。 2)畫出頂層原理圖,寫出頂層文件源程序。4)仿真各功能模塊,畫出仿真波形。實(shí)驗(yàn)原理按照模塊化的設(shè)計(jì)思想,要實(shí)現(xiàn)萬年歷的基礎(chǔ)功能,必定要包含年、月、日和時(shí)、分、秒的功能模塊,其中秒和分可以用六十進(jìn)制計(jì)數(shù)器來實(shí)現(xiàn),時(shí)用二十四進(jìn)制計(jì)數(shù)器實(shí)現(xiàn),月用十二進(jìn)制計(jì)數(shù)器來實(shí)現(xiàn),年的低兩位和高兩位都是一百進(jìn)制計(jì)數(shù)器,比較特殊的是天的計(jì)數(shù)器,因?yàn)樗兴姆N情況,大月三十一天,小月三十天,平年二月二十八天,閏年二月有二十九天,所以年和月的模塊對(duì)天的計(jì)數(shù)都有影響,需要從年和月的輸出端引出控制信號(hào)來控制天的計(jì)數(shù)。從而完成了基礎(chǔ)的計(jì)時(shí)和顯示的功能。除此之外還需要有顯示模式的切換的功能,需要增加一個(gè)模式切換的控制模塊,通過增加一個(gè)按鍵3來實(shí)現(xiàn)控制,是顯示年月日還是時(shí)分秒。譯碼驅(qū)動(dòng)譯碼驅(qū)動(dòng)譯碼驅(qū)動(dòng)譯碼驅(qū)動(dòng)譯碼驅(qū)動(dòng)譯碼驅(qū)動(dòng)時(shí)十位計(jì)數(shù)時(shí)個(gè)位計(jì)數(shù)分十位計(jì)數(shù)分個(gè)位計(jì)數(shù)秒十位計(jì)數(shù)秒個(gè)位計(jì)數(shù)校時(shí)控制電路校分控制電路分頻器電路分頻器電路晶體振蕩器電路1HZ圖3萬年歷實(shí)驗(yàn)原理圖圖4萬年歷實(shí)驗(yàn)結(jié)構(gòu)框圖圖5萬年歷實(shí)驗(yàn)結(jié)構(gòu)局部圖原理圖說明: 如圖5所示,K1鍵是選擇萬年歷工作的模式,K2鍵提供上升沿(時(shí)鐘功能)來使各計(jì)數(shù)模塊加一,從而實(shí)現(xiàn)校時(shí)的功能。 模式0:正常計(jì)時(shí)顯示 K1不按,LED1到LED5都不亮 模式1:調(diào)整分增加 K1按下一次,LED1亮其余四個(gè)不亮 模式2:調(diào)整時(shí)增加 K1按下兩次,LED2亮其余四個(gè)不亮 模式3:調(diào)整日增加 K1按下三次,LED3亮其余四個(gè)不亮 模式4:調(diào)整月增加 K1按下四次,LED4亮其余四個(gè)不亮 模式5:調(diào)整年增加 K1按下五次,LED5亮其余四個(gè)不亮 CLK是外部1Hz輸入時(shí)鐘,作為秒的時(shí)鐘輸入,驅(qū)動(dòng)整個(gè)萬年歷工作運(yùn)行。 當(dāng)1Hz時(shí)鐘信號(hào)從CLK輸入端輸入時(shí),K1,K2,K3都沒有按下時(shí),系統(tǒng)從零(閏年)開始處于正常的計(jì)時(shí)模式,顯示時(shí)分秒部分,LEDSHUCHUMOSHI指示燈亮。如果按下按鍵3,LEDSHUCHUMOSHI指示燈不亮,顯示年月日部分。當(dāng)校時(shí)完畢,需要萬年歷重新計(jì)時(shí)工作時(shí),通過按下鍵1使LED1到LED5都不亮?xí)r,系統(tǒng)工作與正常計(jì)時(shí)模式。USE 。ENTITY CNT60 IS PORT(CLK:IN STD_LOGIC。 COUT:OUT STD_LOGIC)。ARCHITECTURE ONE OF CNT60 IS SIGNAL Q11,Q22:STD_LOGIC_VECTOR(3 DOWNTO 0)。EVENT AND CLK=39。 THEN Q11=Q11+1。039。 Q22=Q22+1。 IF Q22=5 AND Q11=9 THEN Q22=0000。COUT=39。 ELSE COUT=39。 END IF。 END PROCESS。Q2=Q22。仿真結(jié)果:圖6 60進(jìn)制計(jì)數(shù)器仿真圖如上圖所示當(dāng)2計(jì)滿60時(shí),2都?xì)w零同時(shí)有一個(gè)進(jìn)位輸出脈沖,完成了六十進(jìn)制計(jì)數(shù)器的功能,設(shè)計(jì)正確。源程序:LIBRARY IEEE。USE 。 Q1,Q2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。END CNT24。BEGIN PROCESS(CLK) BEGIN IF CLK39。139。 IF Q11=9 THEN Q11=(OTHERS=39。)。 END IF。Q11=0000。139。039。 END IF。 Q1=Q11。END。(天)模塊日模塊有四種情況,大月為31進(jìn)制計(jì)數(shù)器,小月為30進(jìn)制計(jì)數(shù)器,平年二月為28進(jìn)制計(jì)數(shù)器,閏年二月為29進(jìn)制計(jì)數(shù)器,需要有一個(gè)二位判斷輸入信號(hào)來進(jìn)行進(jìn)制數(shù)的選擇。USE 。ENTITY DAY ISPORT( PANDUAN :IN STD_LOGIC_VECTOR(1 DOWNTO 0)。 CQ1 :OUT STD_LOGIC_VECTOR (3 DOWNTO 0)。 COUT :OUT STD_LOGIC)。ARCHITECTURE ONE OF DAY IS SIGNAL CQ3,CQ4:STD_LOGIC_VECTOR(3 DOWNTO 0)。BEGIN PROCESS(CLK,PANDUAN) BEGIN IF CLK39。139。 IF CQ3=9 THEN CQ3=(OTHERS=39。)。 END IF。CASE PAN ISWHEN 00=IF CQ3=0001 AND CQ4=0011 判斷信號(hào)為00時(shí)為31進(jìn) THEN CQ3=0001。COUT=39。 制計(jì)數(shù)器ELSE COUT=39。END IF。CQ4=0000。139。039。 WHEN 10=IF CQ3=1000 AND CQ4=0010 判斷信號(hào)為10時(shí)為28進(jìn)THEN CQ3=0001。COUT=39。 制計(jì)數(shù)器ELSE COUT=39。END IF。CQ4=0000。139。039。 WHEN OTHERS=NULL。END IF。 CQ2=CQ4。END。由于二月的判斷信號(hào)輸出要受到平年和閏年的影響,平年時(shí)判斷信號(hào)是10,閏年時(shí)判斷信號(hào)為11,所以它要有接收來之年模塊的判斷平年閏年的輸出信號(hào)(run=0時(shí)表平年,run=1時(shí)表閏年)。USE 。ENTITY MONTH ISport(clk :IN STD_LOGIC。 cout :OUT STD_LOGIC。 cq1,cq2 :OUT STD_LOGIC_VECTOR(3 DOWNTO 0))。ARCHITECTURE behav OF MONTH ISsignal cq3,cq4: STD_LOGIC_VECTOR (3 DOWNTO 0)。BEGINPROCESS(clk)BEGINIF clk39。139。IF cq3=9 THEN cq4=cq4+1。 END IF。cq4=0000。139。039。END IF。cq3。 一月WHEN 00000010=if run=39。 then pan=11。end if。 三月WHEN 00000100=pan=01。 五月WHEN 00000110=pan=01。 七月WHEN 00001000=pan=00。