基于sopc的嵌入式數(shù)字秒表課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p><b>  一 摘 要3</b></p><p><b>  二 課題簡(jiǎn)介3</b></p><p>  三 實(shí)驗(yàn)總體設(shè)計(jì)6</p><p>  四 數(shù)字秒表的工作原理及設(shè)計(jì)過(guò)程7</p><

2、;p>  五 設(shè)計(jì)過(guò)程 19 </p><p><b>  六 結(jié)論24</b></p><p><b>  七 參考文獻(xiàn)25</b></p><p><b>  一、摘 要</b></p>

3、;<p>  目前數(shù)字電子技術(shù)已經(jīng)廣泛地應(yīng)用于計(jì)算機(jī),自動(dòng)控制,電子測(cè)量?jī)x表,電視,雷達(dá),通信等各個(gè)領(lǐng)域。隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的高速發(fā)展,嵌入式產(chǎn)品日益廣泛地滲透到日常生活、科學(xué)研究和軍事技術(shù)等領(lǐng)域。人們?cè)谌粘I钪?,有很多時(shí)候要精確地計(jì)算時(shí)間,但往往因?yàn)槿藶橐蛩卦斐扇藗儾辉敢饪吹降恼`差。秒表是日常生活中比較常用的精確計(jì)時(shí)工具,特別是在體育競(jìng)技以及生產(chǎn)科研中,跳動(dòng)精確的秒表更是有著不可替代的作用。過(guò)去機(jī)械秒表的設(shè)計(jì)制作極

4、為復(fù)雜,而且成本高、不穩(wěn)定給使用者帶來(lái)了不少的困擾。但是隨著電子技術(shù)的飛速發(fā)展,電子秒表的出現(xiàn)徹底改變了這一局面,電子秒表以其成本低廉、工作穩(wěn)定、走時(shí)精確、操作簡(jiǎn)單在人類(lèi)的工作生活中得到了廣泛的應(yīng)用。秒表的出現(xiàn),解決了傳統(tǒng)的由于人為因素造成的誤差和不公平性。本設(shè)課程設(shè)計(jì)是主要采用sopc技術(shù)基于FPGA的數(shù)字秒表的設(shè)計(jì),利用Verilog HDL語(yǔ)言和Quartus II軟件以及FPGA實(shí)驗(yàn)操作平臺(tái)來(lái)實(shí)現(xiàn)的。本論文的重點(diǎn)是用硬件語(yǔ)言Ve

5、rilog HDL 來(lái)描述數(shù)字秒表,偏重于軟件設(shè)計(jì)。大致內(nèi)容是首先簡(jiǎn)單介紹了EDA的現(xiàn)狀和前景, Verilog HDL 語(yǔ)言特點(diǎn),應(yīng)用平臺(tái)FPGA</p><p>  【關(guān)鍵詞】Verilog HDL 語(yǔ)言;Quartus II 軟件;數(shù)字秒表;SOPC技術(shù)</p><p><b>  二、課題簡(jiǎn)介</b></p><p>  SOPC技術(shù)是

6、美國(guó)Altrea公司于2000年最早提出的,并同時(shí)推出了相應(yīng)的開(kāi)發(fā)軟件Quartus II。SOPC是基于FPGA解決方案的SOC,與ASIC的SOC解決方案相比,SOPC系統(tǒng)及其開(kāi)發(fā)技術(shù)具有更多的特色,構(gòu)成SOPC的方案有多種途徑,我們主要用到的是:基于FPGA嵌入IP硬核的SOPC系統(tǒng)</p><p>  2.3基于FPGA嵌入IP硬核的SOPC系統(tǒng)</p><p>  即在FPGA中

7、預(yù)先植入嵌入式系統(tǒng)處理器。目前最為常用的嵌入式系統(tǒng)大多采用了含有ARM的32位知識(shí)產(chǎn)權(quán)處理器核的器件。盡管由這些器件構(gòu)成的嵌入式系統(tǒng)有很強(qiáng)的功能,但為了使系統(tǒng)更為靈活完備,功能更為強(qiáng)大,對(duì)更多任務(wù)的完成具有更好的適應(yīng)性,通常必須為此處理器配置許多接口器件才能構(gòu)成一個(gè)完整的應(yīng)用系統(tǒng)。如除配置常規(guī)的SRAM、DRAM、Flash外,還必須配置網(wǎng)絡(luò)通信接口、串行通信接口、USB接口、VGA接口、PS/2接口或其他專用接口等。這樣會(huì)增加整個(gè)系統(tǒng)

8、的體積、功耗,而降低系統(tǒng)的可靠性。但是如果將ARM或其他知識(shí)產(chǎn)權(quán)核,以硬核方式植入FPGA中,利用FPGA中的可編程邏輯資源和IP軟核,直接利用FPGA中的邏輯宏單元來(lái)構(gòu)成該嵌入式系統(tǒng)處理器的接口功能模塊,就能很好地解決這些問(wèn)題。</p><p>  2.2基于FPGA嵌入IP軟核的SOPC系統(tǒng)</p><p>  這種SOPC系統(tǒng)是指在FPGA中植入軟核處理器,如:NIOS II核等。用

9、戶可以根據(jù)設(shè)計(jì)的要求,利用相應(yīng)的EDA工具,對(duì)NIOS II及其外圍設(shè)備進(jìn)行構(gòu)建,使該嵌入式系統(tǒng)在硬件結(jié)構(gòu)、功能特點(diǎn)、資源占用等方面全面滿足用戶系統(tǒng)設(shè)計(jì)的要求。</p><p>  2.3 Verilog HDL語(yǔ)言及QuartusⅡ軟件簡(jiǎn)介</p><p>  Verilog HDL語(yǔ)言是1983年GDA公司的Phil Moorby首創(chuàng)的,之后Moorby有設(shè)計(jì)了Verilog-XL仿真

10、器獲得很大成功,也使得Verilog HDL語(yǔ)言得到發(fā)展和推廣。Verilog HDL語(yǔ)言是在C語(yǔ)言的基礎(chǔ)上發(fā)展而來(lái)的。從語(yǔ)法結(jié)構(gòu)上看,Verilog HDL繼承和借鑒了C語(yǔ)言的很多語(yǔ)法,兩者有許多的相似之處,但Verilog HDL作為一種硬件描述語(yǔ)言,還是有本質(zhì)的區(qū)別。即可適于可綜合的電路設(shè)計(jì),也可勝任電路和系統(tǒng)的仿真;能在多層次上對(duì)所設(shè)計(jì)的系統(tǒng)加以描述,從開(kāi)關(guān)級(jí)、門(mén)級(jí),寄存器傳輸級(jí)到行為級(jí)等都可以擔(dān)任,而且沒(méi)規(guī)模限制;靈活多變的電

11、路描述風(fēng)格,可進(jìn)行行為描述,也可進(jìn)行結(jié)構(gòu)描述等;應(yīng)用十分的廣泛。</p><p>  QuartusⅡ軟件是Atlera的CPLD/FPGA集成開(kāi)發(fā)軟件,具有完善的可視化設(shè)計(jì)環(huán)境,并具有標(biāo)準(zhǔn)的EDA工具接口,基于QuartusⅡ進(jìn)行EDA設(shè)計(jì)開(kāi)發(fā)需要以下步驟:設(shè)計(jì)輸入、編譯、仿真、編程與驗(yàn)證等。</p><p>  2.4 VHDL語(yǔ)言的特點(diǎn)</p><p>  

12、VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),關(guān)于用VHDL和原理圖輸入進(jìn)行CPLD/FPGA設(shè)計(jì)的粗略比較:在設(shè)計(jì)中,如果采用原理圖輸入的設(shè)計(jì)方式是比較直觀的。你要設(shè)計(jì)的是什么,你就直接從庫(kù)中調(diào)出來(lái)用就行了。這樣比較符合人們的習(xí)慣。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。應(yīng)用VHDL進(jìn)行工程設(shè)計(jì)的優(yōu)點(diǎn)是多方面的。</p>

13、<p>  (1)與其他的硬件描述語(yǔ)言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語(yǔ)言。強(qiáng)大的行為描述能力是避開(kāi)具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。</p><p> ?。?)VHDL豐富的仿真語(yǔ)句和庫(kù)函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。</p><p> ?。?/p>

14、3)VHDL語(yǔ)句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能。符合市場(chǎng)需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個(gè)代發(fā)組共同并行工作才能實(shí)現(xiàn)。</p><p> ?。?)對(duì)于用VHDL完成的一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動(dòng)的把VHDL描述設(shè)計(jì)轉(zhuǎn)變成門(mén)級(jí)網(wǎng)表。</p><p> ?。?)VHDL對(duì)設(shè)計(jì)的描述具有相對(duì)獨(dú)立性,設(shè)

15、計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。</p><p>  2.5 VHDL的設(shè)計(jì)流程</p><p>  它主要包括以下幾個(gè)步驟</p><p><b>  文本編輯:</b></p><p>  用任何文本編輯器都可以進(jìn)行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存

16、為.vhd文件,Verilog文件保存為.v文件</p><p><b>  2.功能仿真:</b></p><p>  將文件調(diào)入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對(duì)簡(jiǎn)單的設(shè)計(jì)可以跳過(guò)這一步,只在布線完成以后,進(jìn)行時(shí)序仿真)</p><p><b>  邏輯綜合:</b></p>

17、<p>  將源文件調(diào)入邏輯綜合軟件進(jìn)行綜合,即把語(yǔ)言綜合成最簡(jiǎn)的布爾表達(dá)式。邏輯綜合軟件會(huì)生成.edf或.edif 的EDA工業(yè)標(biāo)準(zhǔn)文件。</p><p><b>  布局布線:</b></p><p>  將.edf文件調(diào)入PLD廠家提供的軟件中進(jìn)行布線,即把設(shè)計(jì)好的邏輯安放PLD/FPGA內(nèi)。</p><p><b>

18、;  時(shí)序仿真:</b></p><p>  需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時(shí)序。(也叫后仿真) 通常以上過(guò)程可以都在PLD/FPGA廠家提供的開(kāi)發(fā)工具。</p><p><b>  6.器件編程</b></p><p><b>  三、實(shí)驗(yàn)總體設(shè)計(jì)</b></p>&l

19、t;p><b>  3.1實(shí)驗(yàn)?zāi)康?lt;/b></p><p>  通過(guò)定時(shí)器實(shí)現(xiàn)電子秒表,達(dá)到熟練使用定時(shí)器中斷,熟練掌握單片機(jī)原理及應(yīng)用并且熟悉SOPC嵌入式系統(tǒng),熟悉掌握在NiosII的C語(yǔ)言編程,</p><p><b>  3.2實(shí)驗(yàn)要求</b></p><p>  1)在開(kāi)發(fā)板上,利用中斷實(shí)現(xiàn)電子秒表,顯示6

20、位(低位模擬到10ms,高位模擬到分鐘級(jí)),第一次按鍵開(kāi)始計(jì)時(shí),再按同一個(gè)按鍵暫停計(jì)時(shí),再次按此鍵,計(jì)時(shí)繼續(xù);按另外一個(gè)按鍵停止計(jì)時(shí)。采用ALTERA公司FPGA產(chǎn)品作為數(shù)字系統(tǒng)基礎(chǔ)</p><p>  2)在該FPGA中設(shè)計(jì)NIOSII軟核處理器及其周邊模塊如PIO、定時(shí)器等。</p><p>  3)使用PIO接口模塊,設(shè)計(jì)一個(gè)控制鍵盤(pán),該鍵盤(pán)有啟動(dòng)鍵,停止鍵,查看鍵和記錄鍵</

21、p><p>  4)在按下啟動(dòng)鍵后,秒表從0開(kāi)始計(jì)數(shù),0.01秒增加一個(gè)計(jì)數(shù)值。</p><p>  5)在計(jì)數(shù)過(guò)程中,可按下5次記錄鍵,記錄5個(gè)時(shí)間點(diǎn)。在按下停止鍵后,停止計(jì)數(shù),并且在這個(gè)情況下,按查看鍵可以逐一查看剛才按下的時(shí)間點(diǎn)</p><p>  3.3課程設(shè)計(jì)的內(nèi)容</p><p>  采用ALTERA公司FPGA產(chǎn)品作為數(shù)字系統(tǒng)基礎(chǔ)&

22、lt;/p><p>  在該FPGA中設(shè)計(jì)NIOSII軟核處理器及其周邊模塊如PIO、定時(shí)器等。</p><p>  使用PIO接口模塊,設(shè)計(jì)一個(gè)控制鍵盤(pán),該鍵盤(pán)有啟動(dòng)鍵,停止鍵,查看鍵和記錄鍵</p><p>  在按下啟動(dòng)鍵后,秒表從0開(kāi)始計(jì)數(shù),0.01秒增加一個(gè)計(jì)數(shù)值。</p><p>  在計(jì)數(shù)過(guò)程中,可按下5次記錄鍵,記錄5個(gè)時(shí)間點(diǎn)。在

23、按下停止鍵后,停止計(jì)數(shù),并且在這個(gè)情況下,按查看鍵可以逐一查看剛才按下的時(shí)間點(diǎn)。</p><p>  完成硬件系統(tǒng)設(shè)計(jì)和軟件系統(tǒng)設(shè)計(jì)</p><p>  按照課程設(shè)計(jì)格式要求認(rèn)真完成</p><p>  四、數(shù)字秒表的工作原理及設(shè)計(jì)過(guò)程</p><p>  圖1數(shù)字秒表總體框圖</p><p>  4.1 7段數(shù)碼顯

24、示譯碼器基本原理</p><p>  在數(shù)字電路中,常常需要把運(yùn)算結(jié)果用十進(jìn)制數(shù)顯示出來(lái),這就要用顯示譯碼器。</p><p>  現(xiàn)以驅(qū)動(dòng)七段發(fā)光二極管的二-十進(jìn)制譯碼器為例說(shuō)明顯示譯碼器的設(shè)計(jì)原理,如圖2。</p><p>  圖2段數(shù)碼顯示譯碼器的原理示意圖</p><p>  7段顯示譯碼器實(shí)際上是一種代碼變換器,它是將4位二進(jìn)制碼轉(zhuǎn)

25、換成7位代碼,燃亮LED顯示器a、b、c、d、e、f、g七段中的對(duì)應(yīng)段,顯示出十進(jìn)制數(shù)的字型。</p><p>  圖3 7段顯示譯碼器真值表</p><p>  在EDA實(shí)驗(yàn)箱中驗(yàn)證這個(gè)項(xiàng)目,可用數(shù)據(jù)開(kāi)關(guān)表示輸入,用LED數(shù)碼管表示輸出。本次的設(shè)計(jì)仿真選用以EPlC6Q240芯片為核心的FPGA開(kāi)發(fā)板,該開(kāi)發(fā)板提供了較完善的外圍周邊電路和信號(hào)接口,并提供了一塊4位7段數(shù)碼管的擴(kuò)展板,為

26、本次設(shè)計(jì)提供了硬件條件。在設(shè)計(jì)中,功能控制模塊根據(jù)控制選擇不同的功能狀態(tài)的時(shí)間輸出,通過(guò)勢(shì)能控制模塊和顯示輸出模塊驅(qū)動(dòng)7段數(shù)碼管顯示相應(yīng)的時(shí)間。</p><p>  本系統(tǒng)設(shè)計(jì)由控制模塊、時(shí)基分頻模塊,計(jì)時(shí)模塊和顯示模塊四部分組成。各模塊實(shí)現(xiàn)秒表不同的功能 。</p><p>  4.2秒表程序構(gòu)成 </p><p><b>  1、程序設(shè)計(jì)思路</

27、b></p><p>  利用定時(shí)器經(jīng)確定時(shí),并且利用隨機(jī)存儲(chǔ)區(qū)的有限空間,定義一個(gè)二維數(shù)組,通過(guò)按鍵將時(shí)間數(shù)值賦給數(shù)組(實(shí)踐證明,隨機(jī)存儲(chǔ)器內(nèi)最多只能存儲(chǔ)30組時(shí)間數(shù)值),然后在秒表停止或在數(shù)組存滿的情況下將所存的時(shí)間數(shù)值讀出。當(dāng)然,也需要通過(guò)按鍵來(lái)讀取不同時(shí)間數(shù)值,并且使用按鍵來(lái)控制秒表的開(kāi)始、停止與清零。</p><p><b>  圖5程序流程圖</b>

28、</p><p><b>  2、程序分析</b></p><p>  主程序(main函數(shù))</p><p>  程序的初始入口,不斷調(diào)用各個(gè)子程序,程序的骨架。</p><p>  秒表啟動(dòng)存數(shù)程序(keeptime函數(shù))</p><p>  用以處理分,秒和毫秒之間的聯(lián)系。</p>

29、;<p>  讀取所存數(shù)值處理程序(showtime函數(shù))</p><p>  用以讀取處理所存時(shí)間數(shù)值并加以處理。</p><p><b>  數(shù)碼管顯示程序</b></p><p>  1)秒表啟動(dòng)時(shí)顯示程序(display函數(shù)):確定顯示數(shù)值,將顯示數(shù)值分為個(gè)位、十位、百位、千位,分別查表顯示。</p><

30、;p>  2)讀取所存時(shí)間數(shù)值顯示程序(display2函數(shù)):調(diào)取數(shù)組值賦給該函數(shù),確定顯示數(shù)值,將將其分為個(gè)、十、百、千位,分別查表顯示。</p><p>  3)所存時(shí)間數(shù)值序號(hào)顯示程序(display3函數(shù)):用以顯示所存時(shí)間的序號(hào),以便于區(qū)分。</p><p><b>  按鍵掃描程序</b></p><p>  1)掃描按鍵1

31、(scankey1函數(shù))</p><p>  用于停止秒表或所存時(shí)間數(shù)值清零。</p><p>  2)掃描按鍵2(exter0函數(shù))</p><p>  用以觸發(fā)外部中斷0,觸發(fā)方式為下降沿觸發(fā),盡量降低了存儲(chǔ)時(shí)間數(shù)值時(shí)引起的誤差。</p><p>  3)掃描按鍵3(scankey3函數(shù))</p><p>  用于

32、所存時(shí)間數(shù)值的序號(hào)加一。</p><p>  4)掃描按鍵3(scankey4函數(shù))</p><p>  用于所存時(shí)間數(shù)值的序號(hào)減一。</p><p>  延時(shí)程序(delay函數(shù))</p><p>  用于延時(shí)z*1毫秒。 </p><p><b>  3、 程序</b></p>

33、<p>  1、秒表計(jì)數(shù)單位與對(duì)應(yīng)輸出信號(hào)</p><p><b>  2、計(jì)數(shù)器總程序:</b></p><p>  `timescale 1ns / 1ps</p><p><b>  Company: </b></p><p>  Engineer: </p><

34、;p>  Create Date: 20:10:58 04/19/2012 </p><p>  Design Name: </p><p>  Module Name: mbiao1 </p><p>  Project Name: </p><p>  Target Devices: </p><p&

35、gt;  Tool versions: </p><p>  Description: </p><p>  Dependencies: </p><p>  Revision: </p><p>  Revision 0.01 - File Created</p><p>  Additional Comments:

36、 </p><p>  /////////////////////////////////////////////////////////////////////////////////</p><p>  module mbiao1(clk_48M,dig,seg,ena,key);</p><p>  input[1:0] key;</p><

37、;p>  input clk_48M;//輸入頻率為48MHZ的時(shí)鐘</p><p>  output[2:0] dig;//數(shù)碼管位選</p><p>  output[7:0] seg;//數(shù)碼管段選</p><p>  output ena; //3-8譯碼器使能</p><p>  reg[2

38、:0] dig,count3b;</p><p>  reg[7:0] seg;</p><p>  reg[3:0] disp_dat;//定義顯示數(shù)據(jù)寄存器</p><p>  reg[18:0]count;//定義計(jì)數(shù)寄存器</p><p>  reg[23:0]hour;//定義現(xiàn)在時(shí)刻寄存器</p><

39、p>  reg clk100;//48MHZ的時(shí)鐘信號(hào)480000分頻,得到100HZ的時(shí)鐘信號(hào)</p><p>  reg key_flag; //啟動(dòng)/暫停的切換標(biāo)志</p><p>  reg [1:0]key_inner;</p><p>  assign ena=0;</p><p><b>

40、  //按鍵輸入緩存</b></p><p>  always @(posedge count[16])</p><p><b>  begin</b></p><p>  key_inner<= key;</p><p><b>  end</b></p><

41、;p>  always @(negedge key_inner[0])</p><p><b>  begin</b></p><p>  key_flag=~key_flag;</p><p><b>  end</b></p><p>  //0.01秒信號(hào)產(chǎn)生部分,產(chǎn)生100HZ的時(shí)鐘信

42、號(hào)</p><p>  always @ (posedge clk_48M)</p><p><b>  begin</b></p><p>  if(count==239999)</p><p><b>  begin</b></p><p>  clk100<=~c

43、lk100;</p><p><b>  count<=0;</b></p><p><b>  end</b></p><p><b>  else</b></p><p>  count<=count+1'b1;</p><p>

44、<b>  end</b></p><p>  //數(shù)碼管動(dòng)態(tài)掃描顯示部分</p><p>  always @(posedge count[10]) </p><p><b>  begin</b></p><p>  count3b=count3b+1;</p><

45、p>  case(count3b)</p><p>  3'd0:disp_dat=hour[3:0];</p><p>  3'd1:disp_dat=hour[7:4];</p><p>  3'd2:disp_dat=4'ha;</p><p>  3'd

46、3:disp_dat=hour[11:8];</p><p>  3'd4:disp_dat=hour[15:12];</p><p>  3'd5:disp_dat=4'ha;</p><p>  3'd6:disp_dat=hour[19:16];</p><p>  3'd7:

47、disp_dat=hour[23:20];</p><p>  default:disp_dat=4'bxxxx;</p><p><b>  endcase</b></p><p>  dig=count3b;</p><p><b>  end</b></p><

48、p>  always @(disp_dat)</p><p><b>  begin</b></p><p>  case(disp_dat)</p><p>  4'h0:seg=8'hc0;</p><p>  4'h1:seg=8'hf9;</p>

49、;<p>  4'h2:seg=8'ha4;</p><p>  4'h3:seg=8'hb0;</p><p>  4'h4:seg=8'h99;</p><p>  4'h5:seg=8'h92;</p><p>  4&

50、#39;h6:seg=8'h82;</p><p>  4'h7:seg=8'hf8;</p><p>  4'h8:seg=8'h80;</p><p>  4'h9:seg=8'h90;</p><p>  4'ha:seg=8'

51、;hbf;</p><p>  default:seg=8'bxxxxxxxx;</p><p><b>  endcase</b></p><p><b>  end</b></p><p><b>  //計(jì)時(shí)處理部分</b></p>

52、<p>  always @(posedge clk100)//計(jì)時(shí)處理</p><p><b>  begin</b></p><p>  if(!key_inner[1]&&key_flag==1)//判斷是否復(fù)位鍵</p><p><b>  begin</b></p>&

53、lt;p>  hour = 24'h0;</p><p><b>  end</b></p><p>  else if(!key_flag)</p><p><b>  begin</b></p><p>  hour[3:0] = hour[3:0] + 1;&l

54、t;/p><p>  if(hour[3:0] == 4'ha)</p><p><b>  begin</b></p><p>  hour[3:0] = 4'h0;</p><p>  hour[7:4] = hour[7:4] + 1;</p><p>  if(hour[7:

55、4] == 4'ha)</p><p><b>  begin</b></p><p>  hour[7:4] = 4'h0;</p><p>  hour[11:8] = hour[11:8] + 1;</p><p>  if(hour[11:8] == 4'ha)</p>&l

56、t;p><b>  begin</b></p><p>  hour[11:8] = 4'h0;</p><p>  hour[15:12] = hour[15:12] + 1;</p><p>  if(hour[15:12] == 4'h6)</p><p><b>  begin&l

57、t;/b></p><p>  hour[15:12] = 4'h0;</p><p>  hour[19:16] = hour[19:16] + 1;</p><p>  if(hour[19:16] == 4'ha)</p><p><b>  begin</b></p><

58、p>  hour[19:16] = 4'h0;</p><p>  hour[23:20] = hour[23:20] + 1;</p><p><b>  end</b></p><p>  if(hour[23:20] == 4'h6)</p><p>  hour[23:20] = 4'

59、;h0;</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  end</b></p><p><b>  end</b></p><p><b>  end&

60、lt;/b></p><p><b>  end</b></p><p><b>  endmodule</b></p><p>  4.3系統(tǒng)部分功能仿真  各部分模塊完成后,用QuartusⅡ?qū)Τ绦蚓幾g、仿真、得到的仿真波形如圖5所示如下:</p><p>  圖6

61、數(shù)字秒表仿真波形</p><p>  本系統(tǒng)采用的FPGA芯片為Altera公司的EPlC6Q240,用VHDL和QuartusⅡ軟件工具開(kāi)發(fā),設(shè)計(jì)輸入完成后,進(jìn)行整體的編譯和邏輯仿真,然后進(jìn)行轉(zhuǎn)換、延時(shí)仿真生成配置文件,最后下載至FPGA器件,完成結(jié)果功能配置,實(shí)現(xiàn)其硬件功能。</p><p><b>  五、設(shè)計(jì)過(guò)程</b></p><p>

62、;  SOPC設(shè)計(jì)首先使用Quartus II建立一個(gè)Quartus II 的工程,創(chuàng)建完成工程之后,需要?jiǎng)?chuàng)建頂層實(shí)體。創(chuàng)建完頂層設(shè)計(jì)文件之后,使用SOPC Builder創(chuàng)建NIOS II 嵌入式處理器,添加、配置系統(tǒng)的外設(shè)IP,組成Nios II系統(tǒng)模塊。 Nios II 系統(tǒng)模塊設(shè)計(jì)完成之后要加入到該頂層實(shí)體中,然后進(jìn)行其他片上邏輯的開(kāi)發(fā)。</p><p>  5.1 Quartus II 工程的建立:&

63、lt;/p><p>  啟動(dòng)Quartus II軟件;</p><p>  2.選擇File菜單?New Project Wizard,出現(xiàn)Introduction頁(yè)面,該頁(yè)面介紹所要完成的具體任務(wù),點(diǎn)擊next。</p><p>  3. 進(jìn)行項(xiàng)目名稱的設(shè)定、工作目錄的選擇。指定工程存放的目錄,工程名和頂層實(shí)體名,工程名和頂層實(shí)體名要求相同,工程目錄可以隨意設(shè)置,但必

64、須是英文的目錄,工程名和頂層實(shí)體名也要求是英文名字,我們的工程名和頂層實(shí)體名為watch,選擇Next。</p><p>  4. 可以為工程添加先期已經(jīng)輸入的設(shè)計(jì)文件,指定用戶自定義的元件庫(kù)的路徑,這里我們沒(méi)有事先輸入好的文件,也沒(méi)有自定義的元件庫(kù),點(diǎn)擊Next進(jìn)入下一步。 </p><p>  5. 用戶指定目標(biāo)器件,根據(jù)開(kāi)發(fā)板的所使用的器件來(lái)選擇,實(shí)際開(kāi)發(fā)中,通過(guò)查看核心板的參考手冊(cè)

65、來(lái)獲取所使用的器件具體型號(hào),可以使用窗口右邊的Filters來(lái)加快器件的選擇,選擇完畢點(diǎn)擊Next。</p><p>  6. 指定在Quartus II 之外的用于,設(shè)計(jì)輸入、綜合、仿真、時(shí)序分析的第三方EDA工具,Quartus II對(duì)第三方工具的支持比較完善。這里我們不做選擇,直接點(diǎn)擊Next。</p><p>  所見(jiàn)新工程的信息,確認(rèn)所創(chuàng)建工程的主要信息,點(diǎn)擊Finish完成工程

66、的建立,在開(kāi)發(fā)的過(guò)程中,還可以通過(guò)菜單assignment?Settings來(lái)對(duì)這些配置進(jìn)行修改。 點(diǎn)擊Finish按鈕,Quartus II自動(dòng)會(huì)打開(kāi)這個(gè)工程,可以看到頂層實(shí)體名出現(xiàn)在工程導(dǎo)航窗口中。</p><p>  7. 新建的工程窗口中,選擇File?New;在Device Design File頁(yè)中,選擇Block Diagram/Schematic File,即原理圖文件,也可以選擇硬件描述語(yǔ)言的文

67、件形式。單擊OK。出現(xiàn)一個(gè)模塊編輯窗口;選擇File?Save As,出現(xiàn)Save As對(duì)話框,顯示的目錄為之前設(shè)置的工程目錄,文件名為之前設(shè)置的頂層實(shí)體名(由于這是工程的第一個(gè)文件,系統(tǒng)會(huì)默認(rèn)為頂層設(shè)計(jì)實(shí)體的名字)。確定Add to Current Project選項(xiàng)被選中,點(diǎn)擊save。</p><p>  5.2創(chuàng)建NIOS II 系統(tǒng)模塊</p><p> ?。?) 創(chuàng)建系統(tǒng):?jiǎn)?dòng)

68、SOPC Builder,選擇Tools?SOPC Builder,出現(xiàn)如圖所示的Create New System對(duì)話框。鍵入系統(tǒng)的名字,選擇硬件描述語(yǔ)言Verilog或者是VHDL。 </p><p>  (2) 設(shè)置系統(tǒng)主頻和指定目標(biāo)FPGA:在Board部分選擇Unspecified,然后在Device Family選擇Cyclone II。用戶需要設(shè)置系統(tǒng)的時(shí)鐘頻率,該頻率用于計(jì)算硬件和軟件開(kāi)發(fā)中的定時(shí)

69、,比如時(shí)鐘分頻或波特率,還可以選擇是否選用流水線。 </p><p> ?。?)加入Nios II CPU和 IP模塊:首先加入Nios II軟核,Nios II 是軟核CPU,共有三種類(lèi)型的CPU可供選擇:Nios II/e(經(jīng)濟(jì)型)、Nios II/s(標(biāo)準(zhǔn)型)和Nios II/f(快速型)。用戶可以根據(jù)實(shí)際的情況進(jìn)行選擇。Nios II是一個(gè)用戶可以自行進(jìn)行定制的CPU,用戶可以增加新的外設(shè)、新的指令等。&

70、lt;/p><p><b>  添加CPU軟核</b></p><p>  添加內(nèi)存__SDRAM</p><p>  添加LCD模塊 添加100ms的定時(shí)器</p><p>  完整的SOPC的硬件系統(tǒng)</p><p><b>  六、結(jié)論</b>&

71、lt;/p><p>  本系統(tǒng)設(shè)計(jì)用了現(xiàn)在EDA設(shè)計(jì)手段,基于FPGA采用VHDL語(yǔ)言編程實(shí)現(xiàn)數(shù)字秒表的設(shè)計(jì)。運(yùn)用層次化設(shè)計(jì)方法,完成各電路模塊的連接。本數(shù)字秒表可用于體育比賽,計(jì)時(shí)精度大于1/100S,計(jì)時(shí)器能顯示1/100S的時(shí)間,計(jì)時(shí)器的最長(zhǎng)計(jì)時(shí)時(shí)間為1小時(shí),顯示的最長(zhǎng)時(shí)問(wèn)為59分59.99秒。系統(tǒng)具有簡(jiǎn)單、工作穩(wěn)定可靠等優(yōu)點(diǎn).具有一定的實(shí)際意義。</p><p>  現(xiàn)在做一個(gè)相對(duì)自己

72、水平來(lái)說(shuō)功能較強(qiáng)的設(shè)計(jì),這使我在實(shí)踐中對(duì)嵌入式系統(tǒng)的理解又加深了不少,而且,在這個(gè)課程設(shè)計(jì)中,讓我真真切切感受到收獲的喜悅。在做的過(guò)程中,我遇到了很多問(wèn)題,通過(guò)自己的努力,比如上網(wǎng)查資料,去圖書(shū)館借書(shū),或者請(qǐng)教高年級(jí)的同學(xué),都把他們一一解決了,成功后的喜悅給了我莫大學(xué)嵌入式系統(tǒng)的信心和動(dòng)力。嵌入式系統(tǒng)對(duì)于我們專業(yè)的學(xué)生來(lái)說(shuō)是一門(mén)很重要的學(xué)科,盡管我們?cè)谡n堂上學(xué)到的內(nèi)容有限,但在以后還要好好的學(xué)習(xí)SOPC。 在設(shè)計(jì)程序時(shí),不能妄想一次就將

73、整個(gè)程序設(shè)計(jì)好,“反復(fù)修改,不斷改進(jìn)”是程序設(shè)計(jì)的必經(jīng)之路并且要養(yǎng)成注釋程序的好習(xí)慣,一個(gè)程序的完美與否不僅僅是實(shí)現(xiàn)功能,而應(yīng)該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便。還要在設(shè)計(jì)程序過(guò)程中遇到問(wèn)題是很正常的,但我們應(yīng)該將每次遇到的問(wèn)題記錄下來(lái),并分析清楚,以免下次再碰到同樣的問(wèn)題。</p><p>  開(kāi)始做設(shè)計(jì)時(shí)總是會(huì)犯一些錯(cuò)誤,只有經(jīng)過(guò)不停的改錯(cuò)不停的編譯得到正確的程序說(shuō)明了作為軟件編程

74、人員是不能粗心大意的,一個(gè)程序的質(zhì)量的高低與你細(xì)心與否有著一定的聯(lián)系。在編程時(shí),我充分使用了結(jié)構(gòu)化的思想,這樣程序檢查起來(lái)也比較方便,調(diào)試時(shí)也給了我很大方便,只要一個(gè)模塊一個(gè)模塊的進(jìn)行調(diào)就可以了,充分體現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢(shì)。在設(shè)計(jì)中要求我要有耐心和毅力,還要細(xì)心,稍有不慎,一個(gè)小小的錯(cuò)誤就會(huì)導(dǎo)致結(jié)果的不正確,而對(duì)錯(cuò)誤的檢查要求我要有足夠的耐心,通過(guò)這次設(shè)計(jì)和設(shè)計(jì)中遇到的問(wèn)題,也積累了一定的經(jīng)驗(yàn),對(duì)以后從事集成電路設(shè)計(jì)工作會(huì)有一定的幫助。

75、</p><p>  在應(yīng)用VHDL的過(guò)程中讓我真正領(lǐng)會(huì)到了其并行運(yùn)行與其他軟件順序執(zhí)行的差別及其在電路設(shè)計(jì)上的優(yōu)越性。用VHDL硬件描述語(yǔ)言的形式來(lái)進(jìn)行數(shù)字系統(tǒng)的設(shè)計(jì)方便靈活,利用EDA軟件進(jìn)行編譯優(yōu)化仿真極大地減少了電路設(shè)計(jì)時(shí)間和可能發(fā)生的錯(cuò)誤,降低了開(kāi)發(fā)成本,這種設(shè)計(jì)方法在數(shù)字系統(tǒng)設(shè)計(jì)中發(fā)揮越來(lái)越重要的作用。</p><p><b>  七、參考文獻(xiàn)</b>&l

76、t;/p><p>  [1] 崔更申,孫安青.ARM嵌入式系統(tǒng)開(kāi)發(fā)與實(shí)踐[M].北京:中國(guó)電力出版社,2008</p><p>  [2] 馬忠梅. ARM & Linux嵌入式系統(tǒng)教程 [M].北京:北京航空航天大學(xué)出版社,2004 </p><p>  [3] 張綺文. ARM 嵌入式常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講[M].北京:電子工業(yè)出版社,2007

77、</p><p>  [4] 劉天時(shí). ARM7嵌入式開(kāi)發(fā)基礎(chǔ)實(shí)驗(yàn)[M].北京:北京航空航天大學(xué)出版社,2007 </p><p>  [5] 賈宗璞,許合利.C語(yǔ)言程序設(shè)計(jì):中國(guó)礦業(yè)大學(xué)出版社,2007</p><p>  [6]朱如琪. FPGA設(shè)計(jì)實(shí)踐教程[M].北京: 科學(xué)出版社,2009. </p><p>  [7]王金明.

78、數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL[M]. 北京:電子工業(yè)出版社,2010. [8]黃智偉. FPGA系統(tǒng)設(shè)計(jì)與實(shí)踐[M]. 北京: 電子工業(yè)出版社,2008. </p><p>  [9]李宥謀. 基于Verilog的FPGA設(shè)計(jì)基礎(chǔ)[M]. 西安: 西安電子科技大學(xué)出版社,2009 . </p><p>  [10]侯建軍.郭勇.sopc技術(shù)基礎(chǔ)教程[M]. 清華大學(xué)出版

溫馨提示

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

評(píng)論

0/150

提交評(píng)論