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