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

下載本文檔

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

文檔簡介

1、<p>  基于SOPC技術實現(xiàn)數(shù)字鬧鐘</p><p><b>  一、課題簡介</b></p><p>  SOPC技術是美國Altrea公司于2000年最早提出的,并同時推出了相應的開發(fā)軟件Quartus II。SOPC是基于FPGA解決方案的SOC,與ASIC的SOC解決方案相比,SOPC系統(tǒng)及其開發(fā)技術具有更多的特色,構成SOPC的方案有多種途徑,

2、我們主要用到的是:基于FPGA嵌入IP硬核的SOPC系統(tǒng)</p><p>  1.基于FPGA嵌入IP硬核的SOPC系統(tǒng)</p><p>  即在FPGA中預先植入嵌入式系統(tǒng)處理器。目前最為常用的嵌入式系統(tǒng)大多采用了含有ARM的32位知識產(chǎn)權處理器核的器件。盡管由這些器件構成的嵌入式系統(tǒng)有很強的功能,但為了使系統(tǒng)更為靈活完備,功能更為強大,對更多任務的完成具有更好的適應性,通常必須為此處理

3、器配置許多接口器件才能構成一個完整的應用系統(tǒng)。如除配置常規(guī)的SRAM、DRAM、Flash外,還必須配置網(wǎng)絡通信接口、串行通信接口、USB接口、VGA接口、PS/2接口或其他專用接口等。這樣會增加整個系統(tǒng)的體積、功耗,而降低系統(tǒng)的可靠性。但是如果將ARM或其他知識產(chǎn)權核,以硬核方式植入FPGA中,利用FPGA中的可編程邏輯資源和IP軟核,直接利用FPGA中的邏輯宏單元來構成該嵌入式系統(tǒng)處理器的接口功能模塊,就能很好地解決這些問題。<

4、;/p><p>  2.基于FPGA嵌入IP軟核的SOPC系統(tǒng)</p><p>  這種SOPC系統(tǒng)是指在FPGA中植入軟核處理器,如:NIOS II核等。用戶可以根據(jù)設計的要求,利用相應的EDA工具,對NIOS II及其外圍設備進行構建,使該嵌入式系統(tǒng)在硬件結構、功能特點、資源占用等方面全面滿足用戶系統(tǒng)設計的要求。</p><p>  二、數(shù)字鬧鐘的工作原理及設計過程

5、</p><p><b>  1、工作原理</b></p><p><b>  數(shù)字鬧鐘組成結構</b></p><p>  數(shù)字鬧鐘一般由振蕩器、分頻器、計數(shù)器、譯碼器、顯示器及部分擴展電路等組成。</p><p><b>  1.1 振蕩器</b></p>

6、<p>  振蕩器是數(shù)字電子鐘的核心,其作用是產(chǎn)生一個頻率標準,即時間標準信號,然后再由分頻器生成秒脈沖,所以,振蕩器頻率的精度和穩(wěn)定度就基本決定了數(shù)字電子鐘的準確度,為產(chǎn)生穩(wěn)定的時間標準信號,一般采用石英晶體振蕩器。從數(shù)字電子鐘的精度考慮,振蕩頻率越高記數(shù)精度越高。但這回使振蕩器的耗電量增大,分頻器級數(shù)增多。所以在確定頻率時應同時考慮這兩方面的因素再選擇器材。如果精度要求不是很高的話我們可以采用由集成邏輯門與RC組成的時鐘源

7、振蕩器或由集成電路定時器555與RC組成的多諧振蕩器。一般而言,選用石英晶體振蕩器所選用的晶振頻率為32768Hz,再通過15級2分頻集成電路得到1Hz的標準秒脈沖。</p><p><b>  1.2 分頻器</b></p><p>  振蕩器產(chǎn)生的時標信號頻率很高,要使它變成用來計時的“秒”信號,需要若干級分頻電路,分頻器的級數(shù)和每級分頻次數(shù)要根據(jù)時標信號的頻率來

8、決定。其功能主要有兩個:一是產(chǎn)生標準秒脈沖信號,二是提供功能擴展電路所需的信號。</p><p><b>  1.3 計數(shù)器</b></p><p>  有了“秒”信號了就可以根據(jù)60秒為一分,60分為一小時,24小時為一天的進制,分別選定沒“秒”、“分”、“時”的計數(shù)器。從這些計數(shù)器的輸出可得到一分、一小時、一天的時間進位信號。在秒計數(shù)器鐘因為是60進制通常用兩個十

9、進制計數(shù)器的集成片組成,其中秒個位是十進制的、十位是6進制的。可采用反饋歸零法變“秒”十位為6進制,實現(xiàn)秒的60進制,同樣,分計數(shù)器的與秒的一樣,只是時計數(shù)器里需要變成24進制,也用反饋歸零法實現(xiàn)。</p><p>  1.4 譯碼器及顯示器</p><p>  因為計數(shù)器全部采用8421BCD碼十進制計數(shù)集成芯片,所以“秒”、“分”、“時”的個位和十位都有四個狀態(tài)輸出端(Qa、Qb、Q

10、c、Qd)。將這些輸出端接至專門設計制造的譯碼電路,就可產(chǎn)生驅動七段數(shù)碼顯示器的信號。</p><p><b>  1.5 校時電路</b></p><p>  當數(shù)字鐘接通電源或者計時出現(xiàn)誤差時需要校正時間,校時電路的要求是:在小時校正時不影響分和秒的正常計數(shù);在分校時時不影響時和秒的正常計數(shù);校時方式有“快校時”和“慢校時”兩種,“快校時“是通過開關控制使計數(shù)器

11、對1Hz的校時脈沖計數(shù),“慢校時”是通過手動產(chǎn)生單脈沖作校時脈沖,校時的基本原理是將0.5秒的脈沖信號(可由分頻器的第14級分頻輸出端直接獲得),直接引進“時”計數(shù)器,同時將計數(shù)器置“0”,在時的指示調(diào)到需要的數(shù)字后,再切斷“0.5”信號讓計數(shù)器正常工作。</p><p><b>  2、設計過程</b></p><p>  SOPC設計首先使用Quartus II建

12、立一個Quartus II 的工程,創(chuàng)建完成工程之后,需要創(chuàng)建頂層實體。創(chuàng)建完頂層設計文件之后,使用SOPC Builder創(chuàng)建NIOS II 嵌入式處理器,添加、配置系統(tǒng)的外設IP,組成Nios II系統(tǒng)模塊。 Nios II 系統(tǒng)模塊設計完成之后要加入到該頂層實體中,然后進行其他片上邏輯的開發(fā)。</p><p>  2.1 Quartus II 工程的建立:</p><p>  (1)

13、啟動Quartus II軟件;</p><p> ?。?)選擇File菜單?New Project Wizard,出現(xiàn)Introduction頁面,該頁面介紹所要完成的具體任務,點擊next。</p><p> ?。?) 進行項目名稱的設定、工作目錄的選擇。指定工程存放的目錄,工程名和頂層實體名,工程名和頂層實體名要求相同,工程目錄可以隨意設置,但必須是英文的目錄,工程名和頂層實體名也要求

14、是英文名字,我們的工程名和頂層實體名為clock,選擇Next。</p><p>  4. 可以為工程添加先期已經(jīng)輸入的設計文件,指定用戶自定義的元件庫的路徑,這里我們沒有事先輸入好的文件,也沒有自定義的元件庫,點擊Next進入下一步。 </p><p>  5. 用戶指定目標器件,根據(jù)開發(fā)板的所使用的器件來選擇,實際開發(fā)中,通過查看核心板的參考手冊來獲取所使用的器件具體型號,可以使用窗口

15、右邊的Filters來加快器件的選擇,選擇完畢點擊Next。</p><p>  6. 指定在Quartus II 之外的用于,設計輸入、綜合、仿真、時序分析的第三方EDA工具,Quartus II對第三方工具的支持比較完善。這里我們不做選擇,直接點擊Next。</p><p>  所見新工程的信息,確認所創(chuàng)建工程的主要信息,點擊Finish完成工程的建立,在開發(fā)的過程中,還可以通過菜單a

16、ssignment?Settings來對這些配置進行修改。 點擊Finish按鈕,Quartus II自動會打開這個工程,可以看到頂層實體名出現(xiàn)在工程導航窗口中。</p><p>  7,、 新建的工程窗口中,選擇File?New;在Device Design File頁中,選擇Block Diagram/Schematic File,即原理圖文件,也可以選擇硬件描述語言的文件形式。單擊OK。出現(xiàn)一個模塊編輯窗口

17、;選擇File?Save As,出現(xiàn)Save As對話框,顯示的目錄為之前設置的工程目錄,文件名為之前設置的頂層實體名(由于這是工程的第一個文件,系統(tǒng)會默認為頂層設計實體的名字)。確定Add to Current Project選項被選中,點擊save。</p><p><b>  器件型號</b></p><p>  2.2創(chuàng)建NIOS II 系統(tǒng)模塊</p&

18、gt;<p> ?。?) 創(chuàng)建系統(tǒng):啟動SOPC Builder,選擇Tools?SOPC Builder,出現(xiàn)如圖所示的Create New System對話框。鍵入系統(tǒng)的名字,選擇硬件描述語言Verilog或者是VHDL。 </p><p> ?。?) 設置系統(tǒng)主頻和指定目標FPGA:在Board部分選擇Unspecified,然后在Device Family選擇Cyclone II。用戶需要設

19、置系統(tǒng)的時鐘頻率,該頻率用于計算硬件和軟件開發(fā)中的定時,比如時鐘分頻或波特率,還可以選擇是否選用流水線。 </p><p> ?。?)加入Nios II CPU和 IP模塊:首先加入Nios II軟核,Nios II 是軟核CPU,共有三種類型的CPU可供選擇:Nios II/e(經(jīng)濟型)、Nios II/s(標準型)和Nios II/f(快速型)。用戶可以根據(jù)實際的情況進行選擇。Nios II是一個用戶可以自行

20、進行定制的CPU,用戶可以增加新的外設、新的指令等。</p><p><b>  添加CPU軟核</b></p><p>  添加內(nèi)存__SDRAM</p><p>  添加LCD模塊 添加100ms的定時器</p><p>  完整的SOPC的硬件系統(tǒng)</p><p>

21、;<b>  生成的PLL模塊</b></p><p><b>  頂層總原理圖</b></p><p>  2.3部分程序如下:</p><p><b>  模24計數(shù)器</b></p><p>  //counter24.v</p><p>  1

22、//filename :counter24.v (BCD : 0--23)</p><p>  2 module counter24(CntH,CntL,ncR,EN,CP);</p><p>  3 input CP,ncR,EN;</p><p>  4 output [3:0]CntH,CntL;</p><p>  5 r

23、eg [3:0]CntH,CntL;</p><p><b>  6 </b></p><p>  7 always @(posedge CP,negedge ncR)</p><p><b>  8 begin</b></p><p>  9 if(~ncR)</p>

24、;<p>  10 {CntH,CntL}<=8'h00;</p><p>  11 else if(~EN)</p><p>  12 {CntH,CntL}<={CntH,CntL};</p><p>  13 else if((CntH>2)||(CntL>9)||((CntH==2

25、)&&(CntL>=3)))</p><p>  14 {CntH,CntL}<=8'h00;</p><p>  15 else if((CntH==2)&&(CntL<3))</p><p>  16 begin</p><p>  17 Cnt

26、H<=CntH;</p><p>  18 CntL<=CntL+1'b1;</p><p>  19 end</p><p>  20 else if(CntL==9)</p><p>  21 begin</p><p>  22 CntH<

27、=CntH+1'b1;</p><p>  23 CntL<=4'b0000;</p><p>  24 end</p><p>  25 else</p><p>  26 begin</p><p>  27 CntH<=CntH;<

28、/p><p>  28 CntL<=CntL+1'b1;</p><p>  29 end</p><p><b>  30 end</b></p><p><b>  31 </b></p><p>  32 endmodule<

29、/p><p><b>  模60計數(shù)器</b></p><p>  //counter60.v</p><p>  1 //countuer 60</p><p><b>  2 </b></p><p>  3 //counter10.v (BCD: 0--9)</p&g

30、t;<p>  4 module counter10(Q,ncR,EN,CP);</p><p>  5 input CP,ncR,EN;</p><p>  6 output reg [3:0]Q;</p><p><b>  7 </b></p><p>  8 always @(pos

31、edge CP,negedge ncR)</p><p><b>  9 begin</b></p><p>  10 if(~ncR)</p><p>  11 Q<=4'b0000;</p><p>  12 else if(~EN)</p><p>

32、  13 Q<=Q;</p><p>  14 else if(Q==4'b1001)</p><p>  15 Q<=4'b0000;</p><p>  16 else</p><p>  17 Q<=Q+1'b1;</p><p>

33、<b>  18 end</b></p><p>  19 endmodule</p><p><b>  20 </b></p><p>  21 //counter6.v(BCD: 0--5)</p><p>  22 module counter6(Q,ncR,EN,CP);</p&

34、gt;<p>  23 input CP,ncR,EN;</p><p>  24 output reg [3:0]Q;</p><p><b>  25 </b></p><p>  26 always @(posedge CP,negedge ncR)</p><p>  27 be

35、gin</p><p>  28 if(~ncR)</p><p>  29 Q<=4'b0000;</p><p>  30 else if(~EN)</p><p>  31 Q<=Q;</p><p>  32 else if(Q==4'b010

36、1)</p><p>  33 Q<=4'b0000;</p><p>  34 else</p><p>  35 Q<=Q+1'b1;</p><p><b>  36 end</b></p><p>  37 endmodule

37、</p><p><b>  38 </b></p><p>  39 //counter60.v(BCD:0--59)</p><p>  40 module counter60(Cnt,ncR,EN,CP);</p><p>  41 input CP,ncR,EN;</p><p>  

38、42 output [7:0]Cnt;</p><p>  43 wire [7:0]Cnt;</p><p>  44 wire ENP;</p><p><b>  45 </b></p><p>  46 counter10 UC0(Cnt[3:0],ncR,EN,CP);</p>

39、<p>  47 counter6 UC1(Cnt[7:4],ncR,ENP,CP);</p><p><b>  48 </b></p><p>  49 assign ENP=(Cnt[3:0]==4'h9);</p><p>  50 endmodule </p><p><

40、b>  鬧鐘</b></p><p><b>  //bell.v</b></p><p>  1 //Bell.v</p><p>  2 module Bell(alarm_clock,set_hr,set_min,hour,minute,</p><p>  3 secon

41、d,sethrkey,setminkey,_1khz,_500hz,</p><p>  4 _1hz,ctrlbell);</p><p>  5 output alarm_clock;</p><p>  6 output [7:0]set_hr,set_min;</p><p>  7 wire al

42、arm_clock;</p><p>  8 input _1khz,_500hz,_1hz;</p><p>  9 input sethrkey,setminkey;</p><p>  10 input ctrlbell;</p><p>  11 input [7:0]hour,minute,second;</p

43、><p><b>  12 </b></p><p>  13 supply1 Vdd;</p><p>  14 wire hrh_equ,hrl_equ,minh_equ,minl_equ;</p><p>  15 wire time_equ;</p><p><b>

44、  16 </b></p><p>  17 counter60 SU1(set_min,Vdd,setminkey,_1hz);</p><p>  18 counter24 SU2(set_hr[7:4],set_hr[3:0],Vdd,sethrkey,_1hz);</p><p><b>  19 </b>&

45、lt;/p><p>  20 //comparate the set time</p><p>  21 _4bitcomparator SU4(hrh_equ,set_hr[7:4],hour[7:4]);</p><p>  22 _4bitcomparator SU5(hrl_equ,set_hr[3:0],hour[3:0]);</p>

46、<p>  23 _4bitcomparator SU6(minh_equ,set_min[7:4],minute[7:4]);</p><p>  24 _4bitcomparator SU7(minl_equ,set_min[3:0],minute[3:0]);</p><p><b>  25 </b></p><p&

47、gt;  26 assign time_equ=(hrh_equ && hrl_equ && minh_equ && minl_equ);</p><p>  27 assign alarm_clock=ctrlbell?(time_equ&&(((second[0]==1'b1)&&_500hz)</p>

48、<p>  28 ||((second[0]==1'b0)&&_1khz))):1'b0;</p><p>  29 endmodule</p><p><b>  30 </b></p><p>  31 //4bitcomparator.v</p&

49、gt;<p>  32 module _4bitcomparator(equ,a,b);</p><p>  33 input [3:0]a,b;</p><p>  34 output equ;</p><p><b>  35 </b></p><p>  36 assign equ=(

50、a==b);</p><p>  37 endmodule</p><p>  2.3元器件型號及邏輯門</p><p>  芯片:EP2C20F484C7 1.2v 18752 315 239616 52 4</p><p>  占用了3383個邏輯單元,占器件中18752個邏輯單元的18% </p><p

51、>  Timeout period:100ms</p><p>  Timer counter size :32bits</p><p><b>  Pio:4</b></p><p><b>  電容若干</b></p><p><b>  開關若干</b></p

52、><p>  100khz晶振1塊</p><p><b>  蜂鳴器1個</b></p><p>  三、設計過程中遇到的問題及方案</p><p>  在連接電路時,用1HZ的信號輸入時,發(fā)現(xiàn)數(shù)碼管顯示沒有按預期的要求顯示,結果得等一兩分鐘才顯示一次,于是用是最后用時鐘信號來代替晶振通過調(diào)節(jié)脈沖信號的大小,結果發(fā)現(xiàn)在20

53、0HZ下,數(shù)碼管才能實現(xiàn)其功能。</p><p>  在設計鬧鈴功能時,原先總是想把定時部分顯示出來,結果老是不近人意,后來通過查閱很多資料發(fā)現(xiàn)介紹定時器設計時,看到用邏輯開關來控制時,突然靈機一動,于是找到一個邏輯開關,把一端接在+5v上,然后放置一示波器,觀察其波形,當開關撥置上端時發(fā)現(xiàn)示波器顯示為高電平。再將示波器接至數(shù)碼管輸入端時,發(fā)現(xiàn)4個輸入端為8421碼,于是想,是否可以將數(shù)碼管輸入端與邏輯開關組成比

54、較器,后來真的解決了。</p><p><b>  四、設計心得體會</b></p><p>  經(jīng)過幾星期的努力,終于把這次課程設計做完了。雖然剛開始對何為SOPC一點都不懂,于是按部就班地上圖書館去查閱資料,上網(wǎng)去搜索終于有較表層的認識。但是這樣遠遠不夠的,還需要對數(shù)字鬧鐘的整體設計,包括具有什么功能,實現(xiàn)這些功能需要哪些元器件,還有軟件與硬件的結合,代碼的實現(xiàn)。

55、這需要我再次翻開數(shù)電書,重新再學習一次。</p><p>  此次課程設計讓我認清了幾點:</p><p>  將理論付諸實踐的困難。</p><p><b>  查找資料的重要性。</b></p><p><b>  細節(jié)決定成敗。</b></p><p>  查找故障的能

56、力有待提高。</p><p>  總的來說,電子鐘的課程設計有利于培養(yǎng)我們對電子設計的興趣,也讓我發(fā)現(xiàn)了自身很多不足,學會了不少知識,幫我積累了不少經(jīng)驗。這對我以后的學習和工作都是一筆不可多得的財富。最后感謝老師一直以來的支持和指導,老師辛苦了!</p><p><b>  參考文獻:</b></p><p>  [ 1 ]  康華先--- 電

57、子技術基礎(數(shù)字部分) ;第五版[M]高等教育出版社。</p><p>  [ 2 ] 謝自美--- 《電子線路設計 實驗 測試》;華中科技大學出版社。</p><p>  [ 3 ]  譚浩強---《C程序設計》;清華大學出版社。</p><p>  [ 4 ] 王建國---《SOPC設計基礎與實踐》;西安電子科技大學出版社</p><

溫馨提示

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

評論

0/150

提交評論