【正文】
e ENABLE_INIT_DONE_OUTPUT ONset_location_assignment PIN_16 to CLKset_location_assignment PIN_97 to LED\[0\]set_location_assignment PIN_94 to LED\[1\]set_location_assignment PIN_91 to LED\[2\]set_location_assignment PIN_84 to LED\[3\]set_location_assignment PIN_82 to LED\[4\]set_location_assignment PIN_78 to LED\[5\]set_location_assignment PIN_76 to LED\[6\]set_location_assignment PIN_74 to LED\[7\]比較簡單的代碼,簡單的講解一下,第一行和第二行是注釋,第四行的意思是設(shè)置不用的引腳為三態(tài)輸入(這個前面其實我們已經(jīng)做過了),第五行的意思是打開INIT_DONE輸出。后面的幾行分別是鎖定CLK和8個LED的引腳。保存這個文檔(),軟件會自動把你加到項目里面,然后點ToolsTCL Scripts…,出現(xiàn)下面這個界面: 選中你剛才建好的Tcl文件,點擊Run。這個時候你可以在Quartus II軟件下方的Message框里面看到這么一個信息:Info: Successfully loaded and ran Tcl Script File F:\VerilogHDL Exp\exp3\。你也可以確認一下是否正確分配了,分配的情況如下圖:仿真波形圖3. NiosII系統(tǒng)的應用(一)設(shè)計原理基于PC的臺式機應用或運行在Nios處理器中的嵌入式應用運行,它從TIFF格式文件中讀取數(shù)據(jù)進行處理。這種測試用標準桌面調(diào)試工具和CoDeveloper Application Monitor進行設(shè)置和運行。在這種方式下,算法結(jié)果可以在進入下一階段和編譯至目標FPGA平臺之前進行驗證。Altera Nios開發(fā)包包括所有編譯和綜合硬件和軟件應用至FPGA目標所需的硬件和軟件(包括自動生成的表示硬件過程的HDL源文件和表示軟件過程的C源代碼)。Altera提供的軟件結(jié)合Impulse CoDeveloper,為我們提供了從C語言編譯和執(zhí)行測試應用所需的一切。NiosII IDE提供了Flash Programmer工具來對目標板上遵循通用Flash接口(Common Flash Interface,簡稱CFI),規(guī)范的Flash及EPCS配置器件進行編程。IDE的FlashProgrammer通過使用Altera的下載電纜能夠方便地對目標板上連接在FPGA上的Flash及串行配置器件EPCS進行編程。NiosII的IDE Flash Programmer采用兩步驟將數(shù)據(jù)寫入Flash中。第一步,用一個Altera提供的特殊Flash編程設(shè)計(Flash Programmer Design)對FPGA進行配置;第二步,IDEFlash Programmer將要編程到Flash中的文件內(nèi)容傳送到在FPGA上運行的Flash編程設(shè)計,然后Flash編程設(shè)計將接收到的數(shù)據(jù)編寫到Flash中。編譯為硬件(二)設(shè)計方案Flash編程設(shè)計實際就是一個由SoPC Builder系統(tǒng)生成的最小FPGA設(shè)計。Flash編程設(shè)計是IDE Flash Programmer的關(guān)鍵組成部分。不同的目標板往往使用不同的Flash器件,并且Flash與FPGA的引腳連接以及FPGA的型號也不相同。因此,每個Flash編程設(shè)計都是與具體的目標板相聯(lián)系的,不能用于其他的目標板。如果使用自己的目標板,那么設(shè)計者必須創(chuàng)建該目標板的Flash編程設(shè)計。Altem公司的Nios開發(fā)板都提供了相應的Flash編程設(shè)計,可以在NiosII開發(fā)套件安裝目錄的、ipnios2_ip文件夾中找到我們第一步是為圖像濾波器本身生成硬件。為了達到這一目的,我們從CoDeveloper工具中選用Altera Nios Platform Support Package,處理相關(guān)的Impulse C源文件。這將產(chǎn)生大約1200行的RTL和相關(guān)的硬件/軟件接口源文件。接下來,用Altera Quartus工具建立新的項目,生成包括必要外設(shè)的Nios處理器核(用Altera的SOPC Builder)。CoDeveloper的輸出軟件和輸出硬件功能將從CoDeveloper輸出生成的硬件和軟件文件給新創(chuàng)建的Quartus項目。使用Altera的框圖工具,我們通過Avalon片內(nèi)總線將生成的硬件過程和Nios處理器相連。包括Nios處理器和生成硬件的整個系統(tǒng)用Altera Quartus綜合。應用的軟件部分(主要由測試生成器和客戶功能組成,包括組函數(shù))也導入Quartus項目,用所包含的Nios編譯器編譯。最后,用Altera工具生成bit文件,通過提供的并口電纜下載到平臺上。在這個平臺按預期要求上電和運行。硬件配置: NIOSII/E的CPU、RAM、ROM、PIO。其中將PIO設(shè)為輸出端口,并更名為:LED。軟件程序:i nclude i nclude i nclude int main (void) __attribute__ ((weak, alias (alt_main)))。int alt_main (void){ alt_u8 led = 0x2。 alt_u8 dir = 0。 volatile int i。 while (1) { if (led amp。 0x81) { dir = (dir ^ 0x1)。 } if (dir) { led = led 1。 } else { led = led 1。 } IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led)。 i = 0。 while (i100000) i++。 } return 0。}其中IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE, led)。語句中的LED_BASE,用剛才在SOPC系統(tǒng)里所給定的IO口名稱LED。然后對系統(tǒng)進行編譯,編譯完成后,利用Quartus ,然后將下載線跳到JTAG模式,在NIOSII IDE里選擇RunRun As1 Nios II Hardware進行在硬件上調(diào)試。這時在信息窗口中出現(xiàn)以下內(nèi)容:Downloaded 1KB in Verifying 00000020 ( 0%)Verified OK Leaving target processor paused這表明NIOSII程序正在運行當中,可以硬件開發(fā)板上看到LED流水燈的效果。七、實習總結(jié)短暫的畢業(yè)實習很快就過去了,通過這十幾天的實習,我得到了很大的收獲,這些都是平時在課堂理論學習中無法學到的,我主要的收獲有以下幾點:(1) 在將基礎(chǔ)知識學習階段首先,我們了解到隨著集成電路工藝技術(shù)的不斷發(fā)展和集成度的提高,嵌入式系統(tǒng)由板級向芯片級過渡,形成一種新的設(shè)計方法一片上系統(tǒng)(System on Chip,簡稱SoC)。SoC從整個系統(tǒng)的角度出發(fā),把處理機制、模型算法、芯片結(jié)構(gòu)、各層次電路,直至器件的實際電路緊密連接起來,在單個(少數(shù)幾個)芯片上實現(xiàn)整個系統(tǒng)的功能。同時隨著現(xiàn)場可編程邏輯陣列(FPGA)技術(shù)的日益成熟,將PLD與嵌入式處理器IP軟核相結(jié)合,形成基于可編程片上系統(tǒng)(System on Programmable Chip,簡稱 SOPC)的SoC解決方案。SoPC是Altera公司提出的一種靈活、高效的SoC解決方案。它將處理器、存儲器、I/O口、LVDS、CDR等系統(tǒng)設(shè)計需要的功能模塊集成到一個可編程器件上,構(gòu)成一種特殊的可編程片上嵌入式系統(tǒng)。一方面,它是可編程片上系統(tǒng),即由單個芯片完成整個系統(tǒng)的主要功能,并具備軟硬件系統(tǒng)可編程的能力;另一方面,它內(nèi)嵌處理器IP核,具有靈活的設(shè)計方式,用戶可根據(jù)需要隨意配置、構(gòu)建、裁剪處理器IP核。目前最具有代表性的IP軟核嵌入式處理器是Altera的NiosII軟核。NiosII嵌入式CPU是一種專門為SoPC設(shè)計應用而優(yōu)化的CPU軟核。其次,我們在進一步學習中還得到以下收獲:1.掌握了幾種基本的集成電路設(shè)計軟件工具的使用,器件的連接方法,編程語言程序的規(guī)范;2.了解了一般簡單仿真和綜合程序的使用方法,掌握了一般51系列單片機IP核的原理及在FPGA操作平臺下的操作技巧和編寫代碼的注意事項; 3.熟悉了整個集成電路制造,IC產(chǎn)業(yè)流程; 4.本次實習大大增強了我們的團隊合作精神,培養(yǎng)了我們可俯瞰苦難、學習新知識的能力和細心嚴謹?shù)淖黠L。 其中,在基于NiosII的SoPC嵌入式系統(tǒng)中,幾乎所有的應用設(shè)計都需要使用Flash來保存在NiosII中運行的程序代碼、非易失性數(shù)據(jù)和FPGA的配置數(shù)據(jù)。因此Flash編程便成為在調(diào)試完SoPC系統(tǒng)后的重要工作。要對Flash編程,首先要保證在SoPC Builder中Target選項區(qū)域的Board下拉列表框中選擇用戶使用的目標板F1ash編程設(shè)計。(2) 在實際操作使用平臺完成設(shè)計任務這短暫的時間中,使我從理論到實踐上的一個飛躍,這次軟件實習,使我深刻地理解了實踐的重要性,理論無論多么熟悉,但是缺乏了實踐的理論是行不通的,現(xiàn)在終于明白了“讀萬卷書,行萬里路”這句話的含義。本次實習的目的是使我們對FPGA平臺,QUARTUS2設(shè)計軟件, NIOS2軟核,MATLAB軟件,集成電路設(shè)計方法等有一定的理論和實踐基礎(chǔ),了解一些初步的線路原理以及通過線路圖安裝、調(diào)試、下載和仿真的方法;對大規(guī)模集成電路設(shè)計技術(shù)等方面的專業(yè)知識做初步的理解;培養(yǎng)和鍛煉我們的實際動手能力,使我們的理論知識與實踐充分地結(jié)合,作到不僅具有專業(yè)知識,而且還具有較強的實踐動手能力,能分析問題和解決問題的高素質(zhì)人才。 以前很多都是書本上的理論知識,從考試到學習,都是圍繞書本的理論知識展開的,而很少會關(guān)心我們自己的實際動手能力,這一次的實習,讓我們自己去發(fā)現(xiàn)問題,去想問題,去如何解決這個問題去親手操作,實踐,這個過程使得我覺得自己完成了一次質(zhì)的飛躍,我更加明白了,其實我的專業(yè)之路還是很漫長的,還有著很多很多的東西我沒有接觸過,一山還有一山高的道理,現(xiàn)在才真切的體會到。開始的時候,老師對各個工具軟件和平臺的基本指令進行介紹,我還以為這次實習非常簡單,直至自己動手時才發(fā)現(xiàn),看時容易作時難,人不能輕視任何事。編寫每一條指令,都得對機器,對工作,對人負責。這也培養(yǎng)了我們的責任感。 (3)本次畢業(yè)實習的目的是:掌握數(shù)字系統(tǒng)的設(shè)計方法,實現(xiàn)VGA顯示控制電路。掌握偏上系統(tǒng)軟硬件的協(xié)同設(shè)計過程。通過高級編程語言或匯編語言實現(xiàn)基本并口讀寫操作,在第三方單片機IP核在FPGA上實現(xiàn)流水燈控制。理解各種存儲器件的控制方法,通過閱讀存儲器的數(shù)據(jù)手冊能夠在FGPA芯片上架設(shè)控制端口并配置相關(guān)參數(shù)。掌握基本MATLAB程序設(shè)計方法,為數(shù)字系統(tǒng)的算法分析打下良好的基礎(chǔ)。實習的時候的確覺得很累,而且從理論到實踐的這個過程并不想想象的那樣簡單,從開始就不斷地遇到問題和困難,但是這樣更鍛煉了自己的思維,如何去把理論和實踐結(jié)合,許多事情經(jīng)過了自己去想,有思考,有實踐,就會有收獲,收獲就意味著我的集成電路設(shè)計技術(shù)有了提高。自己的動手能力在實習中得到很大的鍛煉。實踐出真知,縱觀古今,所有發(fā)明創(chuàng)造無一不是在實踐中得到檢驗的。沒有足夠的動手能力,就奢談在未來的科研尤其是實驗研究中有所成就。在實習中,我鍛煉了自己動手技巧,提高了自己解決問題的能力。(4) 這段時間,我學到了很多東西,不僅有學習方面的,更學到了很多做人的道理,對我來說受益非淺。做為一個剛踏入社會的年輕人來說,什么都不懂,沒有任何社會經(jīng)驗。不過,在領(lǐng)導和指導老師的幫助下,我很快融入了這個新的環(huán)境,這對我今后踏入新的工作崗位是非常有益的。除此以外,我還學會了如何更好地與別人溝通,如何更好地去陳述自己的觀點,如何說服別人認同自己的觀點。相信這些寶貴的經(jīng)驗會成為我今后成功的最重要的基石。實習是每一個大學畢業(yè)生必須擁有的一段經(jīng)歷,它使我們在實踐中了解社會,讓我們學到了很多在課堂上根本就學不到的知識,也打開了視野,增長了見識,為我們以后更好地服務社會打下了堅實的基礎(chǔ)。最后,感謝在實習過程中所有幫助過我的老師和同學。特別感謝為組織我們這次畢業(yè)實習,一直辛苦工作的程鴻亮、高云霞和樊小紅老師。自 評在本次實習中,我們通過老師的講解和自己動手編寫程序來了解和熟悉FPGA平臺的功能和操作,在整個過程中我對于自己的表現(xiàn)基本滿意。在核心環(huán)節(jié)上,我對于硬件接口連接上存在不少疏漏和不足的,我花了較長的時間來掌握PIN口定義和連接,而在程序編寫部分則比較順利。這反映了我們在平時的學習中,多注重理論部分的強化,而忽視了實際操作和聯(lián)系的重要性。通過這次實習,能夠充分認識到自己在這方面的不做,同時也明確了以后自我學習中需要重點加強的部分。在實習的前期基礎(chǔ)知識和軟件培訓課程中,因為急于開始動手操作,以致部分內(nèi)容沒有很好的理解,掌握的不夠扎實,在之后的實踐中也證明了這一點,因此,本次實習也使我明白了不可以輕易地跳躍性學習,要按照要求,一步一步,踏踏實實的學習。