根據(jù)系統(tǒng)的設(shè)計(jì)要求,綜合計(jì)時電路可分為計(jì)秒電路、計(jì)分電路、計(jì)時電路、計(jì)星期電路、計(jì)日電路、計(jì)月電路、計(jì)年電路等7個子模塊,這7個子模塊必須都具有預(yù)置、計(jì)數(shù)和進(jìn)位功能,設(shè)計(jì)思想如下:
(1)計(jì)秒電路:以直接輸入或由分頻器產(chǎn)生的秒脈沖作為計(jì)秒電路的計(jì)數(shù)時鐘信號,待計(jì)數(shù)至60瞬間,進(jìn)位,計(jì)分電路加1,而計(jì)秒電路則清零并重新計(jì)秒。
(2)計(jì)分電路、計(jì)時電路:其設(shè)計(jì)思想與計(jì)秒電路類似。
(3)計(jì)星期電路:將計(jì)時電路產(chǎn)生的進(jìn)位脈沖信號作為計(jì)星期電路的計(jì)數(shù)時鐘信號,待計(jì)數(shù)至7瞬間,計(jì)星期電路返回1重新開始計(jì)數(shù)。
(4)計(jì)日電路:將計(jì)時電路產(chǎn)生的進(jìn)位脈沖信號作為計(jì)日龜路的計(jì)數(shù)時鐘信號,通過系統(tǒng)辨認(rèn),確定本月總天數(shù)X(包括28、29、30、31四種情況),待計(jì)數(shù)至X+1瞬間,進(jìn)位,計(jì)月電路加1,而計(jì)日電路返回1重新開始計(jì)數(shù)。
(5)計(jì)月電路:將計(jì)日電路產(chǎn)生的進(jìn)位脈沖信號作為計(jì)月電路的計(jì)數(shù)時鐘信號,待計(jì)數(shù)至12瞬間,進(jìn)位,計(jì)年電路加1,而計(jì)月電路返回1重新開始計(jì)數(shù)。
(6)計(jì)年電路:將計(jì)月電路產(chǎn)生的進(jìn)位脈沖信號作為計(jì)年電路的計(jì)數(shù)時鐘信號,待計(jì)數(shù)至100瞬間,計(jì)年電路返回0重新開始計(jì)數(shù)。(注:由于本系統(tǒng)的計(jì)年范圍僅為2000~2099年,所以計(jì)年模塊只對年份的后兩位進(jìn)行計(jì)數(shù),年份的前兩位始終保持為“20”。)
下面介紹CNT60、CNT30計(jì)數(shù)模塊的設(shè)計(jì)。
CNT60計(jì)數(shù)模塊是一個多用計(jì)時模塊,它既可作為計(jì)秒電路調(diào)用,又可作為計(jì)分電路、計(jì)時電路調(diào)用。圖7.2是其輸入、輸出端口圖。其中,輸入信號LD為置數(shù)控制信號,低電平有效;輸入信號CLK為計(jì)數(shù)時鐘信號;輸入信號DATA為待預(yù)置數(shù);輸出信號NUM為計(jì)數(shù)結(jié)果;輸出信號co為計(jì)數(shù)溢出信號。
如圖1 CNT60計(jì)數(shù)模塊輸入、輸出端口圖
CNT60的主要VHDL程序段如下:
CNT30計(jì)數(shù)模塊是一個計(jì)日模塊。由于該計(jì)數(shù)模塊涉及到大小月及閏年問題,所以CN:Γ30的計(jì)數(shù)范圍并非固定不變,而是存在著1~28、1~29、1~30及1~31這四種情況。如圖是其輸入、輸出端口圖。其中輸入信號LD為置數(shù)控制信號,低電平有效;輸入信號CLK為計(jì)數(shù)時鐘信號:輸入信號DATA為待預(yù)置數(shù);輸入信號NIAN為當(dāng)前計(jì)時的年份數(shù);輸入信號YUE為當(dāng)前計(jì)時的月份數(shù):輸出信號NUM為計(jì)數(shù)結(jié)果;輸出信號CO計(jì)數(shù)溢出信號,輸出信號MAX DAYS為當(dāng)前月的天數(shù)。
如圖2 CNT30計(jì)數(shù)模塊輸入、輸出端口圖
CNT30的主要VHDL程序段如下:
來源:ks990次