多功能數字鐘系統課件_第1頁
多功能數字鐘系統課件_第2頁
多功能數字鐘系統課件_第3頁
多功能數字鐘系統課件_第4頁
多功能數字鐘系統課件_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、模擬電子技術課程設計報告多功能數字鐘系統院 系 :機電工程學院專 業:微電子年級(班級):微電子姓 名:楊奕醇學 號:20124231011指導教師:張明文、付英完成日期:2015年6月25日目 錄1 引 言11.1 設計目的11.2 設計意義22 Verilog  HDL簡介23 課程設計基本要求34 多功能電子鐘的6大模塊設計及仿真芯片生成34.1 計時模塊34.1.1 24時模塊34.1.2 60分模塊44.1.3 60秒模塊44.2 校時校分模塊54.3 報時模塊54.4 時段控制模塊64.5 分頻模塊74.6 數碼管譯碼模塊75 多功能數字鐘系統頂層設計整體框架7

2、5.1 頂層電路原理圖85.2 總體仿真結果86 硬件的下載與調試86.1 硬件管腳的分配86.2 硬件的下載96.3 程序的微調與測試107 總結與心得10參 考 文 獻10附錄一:源程序12附錄二:硬件管腳分配19多功能數字鐘系統1 引 言隨著電子技術的發展,現場可編程門陣列FPGA和復雜可編程邏輯器件CPLD的出現,使得電子系統的設計者利用與器件相應的電子CAD軟件,在實驗室里就可以設計自己的專用集成電路ASIC器件。這種可編程ASIC不僅使設計的產品達到小型化、集成化和高可靠性,而且器件具有用戶可編程特性,大大縮短了設計周期,減少了設計費用,降低了設計風險。目前數字系統的設計可以直接面

3、向用戶需求,根據系統的行為和功能要求,自上至下地逐層完成相應的描述綜合優化仿真與驗證,直到生成器件,實現電子設計自動化。其中電子設計自動化(EDA)的關鍵技術之一就是可以用硬件描述語言(HDL)來描述硬件電路。20世紀末,數字電子技術得到飛速發展,有力地推動了社會生產力的發展和社會信息化的提高。在其推動下,數字電子技術的應用已經滲透到人類生活的各個方面。從計算機到手機,從數字電話到數字電視,從家用電器到軍用設備,從工業自動化到航天技術,都盡可能采用數字電子技術。 在此大的背景下,傳統的只有計時功能的鐘表已經遠遠不能馬不能滿足人們對生活和生產的需求。各個領域和不同人群要求鐘表不止有計時的功能,而

4、是應該積聚了計時,校時,校分,報時等多功能的數字電子鐘。 EDA技術就是依靠功能強大的電子計算機,在EDA工具軟件平臺上,對以硬件描述語言HDL(Hardware Description Language)為系統邏輯描述手段完成的設計文件,自動地完成邏輯化簡、編譯、綜合、優化、仿真,直至下載到可編程邏輯器件CPLD/FPGA或專用集成電路ASIC(Application Specific Integrated Circuit)芯片中,實現既定的電子電路設計功能。 這給用語言Verilog HDL設計數字電子鐘帶來了極大的方便。1.1 設計目的(1)初步了解可編程邏輯器件的基本原理。(2)初步掌

5、握Altera公司的可編程邏輯器件開發軟件Quartus II的使用方法。 (3)掌握可編程邏輯器件的編程/配置方法。(4)學會使用FPGA開發板。(5)熟悉使用Verilog HDL語言。1.2 設計意義通過多功能數字鐘系統的設計,使我們認識到如何用所學的語言和相關的編譯軟件,來實現通過編程來對硬件的控制,不斷的總結錯誤,將自己所學的盡量的使用出來。2 Verilog  HDL簡介模塊是Verilog HDL的基本描述單位,用于描述某個設計的功能或結構及其與其他模塊通信的外部端口。一個設計的結構可使用開關級原語、門級原語和用戶定義的原語方式描述; 設計

6、的數據流行為使用連續賦值語句進行描述; 時序行為使用過程結構描述。一個模塊可以在另一個模塊中使用。 說明部分用于定義不同的項,例如模塊描述中使用的寄存器和參數。語句定義設計的功能和結構。說明部分和語句可以散布在模塊中的任何地方;但是變量、寄存器、線網和參數等的說明部分必須在使用前出現。為了使模塊描述清晰和具有良好的可讀性, 最好將所有的說明部分放在語句前。本書中的所有實例都遵守這一規范。 在模塊中,可用下述方式描述一個設計: (1) 數據流方式; (2) 行為方式; (3) 結構方式;上述描述方式的混合。 Verilog HDL模型中的所有時延都根據時間單位定義。 

7、0;在順序過程中出現的語句是過程賦值模塊化的實例。模塊化過程賦值在下一條語句執行前完成執行。過程賦值可以有一個可選的時延。 時延可以細分為兩種類型: (1) 語句間時延:這是時延語句執行的時延。(2) 語句內時延:這是右邊表達式數值計算與左邊表達式賦值間的時延。 在Verilog HDL中可使用如下方式描述結構: (1) 內置門原語(在門級); (2) 開關級原語(在晶體管級);(3) 用戶定義的原語(在門級);(4) 模塊實例(創建層次結構)。3 課程設計基本要求(1) 基本功能:60秒60分24小時。 (2) 擴展功能:報時;每小

8、時59分51,53,55,57秒低頻報時,59秒高頻報時。 校時校分; 時段控制;6點18點 輸出燈不亮,其它時間燈亮。 獨立設計除上述3種功能以外的擴展功能,可加分。4 多功能電子鐘的6大模塊設計及仿真芯片生成根據本次課程設計的基本要求可大致將模塊功能共分為6個模塊,分別為計時模塊、校時校分模塊、報時模塊、時段控制模塊、分頻模塊、數碼管譯碼模塊。4.1 計時模塊計時功能包括:時、分、秒的計時,為了更好的驗證此功能,我們將計時模塊又分為三個子模塊:24時模塊、60分模塊和60秒模塊。4.1.1 24時模塊24時模塊芯片如圖4.1.1所示:圖4.1.1 24 時模塊24時模塊仿真波形如圖4.1.

9、2所示:圖4.1.2 24 時模塊仿真波形4.1.2 60分模塊60分模塊芯片如圖4.1.3所示:圖4.1.3 60 分模塊60分模塊仿真波形如圖4.1.4所示:圖4.1.4 60 分模塊仿真波形4.1.3 60秒模塊60秒模塊芯片如圖4.1.5所示:圖4.1.5 60 秒模塊60秒模塊仿真波形如圖4.1.6所示:圖4.1.660 秒模塊仿真波形4.2 校時校分模塊通過SWH和SWM這兩個輸入信號來控制時、分模塊的時鐘信號。當SWH為高電平時,時校正,秒正常計數;SWM為高電平時,分校正,秒正常計數。校時校分模塊芯片如圖4.2.1所示:圖4.2.1 校時校分模塊校時校分模塊仿真波形如圖4.2.

10、2所示:圖4.2.2 校時校分模塊仿真波形4.3 報時模塊根據實驗要求:每小時59分51,53,55,57秒低頻報時,59秒高頻報時。我們生成的報時模塊如圖4.3.1所示:圖4.3.1 報時模塊報時模塊芯片仿真波形如圖4.3.2所示:圖4.3.2 報時模塊芯片仿真波形4.4 時段控制模塊根據本次課設的要求:6點18點 輸出燈不亮,其它時間燈亮。 編寫代碼所生成的時段控制模塊的芯片如圖4.4.1所示:圖4.4.1 時段控制模塊時段控制模塊仿真波形如圖4.4.2所示:圖4.4.2 時段控制模塊仿真波形圖4.5 分頻模塊為了能正常計數必須將各個的時鐘信號進行處理,也就是所謂的分頻,根據本次

11、課設所用的開發板,時鐘為50MHZ,所以要正常計數,必須將其分頻成1HZ的時鐘信號給計數模塊用。為了能達到各個模塊所需的功能,我還需將其分頻為1KHZ、500HZ、5HZ這些時鐘信號供各個模塊選擇使用。編寫代碼所生成的分頻模塊如圖4.5.1所示:圖4.5.1 分頻模塊4.6 數碼管譯碼模塊為了讓計數效果在開發板的數碼管顯示,我們必須將計數模塊的輸出進行譯碼,編寫代碼生成的模塊如圖4.6.1所示:圖4.6.1 譯碼模塊5 多功能數字鐘系統頂層設計整體框架5.1 頂層電路原理圖5.2 總體仿真結果仿真得到如圖5.2.1所示的仿真圖。圖5.2.1 總體仿真圖6 硬件的下載與調試6.1 硬件管腳的分配

12、進過管腳設置的原理圖如圖6.1.1所示:圖6.1.1 管腳分配后的原理圖具體管腳分配見附錄二6.2 硬件的下載下載結果如圖6.2.1所示:圖6.2.1 實物圖撥碼開關從左到右依次是SW9到SW0,當SW9為1時,復位端無效,這時按下SW3,使SW3為1,時鐘啟動。當要校時校分時,當SW2為1高頻調時間,SW1(校時按鈕),SW0(校分按鈕),SW2為0時低頻校時。最右邊的led燈為時段控制輸出信號。時間4時31分不在6時到18時之間所以該燈點亮。13時43分在此范圍內,燈不亮,現象如圖6.2.2所示:圖6.2.2 實物圖6.3 程序的微調與測試第一次下載到開發板時發現報時模塊出現了一些問題,但

13、是在經過對程序的一些修改及調試,最終還是成功的完成多功能數字鐘。7 總結與心得經過此次數字鐘的設計,我確實從中學到很多的東西。首先,通過VHDL硬件語言的學習,我充分認識到了功能模塊如何用語言實現,讓我初步了解到了一個數字電路用硬件語言設計的方式和設計思想。其次,也讓我深深地體會到實踐的重要性,起初我學VHDL語言的時候,只是學得書本上的知識,經過這次課程設計,通過對模塊的語言實現,對于VHDL語言我有了更深的認識。而且在程序錯誤的發現和改正的過程中,我得到了更多的收獲,也確實讓我進步了不少。再次,當我遇到一些問題的時候,請教老師,和同學們一起討論,令我受益頗多!最后,這個多功能數字電子鐘是自

14、我創造與吸取借鑒共同作用的產物,是自我努力的結果。這讓我對數字電路的設計充滿了信心。雖然課程設計已經結束,但這并不代表我已經真正掌握了VHDL語言,仍需繼續學習參 考 文 獻1 Joseph Cavanagh.Verilog HDL數字設計與建模M.北京:電子工業出版社,2001.1 潘松,黃繼業.EDA技術實用教程M .北京:科學出版社,2006.3 Sanir Palnitkar.Verilog HDL數字設計與綜合M.北京:電子工業出版社,2009.4 甘學溫.集成電路原理與設計M.北京大學出版社,2014.5 西勒提. Verilog HDL高級數字設計M.北京:電子工業出版

15、社,2014.6 齊洪喜,陸穎.VHDL電路設計M.北京:清華大學出版社,2004.7 江國強,李哲英.EDA技術與應用M.北京:電子工業出版社,2004.8 雷伏容.VHDL電路設計M.北京:清華大學出版社,2006.9 曾繁泰,陳美金.VHDL程序設計M.北京:清華大學出版社,2000.10 潘松,王國棟.VHDL實用教程M.成都:電子科技大學出版社,2000.附錄一:源程序/24進制程序module m_24(H,CPH,RD); output 7:0H; input CPH,RD; reg 7:0H; always(negedge RD or posedge CPH) begin if

16、(!RD) H7:0<=0; else begin if(H7:4=2)&&(H3:0=3) /當高位為2,低位為3時,將其賦值為零 begin H7:0<=0; end else begin if(H3:0=9) begin H3:0<=0; H7:4<=H7:4+1; end else H3:0<=H3:0+1; /若高位不為2,低位不為9時,低位加1 end end end endmodule /60進制程序module m60(M,CP60M,CPM,RD); output 7:0M; output CP60M; input CPM; in

17、put RD; wire CP60M; reg 7:0M; always(negedge RD or posedge CPM) begin if(!RD) begin M7:0<=0; end else begin if(M7:4=5)&&(M3:0=9) /當高位為5,低位為9時,將其賦值為0 begin M7:0<=0; end else /若低位為9時,低位賦值為0 begin if(M3:0=9) begin M3:0<=0; if(M7:4=5) /若高位為5時,高位賦值為0 beginM7:4<=0; end elsebeginM7:4<

18、;=M7:4+1; /若高位不為5低位為9時,高位加1 endend else beginM3:0<=M3:0+1; /若高位不為5低位不為9時,低位加1 endend end end assign CP60M=(M6&M4&M3&M0); endmodule /報時module baoshi(m6,m4,m3,m0,s6,s4,s3,s0,dy,gy,bshi); input m6,m4,m3,m0,s6,s4,s3,s0,dy,gy; output bshi; wire bm; reg bshi; assign bm=m6&m4&m3&

19、m3&m0&s6&s4&s0; always(bm or s3 or dy or gy) begin if(bm&s3) bshi<=gy; else if(bm) bshi<=dy; else bshi<=0; endendmodule/校時校分module jiaoshi(CPM,CPH,CPS,CP60M,CP60S,SWM,SWH); output CPM,CPH; input SWM,SWH; input CPS,CP60S,CP60M; reg CPM,CPH; always(SWM or SWH or CPS or CP6

20、0S or CP60M) begin case(SWM,SWH) 2'b10:begin CPM<=CPS;CPH<=CP60M;/校分 end 2'b01:begin CPM<=CP60S;CPH<=CPS;/校時end default:begin CPM<=CP60S;CPH<=CP60M;end endcase end endmodule/時段控制module deng(h,sk); input 7:0h; output sk; reg sk; always(h) begin if(h<=5)|(h>=25)sk<=1

21、;elsesk<=0;endendmodule/分頻module div_zh(f,_500HzOut,_1KHzOut, ncR,CLOCK_50,s); input ncR,CLOCK_50,s; output _500HzOut,_1KHzOut,f; wire _1HzOut,_5HzOut; assign f=s?_5HzOut:_1HzOut; divn #(.WIDTH(26),.N(50000000) u0(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_1HzOut) ); divn #(.WIDTH(17),.N(100000) u1(.cl

22、k(CLOCK_50), .rst_n(ncR), .o_clk(_500HzOut) ); divn #(.WIDTH(16),.N(50000)u2(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_1KHzOut) ); divn#(.WIDTH(24),.N(10000000) u3(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_5HzOut) ); endmodule module divn(o_clk,clk,rst_n); input clk,rst_n; output o_clk; parameter WIDTH=3; par

23、ameter N=6; reg WIDTH-1:0 cnt_p; reg WIDTH-1:0 cnt_n; reg clk_p; reg clk_n; assign o_clk=(N=1)? clk:(N0?(clk_p|clk_n):clk_p); always (posedge clk or negedge rst_n) begin if(!rst_n) cnt_p<=0; elseif(cnt_p=N-1) cnt_p<=0; else cnt_p<=cnt_p+1; end always (posedge clk or negedge rst_n) begin if(

24、!rst_n) clk_p<=0; elseif(cnt_p<(N>>1) clk_p<=1; elseclk_p<=0; end always (negedge clk or negedge rst_n) begin if(!rst_n) cnt_n<=0; else if(cnt_n=N-1) cnt_n<=0; else cnt_n<=cnt_n+1; end always (negedge clk or negedge rst_n) begin if(!rst_n) clk_n<=0; else if(cnt_n<(N&

25、gt;>1) clk_n<=1; else clk_n<=0; end endmodule/譯碼module decode4_7(input3:0 indec_0,indec_1,indec_2,indec_3,indec_4,indec_5,indec_6,indec_7, output reg 6:0 dout_0,dout_1,dout_2,dout_3,dout_4,dout_5,dout_6,dout_7 ); always(indec_0 or indec_1 or indec_2 or indec_3 or indec_4 or indec_5 or indec

26、_6 or indec_7 ) begin case(indec_0) 4'h1: dout_0 = 7'b111_1001; / -0- 4'h2: dout_0 = 7'b010_0100; / | | 4'h3: dout_0 = 7'b011_0000; / 5 1 4'h4: dout_0 = 7'b001_1001; / | | 4'h5: dout_0 = 7'b001_0010; / -6- 4'h6: dout_0 = 7'b000_0010; / | | 4'h7: do

27、ut_0 = 7'b111_1000; / 4 2 4'h8: dout_0 = 7'b000_0000; / | | 4'h9: dout_0 = 7'b001_1000; / -3- 4'ha: dout_0 = 7'b000_1000; 4'hb: dout_0 = 7'b000_0011; 4'hc: dout_0 = 7'b100_0110; 4'hd: dout_0 = 7'b010_0001; 4'he: dout_0 = 7'b000_0110; 4'

28、hf: dout_0 = 7'b000_1110; 4'h0: dout_0 = 7'b100_0000; endcase case(indec_1) 4'h1: dout_1 = 7'b111_1001; / -0- 4'h2: dout_1 = 7'b010_0100; / | | 4'h3: dout_1 = 7'b011_0000; / 5 1 4'h4: dout_1 = 7'b001_1001; / | | 4'h5: dout_1 = 7'b001_0010; / -6- 4'h6: dout_1 = 7'b000_0010; / | | 4'h7: dout_1 = 7'b111_1000; / 4 2 4&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論