




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、沈陽航空航天大學(xué) 課 程 設(shè) 計 報 告課程設(shè)計名稱:計算機組成原理課程設(shè)計課程設(shè)計題目:12小時數(shù)字鐘電路設(shè)計與實現(xiàn)院(系):計算機學(xué)院專 業(yè):計算機科學(xué)與技術(shù)班 級:34010104學(xué) 號:姓 名:指導(dǎo)教師:胡光元完成日期:2016 年 1月 13 日目 錄第1章 總體設(shè)計方案21.1 設(shè)計原理21.2 設(shè)計思路21.3 設(shè)計環(huán)境2第2章 詳細(xì)設(shè)計方案22.1 算法與程序的設(shè)計與實現(xiàn)32.2 流程圖的設(shè)計與實現(xiàn)4第3章 程序調(diào)試與結(jié)果測試73.1 程序調(diào)試7列舉出調(diào)試過程中存在的問題73.2 程序測試及結(jié)果分析7參考文獻(xiàn)9附 錄(源代碼)10第1章 總體設(shè)計方案1.1 設(shè)計原理 通過Ver
2、ilog語言,編寫12小時數(shù)字鐘電路設(shè)計與實現(xiàn)的Verilog程序,一般的做法是底層文件用verilog寫代碼表示,頂層用寫的代碼生成的原理圖文件鏈接組成,最后在加上輸入輸出端口。采用自上而下的方法,頂層設(shè)計采用原理圖設(shè)計輸入的方式。1.2 設(shè)計思路 1.實時數(shù)字鐘顯示功能,即時、分、秒的正常顯示模式,并且在此基礎(chǔ)上增加上,下午顯示。 2.手動校準(zhǔn)。按動方式鍵,將電路置于校時狀態(tài),則計時電路可用手動方式校準(zhǔn),每按一下校時鍵,時計數(shù)器加1;按動方式鍵,將電路置于校分狀態(tài),以同樣方式手動校分。1.3 設(shè)計環(huán)境(1)硬件環(huán)境偉福COP2000型計算機組成原理實驗儀COP2000計算機組成原理實驗系統(tǒng)
3、由COP2000集成調(diào)試軟件COP2000 集成開發(fā)環(huán)境是為.(2)EDA環(huán)境Xilinx foundation f3.1設(shè)計軟件Xilinx foundation f3.1是Xilinx公司的可編程期間.第2章 詳細(xì)設(shè)計方案2.1 算法與程序的設(shè)計與實現(xiàn) (1)秒鐘計時器 由于秒計數(shù)器為60進(jìn)制計數(shù)器,所以以秒計數(shù)器作為示例說明其編程思想。其中秒計數(shù)器模塊在程序中為always (posedge clk)的程序段,由上面分析得秒計數(shù)器由一個十進(jìn)制計數(shù)器與一個六進(jìn)制計數(shù)器組成,程序中有second0表示秒計數(shù)器低位即10進(jìn)制計數(shù)器,second1表示秒計數(shù)器的高位為一個六進(jìn)制計數(shù)器。clk為時
4、鐘信號,時鐘周期1/60(S),當(dāng)?shù)臀籹econd0滿10時,自動進(jìn)一位,即second1自動進(jìn)位。Second0,second1位寬均為4位reg型變量。(2) 分鐘鐘計時器 分鐘計時器由于秒計數(shù)器為12 進(jìn)制計數(shù)器,示例說明其編程思想。其中秒計數(shù)器模塊在程序中為always (posedge mod )的程序段,由分析得小時計數(shù)器由一個二進(jìn)制計數(shù)器與一個三進(jìn)制計數(shù)器組成,程序中有hour0表示秒計數(shù)器低位即二進(jìn)制計數(shù)器,hour1表示秒計數(shù)器的高位為一個三進(jìn)制計數(shù)器。Mod為時鐘信號,來自分鐘計時模塊的mod,時鐘周期360(S),當(dāng)?shù)臀籬our0滿3時,自動進(jìn)一位,即hour1自動進(jìn)位。
5、hour1,hour1位寬均為4位reg型變量。(3) 小時計時器 小時計時器同秒鐘計時器其中小時計數(shù)器模塊在程序中為always (posedge tun)的程序段,分鐘計時器的低位、高位分別由minute0、minute1表示,但分鐘計時器模塊的敏感信號為“posedge tun”時鐘信號,“tun”的產(chǎn)生自秒鐘計時器,可知其產(chǎn)生的時鐘信號為1(S),每觸發(fā)一次則分鐘計數(shù)器計數(shù)加1一次,同時產(chǎn)生mod的時鐘信號,同時由于做的是12小時數(shù)字鐘電路,所有zox表示的是顯示上下午,當(dāng)小時計數(shù)器滿12時zox變化一次,其中zox=0表示的是上午,zox=1表示的是下午。(4) 時間設(shè)置 時間設(shè)置模
6、塊實現(xiàn)的功能為通過按鍵調(diào)節(jié)可以對當(dāng)前時間進(jìn)行手動控制。其主要是在時間設(shè)置使能端有效地情況下通過SW1和i_SW2兩個按鍵對數(shù)字鐘的小時和分鐘數(shù)進(jìn)行調(diào)節(jié)。Disp_drive為設(shè)置中的顯示控制,即通過SW1對位的調(diào)整,Disp_drive隨之變化。i_SW2為對每一位上的數(shù)字在其范圍內(nèi)進(jìn)行加1調(diào)節(jié)。Disp_drive取值000、001、010和011分別對應(yīng)hour1、hour0、minute1和minute0的設(shè)置,其中的加1設(shè)置在各個計時器模塊,這樣做的原因是防止兩個“always”進(jìn)程對同一個變量賦值發(fā)生錯誤。(5)控制顯示模塊 控制顯示模塊在整個數(shù)字鐘的設(shè)計中起著非常重要的作用。它的作
7、用是將時間等數(shù)據(jù)用數(shù)碼管顯示的控制和數(shù)據(jù)傳輸模塊,包括數(shù)據(jù)的傳輸以及BCD碼譯碼等。通過幾個控制使能端將其不同功能時的時間在數(shù)碼管上顯示出來。本模塊中端口定義比較多,下面是其所對應(yīng)的功能。clk:時間自動模式工作使能信號;Timeset_EN:時間設(shè)置使能信號;Time_disp_select:時間顯示位選信號;Disp_select:顯示位選信號輸出;程序設(shè)計中,各使能端信號為1表示執(zhí)行該功能,以時間自動工作模式使能信號有效為例說明,當(dāng)Time_EN為1時,首先將時間顯示位選信號isp_select的值賦給顯示位選信號disp_select輸出,定義time_disp_select的狀態(tài)一共
8、有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) = 1'b1) begin disp_select <
9、= time_disp_select; case(time_disp_select) 6'b100000: Data <= hour1; 6'b010000: Data <= hour0; 6'b001000: Data <= minute1; 6'b000100: Data <= minute0; 6'b000010: Data <= second1; 6'b000001: Data <= second0; default: Data <= 4'b0; endcase end顯示譯碼數(shù)據(jù)段主要程
10、序如下: case(Data) 4'b0000: disp_data<=7'b1111110; 4'b0001: disp_data<=7'b0110000; 4'b0010: disp_data<=7'b1101101; 4'b0011: disp_data<=7'b1111001; 4'b0100: disp_data<=7'b0110011; 4'b0101: disp_data<=7'b1011011; 4'b0110: disp_data<
11、=7'b1011111; 4'b0111: disp_data<=7'b1110000; 4'b1000: disp_data<=7'b1111111; 4'b1001: disp_data<=7'b1111011; default: disp_data<=7'b0; endcase 顯示譯碼程序說明了0到9十個數(shù)在7段數(shù)碼管中所對應(yīng)的值,在case語句里面最重要的是一定不能忘了default,否則仿真會發(fā)生所不希望看到的結(jié)果。下圖13為鬧鐘設(shè)置使能有效時仿真結(jié)果。 2.2 流程圖的設(shè)計與實現(xiàn) 1.數(shù)字鐘數(shù)
12、字鐘主體小時計數(shù)器分計數(shù)器秒計數(shù)器24進(jìn)制計數(shù)器60進(jìn)制計數(shù)器6進(jìn)制計數(shù)器10進(jìn)制計數(shù)器Zox=0(上午)Zox=1(下午)2. 12小時數(shù)字時鐘整體12小時數(shù)字鐘顯 示時鐘時間數(shù)值 時間的校驗第3章 程序調(diào)試與結(jié)果測試3.1 程序調(diào)試1、 Error (10170): Verilog HDL syntax error at a.v(65) near text "always" expecting "end" 忘記在begin之后加end結(jié)束語2、 Error (10161): Verilog HDL error at a.v(165): object
13、"Dat" is not declared 在程序開始Dat忘記標(biāo)記和定義3、 Error (10170): Verilog HDL syntax error at Time.v(49) near text "else" expecting "endmodule" 程序后面沒加"endmodule"4、 Error (10170): Verilog HDL syntax error at Time.v(56) near text "<=" expecting ".",
14、or an identifier 把“<=”改為“=”3.2 程序測試及結(jié)果分析1. 從圖中可以看出當(dāng)second0滿1010即10時被置為0000,而second1加1,滿足秒的低位滿十進(jìn)一位的設(shè)置。2.從圖中可以看出,在第一個時鐘周期內(nèi),時間顯示位選信號time_disp_select的值為000000,此時應(yīng)執(zhí)行case語句的default,Data的值為0;在第二個時鐘周期內(nèi),time_disp_select的值為000001,此時對應(yīng)其最后一種狀態(tài),將second0的值賦給Data,即Data的值為0110,從圖中看,仿真結(jié)果正確,disp_data表示的是將當(dāng)前數(shù)據(jù)譯碼顯示之
15、后七段數(shù)碼管的顯示,所以在第一個周期內(nèi)值為1111110,表示值為0,與Data所表示的數(shù)對應(yīng)。依次類推,可將Data的值全部表示出來。3.從圖中可以看出,當(dāng)只有Timeset_EN:時間設(shè)置使能信號有效時,其七段數(shù)碼管顯示結(jié)果,與數(shù)字鐘自動工作使能端的區(qū)別為鬧鐘設(shè)置使能端有效時只需對hour0、hour1、minute0和minute1進(jìn)行設(shè)置,由于其同樣需要將值賦給disp_select,為了統(tǒng)一期間,其值也設(shè)為6位,其4個狀態(tài)分別為100000、010000、001000和000100。其他與自動工作模式相同。參考文獻(xiàn)1張明.Verilog HDL實用教程.成都:電子科技大學(xué)出
16、版社,1999 2齊洪喜,陸穎.VHDL電路設(shè)計M.北京:清華大學(xué)出版社,2004 3江國強,李哲英.EDA技術(shù)與應(yīng)用M.北京:電子工業(yè)出版社,2004 4雷伏容.VHDL電路設(shè)計M.北京:清華大學(xué)出版社,2006 5曾繁泰,陳美金.VHDL程序設(shè)計M.北京:清華大學(xué)出版社,2000 6潘松,王國棟.VHDL實用教程.成都:電子科技大學(xué)出版社,2000 7趙雅興.FPGA原理、設(shè)計與應(yīng)用.天津:天津大學(xué)出版社,1998 8陳俊碩,劉景林,張金萍.基于FPGA的直流電機PWM控制器設(shè)計J.微電機2009(10)
17、160;9盧杰,賴毅.VHDL與數(shù)字電路設(shè)計.北京:科學(xué)出版社,2001 10張昌凡,龍永紅,彭濤.可編程邏輯器件及VHDL設(shè)計技術(shù).廣州:華南工學(xué)院出版社,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; /時間設(shè)置使能信號 input SW1; input i_SW2; output zox; /上下午指示模
18、 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 mt,nt; initial
19、 begin tun=0; mod=0; zox=0; hour=0; minute=0; second=0; disp_drive=3'b000; end assign r_SW2=i_SW2;/ /秒鐘計時器 always (posedge clk) /上升沿觸發(fā) begin if(r_SW2=1'b1) begin if(disp_drive=3'b110) second<=0; tun<=0; end else if(second=8'h59) begin second<=0; tun<=1; end else begin if(
20、second3:0=9) begin 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=1'b1) begin case(disp_drive) 3'b010: begin /分的高位 if(minute7:4<5)
21、minute7:4<=minute7:4 + 1; else minute7:4<=0; end 3'b011: begin if(minute3:0< 9) minute3:0<=minute3:0+1; else minute3:0<=0; end default: begin end endcase mod<=0; end else if(minute=8'h59) begin minute<=0; mod<=1; end else begin if(minute3:0=9) begin minute3:0<=0; m
22、inute7:4<=minute7:4+1; end else begin minute3:0<=minute3:0+1; end mod<=0; end minute1<=minute7:4; minute0<=minute3:0; end/ /時鐘計時器always (posedge mod ) /上升沿觸發(fā)begin if(r_SW2=1'b1) begin case(disp_drive) 3'b000: begin if(hour7:4=0) hour7:4<= hour7:4+1; else begin hour7:4<=
23、0; if(zox=0) zox<=1; else zox<=0; end end 3'b001: begin /小時的低位 if(hour3:0<1) hour3:0<= hour3:0 +1; else hour3:0<=0; end default: begin end endcase end else begin if(hour=8'h11) begin hour<=0; if(zox=0) zox<=1; else zox<=0; end else hour3:0<=hour3:0+1; end hour1<
24、=hour7:4; hour0<=hour3:0; end/ /時間設(shè)置always (posedge SW1) /手動設(shè)置使能begin if(TimeSet_EN = 1'b1) begin if(disp_drive <3'b101) disp_drive <= disp_drive + 3'b1; else disp_drive <= 3'b000; endend/ /時鐘顯示 always (clk, TimeSet_EN,time_disp_select, disp_select,hour1,hour0,minute1,min
25、ute0,second1,second0) begin /時鐘,秒表顯示 if(clk | TimeSet_EN) = 1'b1) begin /時鐘,秒表顯示 if(clk | TimeSet_EN = 1'b1) begin disp_select <= time_disp_select; case(time_disp_select) 6'b100000: Data <= hour1; 6'b010000: Data <= hour0; 6'b001000: Data <= minute1; 6'b000100: Data <= minute0; 6'b000010: Data <= second1; 6'b000001: Data <= second0; default: Data <= 4'b0; endcase end case(Data) /顯示數(shù)據(jù)譯碼 4'b0000: disp_data <= 7'b1111110; 4'b0001: disp_data <=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市河道清淤施工方案
- 工地施工勞務(wù)用工合同
- 土地出讓合同補充協(xié)議
- 霓虹燈施工方案
- 合金網(wǎng)兜施工方案
- 配電線路施工方案
- 南通輕質(zhì)混凝土施工方案
- 塑料管卡箍連接施工方案
- 臨朐立柱宣傳欄施工方案
- 建筑工程勞務(wù)用工協(xié)議
- 腎病綜合征【內(nèi)科學(xué)課件】
- 珍珠球運動-課件
- 線性代數(shù)電子教案(全套)課件
- 《藥品儲存與養(yǎng)護(hù)》考試復(fù)習(xí)題庫(含答案)
- 食品添加劑采購使用臺賬(二)
- 小學(xué)生心理健康教育講座課件
- QuickBooks操作手冊范本
- 輿論學(xué)教程PPT整本書課件完整版電子教案全套課件最全教學(xué)教程ppt(最新)
- 危險化學(xué)品物質(zhì)安全告知卡(硫酸)
- DB4403∕T 54-2020 停車庫(場)交通設(shè)施建設(shè)與管理規(guī)范
- 特種作業(yè)人員進(jìn)場報審表
評論
0/150
提交評論