【正文】
通過下載到實(shí)驗(yàn)箱驗(yàn)證,系統(tǒng)能實(shí)現(xiàn)預(yù)定的所有功能,設(shè)計(jì)正確、可行,且具有一定的實(shí)用性。此外,為了方便觀察系統(tǒng)所處的工作狀態(tài),用5個(gè)LED燈指示,若5個(gè)燈都不亮,則系統(tǒng)為正常計(jì)時(shí),其余每個(gè)燈的亮滅分別代表一種工作方式。為了增加系統(tǒng)的實(shí)用性與正確性,設(shè)計(jì)充分考慮實(shí)際問題,如在年計(jì)時(shí)模塊中判斷某年是否為閏年,輸出的閏年判斷信號又與月份相結(jié)合從而為日計(jì)數(shù)器模塊提供日計(jì)數(shù)器的進(jìn)制判斷信號,而具體情況分為四種:每年的大月,日計(jì)數(shù)器為31進(jìn)制計(jì)數(shù)器;每年的小月,日計(jì)數(shù)器為30進(jìn)制計(jì)數(shù)器;閏年的2月,日計(jì)數(shù)器為29進(jìn)制計(jì)數(shù)器;平年的2月,日計(jì)數(shù)器為28進(jìn)制計(jì)數(shù)器。此外,計(jì)時(shí)模塊又包含秒計(jì)時(shí)模塊、分計(jì)時(shí)模塊、時(shí)計(jì)時(shí)模塊、日計(jì)時(shí)模塊、月計(jì)時(shí)模塊、年計(jì)時(shí)模塊。若選擇年份為平年且將月計(jì)數(shù)器校為2月份,再通過K1按鍵進(jìn)入校日工作模式,觀察到日計(jì)數(shù)器計(jì)數(shù)至28時(shí),再按K2按鍵,日計(jì)數(shù)器重新從1開始計(jì)數(shù);若選擇年份為閏年且將月計(jì)數(shù)器校為2月份,再通過K1按鍵進(jìn)入校日工作模式,觀察到日計(jì)數(shù)器計(jì)數(shù)至29時(shí),再按K2按鍵,日計(jì)數(shù)器重新從1開始計(jì)數(shù),符合設(shè)計(jì)要求,設(shè)計(jì)正確、可行且具有一定的實(shí)用性。當(dāng)進(jìn)入調(diào)日、月、年作模式時(shí),按下K3鍵,切換顯示方式,便于觀察校對情況。經(jīng)驗(yàn)證,驗(yàn)證結(jié)果與預(yù)期的設(shè)計(jì)結(jié)果一致,當(dāng)沒有按下K1按鍵時(shí),萬年歷正常計(jì)時(shí),LED1至LED6和LED8都不亮,當(dāng)按下K1鍵時(shí),進(jìn)入校分的工作模式,此時(shí)LED1亮,LED2至LED6不亮,當(dāng)每按一次K2鍵,數(shù)碼管顯示的數(shù)據(jù)加1,而在校對時(shí)間時(shí),校對位的位低一位和校對位的高位不會產(chǎn)生進(jìn)位輸出,其余位正常產(chǎn)生進(jìn)位輸出。設(shè)定完引腳號后,再重新編譯頂層電路圖。本設(shè)計(jì)中目標(biāo)芯片選用EP1K30TC1443,可根據(jù)芯片引腳對照表和實(shí)驗(yàn)結(jié)構(gòu)電路圖對輸入輸出引腳進(jìn)行匹配,完成匹配后,再對頂層原理圖進(jìn)行編譯。第4章 引腳設(shè)定與驗(yàn)證 引腳設(shè)定因?yàn)樵O(shè)計(jì)中需要用到8個(gè)數(shù)碼管來顯示時(shí)間和日期;需要3個(gè)按鍵作為校時(shí)模塊、顯示方式切換模塊的控制輸入端;需要7個(gè)LED燈作為工作模式和顯示方式的指示信號。然后,再按下K1按鍵5次,進(jìn)入校日模式。然后,按下K1按鍵,系統(tǒng)進(jìn)入校分模式,ll1輸出高電平,再按下K2按鍵3次,可觀察到每按下K2,qq3輸出會加1。 生成頂層原理圖的方法是基于上述各模塊的源程序,將各個(gè)源程序創(chuàng)建成為一個(gè)元器件。 頂層原理圖 頂層設(shè)計(jì)采用原理圖輸入法,從而達(dá)到設(shè)計(jì)思路清晰、直觀的目的。當(dāng)按下K3按鍵后,led輸出為高電平,同時(shí)將日計(jì)數(shù)器、月計(jì)數(shù)器、年低位計(jì)數(shù)器、年高位計(jì)數(shù)器給輸出q1至q8,顯示方式為年月日。 : 顯示及顯示方式切換模塊仿真圖 ,當(dāng)不按K3按鍵時(shí),顯示方式為時(shí)分秒顯示,led輸出低電平,作為顯示方式的指示信號。 END PROCESS。 00時(shí)顯示模式為時(shí)分秒,指示燈不亮 WHEN OTHERS=NULL。led=39。q2=s2。 q4=min2。q6=h2。 01時(shí)顯示模式為年月日,指示燈亮 WHEN00=q8=0000。led=39。q2=d2。q4=mon2。q6=y12。 CASE a IS WHEN01= q8=y22。 END IF。139。139。 BEGIN PROCESS(k3) BEGIN IF k339。 END ENTITY change_1。 q1,q2,q3,q4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。 k3:IN STD_LOGIC。 USE 。顯示及顯示方式切換模塊源程序如下: LIBRARY IEEE。萬年歷不僅要顯示時(shí)間,而且要顯示日期。故設(shè)計(jì)正確。若再按一下K2,則進(jìn)入校時(shí)的工作模式,l1變?yōu)榈碗娖剑琹2變?yōu)楦唠娖?,同時(shí)K2波形與時(shí)計(jì)數(shù)器的觸發(fā)輸入信號si一致。當(dāng)按下按鍵K1一次,則進(jìn)入校分的工作模式,l1輸出為高電平。 END ARCHITECTURE rt_1。 END CASE。139。039。039。039。039。039。n2i=k2。yi=ro。si=fo。039。139。039。039。039。039。039。n1i=k2。ri=so。 模式4, 選通月模塊,調(diào)月 WHEN101=fi=mo。l6=39。l5=39。l4=39。l3=39。l2=39。 l1=39。n2i=39。n1i=39。ri=so。 模式3,選通日模塊,調(diào)日 WHEN100=fi=mo。l6=39。l5=39。l4=39。l3=39。l2=39。 l1=39。n2i=39。n1i=39。yi=39。si=fo。039。039。039。039。139。039。039。039。039。039。si=k2。039。039。039。039。039。139。039。039。039。039。039。 模式0正常計(jì)時(shí) WHEN001=fi=k2。l6=39。l5=39。l4=39。l3=39。l2=39。 l1=39。n1i=yo。ri=so。 CASE a IS WHEN000=fi=mo。 END IF。 THEN a=a+1。EVENT AND k1=39。 ARCHITECTURE rt_1 OF jiaoshi IS SIGNAL a:STD_LOGIC_VECTOR(2 DOWNTO 0)。 各計(jì)數(shù)器的輸入時(shí)鐘信號 l1,l2,l3,l4,l5,l6:OUT STD_LOGIC)。 調(diào)時(shí)模塊的輸入信號 k1,k2:IN STD_LOGIC。 USE 。校時(shí)模塊源程序如下: LIBRARY IEEE。 校時(shí)模塊校時(shí)模塊的主要功能是校對時(shí)間,而校時(shí)功能通過按鍵KK2來實(shí)現(xiàn)。 END ARCHITECTURE rt_1。y4=q2。 END IF。q1=0000。 END IF。q2=q2+39。139。139。 BEGIN PROCESS(clk) BEGIN IF clk39。 END ENTITY year_2。 ENTITY year_2 IS PORT(clk:IN STD_LOGIC。 USE 。此外,因?yàn)?00的倍數(shù)必定是4的倍數(shù),當(dāng)年份的低位能被4整除,不管高位是什么數(shù)字,該年份一定是閏年,所以在年高位計(jì)數(shù)器中無需判斷其是否為閏年。此外,從圖中可以觀察到每過4年,信號run都會輸出一個(gè)脈沖,故設(shè)計(jì)正確。 END ARCHITECTURE rt_1。y2=q2。 END IF。039。139。 IF q3=3 THEN q3=0000。 THEN q3=q3+39。EVENT AND clk=39。 END PROCESS。 END IF。 ELSE c=39。c=39。 IF q2=9 AND q1=9 THEN q2=0000。139。 IF q1=9 THEN q1=0000。 THEN q1=q1+39。EVENT AND clk=39。 ARCHITECTURE rt_1 OF year_1 IS SIGNAL q1,q2,q3:STD_LOGIC_VECTOR(3 DOWNTO 0)。 run,c:OUT STD_LOGIC)。 ENTITY year_1 IS PORT(clk:IN STD_LOGIC。 USE 。除此,低位計(jì)數(shù)器不僅要有觸發(fā)輸入,也要有進(jìn)位輸出,作為年高位計(jì)數(shù)器的觸發(fā)輸入。 2)當(dāng)輸入信號run為0時(shí),即表示該年份為平年,: 平年時(shí)月計(jì)數(shù)器的仿真圖 ,當(dāng)輸入信號run為低電平,即表示平年時(shí),在2月份,輸出判斷信號pan為10;在大月,輸出判斷信號pan為00;在小月,輸出判斷信號pan為01;與日計(jì)數(shù)器的進(jìn)制判斷要求一致,故設(shè)計(jì)正確。 END ARCHITECTURE rt_1。q2=qq2。 END CASE。 november WHEN 00010010=pan=00。 september WHEN 00010000=pan=00。 july WHEN 00001000=pan=00。 may WHEN 00000110=pan=01。 march WHEN 00000100=pan=01。 END IF。 THEN pan=11。 january WHEN 00000010=IF run=39。qq1。 END IF。039。139。qq2=0000。 END IF。 IF qq1=9 THEN qq2=qq2+1。 THEN qq1=qq1+39。EVENT AND clk=39。 SIGNAL q3: STD_LOGIC_VECTOR (7 DOWNTO 0)。 END ENTITY t_12。 pan :OUT STD_LOGIC_VECTOR(1 DOWNTO 0)。 run :IN STD_LOGIC。 USE 。月計(jì)數(shù)器的源程序如下: LIBRARY IEEE。此外,由于閏年的2月和平年的2月,判斷信號輸出不同,所以該模塊需要從年計(jì)數(shù)模塊引入閏年的判斷信號。 4)當(dāng)輸入信號panduan為11時(shí),: 判斷信號panduan為11時(shí)日計(jì)數(shù)器的仿真圖 ,當(dāng)輸入的panduan為11時(shí),日計(jì)數(shù)器計(jì)數(shù)至29時(shí),等待至clk信號下一個(gè)脈沖上升沿到來時(shí),進(jìn)位輸出c產(chǎn)生一個(gè)輸出脈