|
自定義外設(shè)作為NiosII軟核處理器超強(qiáng)靈活性的體現(xiàn),其開發(fā)遵循一定的規(guī)律。一個用戶自定義外設(shè)必須進(jìn)行硬件設(shè)計,也就是說,必須用硬件描述語言來描述出硬件的邏輯組成。一般來說,一個自定義外設(shè)主要由下列部分組成:
① 描述自定義外設(shè)邏輯的硬件描述文件部分(主要是HDL程序)。
② 軟件文件,一個用來定義外設(shè)寄存器的C語言頭文件,以及讓程序員控制這個元件的軟件驅(qū)動程序。
③ 元件的描述文件(class.ptf)。該文件定義了元件的架構(gòu),提供了SOPC。
Builder將該元件集成到一個系統(tǒng)的各種信息。該文件由元件編輯器根據(jù)用戶提供的硬件和軟件文件以及在圖形用戶界面中設(shè)置的各個選項和參數(shù)自動生成。 一個典型的自定義外設(shè)主要由下列功能模塊組成:
① 任務(wù)邏輯。任務(wù)邏輯實現(xiàn)外設(shè)的基本功能,是必不可少的組成部分。
② 寄存器文件。寄存器文件部分提供任務(wù)邏輯和外界交換信息的橋梁。有了寄存器文件,用戶就可以通過Avalon接口采用“基地址+地址偏移量”的方法來訪問外設(shè)內(nèi)部的各個寄存器。
③ Avalon接口。Avalon接口為寄存器文件提供了一個標(biāo)準(zhǔn)的Avalon前端。該模塊使用Avalon規(guī)定的信號來訪問寄存器文件,并且支持任務(wù)邏輯的傳輸類型。
用戶自定義IP核按照對Avalon總線操作的不同可分為Avalon Master外設(shè)、Avalon Slaver外設(shè)及AvalonStreaming外設(shè)。用戶開發(fā)的外設(shè)大多為Avalon Slaver外設(shè),Avalon Master和Avalon Streaming外設(shè)的開發(fā)比Avalon Slaver外設(shè)要復(fù)雜,但開發(fā)流程相同。一個典型的Avalon外設(shè)的開發(fā)步驟如下:
(1)規(guī)劃元件的硬件功能。如果采用微控制器來控制該元件,則規(guī)劃訪問該硬件的應(yīng)用程序接口(API);
(2)在硬件和軟件要求的基礎(chǔ)上,定義一個恰當(dāng)?shù)腁valon接口(一般為Avalon從端口);
(3)使用硬件描述語言描述硬件邏輯。一個典型元件的硬件架構(gòu)一般3部分組成:接口模塊(avalon inteRFace)作為頂層模塊,定義總線接口信號;寄存器文件模塊(register file)完成該元件與外部信號進(jìn)行通信,提供訪問與控制元件的邏輯界面;行為模塊(task logic)實現(xiàn)元件的硬件功能。片上總線AvaIon從端口的信號都不是必須的,一個典型的Avalon從端口所包含的信號如表1所示。
(4)單獨驗證元件的硬件功能;
(5)寫用于描述寄存器的C頭文件來為軟件定義硬件寄存器映像;
(6)寫元件的驅(qū)動軟件;
(7)把通過測試的源代碼使用元件編輯器封裝硬件HDL和軟件文件,完成元件定制。
|
|