




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、任 務(wù)要求用 FPGA 器件和 EDA 技術(shù)實(shí)現(xiàn)多功能數(shù)字鐘的設(shè)計(jì)?;竟δ芤螅耗茱@示小時(shí)、分鐘、秒鐘(時(shí)、分用7 段 LED 顯示器,秒用LED 燈) 。小時(shí)計(jì)數(shù)器為同步24 進(jìn)制;要求手動(dòng)校時(shí)、校分。擴(kuò)展功能要求:任意時(shí)刻鬧鐘;小時(shí)顯示(12/24)切換電路自動(dòng)報(bào)整點(diǎn)時(shí)數(shù)。二、 建 立工程在 ISE 14,9 軟件中建立名為clock 的工程文件。芯片系列選擇Spatan3E, 具體芯片型號(hào)選擇XC3S100E, 封裝類型選擇CP132, 速度信息選擇-5。頂 層模塊設(shè)計(jì)module top_clock(原 理設(shè)計(jì)創(chuàng)建名為top_clock 的文件, 本設(shè)計(jì)中頂層模塊用于調(diào)用各個(gè)子模塊,
2、input Hchange,/24 小時(shí), 12 小時(shí)切換信號(hào)/用來(lái)進(jìn)行時(shí)分和秒的顯示切換/50MHz 時(shí)鐘input Change, input CLK_50, input nCR,EN,Clock_EN,input Adj_Min,Adj_Hour,Adj_Clock,/使能信號(hào),小時(shí)分鐘調(diào)時(shí)允許信號(hào),鬧鐘使能信號(hào)(撥鈕開(kāi)關(guān))output 6:0 HEX0,output reg Led_Alarm,output reg 3:0 HEX/共陽(yáng)極數(shù)碼管對(duì)應(yīng)端);reg Alarm;wire ENM_L,ENM_H,ENH;wire 7:0 Hour_24,TMinute,TSecond,CHo
3、ur,CMinute;/ 中間變量聲明正常時(shí)鐘變量和鬧鐘時(shí)鐘變量wire 7:0 Hour_12,Display_HourT,Display_HourAdjust;reg 3:0 bcd=4'b0000;/記載數(shù)碼管所要顯示的數(shù)據(jù)reg 7:0 Display_Hour,Minute;reg LD_6_RADIO;reg 7:0 sum,counter;supply1 Vdd;wire CP_1Hz;/= 分頻 =Divider50MHz U0(.CLK_50M(CLK_50),.nCLR(nCR),.CLK_1HzOut(CP_1Hz);/ 用以時(shí)鐘計(jì)數(shù)的CPdefparam U0.
4、N = 25,U0.CLK_Freq = 50000000,U0.OUT_Freq = 1;Divider50MHz U1(.CLK_50M(CLK_50),.nCLR(nCR),.CLK_1HzOut(CP_200Hz);/ 用以動(dòng)態(tài)掃描的CP,供給數(shù)碼管defparam U1.N = 18,U1.CLK_Freq = 50000000,U1.OUT_Freq = 200;/=60 進(jìn)制秒計(jì)數(shù)器=Scounter10 S0(TSecond3:0,nCR,EN,CP_1Hz);/ 秒:個(gè)位Scounter6 S1(TSecond7:4,nCR,(TSecond3:0=4'h9),CP_
5、1Hz);/ 秒:十位/=60 進(jìn)制分計(jì)數(shù)器=Mcounter10 M0(TMinute3:0,nCR,ENM_L,EN,CP_1Hz);/ 分:個(gè)位Mcounter6 M1(TMinute7:4,nCR,ENM_H,EN,CP_1Hz);/ 分:十位assign ENM_L=Adj_Min?Vdd:(TSecond=8'h59);/ 分鐘按書(shū)上CP 調(diào)時(shí)assignENM_H=(Adj_Min&&(TMinute3:0=4'h9)|(TMinute3:0=4'h9)&&(TSecond =8'h59);/24 小時(shí)制counte
6、r24 H0(Hour_247:4,Hour_243:0,nCR,ENH,EN,CP_1Hz);assignENHAdj_Hour?Vdd:(TMinute=8'h59)&&(TSecond=8'h59);/=12 小時(shí)與 24 小時(shí)進(jìn)制切換控制=assignDisplay_HourAdjust=(Hour_24=8'h20)|(Hour_24=8'h21)?(Hour_24-24): (Hour_24-18);assign Hour_12 = (Hour_24<8'h13)?Hour_24:Display_HourAdjust;a
7、ssign Display_HourT = Hchange?Hour_12:Hour_24;/= 鬧鐘 =/ 時(shí)鐘秒 /counter60 CCS(nCR,CP_1Hz,EN,CSecond7:4,CSecond3:0);/ 時(shí)鐘分 counter60 CCM(nCR,CP_1Hz,CMin_EN,CMinute7:4,CMinute3:0);/-產(chǎn)生分使能信號(hào)-assign CMin_EN = (!EN && Adj_Clock && Adj_Min);/ 時(shí)鐘時(shí) Counter24C CCH(nCR,CP_1Hz,CHour_EN,CHour7:4,CHou
8、r3:0);/-產(chǎn)生時(shí)使能信號(hào)-assign CHour_EN = (!EN && Adj_Clock && Adj_Hour);/-鬧鐘響-always(EN or Clock_EN)/鬧鐘開(kāi)關(guān)beginif(EN && Clock_EN && (CHour = Display_HourT) && (CMinute = TMinute)Alarm <= 1;else Alarm <= 0;endalways(posedge CLK_50 or negedge EN or negedge Alarm)
9、/ 表示鬧鐘的 LEDbeginif(EN) Led_Alarm <= 0;elsebeginif(Alarm) Led_Alarm <= 0;else Led_Alarm <= Led_Alarm;endend/alarm_clockAL0(Hour24,Minute,CP_1Hz,Set_Alarm,Close_clock,nCR,KeySet_Hour_ev,K數(shù)碼顯示eySet_Minute_ev,LD_7,Alarm_Hour,Alarm_Minute);/always(Adj_Clock)/ 確定數(shù)碼管顯示鬧鐘還是正常時(shí)鐘beginif(Adj_Clock) be
10、gin Display_Hour <= CHour;Minute <= CMinute;end else begin Display_Hour <= Display_HourT;Minute <= TMinute;endendalways(posedge CP_200Hz)/數(shù)碼管進(jìn)行時(shí)分顯示beginif(Change=1)begincase(HEX)4'b1110: beginHEX<=4'b0111;bcd<=Display_Hour7:4; end/第一根數(shù)碼管顯示小時(shí)十位4'b0111:beginHEX<=4'
11、b1011;bcd<=Display_Hour3:0; end/第二根顯示小時(shí)個(gè)位4'b1011:beginHEX<=4'b1101;bcd<=Minute 7:4;end/第三根顯示分鐘十位4'b1101:beginHEX<=4'b1110;bcd<=Minute 3:0;/第四根顯示分鐘個(gè)位else/數(shù)碼管進(jìn)行秒顯示,change 為低電enddefault: begin HEX<=0111; bcd<=Display_Hour 7:4; end endcaseend平時(shí)顯示秒begincase(HEX)4'
12、b1110: begin HEX<=4'b1101; bcd<= TSecond 7:4;end/第三根顯示秒十位4'b1101: begin HEX<=4'b1110; bcd<= TSecond 3:0;end/第四根顯示秒個(gè)位default: begin HEX<=1101; bcd<= TSecond 7:4; endendcaseendendSEG7_LUT L0(HEX0,bcd);/調(diào)用數(shù)碼管子函數(shù)/= 整點(diǎn)報(bào)時(shí)=assign LD_6 = LD_6_RADIO;always(CP_1Hz)beginif(Minute7
13、:0 =8'h00)&& (counter7:0 <(Hour_247:4*10 + Hour_243:0)beginLD_6_RADIO <= CP_1Hz;endelsebeginLD_6_RADIO <= 0;endendalways(posedge CP_1Hz)if(Minute7:0=8'h00)begincounter7:0<=counter7:0+1'b1;endelsebegincounter7:0<=8'h00;end endmodule五、 頂 層模塊設(shè)計(jì)圖六、子 模塊設(shè)計(jì)1 、 50MHz 分
14、頻器module Divider50MHz(CLK_50M,nCLR,CLK_1HzOut);parameter N = 25;/位寬parameter CLK_Freq = 50000000;/50MHz 時(shí)鐘輸入parameter OUT_Freq = 1;/1Hz 時(shí)鐘輸出input nCLR,CLK_50M;/輸入端口說(shuō)明output reg CLK_1HzOut;/輸出端口說(shuō)明reg N-1:0 Count_DIV;/內(nèi)部節(jié)點(diǎn),存放計(jì)數(shù)器的輸出值always(posedge CLK_50M or negedge nCLR)beginif(!nCLR) begin CLK_1HzOut
15、 <= 0; Count_DIV <= 0; endend2、秒模elsebeginif(Count_DIV <(CLK_Freq/(2*OUT_Freq)-1)/ 計(jì)數(shù)器模Count_DIV <= Count_DIV + 1'b1;else beginCount_DIV <= 0;/分頻器輸出清零CLK_1HzOut <= CLK_1HzOut;endendendmodule10 計(jì)數(shù)器module Scounter10(Q,nCR,EN,CP);input CP,nCR,EN;output Q;reg 3:0 Q;always (posedge
16、CP or negedge nCR)/分頻器計(jì)數(shù)加1/輸出信號(hào)取反beginif(nCR) Q <= 4'b0000;/ 異步清零else if(EN) Q <= Q; / 暫停計(jì)數(shù)else if(Q=4'b1001) Q <= 4'b0000;else Q <= Q + 1'b1;end3、秒模6 計(jì)數(shù)器module Scounter6(Q,nCR,EN,CP);input CP,nCR,EN;output Q;reg 3:0 Q;always (posedge CP or negedge nCR)beginif(nCR) Q <
17、= 4'b0000;/ 異步清零else if(EN) Q <= Q; / 暫停計(jì)數(shù)else if(Q=4'b0101) Q <= 4'b0000;else Q <= Q + 1'b1;end4、分模10 計(jì)數(shù)器module Mcounter10(Q,nCR,EN1,EN2,CP);input CP,nCR,EN1,EN2;output Q;reg 3:0 Q;always (posedge CP or negedge nCR)beginif(nCR) Q <= 4'b0000;/ 異步清零else if(EN1|!EN2) Q
18、<= Q; / 暫停計(jì)數(shù)else if(Q=4'b1001) Q <= 4'b0000;else Q <= Q + 1'b1;end5、分模6 計(jì)數(shù)器module Mcounter6(Q,nCR,EN1,EN2,CP);input CP,nCR,EN1,EN2;output Q;reg 3:0 Q;always (posedge CP or negedge nCR)beginif(nCR) Q <= 4'b0000;/ 異步清零else if(EN1|EN2) Q <= Q; / 暫停計(jì)數(shù)else if(Q=4'b0101)
19、 Q <= 4'b0000;else Q <= Q + 1'b1;end6、模24 計(jì)數(shù)器module counter24(CntH,CntL,nCR,EN1,EN2,CP);input CP,nCR,EN1,EN2;output reg 3:0 CntH,CntL;/ 小時(shí)的十位和個(gè)位輸出always(posedge CP or negedge nCR)beginif(nCR) CntH,CntL <= 8'h00;/異步清零else if(EN1|EN2) CntH,CntL <= CntH,CntL;/ 暫停計(jì)數(shù)else if(CntH)&
20、gt;2|(CntL>9)|(CntH)=2&&(CntL)>=3)CntH,CntL <= 8'h00;/對(duì)小時(shí)計(jì)數(shù)器出錯(cuò)時(shí)的處理else if(CntH)=2&&(CntL)<3)/進(jìn)行2023 計(jì)數(shù)begin CntH <=CntH; CntL <= CntL + 1'b1; endelse if(CntL=9)/小時(shí)十位的計(jì)數(shù)begin CntH <=CntH + 1'b1; CntL <= 4'b0000; endelsebegin CntH <= CntH; Cnt
21、L <= CntL + 1'b1; endendendmodule7、模 60 計(jì)數(shù)器module counter60(nCLR,Clk,EN,CntH,CntL);input nCLR,Clk,EN;output reg 3:0 CntH,CntL;always(posedge Clk or negedge nCLR)beginif(nCLR)CntH,CntL <= 0; / 異步清零else if(EN)CntH,CntL <= CntH,CntL; / 暫停信號(hào)else if(CntH > 5)|(CntL > 9)|(CntH = 5)&
22、&(CntL = 9)CntH,CntL <= 8'h00; / 異常處理else if(CntL = 9)begin CntH <= CntH + 1'b1;CntL <= 0;end / 十位計(jì)數(shù)elsebegin CntH <= CntH;CntL <= CntL + 1'b1;end / 個(gè)位計(jì)數(shù)endendmodule8、數(shù)碼管顯示module SEG7_LUT(oSEG,iDIG);input 3:0 iDIG;/二進(jìn)制輸入output reg 6:0 oSEG; /7 段碼輸出always(iDIG)begincase
23、(iDIG)4'h0: oSEG = 7'b000_0001;4'h1: oSEG = 7'b100_1111;4'h2: oSEG = 7'b001_0010;4'h3: oSEG = 7'b000_0110;4'h4: oSEG = 7'b100_1100;4'h5: oSEG = 7'b010_0100;4'h6: oSEG = 7'b010_0000;4'h7: oSEG = 7'b000_1111;4'h8: oSEG = 7'b000_00
24、00;4'h9: oSEG = 7'b000_0100;default: oSEG=7'b1111111;endcaseendendmodule七、 各 模塊仿真1 、模 10 計(jì)數(shù)器測(cè)試代碼:/ Inputsreg nCR;reg EN;reg CP;/ Outputswire 3:0 Q;/ Instantiate the Unit Under Test (UUT) counter10 uut (.Q(Q),.nCR(nCR),.EN(EN),.CP(CP);parameter PERIOD =40;/ 時(shí)鐘信號(hào)周期設(shè)置為40nsalways beginCP=1
25、39;b0;#(PERIOD/2) CP=1'b1;#(PERIOD/2);endinitial begin/ Initialize InputsnCR = 0;EN = 1;CP = 1;/ Wait 100 ns for global reset to finish#100;nCR=1;/ Add stimulus hereendendmodule2、模6 計(jì)數(shù)器測(cè)試代碼:/ Inputsreg nCR;reg EN;reg CP;/ Outputswire 3:0 Q;/ Instantiate the Unit Under Test (UUT)counter6 uut (.Q(
26、Q),.nCR(nCR),.EN(EN),.CP(CP);parameter PERIOD =40;/ 時(shí)鐘信號(hào)周期設(shè)置為40nsalways beginCP=1'b0;#(PERIOD/2) CP=1'b1;#(PERIOD/2);endinitial begin/ Initialize InputsnCR = 0;EN = 1;CP = 1;/ Wait 100 ns for global reset to finish#100;nCR =1;/ Add stimulus hereendendmodule3、模24 計(jì)數(shù)器測(cè)試代碼:/ Inputsreg nCR;reg E
27、N;reg CP;/ Outputswire 3:0 CntH;wire 3:0 CntL;/ Instantiate the Unit Under Test (UUT)counter24 uut (.CntH(CntH),.CntL(CntL),.nCR(nCR),.EN(EN),.CP(CP);parameter PERIOD =40;/ 時(shí)鐘信號(hào)周期設(shè)置為40nsalways beginCP=1'b0;#(PERIOD/2) CP=1'b1;#(PERIOD/2);endinitial begin/ Initialize InputsnCR = 0;EN = 1;CP =
28、 1;/ Wait 100 ns for global reset to finish#100;nCR=1;/ Add stimulus hereendendmodule4、模60 計(jì)數(shù)器測(cè)試代碼:/ Inputsreg nCLR;reg Clk;reg EN;/ Outputswire 3:0 CntH;wire 3:0 CntL;/ Instantiate the Unit Under Test (UUT)counter60 uut (.nCLR(nCLR),.Clk(Clk),.EN(EN),.CntH(CntH),.CntL(CntL);parameter PERIOD =40;/ 時(shí)
29、鐘信號(hào)周期設(shè)置為40nsalways beginClk=1'b0;#(PERIOD/2) Clk=1'b1;#(PERIOD/2);endinitial begin/ Initialize InputsnCLR = 0;Clk = 1;EN = 1;/ Wait 100 ns for global reset to finish #100;nCLR=1;/ Add stimulus hereendendmodule8、 引 腳分配N(xiāo)ET "CLK_50" TNM_NET = CLK_50;TIMESPEC TS_CLK_50 = PERIOD "C
30、LK_50" 20 ns HIGH 50%;NET "CLK_50" LOC = B8;NET "nCR" LOC = P11;NET "EN" LOC = L3;NET "Adj_Min" LOC = K3;NET "Adj_Hour" LOC = B4;NET "Change" LOC = G3;NET "Led_Alarm" LOC = N4;NET "Adj_Clock" LOC = E2;NET "Clock_EN" LOC = N3;NET "HEX06" LOC = L14;NET "HEX05" LOC = H12;NET "HEX04" LOC = N14;NET "HEX03" LOC = N11;NET "HEX02" LOC = P12;NET "HEX01" LOC = L13;NET "HEX00" LOC = M12;NET "HEX0" LOC = F12;NET "HEX
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江職業(yè)學(xué)院《司法法律社會(huì)工作》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆大學(xué)《水資源系統(tǒng)分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海立信會(huì)計(jì)金融學(xué)院《數(shù)據(jù)挖掘與智能分析雙語(yǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西旅游職業(yè)學(xué)院《用戶界面設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧省交通高等??茖W(xué)校《裝飾工程計(jì)量與計(jì)價(jià)設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東茂名農(nóng)林科技職業(yè)學(xué)院《建筑設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東舞蹈戲劇職業(yè)學(xué)院《基礎(chǔ)醫(yī)學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年福建省安全員考試題庫(kù)及答案
- 廣西工業(yè)職業(yè)技術(shù)學(xué)院《器樂(lè)合奏2》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025貴州省安全員-B證考試題庫(kù)附答案
- 發(fā)揚(yáng)體育精神展青春光彩
- 四年級(jí)數(shù)學(xué)(四則混合運(yùn)算)計(jì)算題專項(xiàng)練習(xí)與答案匯編
- 國(guó)家基本公共衛(wèi)生服務(wù)項(xiàng)目績(jī)效考核課件
- 孕產(chǎn)婦深靜脈血栓預(yù)防與護(hù)理課件
- 研發(fā)運(yùn)營(yíng)一體化DevOps能力成熟度模型評(píng)估(完整版)
- 《國(guó)際貿(mào)易實(shí)務(wù)》課件
- 班級(jí)管理課件:班級(jí)組織的建設(shè)
- 《共圓中國(guó)夢(mèng)》示范課教學(xué)設(shè)計(jì)【部編人教版九年級(jí)道德與法治上冊(cè)】
- 《更年期中醫(yī)調(diào)》課件
- 公立醫(yī)院績(jī)效考核微創(chuàng)手術(shù)目錄(第2版)
- 九年級(jí)中考物理-安培定則(右手螺旋定則)復(fù)習(xí)題匯總及解析
評(píng)論
0/150
提交評(píng)論