Nios II - Platform Designer 建立 Custom Component
建立好一個 Nios II System 之後
我們就可以利用 Nios II Software Build Tool 在上面開發 C Program 了
不過建立 Custom Component 的好處就是可以讓某些運算改由硬體來做
藉此提升效能
基本上參考手冊都把流程講完了
(Nios II Custom Instruction User Guide)
所以這裡只整理一些重點
跟自己在實作過程中碰到的問題
然後手冊雖然很長
但真的要有耐心一步一步照著做!
尤其是在 Platform Designer 建立 Custom Component 的地方
=================================================
Hardware 部分
下表列出了幾種 Custom Instruction
Combinational => 該 Custom Component 為組合 (Combinational) 電路
Multicycle => 該 Custom Component 為時序 (Sequential) 電路
其中根據運算的 Cycle Count 是否固定,又可分為 fixed 或 variable
fixed 表示從 start 送出後,固定某個 Cycle 數後就算好結果並回傳 (因此 done 訊號為非必要)
variable 表示從 start 送出後,當 done 回傳為 1 時即可算好結果並回傳 (因此 done 訊號為必要)
Extended => 讓該 Custom Component 可以做多個 Operation
用 n 來決定對該 Custom Component 下什麼指令
Software 部分
建立好硬體部分後
就可以開啟 Software Build Tool
首先在手冊裡頭有提到自訂指令的函式宣告
例如這是回傳型態為 float 的函式
因為在 <system.h> 裡頭都幫我們定義好了
接下來要在 code 中加入 #include <system.h>
然後先按 Build Project
之後打開 <system.h> 查看自訂指令的 macro
大概會類似這樣
此時指需要在 code 裡面加入 ALT_CI_PE_GROUP_INSTRUCTION_0(指令 index, dataa 資料)
就可以使用該 Custom Component 進行運算了!
=================================================
實作注意 部分
1. Interface 要選 nios_custom_instruction_slave
2. Interface 只要留下 nios_custom_instruction_slave
3. clk 和 rst 訊號都是接到 nios_custom_instruction_slave 上的 clk 和 rst,而不是另外獨立的介面
4. n 的部分,手冊有寫到,在完成運算前, n port 的 data 會穩定輸出該值
5. 如果函式有牽扯到 float 型態的資料,請記得不是直接把 float 數值(例如 5.0)傳進去,而是要傳入 IEEE-754 的資料格式(例如 32'h40a00000)
=================================================
留言
張貼留言