2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  課程設(shè)計任務(wù)書</b></p><p>  設(shè)計題目1:數(shù)碼管顯示數(shù)字鐘設(shè)計</p><p>  院(系)分管領(lǐng)導(dǎo):     教研室主任:     指導(dǎo)教師: </p><p>  2017年 6月 23日</p><p> 學(xué)生姓名</p><p&

2、gt; 課程名稱EDA技術(shù)課程設(shè)計專業(yè)班級</p><p> 地 點起止時間2017年6月19日— 6月23日</p><p> 設(shè)計內(nèi)容硬件設(shè)計及樣品制作</p><p> 設(shè)計參數(shù)1、具有時、分、秒,計數(shù)顯示功能,以24小時循環(huán)計時;2、具有清零,調(diào)節(jié)小時、分鐘功能;3、具有整點報時功能,整點報時的同時LED花樣顯示。</p><p&g

3、t; 設(shè)計進(jìn)度2017年6月19日—20日 查閱資料,確定設(shè)計方案2017年6月21日—22日 程序設(shè)計和硬件調(diào)試2017年6月23日 撰寫課程設(shè)計報告,答辯</p><p> 設(shè)計成果設(shè)計說明書一份(不少于2000字);樣品一套。</p><p> 參考資料周潤景等,基于Quartus II的FPGA/CPLD數(shù)字系統(tǒng)設(shè)計實例,電子工業(yè)出版社,2010夏宇聞,Verilog數(shù)字系統(tǒng)設(shè)計

4、教程(第二版),北京航空航天大學(xué)出版社,2014</p><p> 說明1.本表應(yīng)在每次實施前由指導(dǎo)教師填寫一式2份,審批后所在系(部)和指導(dǎo)教師各留1份。2.多名學(xué)生共用一題的,在設(shè)計內(nèi)容、參數(shù)、要求等方面應(yīng)有所區(qū)別。3.若填寫內(nèi)容較多可另紙附后。</p><p><b>  目 錄</b></p><p><b>  第1章

5、引言1</b></p><p>  第2章 電路原理2</p><p>  第3章 程序設(shè)計3</p><p>  3.1 頂層模塊設(shè)計3</p><p>  3.2 時鐘分頻模塊設(shè)計3</p><p>  3.3 按鍵驅(qū)動模塊設(shè)計4</p><p>  3.4 時鐘計數(shù)

6、模塊設(shè)計4</p><p>  3.5 整點報時模塊5</p><p>  3.6 LED燈花樣顯示模塊7</p><p>  3.7 數(shù)碼管顯示模塊設(shè)計7</p><p>  第4章 調(diào)試、測試分析及結(jié)果10</p><p><b>  4.1 調(diào)試10</b></p>

7、<p>  4.2 測試分析10</p><p><b>  4.3 結(jié)果12</b></p><p><b>  第5章 小結(jié)13</b></p><p><b>  參考文獻(xiàn)14</b></p><p>  附錄 電路圖及程序15</p>

8、<p><b>  引言</b></p><p>  EDA是電子設(shè)計自動化(Electronic Design Automation)的縮寫,在20世紀(jì)60年代中期從計算機(jī)輔助設(shè)計(CAD)、計算機(jī)輔助制造(CAM)、計算機(jī)輔助測試(CAT)和計算機(jī)輔助工程(CAE)的概念發(fā)展而來的。</p><p>  EDA技術(shù)就是以計算機(jī)為工具,設(shè)計者在EDA軟件

9、平臺上,用硬件描述語言VHDL或者Verilog HDL完成設(shè)計文件,然后由計算機(jī)自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計的效率和可操作性,減輕了設(shè)計者的勞動強(qiáng)度。</p><p>  Verilog HDL是一種硬件描述語言,以文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言,用它可以表示邏輯電路圖

10、、邏輯表達(dá)式,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。</p><p>  此次課程設(shè)計我們運用QuartusⅡ這個軟件,使用Verilog HDL語言進(jìn)行編程。</p><p>  數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的鐘表。與機(jī)械鐘相比具有更高的準(zhǔn)確性和直觀性,具有更長的使用壽命,已得到廣泛的使用。數(shù)字鐘的設(shè)計方法有許多種,例如可用中小規(guī)模集成電路組成電子鐘,也可以利用專用的電

11、子鐘芯片配以顯示電路及其所需要的外圍電路組成電子鐘,還可以利用單片機(jī)來實現(xiàn)電子鐘等等。這些方法都各有其特點,其中利用單片機(jī)實現(xiàn)的電子鐘具有編程靈活,以便于功能的擴(kuò)展。</p><p>  本次課程設(shè)計要求利用EDA技術(shù),設(shè)計一個數(shù)碼管顯示數(shù)字鐘的樣品,數(shù)字鐘要求具備以下功能:</p><p>  1、具有時、分、秒,計數(shù)顯示功能,以24小時循環(huán)計時;</p><p>

12、;  2、具有清零,調(diào)節(jié)小時、分鐘功能;</p><p>  3、具有整點報時功能,整點報時的同時LED花樣顯示。</p><p><b>  電路原理</b></p><p>  數(shù)碼管顯示數(shù)字鐘設(shè)計,運用到8位數(shù)碼管,要求其中6位數(shù)碼管動態(tài)顯示,分別顯示時、分、秒的計數(shù),同時對時間進(jìn)行設(shè)置,數(shù)字鐘的總體功能按照要求可以分為基本的數(shù)字時鐘顯示

13、(具有時、分、秒,計數(shù)顯示功能,以24小時循環(huán)計時)、手動校準(zhǔn)(具有清零,調(diào)節(jié)小時、分鐘功能)、整點報時、LED燈花樣顯示四大部分。其總體功能設(shè)計框圖如圖2.1所示:</p><p><b>  程序設(shè)計</b></p><p>  其中,“時鐘分頻模塊”用于對芯片晶振提供的時鐘信號進(jìn)行分頻,然后給其他模塊分配需要的時鐘頻率。按鍵輸入的信號經(jīng)過按鍵去抖后傳送給“時鐘計

14、數(shù)模塊”。正常計數(shù)時,“時鐘計數(shù)模塊”將處理好的時、分、秒數(shù)據(jù)實時傳送給“數(shù)碼管顯示模塊”,當(dāng)有來自“按鍵驅(qū)動模塊”的信號時,改變相應(yīng)的時、分、秒計數(shù)器中的值,實現(xiàn)調(diào)整時間的作用?!皵?shù)碼管顯示模塊”實時將“時鐘計數(shù)模塊”的數(shù)據(jù)轉(zhuǎn)換成數(shù)碼管動態(tài)顯示信號進(jìn)行顯示。最后,加上一個“整點報時”模塊和“LED燈花樣顯示模塊”經(jīng)過時鐘分頻信號,傳遞給“數(shù)碼管顯示模塊”,實現(xiàn)所需功能。數(shù)字鐘設(shè)計原理如圖3.1所示:</p><p&

15、gt;<b>  頂層模塊設(shè)計</b></p><p>  頂層模塊設(shè)計如附錄圖3所示,其RTL電路圖如附錄圖4所示。</p><p>  頂層模塊包含四個輸入:系統(tǒng)時鐘輸入“clk”,秒設(shè)置信號“sset”,分鐘設(shè)置信號“mmset”,小時設(shè)置信號“hset”。一個8位的段選數(shù)碼管顯示值輸出“seg”,一個8位的片選數(shù)碼管顯示哪一個數(shù)碼管輸出“dig”,將輸出給數(shù)碼

16、管進(jìn)行動態(tài)顯示?!皶r鐘分頻模塊”電路符號名為“int _ div”,“按鍵驅(qū)動模塊”電路符號名慰“an _ jian”,“時鐘計數(shù)模塊”內(nèi)部采用三格計數(shù)器級聯(lián)的方式分別驅(qū)動時、分、秒計數(shù),秒計數(shù)器和分計數(shù)器均為60進(jìn)制計數(shù)器,小時計數(shù)器為24進(jìn)制計數(shù)器,電路符號名分別為兩個“ji _ shu _ 60”和一個“ji _ shu _ 24”。</p><p><b>  時鐘分頻模塊設(shè)計</b>

17、;</p><p>  “時鐘分頻模塊”直接使用老師上課所給的分頻程序,加入兩個分頻模塊,與“時鐘計數(shù)模塊”和“按鍵驅(qū)動模塊”進(jìn)行連接。</p><p><b>  按鍵驅(qū)動模塊設(shè)計</b></p><p>  按鍵驅(qū)動模塊使用原理圖方法設(shè)計,采用在按鍵信號傳輸過程中串聯(lián)觸發(fā)器實現(xiàn)按鍵去抖,保證觸發(fā)器兩次觸發(fā)的間隔遠(yuǎn)大于按鍵抖動的時間,而遠(yuǎn)小于

18、人動作反應(yīng)的時間。另外因為實例用獨立按鍵按下后是低電平,所以在觸發(fā)器后面串聯(lián)一個非門,使其變?yōu)楦唠娖接行А8戒泩D1所示為按鍵驅(qū)動模塊原理圖,圖3.2所示為按鍵驅(qū)動模塊封裝而成的電路元件。該模塊包括四個輸入,時鐘信號clk,秒設(shè)置輸入s _ in,分鐘設(shè)置輸入m _ in,小時設(shè)置輸入h _ in;三個輸出,秒設(shè)置輸出s _ out,分鐘設(shè)置輸出m _ out,小時設(shè)置輸出h _ out。</p><p>  從該

19、模塊的原理圖可以看出,時、分、秒三個按鍵的去抖原理完全一樣,這里提取小時輸入和輸出進(jìn)行仿真驗證,得到的結(jié)果如圖4.1所示,每一個時鐘上升沿h _ out的值都保持和h _ in的值相反,該設(shè)計能夠達(dá)到預(yù)期設(shè)計要求。</p><p><b>  時鐘計數(shù)模塊設(shè)計</b></p><p>  如附錄圖2所示?!皶r鐘計數(shù)模塊”內(nèi)部采用三個計數(shù)器級聯(lián)的方式分別驅(qū)動時、分、秒計

20、數(shù),秒計數(shù)器和分鐘計數(shù)器均為60進(jìn)制計數(shù)器,小時計數(shù)器為24進(jìn)制計數(shù)器,為方便驅(qū)動數(shù)碼管,三個計數(shù)器的輸出均為兩位的十進(jìn)制數(shù)據(jù)。秒調(diào)整信號通過一個或門和秒進(jìn)位信號一起驅(qū)動分鐘計數(shù)器;小時調(diào)整和分鐘調(diào)整同理。</p><p>  60進(jìn)制計數(shù)器主要Verilog HDL代碼如下:</p><p><b>  begin </b></p><p>

21、  if(!rst) //0</p><p><b>  begin </b></p><p>  q1<=0; q2<=0; </p><p><b>  end </b></p><p><b>  else</b></

22、p><p>  begin q1[3:0]=q1[3:0]+1; co<=0;</p><p>  if(q1[3:0]>9) begin q1[3:0]=0;</p><p>  q2[3:0]=q2[3:0]+1;</p><p>  if(q2[3:0]>5) begin q2[3:0]=0; co&

23、lt;=1;end</p><p><b>  end</b></p><p>  else q1=q1; </p><p>  end </p><p><b>  end</b></p><p>  24進(jìn)制計數(shù)器主要Ve

24、rilog HDL代碼如下:</p><p><b>  begin </b></p><p><b>  co=0;</b></p><p>  q1[3:0]=q1[3:0]+1;</p><p>  if(q1[3:0]>9) begin q1[3:0]=0; q2[3:0]=q

25、2[3:0]+1; end </p><p>  if(q1==4)if(q2==2) begin q1=0;q2=0; end </p><p><b>  end</b></p><p>  如圖4.2所示該模塊中60進(jìn)制模塊與24進(jìn)制模塊的仿真波形,60進(jìn)制模塊設(shè)置qs0、qs1分別為個位、

26、十位,個位計數(shù)到9之后清零,十位計數(shù)到5之后清零,24進(jìn)制模塊設(shè)置qh0、qh1分別為個位、十位,個位計數(shù)到9之后清零,十位計數(shù)到2之后清零。</p><p><b>  整點報時模塊</b></p><p>  整點報時模塊的設(shè)計思路是當(dāng)數(shù)字鐘計數(shù)到一個整點時間時,蜂鳴器開始響鳴。蜂鳴器的封裝設(shè)計如圖3.3所示,程序設(shè)計為一段樂譜,主要Verilog HDL代碼如下

27、:</p><p>  always @(posedge clk_4Hz) </p><p><b>  begin</b></p><p><b>  case(j)</b></p><p>  'd1:origin='d4916; //low</p>

28、<p>  'd2:origin='d6168;</p><p>  'd3:origin='d7281;</p><p>  'd4:origin='d7791;</p><p>  'd5:origin='d8730;</p><p>  'd6:origi

29、n='d9565;</p><p>  'd7:origin='d10310;</p><p>  'd8:origin='d010647; //middle</p><p>  'd9:origin='d011272;</p><p>  'd10:origin='d

30、011831;</p><p>  'd11:origin='d012087;</p><p>  'd12:origin='d012556;</p><p>  'd13:origin='d012974;</p><p>  'd14:origin='d013346;</

31、p><p>  'd15:origin='d13516; //high</p><p>  'd16:origin='d13829;</p><p>  'd17:origin='d14108;</p><p>  'd18:origin='d11535;</p>&

32、lt;p>  'd19:origin='d14470;</p><p>  'd20:origin='d14678;</p><p>  'd21:origin='d14864;</p><p>  default:origin='d011111;</p><p>  endcas

33、e </p><p><b>  end</b></p><p>  always @(posedge clk_4Hz) //樂譜</p><p><b>  begin</b></p><p>  if(len==63)</p><p><b

34、>  len=0;</b></p><p><b>  else</b></p><p>  len=len+1;</p><p><b>  case(len)</b></p><p>  0:j=3;1:j=3;2:j=3;3:j=3;4:j=5;5:j=5;6:j=5;7:j

35、=6;8:j=8;9:j=8;10:j=8;11:j=6;12:j=6;13:j=6;14:j=6;15:j=12;16:j=12;17:j=12;18:j=15;19:j=15;20:j=15;21:j=15;22:j=15;23:j=9;24:j=9;25:j=9;26:j=927:j=9;28:j=9;29:j=9;30:j=9;31:j=9;32:j=9;33:j=9;34:j=10;35:j=7;36:j=7;37:j=6;3

36、8:j=6;39:j=5;40:j=5;41:j=5;42:j=6;43:j=8;44:j=8;45:j=9;46:j=9;47:j=3;48:j=3;49:j=8;50:j=8;51:j=8;52:j=5;53:j=5;54:j=8;55:j=5;56:j=5;57:j=5;58:j=5;59:j=5;60:j=5;61:j=5;62:j=5;63:j=5;</p><p>  endcase

37、 </p><p><b>  end</b></p><p>  LED燈花樣顯示模塊</p><p>  LED燈花樣顯示模塊是與整點報時模塊同時工作,當(dāng)蜂鳴器響鳴時LED燈閃爍。該模塊設(shè)計思路較為簡單,只需在時分秒的時鐘輸出端接入一個以低電平驅(qū)動的LED鄧即可實現(xiàn)。</p><p><b> 

38、 數(shù)碼管顯示模塊設(shè)計</b></p><p>  數(shù)碼管動態(tài)顯示的原理是利用人眼的視覺停留,依次點亮每個數(shù)碼管的位選信號,當(dāng)?shù)谝粋€數(shù)碼管被點亮?xí)r,將段選信號變?yōu)榈谝粋€數(shù)碼管要顯示的信息,當(dāng)?shù)诙€數(shù)碼管被點亮?xí)r,將段選信號變?yōu)榈诙€數(shù)碼管要顯示的信息,以此類推,循環(huán)掃描。當(dāng)循環(huán)掃描一次所有數(shù)碼管所用的時間在人眼能反應(yīng)出圖像變化的時間(約為0.02秒)之內(nèi)時,人自然就會在視覺上看到完整的圖像,而不會感到閃

39、爍。</p><p>  “數(shù)碼管顯示模塊”的作用就是將6位10進(jìn)制的時間數(shù)據(jù)BCD碼轉(zhuǎn)化成供數(shù)碼管動態(tài)顯示的位選和段選數(shù)據(jù)。該模塊在Verilog HDL語言描述下的主要段落如下:</p><p>  always @(posedge clk_1k) </p><p><b>  begin</b></p>&l

40、t;p>  case(count) //選擇掃描顯示數(shù)據(jù)</p><p>  3'd0:disp_dat = d0;//第一個數(shù)碼管</p><p>  3'd1:disp_dat = d1;//第二個數(shù)碼管</p><p>  3'd2:disp_dat = 4'hf;//第三個數(shù)碼管</p

41、><p>  3'd3:disp_dat = d2;//第四個數(shù)碼管</p><p>  3'd4:disp_dat = d3;//第五個數(shù)碼管</p><p>  3'd5:disp_dat = 4'hf;//第六個數(shù)碼管</p><p>  3'd6:disp_dat = d4;//d[7:

42、4];//第七個數(shù)碼管</p><p>  3'd7:disp_dat = d5;//d[3:0];//第八個數(shù)碼管</p><p><b>  endcase</b></p><p>  case(count)//選擇數(shù)碼管顯示位</p><p>  3'd0:dig_r =

43、8'b01111111;//選擇第一個數(shù)碼管顯示</p><p>  3'd1:dig_r = 8'b10111111;//選擇第二個數(shù)碼管顯示</p><p>  3'd2:dig_r = 8'b11011111;//選擇第三個數(shù)碼管顯示</p><p>  3'd3:dig_r = 8'b111

44、01111;//選擇第四個數(shù)碼管顯示</p><p>  3'd4:dig_r = 8'b11110111;//選擇第五個數(shù)碼管顯示</p><p>  3'd5:dig_r = 8'b11111011;//選擇第六個數(shù)碼管顯示</p><p>  3'd6:dig_r = 8'b11111101;//

45、選擇第七個數(shù)碼管顯示</p><p>  3'd7:dig_r = 8'b11111110;//選擇第八個數(shù)碼管顯示</p><p><b>  endcase</b></p><p><b>  end</b></p><p>  如圖3.4所示是“數(shù)碼管顯示模塊”的封裝圖,

46、輸入包括時鐘信號“clk”,復(fù)位信號“clr”;數(shù)碼管顯示數(shù)據(jù)BCD碼輸入,由低位到高位依次為“d0”、“d1”、“d2”、“d3”、“d4”、“d5”。輸出包括:一個8位的段選數(shù)碼管顯示值輸出“seg”,一個8位的片選數(shù)碼管顯示哪一個數(shù)碼管輸出“dig”。 </p><p>  調(diào)試、測試分析及結(jié)果</p><p><b>  調(diào)試</b></p>

47、<p>  調(diào)試使用的是睿智FPGA開發(fā)板,開發(fā)板采用核心板與接口板分離的方式,核心板上除FPGA,各類存儲器以及用戶擴(kuò)展PACK外,還有按鍵、LED及電源插座等。因為有用戶擴(kuò)展PACK,核心板完全可以脫離接口板而單獨使用,通過PACK,用于自己的設(shè)計或電子設(shè)計大賽,擴(kuò)展性很好。接口板上集成了最常用和最經(jīng)典外圍接口,所有的外設(shè)經(jīng)過精心分配及設(shè)計,不需要進(jìn)行任何跳線設(shè)置,實驗時非常方便!總之,睿智開發(fā)板是完全站在用戶的角度精心

48、設(shè)計開發(fā),簡約不簡單!同時,睿智FPGA開發(fā)板的配套光盤提供相當(dāng)豐富的實驗代碼及各種參考文獻(xiàn)。</p><p><b>  測試分析</b></p><p>  按鍵驅(qū)動模塊波形仿真分析:</p><p>  時、分、秒三個按鍵的去抖原理完全一樣,這里提取小時輸入和輸出進(jìn)行波形仿真驗證,每一個時鐘上升沿h _ out的值都保持和h _ in的值

49、相反,該設(shè)計能夠達(dá)到預(yù)期設(shè)計要求。按鍵所綁的開關(guān)在開發(fā)板上是S1、S2、S3,分別控制小時進(jìn)位、分鐘進(jìn)位、秒清零。</p><p>  60進(jìn)制和24進(jìn)制模塊(時、分、秒模塊)波形仿真分析:</p><p>  這里提取60進(jìn)制模塊與24進(jìn)制模塊的仿真波形,60進(jìn)制模塊設(shè)置qs0、qs1分別為個位、十位,個位計數(shù)到9之后清零,十位計數(shù)到5之后清零,24進(jìn)制模塊設(shè)置qh0、qh1分別為個位、

50、十位,個位計數(shù)到9之后清零,十位計數(shù)到2之后清零。該設(shè)計能夠達(dá)到預(yù)期設(shè)計效果。</p><p><b>  結(jié)果</b></p><p><b>  小結(jié)</b></p><p>  在此次課程設(shè)計中,遇到的問題主要有以下幾個方面:</p><p> ?。?)由于Verilog HDL這門語言對自己

51、來說屬于一個從未接觸過的東西,所以學(xué)習(xí)起來比較困難。此次課程設(shè)計選擇的課題是數(shù)碼管顯示數(shù)字鐘,開始是資料的搜集與設(shè)計思路的理清,再有了一定的基礎(chǔ)之后,開始對整個大的模塊進(jìn)行分模塊分析設(shè)計。</p><p> ?。?)在實驗的過程中,遇到了許多的問題,首先發(fā)現(xiàn)自己對軟件的運用上存在的一些問題,如剛開始的時候沒有生成功能網(wǎng)表,導(dǎo)致最后運行出錯;還有沒有選功能仿真的時候,波形出現(xiàn)了一些毛刺和延時。</p>

52、<p>  (3)設(shè)計60進(jìn)制計數(shù)器和24進(jìn)制計數(shù)器也發(fā)生了一些問題,原本的設(shè)計思路是將個位數(shù)字與十位數(shù)字分別拆開,用進(jìn)位信號控制輸出,但發(fā)現(xiàn)在連接蜂鳴器模塊時,進(jìn)位信號延時太短,導(dǎo)致秒計數(shù)器計數(shù)計到59以后分鐘計數(shù)器進(jìn)位但蜂鳴器和LED燈沒有反應(yīng),手動按鍵卻可以控制蜂鳴器報警和LED燈閃爍。</p><p>  實驗過程中,遇到的小問題不計其數(shù),在多方努力之下,問題基本解決,這里就不一一列舉??偨Y(jié)出

53、的寶貴經(jīng)驗就是要多看書,學(xué)會自己解決問題,一般的問題在看書找資料之后基本都能解決;還有就是一定要細(xì)心,這樣可以避免很多不必要的麻煩。</p><p>  對于這一個課程,我依然屬于半懂不懂的狀態(tài),在今后的學(xué)習(xí)中,對老師的建議就是可以在剛開始上課的時候就可以給同學(xué)布置一些小的作業(yè),然后可以讓同學(xué)慢慢接觸一下軟件,學(xué)一點淺顯的編程,這樣在最后寫大作業(yè)的時候就不會感覺無從下手,以便起到一個循序漸進(jìn)的作用。</p&

54、gt;<p><b>  參考文獻(xiàn)</b></p><p>  1、周潤景等,基于Quartus II的FPGA/CPLD數(shù)字系統(tǒng)設(shè)計實例,電子工業(yè)出版社,2010</p><p>  2、夏宇聞,Verilog數(shù)字系統(tǒng)設(shè)計教程(第二版),北京航空航天大學(xué)出版社,2014</p><p><b>  附錄 電路圖及程序&

55、lt;/b></p><p><b>  時鐘分頻模塊</b></p><p>  module int_div(clock,clk_out);</p><p>  inputclock;//輸入時鐘</p><p>  outputclk_out;//輸出時鐘</p><

56、;p><b>  //內(nèi)部寄存器</b></p><p>  reg clk_p;//上升沿輸出時鐘</p><p>  reg clk_n;//下降沿輸出時鐘</p><p>  reg[F_WIDTH - 1:0] count_p;//上升沿脈沖計數(shù)器</p><p>  reg[F_

57、WIDTH - 1:0] count_n;//下降沿脈沖計數(shù)器</p><p>  //參數(shù)--分頻系數(shù)</p><p>  parameter F_DIV = 48000000;//分頻系數(shù)<<<<-----修改這里</p><p>  parameter F_WIDTH = 32; //分頻計數(shù)器寬度</p><

58、;p>  wire full_p;//上升沿計數(shù)滿標(biāo)志</p><p>  wire half_p;//上升沿計數(shù)半滿標(biāo)志</p><p>  wire full_n;//下降沿計數(shù)滿標(biāo)志</p><p>  wire half_n;//下降沿計數(shù)半滿標(biāo)志</p><p>  //判斷計數(shù)標(biāo)志位置位與否&

59、lt;/p><p>  assign full_p = (count_p < F_DIV - 1);</p><p>  assign half_p = (count_p < (F_DIV>>1) - 1);</p><p>  assign full_n = (count_n < F_DIV - 1);</p><p&

60、gt;  assign half_n = (count_n < (F_DIV>>1) - 1);</p><p><b>  //時鐘輸出</b></p><p>  assignclk_out = (F_DIV == 1) ? </p><p>  clock : (F_DIV[0] ? (clk_p & clk_

61、n) : clk_p);</p><p><b>  //上升沿脈沖計數(shù)</b></p><p>  always @(posedge clock)</p><p><b>  begin</b></p><p>  if(full_p)</p><p><b> 

62、 begin</b></p><p>  count_p <= count_p + 1'b1;</p><p>  if(half_p)</p><p>  clk_p <= 1'b0;</p><p><b>  else</b></p><p>  cl

63、k_p <= 1'b1;</p><p><b>  end</b></p><p><b>  else</b></p><p><b>  begin</b></p><p>  count_p <= 0;</p><p>  c

64、lk_p <= 1'b0;</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  //下降沿脈沖計數(shù)</b></p><p>  always @(negedge clock)</p>&

65、lt;p><b>  begin</b></p><p>  if(full_n)</p><p><b>  begin</b></p><p>  count_n <= count_n + 1'b1;</p><p>  if(half_n)</p><p

66、>  clk_n<= 1'b0;</p><p><b>  else</b></p><p>  clk_n <= 1'b1;</p><p><b>  end</b></p><p><b>  else</b></p>&

67、lt;p><b>  begin</b></p><p>  count_n <= 0;</p><p>  clk_n<= 1'b0;</p><p><b>  end</b></p><p><b>  end</b></p>&l

68、t;p><b>  endmodule</b></p><p><b>  按鍵驅(qū)動模塊</b></p><p>  附錄圖1 按鍵驅(qū)動模塊原理圖</p><p><b>  時鐘計數(shù)模塊</b></p><p>  60進(jìn)制計數(shù)器模塊(控制分鐘、秒)</p>

69、<p>  module ji_shu_60(clk,q1,q2,co,rst);</p><p>  output [3:0]q1,q2;</p><p>  output co;</p><p>  input clk,rst;</p><p>  reg [3:0]q1=0,q2=0;</p><p&g

70、t;<b>  reg co;</b></p><p>  always @(posedge clk or negedge rst )</p><p><b>  begin </b></p><p>  if(!rst) //0</p><p><b>  begin </b

71、></p><p>  q1<=0; q2<=0; </p><p><b>  end </b></p><p><b>  else</b></p><p>  begin q1[3:0]=q1

72、[3:0]+1; co<=0;</p><p>  if(q1[3:0]>9) begin q1[3:0]=0;</p><p>  q2[3:0]=q2[3:0]+1;</p><p>  if(q2[3:0]>5) begin q2[3:0]=0; co<=1;end</p><p><b>

73、;  end</b></p><p>  else q1=q1; </p><p>  end </p><p><b>  end</b></p><p>  //assign co=(({q2,q1}==8'b01011001) ? 1:0);&

74、lt;/p><p>  endmodule </p><p>  24進(jìn)制計數(shù)器模塊(控制小時)</p><p>  module ji_shu_24(clk,q1,q2);</p><p>  output [3:0]q1,q2;input clk;</p><p>  reg [3:0]q1=0,q2=0;reg

75、 co;</p><p>  always @(posedge clk )</p><p><b>  begin </b></p><p>  co=0;q1[3:0]=q1[3:0]+1;</p><p>  if(q1[3:0]>9) </p><p>  begin q1[3:0]

76、=0;q2[3:0]=q2[3:0]+1; end </p><p>  if(q1==4)if(q2==2) </p><p>  begin q1=0;q2=0; end</p><p><b>  end</b></p><p>  endmodule </p><p><b&

77、gt;  整點報時模塊</b></p><p>  module buffer_music ( audio , sys_CLK ,button);</p><p>  output audio; input sys_CLK; input button;</p><p>  reg [23:0] counter4Hz,counter1MHz

78、,counter6MHz;</p><p>  reg [13:0] count,origin;</p><p>  reg audiof;</p><p>  reg clk_6MHz,clk_4Hz;</p><p>  reg clk_1MHz;</p><p>  reg [4:0] j;&l

79、t;/p><p>  reg [7:0] len;</p><p>  //assign audio=audiof ; //控制開關(guān)</p><p>  assign audio= button? audiof : 1'b1 ;//控制開關(guān)</p><p>  always @(posedge sys_CLK)

80、 //6MHz分頻 開發(fā)板晶振為50MHz </p><p><b>  begin</b></p><p>  if(counter6MHz==4)</p><p><b>  begin</b></p><p>  counter6MHz=0;</p><p> 

81、 clk_6MHz=~clk_6MHz;</p><p><b>  end</b></p><p><b>  else</b></p><p><b>  begin</b></p><p>  counter6MHz=counter6MHz+1;</p>&

82、lt;p><b>  // end</b></p><p><b>  end</b></p><p><b>  end</b></p><p><b>  // </b></p><p>  always @(posedge sys_CLK)

83、 //4Hz分頻 </p><p><b>  begin</b></p><p>  // if(counter4Hz==2500000) </p><p>  if(counter4Hz==6250000) //50M/4/2</p><p><b>

84、;  begin</b></p><p>  counter4Hz=0;</p><p>  clk_4Hz=~clk_4Hz;</p><p><b>  end</b></p><p><b>  else</b></p><p><b>  beg

85、in</b></p><p>  counter4Hz=counter4Hz+1;</p><p><b>  end</b></p><p><b>  end</b></p><p>  always @(posedge clk_6MHz)</p><p>&

86、lt;b>  begin</b></p><p>  if(count==16383) </p><p><b>  begin</b></p><p>  count=origin;</p><p>  audiof=~audiof;</p><p><b> 

87、 end</b></p><p><b>  else</b></p><p>  count=count+1;</p><p><b>  end</b></p><p>  always @(posedge clk_4Hz) </p><p>&l

88、t;b>  begin</b></p><p><b>  case(j)</b></p><p>  'd1:origin='d4916; //low</p><p>  'd2:origin='d6168;</p><p>  'd3:origin='

89、;d7281;</p><p>  'd4:origin='d7791;</p><p>  'd5:origin='d8730;</p><p>  'd6:origin='d9565;</p><p>  'd7:origin='d10310;</p><

90、p>  'd8:origin='d010647; //middle</p><p>  'd9:origin='d011272;</p><p>  'd10:origin='d011831;</p><p>  'd11:origin='d012087;</p><p>

91、;  'd12:origin='d012556;</p><p>  'd13:origin='d012974;</p><p>  'd14:origin='d013346;</p><p>  'd15:origin='d13516; //high</p><p>  &#

92、39;d16:origin='d13829;</p><p>  'd17:origin='d14108;</p><p>  'd18:origin='d11535;</p><p>  'd19:origin='d14470;</p><p>  'd20:origin=&#

93、39;d14678;</p><p>  'd21:origin='d14864;</p><p>  default:origin='d011111;</p><p>  endcase </p><p><b>  end</b></p><p>

94、;  always @(posedge clk_4Hz) //樂譜</p><p><b>  begin</b></p><p>  if(len==63)</p><p><b>  len=0;</b></p><p><b>  else</b></p>

95、<p>  len=len+1;</p><p><b>  case(len)</b></p><p>  0:j=3;1:j=3;2:j=3;3:j=3;4:j=5;5:j=5;6:j=5;7:j=6;8:j=8;9:j=8;10:j=8;11:j=6;12:j=6;13:j=6;14:j=6;15:j=12;16:j=12;17:j=12;18:j=

96、15;19:j=15;20:j=15;21:j=15;22:j=15;23:j=9;24:j=9;25:j=9;26:j=927:j=9;28:j=9;29:j=9;30:j=9;31:j=9;32:j=9;33:j=9;34:j=10;35:j=7;36:j=7;37:j=6;38:j=6;39:j=5;40:j=5;41:j=5;42:j=6;43:j=8;44:j=8;45:j=9;46:j=9;47:j=3;48:j=3;49:

97、j=8;50:j=8;51:j=8;52:j=5;53:j=5;54:j=8;55:j=5;56:j=5;57:j=5;58:j=5;59:j=5;60:j=5;61:j=5;62:j=5;63:j=5;</p><p>  endcase </p><p><b>  end</b></p><p><b> 

98、 endmodule</b></p><p><b>  數(shù)碼管顯示模塊</b></p><p>  module scan_led(clk_1k,d0,d1,d2,d3,d4,d5,dig,seg); //模塊名scan_led</p><p>  input clk_1k; //輸入時鐘</p>

99、<p>  input[3:0] d0,d1,d2,d3,d4,d5;//輸入要顯示的數(shù)據(jù)</p><p>  output[7:0]dig; //數(shù)碼管選擇輸出引腳</p><p>  output[7:0] seg; //數(shù)碼管段輸出引腳</p><p>  reg[7:0] seg_r;/

100、/定義數(shù)碼管輸出寄存器</p><p>  reg[7:0] dig_r;//定義數(shù)碼管選擇輸出寄存器</p><p>  reg[3:0] disp_dat;//定義顯示數(shù)據(jù)寄存器</p><p>  reg[2:0]count; //定義計數(shù)寄存器</p><p>  assign dig =

101、dig_r;//輸出數(shù)碼管選擇</p><p>  assign seg = seg_r;//輸出數(shù)碼管譯碼結(jié)果</p><p>  always @(posedge clk_1k) //定義上升沿觸發(fā)進(jìn)程</p><p><b>  begin</b></p><p>  count

102、 <= count + 1'b1;</p><p><b>  end</b></p><p>  always @(posedge clk_1k) </p><p><b>  begin</b></p><p>  case(count) //選擇

103、掃描顯示數(shù)據(jù)</p><p>  3'd0:disp_dat = d0;//第一個數(shù)碼管</p><p>  3'd1:disp_dat = d1;//第二個數(shù)碼管</p><p>  3'd2:disp_dat = 4'hf;//第三個數(shù)碼管</p><p>  3'd3:disp_dat

104、 = d2;//第四個數(shù)碼管</p><p>  3'd4:disp_dat = d3;//第五個數(shù)碼管</p><p>  3'd5:disp_dat = 4'hf;//第六個數(shù)碼管</p><p>  3'd6:disp_dat = d4;//d[7:4];//第七個數(shù)碼管</p><p>

105、;  3'd7:disp_dat = d5;//d[3:0];//第八個數(shù)碼管</p><p><b>  endcase</b></p><p>  case(count)//選擇數(shù)碼管顯示位</p><p>  3'd0:dig_r = 8'b01111111;//選擇第一個數(shù)碼管顯示<

106、/p><p>  3'd1:dig_r = 8'b10111111;//選擇第二個數(shù)碼管顯示</p><p>  3'd2:dig_r = 8'b11011111;//選擇第三個數(shù)碼管顯示</p><p>  3'd3:dig_r = 8'b11101111;//選擇第四個數(shù)碼管顯示</p>&l

107、t;p>  3'd4:dig_r = 8'b11110111;//選擇第五個數(shù)碼管顯示</p><p>  3'd5:dig_r = 8'b11111011;//選擇第六個數(shù)碼管顯示</p><p>  3'd6:dig_r = 8'b11111101;//選擇第七個數(shù)碼管顯示</p><p>  3

108、'd7:dig_r = 8'b11111110;//選擇第八個數(shù)碼管顯示</p><p><b>  endcase</b></p><p><b>  end</b></p><p>  always @(disp_dat)</p><p><b>  begin&

109、lt;/b></p><p>  case(disp_dat)//七段譯碼</p><p>  4'h0:seg_r = 8'hc0;//顯示0</p><p>  4'h1:seg_r = 8'hf9;//顯示1</p><p>  4'h2:seg_r = 8

110、9;ha4;//顯示2</p><p>  4'h3:seg_r = 8'hb0;//顯示3</p><p>  4'h4:seg_r = 8'h99;//顯示4</p><p>  4'h5:seg_r = 8'h92;//顯示5</p><p>  4'

111、;h6:seg_r = 8'h82;//顯示6</p><p>  4'h7:seg_r = 8'hf8;//顯示7</p><p>  4'h8:seg_r = 8'h80;//顯示8</p><p>  4'h9:seg_r = 8'h90;//顯示9</p>

112、<p>  4'ha:seg_r = 8'h88;//顯示a</p><p>  4'hb:seg_r = 8'h83;//顯示b</p><p>  4'hc:seg_r = 8'hc6;//顯示c</p><p>  4'hd:seg_r = 8'ha1;/

113、/顯示d</p><p>  4'he:seg_r = 8'h86;//顯示e</p><p>  4'hf:seg_r = 8'hbf;//8'h8e;//顯示f</p><p><b>  endcase</b></p><p><b>  end<

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論