找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3935|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于FPGA的加減法計數(shù)器的系統(tǒng)設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:643646 發(fā)表于 2019-11-17 15:23 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
原理
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)容,并認真閱讀實驗指導(dǎo)書,分析、掌握實驗原理,熟悉理論課本中  QuartusII  軟件的使用方法。
②    按照實驗內(nèi)容的要求,編寫相應(yīng)的實驗程序和畫出相應(yīng)的頂層電路連線圖,寫出相應(yīng)的實驗步驟。
60
進制加減法計數(shù)器
  1. module  cnt60(q,cout,clk,clrn,en,sel,j);
  2. input        clk,clrn,en,sel,j;
  3. output  reg[7:0]     q;
  4. output  reg       cout;
  5. always  @(posedge clk^j or negedge clrn)
  6.   begin
  7.        if(~clrn)   q=0;           //清0
  8.                  else if(en)               //使能
  9.                  begin
  10.                  if(sel)                   //加減(加)
  11.                  begin
  12.                     if(q=='h59) q=0;
  13.                          else q=q+1;
  14.                            if(q[3:0]=='ha) begin
  15.                    q[3:0]=0; q[7:4]=q[7:4]+1; end
  16.                           if(q=='h59)   cout=1;
  17.                                                  else cout=0;
  18.                 end
  19.                
  20.                 else                      //加減(減)
  21.                 begin
  22.                  if(q[3:0])                        
  23.                         q[3:0]=q[3:0]-1;                        
  24.                         else if(q[3:0]==0)
  25.                         begin
  26.                                 if(q[7:4]!=0)
  27.                                 begin
  28.                                         q[3:0]='h9;
  29.                                         q[7:4]=q[7:4]-1;
  30.                                 end
  31.                                 else                 //00
  32.                                 begin
  33.                                         cout=cout-1;
  34.                                         q='h59;
  35.                                 end        
  36.                    end
  37.      end
  38.          end                        
  39. end
  40. endmodule
復(fù)制代碼

24
進制加減法計數(shù)器
  1. module  cent24(q,cout,clk,clrn,en,sel,j);
  2. input        clk,clrn,en,sel,j;
  3. output  reg[7:0]     q;
  4. output  reg       cout;
  5. always  @(posedge clk^j or negedge clrn)
  6.   begin
  7.        if(~clrn)   q=0;           //清0
  8.                  else if(en)               //使能
  9.                  begin
  10.                  if(sel)                   //加減(加)
  11.                  begin
  12.                     if(q=='h23) q=0;
  13.                          else q=q+1;
  14.                            if(q[3:0]=='ha) begin
  15.                    q[3:0]=0; q[7:4]=q[7:4]+1; end
  16.                           if(q=='h23)   cout=1;
  17.                                                  else cout=0;
  18.                 end
  19.                
  20.                 else                      //加減(減)
  21.                 begin
  22.                  if(q[3:0])                        
  23.                         q[3:0]=q[3:0]-1;                        
  24.                         else if(q[3:0]==0)
  25.                         begin
  26.                                 if(q[7:4]!=0)
  27.                                 begin
  28.                                         q[3:0]='h9;
  29.                                         q[7:4]=q[7:4]-1;
  30.                                 end
  31.                                 else                 //00
  32.                                 begin
  33.                                         cout=cout-1;
  34.                                         q='h23;
  35.                                 end        
  36.                    end
  37.      end
  38.          end                        
  39. end
  40. 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)

仿真電路圖

仿真電路圖

cnt.rar

5.62 MB, 下載次數(shù): 24, 下載積分: 黑幣 -5

項目文件

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表