標(biāo)題: 基于FPGA的加減法計數(shù)器的系統(tǒng)設(shè)計 [打印本頁]
作者: boomer 時間: 2019-11-17 15:23
標(biāo)題: 基于FPGA的加減法計數(shù)器的系統(tǒng)設(shè)計
原理
1. 計時器
24 小時計時器的電路框圖如圖 8.1 所示。
24 小時計時器由 2 個 60 進制加計數(shù)器和 1 個 24 進制加計數(shù)器構(gòu)成,輸入 CLK 為 1Hz (秒)的時鐘,經(jīng)過60 進制加計數(shù)后產(chǎn)生 1 分鐘的進位時鐘信號,再經(jīng)過 60 進制加計數(shù)后產(chǎn)生 1 小時的進位時鐘信號送給 24 進制加計數(shù)器進行加計數(shù),當(dāng)加計數(shù)到達 23:59:59 后, 再來一個秒脈沖,產(chǎn)生時的進位輸出。將兩個 60 進制加計數(shù)器和一個 24 進制加計數(shù)器的輸 出送數(shù)碼管顯示,得到計時器的顯示結(jié)果。其中,秒脈沖由 EDA 實訓(xùn)儀上的 20MHz 晶振分 頻得到。
2. 倒計時器
24 小時倒計時器的電路框圖如圖 8.2 所示。
24 小時倒計時器由 2 個 60 進制減計數(shù)器和 1 個 24 進制減計數(shù)器構(gòu)成,輸入 CLK 為 1Hz (秒)的時鐘,經(jīng)過60 進制減計數(shù)后產(chǎn)生 1 分鐘的借位時鐘信號,再經(jīng)過 60 進制減計數(shù)后產(chǎn)生 1 小時的借位時鐘信號送給 24 進制減計數(shù)器進行減計數(shù),當(dāng)減計數(shù)到達 00:00:00 后, 產(chǎn)生時的借位輸出,同時 24 小時倒計時器停止倒計時,并發(fā)出提醒信號。將兩個 60 進制減 計數(shù)器和一個 24 進制減計數(shù)器的輸出送數(shù)碼管顯示,得到 倒計時的顯示結(jié)果。其中,秒脈沖 由 EDA實訓(xùn)儀上的 20MHz 晶振分頻得到。
三、實驗設(shè)備
① EDA 實訓(xùn)儀 1 臺。
② 計算機 1 臺(裝有 Quartus II 軟件)。
四、實驗內(nèi)容
1. 計時器
在 Quartus II 軟件中,按照實驗原理中 24 小時計時器的電路框圖,用 Verilog HDL 編程 設(shè)計計時器電路,然后進行編輯、編譯(綜合)、仿真,引腳的鎖定,并下載到 EDA 實訓(xùn)儀 中進行驗證。
注: 用 EDA 實訓(xùn)儀上的 20MHz 晶振作為計時器的時鐘輸入端,按鍵 S8~S6 分別作為計 時器的校時、校分、校秒輸入端,撥動開關(guān) S0 作為計時器的清零輸入端,撥動開關(guān) S1 作為 計時器的暫停輸入端,用數(shù)碼管 SEG5~SEG0 分別作為時、分、秒的輸出端,用發(fā)光二極管 L0 作為進位輸出端 COUT。
2. 倒計時器
在 Quartus II 軟件中,按照實驗原理中 24 小時倒計時器的電路框圖,用 Verilog HDL 編
程設(shè)計倒計時器電路,然后進行編輯、編譯(綜合)、仿真,引腳的鎖定,并下載到 EDA 實 訓(xùn)儀中進行驗證。
注: 用 EDA 實訓(xùn)儀上的 20MHz 晶振作為倒計時器的時鐘輸入端,按鍵 S8~S6 分別作為 倒計時器的校時、校分、校秒輸入端,撥動開關(guān) S0 作為倒計時器的復(fù)位輸入端,撥動開關(guān) S1 作為倒計時器的暫停輸入端,用數(shù)碼管 SEG5~SEG0 分別作為時、分、秒的輸出端,用發(fā)光二極管 L0 作為借位輸出端 COUT。
五、實驗預(yù)習(xí)要求
① 復(fù)習(xí)理論課本有關(guān)計數(shù)器及分頻器的內(nèi)容,并認(rèn)真閱讀實驗指導(dǎo)書,分析、掌握實驗原理,熟悉理論課本中 QuartusII 軟件的使用方法。
② 按照實驗內(nèi)容的要求,編寫相應(yīng)的實驗程序和畫出相應(yīng)的頂層電路連線圖,寫出相應(yīng)的實驗步驟。
- module cnt60(q,cout,clk,clrn,en,sel,j);
- input clk,clrn,en,sel,j;
- output reg[7:0] q;
- output reg cout;
- always @(posedge clk^j or negedge clrn)
- begin
- if(~clrn) q=0; //清0
- else if(en) //使能
- begin
- if(sel) //加減(加)
- begin
- if(q=='h59) q=0;
- else q=q+1;
- if(q[3:0]=='ha) begin
- q[3:0]=0; q[7:4]=q[7:4]+1; end
- if(q=='h59) cout=1;
- else cout=0;
- end
-
- else //加減(減)
- begin
- if(q[3:0])
- q[3:0]=q[3:0]-1;
- else if(q[3:0]==0)
- begin
- if(q[7:4]!=0)
- begin
- q[3:0]='h9;
- q[7:4]=q[7:4]-1;
- end
- else //00
- begin
- cout=cout-1;
- q='h59;
- end
- end
- end
- end
- end
- endmodule
復(fù)制代碼
24
進制加減法計數(shù)器
- module cent24(q,cout,clk,clrn,en,sel,j);
- input clk,clrn,en,sel,j;
- output reg[7:0] q;
- output reg cout;
- always @(posedge clk^j or negedge clrn)
- begin
- if(~clrn) q=0; //清0
- else if(en) //使能
- begin
- if(sel) //加減(加)
- begin
- if(q=='h23) q=0;
- else q=q+1;
- if(q[3:0]=='ha) begin
- q[3:0]=0; q[7:4]=q[7:4]+1; end
- if(q=='h23) cout=1;
- else cout=0;
- end
-
- else //加減(減)
- begin
- if(q[3:0])
- q[3:0]=q[3:0]-1;
- else if(q[3:0]==0)
- begin
- if(q[7:4]!=0)
- begin
- q[3:0]='h9;
- q[7:4]=q[7:4]-1;
- end
- else //00
- begin
- cout=cout-1;
- q='h23;
- end
- end
- end
- end
- end
- endmodule
復(fù)制代碼
圖8.5 仿真電路圖
引腳鎖定
clk Input PIN_132 3 B3_N0 PIN_132 3.3-V LVTTL (default) 24mA (default)
clrn Input PIN_8 1 B1_N0 PIN_8 3.3-V LVTTL (default) 24mA (default)
cout Output PIN_115 3 B3_N1 PIN_115 3.3-V LVTTL (default) 24mA (default)
en Input PIN_10 1 B1_N0 PIN_10 3.3-V LVTTL (default) 24mA (default)
jf Input PIN_13 1 B1_N0 PIN_13 3.3-V LVTTL (default) 24mA (default)
jm Input PIN_12 1 B1_N0 PIN_12 3.3-V LVTTL (default) 24mA (default)
js Input PIN_14 1 B1_N0 PIN_14 3.3-V LVTTL (default) 24mA (default)
qf[7] Output PIN_99 4 B4_N0 PIN_99 3.3-V LVTTL (default) 24mA (default)
qf[6] Output PIN_97 4 B4_N0 PIN_97 3.3-V LVTTL (default) 24mA (default)
qf[5] Output PIN_96 4 B4_N0 PIN_96 3.3-V LVTTL (default) 24mA (default)
qf[4] Output PIN_95 4 B4_N0 PIN_95 3.3-V LVTTL (default) 24mA (default)
qf[3] Output PIN_94 4 B4_N0 PIN_94 3.3-V LVTTL (default) 24mA (default)
qf[2] Output PIN_92 4 B4_N0 PIN_92 3.3-V LVTTL (default) 24mA (default)
qf[1] Output PIN_59 4 B4_N1 PIN_59 3.3-V LVTTL (default) 24mA (default)
qf[0] Output PIN_58 4 B4_N1 PIN_58 3.3-V LVTTL (default) 24mA (default)
qm[7] Output PIN_57 4 B4_N1 PIN_57 3.3-V LVTTL (default) 24mA (default)
qm[6] Output PIN_56 4 B4_N1 PIN_56 3.3-V LVTTL (default) 24mA (default)
qm[5] Output PIN_48 1 B1_N1 PIN_48 3.3-V LVTTL (default) 24mA (default)
qm[4] Output PIN_47 1 B1_N1 PIN_47 3.3-V LVTTL (default) 24mA (default)
qm[3] Output PIN_46 1 B1_N1 PIN_46 3.3-V LVTTL (default) 24mA (default)
qm[2] Output PIN_45 1 B1_N1 PIN_45 3.3-V LVTTL (default) 24mA (default)
qm[1] Output PIN_44 1 B1_N1 PIN_44 3.3-V LVTTL (default) 24mA (default)
qm[0] Output PIN_43 1 B1_N1 PIN_43 3.3-V LVTTL (default) 24mA (default)
qs[7] Output PIN_114 3 B3_N1 PIN_114 3.3-V LVTTL (default) 24mA (default)
qs[6] Output PIN_113 3 B3_N1 PIN_113 3.3-V LVTTL (default) 24mA (default)
qs[5] Output PIN_112 3 B3_N1 PIN_112 3.3-V LVTTL (default) 24mA (default)
qs[4] Output PIN_110 3 B3_N1 PIN_110 3.3-V LVTTL (default) 24mA (default)
qs[3] Output PIN_104 4 B4_N0 PIN_104 3.3-V LVTTL (default) 24mA (default)
qs[2] Output PIN_103 4 B4_N0 PIN_103 3.3-V LVTTL (default) 24mA (default)
qs[1] Output PIN_102 4 B4_N0 PIN_102 3.3-V LVTTL (default) 24mA (default)
qs[0] Output PIN_101 4 B4_N0 PIN_101 3.3-V LVTTL (default) 24mA (default)
sel Input PIN_11 1 B1_N0 PIN_11 3.3-V LVTTL (default) 24mA (default)
-
cnt.png
(24.76 KB, 下載次數(shù): 146)
下載附件
2019-11-17 15:08 上傳
仿真電路圖
-
-
cnt.rar
2019-11-17 15:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
5.62 MB, 下載次數(shù): 24, 下載積分: 黑幣 -5
項目文件
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |