12小時數(shù)字鐘電路設計_第1頁
12小時數(shù)字鐘電路設計_第2頁
12小時數(shù)字鐘電路設計_第3頁
12小時數(shù)字鐘電路設計_第4頁
12小時數(shù)字鐘電路設計_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選文檔沈陽航空航天高校 課課 程程 設設 計計 報報 告告課程設計名稱:計算機組成原理課程設計計算機組成原理課程設計課程設計題目:12 小時數(shù)字鐘電路設計與實現(xiàn)小時數(shù)字鐘電路設計與實現(xiàn)院(系):計算機學院專 業(yè):計算機科學與技術班 級:34010104學 號:2013040101164姓 名:指導老師:胡光元完成日期:2016 年 1月 13 日精選文檔目目 錄錄第第 1 章章 總體設計方案總體設計方案.21.1 設計原理.21.2 設計思路.21.3 設計環(huán)境.2第第 2 章章 具體設計方案具體設計方案.22.1 算法與程序的設計與實現(xiàn).32.2 流程圖的設計與實現(xiàn).4第第 3 章章 程序

2、調試與結果測試程序調試與結果測試.73.1 程序調試.7列舉出調試過程中存在的問題.73.2 程序測試及結果分析.7參考文獻參考文獻.9附附 錄(源代碼)錄(源代碼).10精選文檔第 1 章 總體設計方案1.1設計原理設計原理 通過 Verilog 語言,編寫 12 小時數(shù)字鐘電路設計與實現(xiàn)的 Verilog 程序,一般的做法是底層文件用 verilog 寫代碼表示,頂層用寫的代碼生成的原理圖文件鏈接組成,最終在加上輸入輸出端口。接受自上而下的方法,頂層設計接受原理圖設計輸入的方式。1.2設計思設計思路路 1.實時數(shù)字鐘顯示功能,即時、分、秒的正常顯示模式,并且在此基礎上增加上,下午顯示。 2

3、.手動校準。按動方式鍵,將電路置于校時狀態(tài),則計時電路可用手動方式校準,每按一下校時鍵,時計數(shù)器加 1;按動方式鍵,將電路置于校分狀態(tài),以同樣方式手動校分。1.3設計環(huán)境設計環(huán)境(1)硬件環(huán)境)硬件環(huán)境 偉福偉福 COP2000 型計算機組成原理試驗儀型計算機組成原理試驗儀COP2000 計算機組成原理試驗系統(tǒng)由 COP2000 集成調試軟件集成調試軟件COP2000 集成開發(fā)環(huán)境是為.(2)EDA 環(huán)境環(huán)境 Xilinx foundation f3.1 設計軟件設計軟件Xilinx foundation f3.1 是 Xilinx 公司的可編程期間.精選文檔第 2 章 具體設計方案2.1 算

4、法與程序的設計與實現(xiàn)算法與程序的設計與實現(xiàn) (1)秒鐘計時器)秒鐘計時器 由于秒計數(shù)器為 60 進制計數(shù)器,所以以秒計數(shù)器作為示例說明其編程思想。其中秒計數(shù)器模塊在程序中為 always (posedge clk)的程序段,由上面分析得秒計數(shù)器由一個十進制計數(shù)器與一個六進制計數(shù)器組成,程序中有 second0 表示秒計數(shù)器低位即 10 進制計數(shù)器,second1 表示秒計數(shù)器的高位為一個六進制計數(shù)器。clk 為時鐘信號,時鐘周期 1/60(S),當?shù)臀?second0 滿 10 時,自動進一位,即 second1 自動進位。Second0,second1 位寬均為 4 位 reg 型變量。(2

5、)分鐘鐘計時器分鐘鐘計時器 分鐘計時器由于秒計數(shù)器為 12 進制計數(shù)器,示例說明其編程思想。其中秒計數(shù)器模塊在程序中為 always (posedge mod )的程序段,由分析得小時計數(shù)器由一個二進制計數(shù)器與一個三進制計數(shù)器組成,程序中有 hour0 表示秒計數(shù)器低位即二進制計數(shù)器,hour1 表示秒計數(shù)器的高位為一個三進制計數(shù)器。Mod 為時鐘信號,來自分鐘計時模塊的 mod,時鐘周期 360(S),當?shù)臀?hour0 滿 3 時,自動進一位,即 hour1 自動進位。hour1,hour1 位寬均為 4 位 reg 型變量。(3)小時計時器小時計時器 小時計時器同秒鐘計時器其中小時計數(shù)器

6、模塊在程序中為 always (posedge tun)的程序段,分鐘計時器的低位、高位分別由 minute0、minute1 表示,但分鐘計時器模塊的敏感信號為“posedge tun”時鐘信號,“tun”的產生自秒鐘計時器,可知其產生的時鐘信號為 1(S),每觸發(fā)一次則分鐘計數(shù)器計數(shù)加 1 一次,同時產生 mod 的時鐘信號,同時由于做的是 12 小時數(shù)字鐘電路,全部 zox 表示的是顯示上下午,當小時計數(shù)器滿 12 時 zox 變化一次,其中 zox=0 表示的是上午,zox=1 表示的是下午。精選文檔(4)時間設置時間設置 時間設置模塊實現(xiàn)的功能為通過按鍵調整可以對當前時間進行手動把握

7、。其主要是在時間設置使能端有效地狀況下通過 SW1 和 i_SW2 兩個按鍵對數(shù)字鐘的小時和分鐘數(shù)進行調整。Disp_drive 為設置中的顯示把握,即通過 SW1 對位的調整,Disp_drive 隨之變化。i_SW2 為對每一位上的數(shù)字在其范圍內進行加 1 調整。Disp_drive 取值 000、001、010 和 011 分別對應 hour1、hour0、minute1 和minute0 的設置,其中的加 1 設置在各個計時器模塊,這樣做的緣由是防止兩個“always”進程對同一個變量賦值發(fā)生錯誤。(5)把握顯示模塊)把握顯示模塊 把握顯示模塊在整個數(shù)字鐘的設計中起著格外重要的作用。它

8、的作用是將時間等數(shù)據(jù)用數(shù)碼管顯示的把握和數(shù)據(jù)傳輸模塊,包括數(shù)據(jù)的傳輸以及 BCD 碼譯碼等。通過幾個把握使能端將其不同功能時的時間在數(shù)碼管上顯示出來。本模塊中端口定義比較多,下面是其所對應的功能。clk:時間自動模式工作使能信號;Timeset_EN:時間設置使能信號;Time_disp_select:時間顯示位選信號;Disp_select:顯示位選信號輸出;程序設計中,各使能端信號為 1 表示執(zhí)行該功能,以時間自動工作模式使能信號有效為例說明,當 Time_EN 為 1 時,首先將時間顯示位選信號 isp_select的值賦給顯示位選信號 disp_select 輸出,定義 time_di

9、sp_select 的狀態(tài)一共有 6 個,分別為 100000、010000、001000、000100、000010 和 000001,其在各狀態(tài)下分別依次表示將、hour0、hour1、minute0、minute1、second0 和second1 的值賦給 data,用 case 語句來實現(xiàn),其實現(xiàn)語句如下:always(clk,TimeSet_EN,time_disp_select,disp_select,hour1,hour0,minute1,minute0,second1,second0) begin /時鐘,秒表顯示 if(clk | TimeSet_EN) = 1b1)精選文

10、檔 begin disp_select = time_disp_select; case(time_disp_select) 6b100000: Data = hour1; 6b010000: Data = hour0; 6b001000: Data = minute1; 6b000100: Data = minute0; 6b000010: Data = second1; 6b000001: Data = second0; default: Data = 4b0; endcase end顯示譯碼數(shù)據(jù)段主要程序如下: case(Data) 4b0000: disp_data=7b1111110

11、; 4b0001: disp_data=7b0110000; 4b0010: disp_data=7b1101101; 4b0011: disp_data=7b1111001; 4b0100: disp_data=7b0110011; 4b0101: disp_data=7b1011011; 4b0110: disp_data=7b1011111; 4b0111: disp_data=7b1110000; 4b1000: disp_data=7b1111111; 4b1001: disp_data=7b1111011; default: disp_data=7b0; endcase 顯示譯碼程

12、序說明白 0 到 9 十個數(shù)在 7 段數(shù)碼管中所對應的值,在 case語句里面最重要的是肯定不能忘了 default,否則仿真會發(fā)生所不期望看到的精選文檔結果。下圖 13 為鬧鐘設置使能有效時仿真結果。 2.2 流程圖的設計與實現(xiàn)流程圖的設計與實現(xiàn) 1.數(shù)字鐘數(shù)字鐘2. 12 小時數(shù)字時鐘整體小時數(shù)字時鐘整體數(shù)字鐘主體小時計數(shù)器分計數(shù)器秒計數(shù)器24 進制計數(shù)器60 進制計數(shù)器6 進制計數(shù)器10 進制計數(shù)器Zox=0(上午)Zox=1(下午)12 小時數(shù)字鐘顯 示時鐘時間數(shù)值 時間的校驗精選文檔第 3 章 程序調試與結果測試3.1 程序調試程序調試1、Error (10170): Verilog

13、 HDL syntax error at a.v(65) near text always; expecting end 遺忘在 begin 之后加 end 結束語2、Error (10161): Verilog HDL error at a.v(165): object Dat is not declared 在程序開頭 Dat 遺忘標記和定義3、Error (10170): Verilog HDL syntax error at Time.v(49) near text else; expecting endmodule 程序后面沒加endmodule4、Error (10170): Ve

14、rilog HDL syntax error at Time.v(56) near text =; expecting ., or an identifier 把“=”改為“=”3.2 程序測試及結果分析程序測試及結果分析1. 從圖中可以看出當 second0 滿 1010 即 10 時被置為 0000,而 second1 加1,滿足秒的低位滿十進一位的設置。2.精選文檔從圖中可以看出,在第一個時鐘周期內,時間顯示位選信號time_disp_select 的值為 000000,此時應執(zhí)行 case 語句的 default,Data 的值為 0;在其次個時鐘周期內,time_disp_selec

15、t 的值為 000001,此時對應其最終一種狀態(tài),將 second0 的值賦給 Data,即 Data 的值為 0110,從圖中看,仿真結果正確,disp_data 表示的是將當前數(shù)據(jù)譯碼顯示之后七段數(shù)碼管的顯示,所以在第一個周期內值為 1111110,表示值為 0,與 Data 所表示的數(shù)對應。依次類推,可將 Data 的值全部表示出來。3.從圖中可以看出,當只有 Timeset_EN:時間設置使能信號有效時,其七段數(shù)碼管顯示結果,與數(shù)字鐘自動工作使能端的區(qū)分為鬧鐘設置使能端有效時只需對hour0、hour1、minute0 和 minute1 進行設置,由于其同樣需要將值賦給disp_se

16、lect,為了統(tǒng)一期間,其值也設為 6 位,其 4 個狀態(tài)分別為100000、010000、001000 和 000100。其他與自動工作模式相同。精選文檔參考文獻參考文獻1張明張明.Verilog HDL 有用教程有用教程.成都:電子科技高校出版社,成都:電子科技高校出版社,1999 2齊洪喜,陸穎齊洪喜,陸穎.VHDL 電路設計電路設計M.北京:清華高校出版社,北京:清華高校出版社,2004 3江國強,李哲英江國強,李哲英.EDA 技術與應用技術與應用M.北京:電子工業(yè)出版社,北京:電子工業(yè)出版社,2004 4雷伏容雷伏容.VHDL 電路設計電路設計M.北京:清華高校出版社,北京:清華高校

17、出版社,2006 5曾繁泰,陳美金曾繁泰,陳美金.VHDL 程序設計程序設計M.北京:清華高校出版社,北京:清華高校出版社,2000 6潘松,王國棟潘松,王國棟.VHDL 有用教程有用教程.成都:電子科技高校出版社,成都:電子科技高校出版社,2000 7趙雅興趙雅興.FPGA 原理、設計與應用原理、設計與應用.天津:天津高校出版社,天津:天津高校出版社,1998 8陳俊碩陳俊碩,劉景林劉景林,張金萍張金萍.基于基于 FPGA 的直流電機的直流電機 PWM 把握器設計把握器設計J.微電機微電機 2009(10) 9盧杰,賴毅盧杰,賴毅.VHDL 與數(shù)字電路設計與數(shù)字電路設計.北京:科學出版社,北

18、京:科學出版社,2001 10張昌凡,龍永紅,彭濤張昌凡,龍永紅,彭濤.可編程規(guī)律器件及可編程規(guī)律器件及 VHDL 設計技術設計技術.廣州:華南工學院出版社,廣州:華南工學院出版社,2001精選文檔附 錄(源代碼) 源代碼:源代碼: /timescale 1ns/1nsModule aa(clk,TimeSet_EN, SW1,i_SW2,zox,disp_select,hour1,hour0,minute1,minute0,second1,second0); input clk; input TimeSet_EN; /時間設置使能信號 input SW1; input i_SW2; outp

19、ut zox; /上下午指示模 output 5:0 disp_select; output 3:0 hour1,hour0,minute1,minute0,second1,second0; reg 7:0 second,minute,hour; reg tun,mod,zox; wire r_SW2; reg 2:0 disp_drive; reg 6:0 time_disp_select; reg 6:0 disp_select; reg 3:0 Data,hour1,hour0,minute1,minute0,second1,second0; reg 6:0 disp_data; reg

20、 mt,nt; initial begin tun=0; mod=0; zox=0; hour=0; minute=0; second=0; disp_drive=3b000; end assign r_SW2=i_SW2;/ /秒鐘計時器 always (posedge clk) /上升沿觸發(fā)精選文檔 begin if(r_SW2=1b1) begin if(disp_drive=3b110) second=0; tun=0; end else if(second=8h59) begin second=0; tun=1; end else begin if(second3:0=9) begi

21、n second3:0=0; second7:4=second7:4+1; end else begin second3:0=second3:0+1; end tun=0; end second1=second7:4; second0=second3:0; end/ /分鐘計時器always (posedge tun) /上升沿觸發(fā) begin if(r_SW2=1b1) begin case(disp_drive) 3b010: begin /分的高位 if(minute7:45) minute7:4=minute7:4 + 1; else minute7:4=0; end 3b011: b

22、egin 精選文檔 if(minute3:0 9) minute3:0=minute3:0+1; else minute3:0=0; end default: begin end endcase mod=0; end else if(minute=8h59) begin minute=0; mod=1; end else begin if(minute3:0=9) begin minute3:0=0; minute7:4=minute7:4+1; end else begin minute3:0=minute3:0+1; end mod=0; end minute1=minute7:4; mi

23、nute0=minute3:0; end/ /時鐘計時器always (posedge mod ) /上升沿觸發(fā)begin if(r_SW2=1b1) begin case(disp_drive) 3b000: begin if(hour7:4=0)精選文檔 hour7:4= hour7:4+1; else begin hour7:4= 0; if(zox=0) zox=1; else zox=0; end end 3b001: begin /小時的低位 if(hour3:01) hour3:0= hour3:0 +1; else hour3:0=0; end default: begin e

24、nd endcase end else begin if(hour=8h11) begin hour=0; if(zox=0) zox=1; else zox=0; end else hour3:0=hour3:0+1; end hour1=hour7:4; hour0=hour3:0; end/ /時間設置always (posedge SW1) /手動設置使能begin if(TimeSet_EN = 1b1) begin if(disp_drive 3b101) disp_drive = disp_drive + 3b1;精選文檔 else disp_drive = 3b000; end

25、end/ /時鐘顯示 always (clk, TimeSet_EN,time_disp_select, disp_select,hour1,hour0,minute1,minute0,second1,second0) begin /時鐘,秒表顯示 if(clk | TimeSet_EN) = 1b1) begin /時鐘,秒表顯示 if(clk | TimeSet_EN = 1b1) begin disp_select = time_disp_select; case(time_disp_select) 6b100000: Data = hour1; 6b010000: Data = hour0; 6b001000: Data = minute1; 6b000100: Data = minute0; 6b000010: Data = second1; 6b000001: Data = second0; d

溫馨提示

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

評論

0/150

提交評論