標籤:ios1 開發 固定 core 工程 add log lips 適合
Altera官方推出NIOS已經很久了,個人感覺C+V代碼配合會是後面FPGA使用的一個主流,由C來完成一些對時序要求不高,對功能要求偏高的部分,比如運動控制等;由V來配合時序完成高時序要求的需求以及一些底層的驅動供C來調用,這樣的設計結構感覺更加合理有效,也更加適合於一些大型工程。但是有一點不好的就是程式可移植性可能有點差,畢竟使用Eclipse編輯環境(我也不確定,反正個人感覺移植起來有些麻煩)。
好了,本文就開始我們的第一個常式,HelloNIOS。軟體語言中經典的HelloWorld在這裡變成了HelloNIOS,看起來也很不錯。
簡介
其實,網路上有關於NIOS的教程已經很多了,本文在此只作為我自己的一個學習使用記錄。首先,要用NIOS,你肯定得有相匹配的硬體吧,在這裡先來介紹下我自己的硬體環境。
- 硬體:開發板黑金AX301
- 軟體:QuartusII 13.0sp1,NIOS13.0sp1
最關鍵的因素就是這些了,開發板很普通,買了後覺得資源有些少了,不過一些簡單的開發以及使用NIOS那還是足夠了,物盡其用,搞起來。
先說下所參考的一些資料,《NIOS的奇幻漂流》和《NIOS那些事兒》,感覺都是很經典的資料,完全可以用作入門。
Quartus工程建立
這裡和普通的硬體Quartus工程建立沒有什麼區別,在這裡就不多說,簡要提過。
建立Quartus工程,分配好各部分所在檔案夾(這是個人習慣,現在我一般的架構如)
其中ipcore用來存放自建立的官方IP核,tcl用於存放tcl引腳檔案,verilog用於存放個人編寫的V代碼。
建立對應的PLL,這裡是否建立PLL自行決定,因為我們要用到板上資源SDRAM,其需要100MHz的時鐘,而我們的輸入是50MHz,所以此處需要一個PLL。
建立完PLL後,我們建立Qsys。Qsys就是之前版本中的SOPC Builder,其主要就是建立一個虛擬SOPC出來。Tools->Qsys可以開啟,開啟後我們可以看到如下介面。
依次添加NIOS、SYSID、SDRAM、EPCS、JTAG、添加後進行改名連線。改名方法為選中NAME後按“2”或者“R”即可,我一般會將這幾部分的名字全部改為大寫。其中可能會有部分Warning或者Error出現,下面對一些需要注意的點進行了說明。
- 為添加所有組件後的
- 按照一定的規則連線後,可以參考形式連線,下方仍然發現了部分如下Error的存在。
- 這裡就需要對NIOS核進行一定的設定,雙擊打來NIOS核,進行如下的設定。設定完成後就可以看到Error消失了。
- 當然這時下方還會出現一些有關於地址線錯誤的Warning或者Error,這是由於很多組件的地址佔用空間相同了,這在右側可以看出,類似於如下。
- 這時可以點擊System->Assign Base Address進行地址線的自動分配,這裡我有一個習慣就是會把EPCS模組的地址線固定為0x0,從上面連線圖也可以看出。
- 以上完成後要注意我們最後一列的中斷IRQ,也要記得將他們連起來。
- 之後點擊上邊標籤欄中的Generation進行產生,該頁面記得將以下部分勾選。
- 至此,Qsys中的配置部分結束。
在Quartus頂層中添加PLL和Qsys,參考資料上多用原理圖的形式進行串連,我一般是使用代碼的方式進行串連,這部分就看個人喜好了。使用代碼串連可移植性好些但是沒有原理圖形式直觀。
然後編譯,將SOF下載到FPGA開發板中。至此,Quartus中的所有工作完畢。
NIOS工程建立
這部分按照參考資料說明書來即可,十分簡單,簡寫如下。
- 選擇一個空間用於存放工程,我一般放於Qsys的目錄下
- File->New->NIOS II Application and BSP Template
- 選中Quartus下的sopcinfo檔案,然後命名工程,一路Next就行
- 工程產生後,選中左邊的檔案夾,右鍵NIOS II->Generate BSP
- 產生後,Ctrl+B進行編譯
- 編譯完成後,開啟Run-Configuation,進行下載配置,Apply,Run
- 最後就可以等待調試框中的結果了
- 最後放上成功的結果
[原創]邁出NIOS的第一步,HelloNIOS