基于SOPC的自定義外設(shè)FIFO
摘要:以Altera公司的FPGA芯片EP2C20Q208C8為例,詳細(xì)介紹了在QuartusII 7.2的環(huán)境下,用SOPC Builder構(gòu)建Nios軟核時(shí),自定義FIFO接口元件的方法。通過(guò)將采集到的電壓信號(hào),在數(shù)碼管上顯示的實(shí)驗(yàn),實(shí)現(xiàn)FIFO寄存器與Nios CPU之間的通信。
關(guān)鍵詞:現(xiàn)場(chǎng)可編程門陣列FPGA;Nios;先進(jìn)先出;可編程片上系統(tǒng)Builder
0 引言
隨著微電子技術(shù)和半導(dǎo)體工業(yè)的不斷發(fā)展,數(shù)字技術(shù)已進(jìn)入片上系統(tǒng)時(shí)代。從而又發(fā)展了SOPC(可編程片上系統(tǒng)),SOPC是Altera 公司提供的片上可編程系統(tǒng)解決方案。Nios嵌入式處理器是Altera公司推出的軟核CPU,提供給用戶,并在Altera的FPGA上實(shí)現(xiàn)優(yōu)化,用于 SOPC集成
并在FPGA上實(shí)現(xiàn),提高了系統(tǒng)的靈活性和擴(kuò)大范圍。
自定義外設(shè)是SOPC系統(tǒng)靈活性的重要體現(xiàn),是SOPC系統(tǒng)中極其重要的一種設(shè)計(jì)方法。在大量的數(shù)據(jù)常需要處理時(shí),利用自定義外設(shè)由具體的硬件來(lái)實(shí)現(xiàn),可以極大程度地提高系統(tǒng)運(yùn)行的速度,同時(shí)便于系統(tǒng)的模塊化與集成化,是SOPC系統(tǒng)設(shè)計(jì)的重中之重。定制的用戶外設(shè)能夠以“硬件加速器”的形式實(shí)現(xiàn)各種各樣用戶要求的功能。
1 定制Avalon總線型FIFO接口元件
由于選用的AD采樣速率非常高,并且只由時(shí)鐘控制端控制,因此設(shè)計(jì)時(shí)在AD采集模塊和Nios CPU之間加一個(gè)FIFO存儲(chǔ)器,從系統(tǒng)外部接口送來(lái)的數(shù)據(jù)先在FIFO中緩存,然后將數(shù)據(jù)讀入SDRAM,在片上進(jìn)行數(shù)據(jù)處理。整個(gè)流程在FPGA平臺(tái)上采用SOPC方法實(shí)現(xiàn)。在SOPC Builder中只有廠商提供的片上FIFO接口控制器,沒(méi)有外部使用的FIFO接口控制器核,因此需要用戶自定義FIFO接口控制器,這樣才能滿足系統(tǒng)外圍電路的應(yīng)用要求。文中采用創(chuàng)建元件配置向?qū)Фㄖ艶IFO接口元件的方法。
2 用戶自定義IP核的開(kāi)發(fā)流程
自定義外設(shè)作為NiosII軟核處理器超強(qiáng)靈活性的體現(xiàn),它的開(kāi)發(fā)要遵循一定的規(guī)律。一個(gè)用戶自定義外設(shè)必須用硬件描述語(yǔ)言來(lái)描述硬件的邏輯。用戶自定義IP按照對(duì)Avalon總線操作的不同可分為Avalon Master、Avalon Slaver和Avalon Streaming外設(shè)。由于Avalon Master和Avalon Streaming外設(shè)的開(kāi)發(fā)比Avalon Slave外設(shè)要復(fù)雜,所以用戶開(kāi)發(fā)的外設(shè)大部分為Avalon Slave外設(shè),但是開(kāi)發(fā)流程是一樣的。典型的Avalon外設(shè)的開(kāi)發(fā)步驟如下:
(1)規(guī)劃元件的硬件功能。若采用微控制器控制該元件,則規(guī)劃訪問(wèn)該硬件的應(yīng)用程序接口(API);
(2)在硬件和軟件要求的基礎(chǔ)上,定義一個(gè)恰當(dāng)?shù)慕涌?一般為Avalon Slave端口);
(3)使用硬件描述語(yǔ)言描述硬件邏輯。一個(gè)典型元件的硬件架構(gòu)一般由接口模塊、寄存器文件模塊和行為模塊3部分組成。接口模塊作為頂層模塊,定義總線接口信號(hào);寄存器文件模塊完成該元件與外部信號(hào)的通信,提供訪問(wèn)與控制元件的邏輯界面;行為模塊實(shí)現(xiàn)元件的硬件功能。片上總線Avalon從端口的信號(hào)都不是必須的,一個(gè)典型的Avalon從端口所包含的信號(hào)如表1所示。
(4)單獨(dú)驗(yàn)證元件的硬件功能;
(5)寫用于描述寄存器的C頭文件為軟件定義硬件寄存器映像;
(6)寫元件的驅(qū)動(dòng)軟件;
(7)把通過(guò)測(cè)試的源代碼使用元件編輯器封裝硬件HDL和軟件文件,完成元件定制。
3 自定義FIFO接口的開(kāi)發(fā)
3.1 硬件構(gòu)建
3.1.1 接口模塊的設(shè)計(jì)
根據(jù)FIFO的功能需要,該模塊所需的Avalon總線輸入信號(hào)為clk、reset n、data、full、empty信號(hào),而模塊輸出則為rdclk、rdreq、wrreq信號(hào)。該接口模塊定義了總線接口信號(hào),作為頂層模塊。
Avalon總線接口設(shè)計(jì)文件的端口說(shuō)明部分如下:
3.1.2 寄存器文件模塊
寄存器文件模塊實(shí)現(xiàn)與外部信號(hào)的通信,提供了訪問(wèn)與控制元件界面。在寄存器文件中,Avalon總線的地址信號(hào)有兩位,00表示讀取數(shù)據(jù)寄存器,O1表示讀取狀態(tài)寄存器,10表示寫控制寄存器,address的11保留。在片選和讀信號(hào)的控制下,分別讀數(shù)據(jù)寄存器和狀態(tài)寄存器。在片選和寫信號(hào)的控制下,向控制寄存器寫入數(shù)據(jù)。
評(píng)論