文獻標識碼:B文章編號:1003-0492(2023)04-076-04中圖分類號:TP919
★劉元元(東方電氣集團(四川)物產有限公司,四川德陽618000)
摘要:基于系統級FPGA的SOPC嵌入式設計特點,采用SOPC Builder設計工具可以有選擇地將處理器、存儲器、I/O等系統設計所需的IP組件集成到FPGA器件上,也可以通過自定義用戶邏輯集成到FPGA器件上,從而構建高效SOC。本文分析了嵌入式處理器NOIS軟核特性,并給出了基于NOIS內核的SOPC軟硬件開發流程和自定義用戶邏輯的軟硬件設計過程。
關鍵詞:FPGA;片上系統;可編程片上系統;NOIS軟核
近年來,隨著現場可編程邏輯陣列(FPGA)器件的發展,以及SOPC技術的成熟,采用Nios Ⅱ軟核處理器在FPGA上實現系統級功能算法成為可能。Nios II軟核處理器是Altera公司推出的嵌入在其FPGA內部的32位軟核處理器,且其內核僅占用很少的邏輯資源,另外它的可配置程度極高,不但可以根據用戶需求加入各種標準接口,如各種外部存儲器、以太網控制器、IDE驅動器、USB接口等,也可以將用戶自己定義的接口模塊和邏輯模塊加入其中,必要的時候還可以在Nios II軟核中加入實時操作系統,實現了對多任務的調度,這讓用戶可以隨心所欲地構建完全符合系統要求的處理器結構。在FPGA外部只需要添加配置芯片、SDRAM、FLASH就可以構成一個完整的硬件平臺,很好地體現了SOPC的設計思想,使系統具有結構簡單、成本低廉、保密性好的特點。在性能上,系統可以利用FPGA的并行處理能力提高系統性能,如采用定制自定義模塊,用硬件控制耗時大的軟件算法模塊來提高系統性能,也可以采用NiosⅡ處理器的自定義指令方式用硬件實現部分復雜算法片段,方便在軟件程序中調用,大大提高了程序執行效率。另外,還可以用新推出的C2H工具直接將一些軟件程序進行硬件化,不僅提高了系統性能,還保證了本系統很高的處理速度,具有很好的實時性。
1 SOPC的設計
SOPC即System On a Programmable Chip,是指用可編程邏輯器件把整個系統放到一塊硅片上。一方面它是片上系統—即由單個芯片完成整個系統的主要邏輯功能;另一方面,它是可編程系統,具有靈活的設計方式,可裁減、擴充、升級,并具備軟硬件在系統可編程的功能。這項技術將EDA、計算機設計、嵌入式系統、工業自動控制系統、DSP及數字通訊系統融為一體。
一個最小系統應該包括中央處理單元(CPU)、隨機存儲器(RAM)和FlashROM(存儲代碼、數據等),稍微復雜點的系統至少應該包括UART、DMA、Timer、中斷管理模塊以及GPIO等。
我們知道,FPGA支持用戶自定義的硬件,即用戶自己設計的IP核。在許多應用中,我們可以利用這一特性,使用硬件描述語言來定制適合系統特性的模塊。例如,FPGA中沒有AD模塊,必須外加AD芯片。其他MCU控制AD芯片必須通過軟件來實現,對FPGA來說,則可以將此AD芯片的控制工作集成到一個VHDL或VERLOG模塊中,綜合后集成到SOPC系統中,實現定制外設。通過這一步,此AD就可以看成FPGA的一個內部外設,而不必像其他MCU那樣通過指令來模擬AD芯片時序。相比之下,FPGA能提高效率并減少出錯率,因為其本質還是通過硬件來實現讀取的功能。
2 SOPC Builder
SOPC Builder是Altera公司推出的一種可加快在FPGA內實現嵌入式處理器相關設計的工具,其功能與PC應用程序中的引導模板(Wizard)類似,旨在提高設計者確定需要的處理器和參數,并根據此創建一個處理器的完整存儲器映射。設計者還可以選擇所需要的IP外圍電路,如存儲控制器、I/O控制器和定時器等模塊。當然,也支持用戶自定義的硬件。
SOPC Builder具有友好的圖形用戶接入,可以為用戶提供強大的設計平臺以搭建基于AVALON總線的系統。用戶不僅可以從ALTERA提供的IP庫中選取組件、處理器、SDRAM、FLASH、USB、以太網等,也可以選擇配置相應的參數,還有包含操作系統內核的嵌入式軟件開發工具。在進行SOPC設計時,如果用戶有特殊功能要求,但IP庫中沒有,則可加入自定義邏輯實現。通過QUARTUS II工具可完成SOPC的全部設計,QUARTUS II用戶能把一個基于NIOS處理器的系統經生成、仿真的編譯后,下載到ALTERA的FPGA芯片中,并進行實時評估和驗證。SOPC Builder可自動進行開發中的系統定義和集成過程,實現了嵌入式系統的各方面開發,包括研究的設計和驗證。SOPC Builder的設計流程為描述系統和生成系統。
SOPC Builder提供了一組圖形界面以方便用戶描述系統,該界面列出了所有可用的系統模塊,設計者在界面中挑選其所設計的系統所需模塊,并設置參數,界面本身不生成邏輯或軟件,其目標是形成一個“系統描述文件”。
SOPC Builder根據系統描述文件進行操作:(1)對需要軟件支持的模塊,如NOIS處理器。(2)調用每個模塊的生成程序,最終生成一個系統級的HDL文件。(3)創建Modelsim所需的文件,以便仿真使用。(4)系統綜合。(5)生成TCL腳本。
3 嵌入式處理器NOIS軟核
Altera公司的Nios是基于RISC技術的通用嵌入式處理器軟內核,它專為可編程邏輯進行了優化設計,也為SOPC設計了一套綜合解決方案。Nios處理器采用16位指令集、16/32位數據通道、5級流水線技術,平均一個時鐘周期處理一條指令,性能高達50MIPS。NiosV2.1處理器具有以下主要特征:(1)大容量窗口寄存器堆。其最大可以實現512個內部通用寄存器,編譯程序運用內部寄存器可以加快子程序的調用和局部變量的存取。(2)簡單完備的指令集。32位和16位的Nios系統都運用16位寬的指令,這減少了代碼長度和指令存儲區的寬度。(3)強大的尋址模式。Nios指令集包括裝載和存儲指令,這樣編譯程序可加快結構體和局部變量(存儲棧)的存取。(4)較強的可擴展性。用戶可直接把定制邏輯集成入Nios算術邏輯單元(ALU)內,并自動生成包含C語言和匯編語言下訪問定制指令硬件的宏指令的軟件開發工具包(SDK)。(5)硬件輔助功能。用戶可利用硬件的優點去另創一些指令,從而促進指令執行速度。它可以有5條用戶定制指令,用戶可以把復雜的工作變成一個單一的指令。
4 NIOS Ⅱ軟核
Nios Ⅱ是一個用戶可配置的通用RISC嵌入式處理器,Altera推出的Nios Ⅱ系列嵌入式處理器擴展了目前世界上最流行的軟核嵌入式處理器的性能。把Nios Ⅱ嵌入到Altera的所有FPGA中,例如Stratix Ⅱ、Stratix、Cyclone Ⅱ、cyclone、APEX、ACEX和Hardcopy系列器件中,用戶可獲得超過200DMIPS的性能,并可以從三種處理器以及超過60個IP核中選擇所需要的。Nios Ⅱ系統為用戶提供了最基本的多功能性,設計師可以依此來創建一個最適合他們需要的嵌入式系統。使用Nios Ⅱ處理器的用戶可以根據他們的需要來調整嵌入式系統的特性、性能以及成本,使得產品快速推向市場,擴展了產品的生命周期,還可以避免處理器的更新換代。
4.1 開發工作流程
(1)初期開發工作:需要軟硬件結合處理,對系統進行需求分析。比如:CPU是否需要一個硬件加速乘法器,設計中所需要的外圍器件及數量,是否需要DMA通道釋放CPU在進行拷貝時所占用的資源;
(2)硬件開發:用SOPC Builder定義Nios Ⅱ處理器系統,用Quartus Ⅱ軟件定義器件、分配管腳并編譯;
(3)軟件開發:C/C++程序開發,開發鼎峙硬件的驅動程序,定義硬件平臺為目標進行編譯連接;
(4)下載到開發板上進行驗證;
(5)成功完成Nios Ⅱ系統設計。
4.2 硬件開發流程
用SOPC Builder來選擇合適的CPU、存儲器以及外圍器件,比如片內存儲器、PIO、UART和片外存儲器接口。
系統需外接按鈕接口時,可通過用戶自定義邏輯用VHDL編程來實現按鈕并行計數的功能。用戶邏輯要與Nios處理器進行通信,需增加片選chipselect和地址address2個信號。其中當chipselect為1時,Nios處理器選中用戶邏輯。Nios處理器用地址信號來尋址用戶邏輯。通過address信號,用戶邏輯才能正確地連到總線上與Nios處理器進行通信。對于獨立的用戶邏輯,如不需與Nios進行通信,比如實現獨立并行計數和顯示的功能,則片選信號和地址信號不需要。當在用戶邏輯里加入片選信號和地址信號后,SOPC Builder會自動給用戶邏輯分配一個基地址。SOPC Builder對系統中包括用戶邏輯在內的所有組件統一進行編址,若實例需處理3個按鈕并行計數,則地址信號需要2位。2位地址信號可處理4個地址,這里只用3個:00、01和10。地址信號在VHDL中所形成的地址,比如00、01,是相對地址。相對地址與基地址結合在一起,形成絕對地址。比如,第1個按鈕的計數值分配到相對地址“00”中,則絕對地址為0x4A0+0﹡4=0x4A0,第3個按鈕的計數值分配到相對地址“10”中,則絕對地址為0x4A0+2﹡4=0x4A8,其中0x4A0是系統分配的基地址。在計算絕對地址時,相對地址乘4,因實例實現的是32位Nios處理器,每個寄存器占據32位,而地址是按字節分配的,所以32/8=4。當應用程序訪問這些地址時,無論讀還是寫,片選信號自動被設置為“1”。則應用設計的VHDL程序代碼為:
Asicl=(int*)0X4A0;//指定要訪問的地址;
Read-datal=*asicl;//讀取地址中的內容,則片選信號chipselect自動被設置為“1”。
對于地址信號的選擇,則要在應用程序中明確指定,比如上面代碼中指定訪問的地址是“0x4A0”。實現用戶邏輯設計VHDL代碼的實體說明部分為:
ENTITYtestIS
port(clock:IN STD-LOGIC
pb-gen-counr1:IN STD-LOGIC;
pb-gen-counr2:IN STD-LOGIC;
pb-gen-counr3:IN STD-LOGIC;
pb-gen-clcar:IN STD-LOGIC;
chipselect:IN STD-LOGIC;
address:IN STD-LOGIC-VECTOR(1 dorwnto0);
count-out:INSTD-LOGIC-VECTOR(7 dorwnto 0);END tesk
實體中結構部分的輸出如下,其中的temp1、temp2、temp3是內部信號,用以保存3個按鈕的計數值。使用的是并行語句,保證3個按鈕可并行計數。count-out<=temp1 when(chipselect=‘1’andaddress=“00”)else
temp2 when(chipselect=‘1’andaddress=“01”)else
temp3 when(chipselect=‘1’andaddress=“10”)else
“00000000”;
需把用戶邏輯連接到Nios處理器中,在SOPCBuilder的圖形用戶界面中,選擇添加用戶邏輯項,加入用戶編寫的VHDL文件,同時指定實體說明中各信號的類型。Clock被指定為“clk”類型,Pb-gencounr1等被指定為“expor1”類型,chipselect被指定為“chipselect”類型,address被指定為“address”類型,count-out被指定為“readdata”類型。然后,SOPCBuilder自動生成一個Nios處理器軟核及相關外設的源文件。最后工作是編譯整個項目,并把生成的后綴為sof的文件下載到開發板上的可編程芯片中。
4.3 軟件開發流程
系統軟件設計具體工作如下:
(1)在用SOPC Builder系統集成軟件進行硬件設計的同時,就可以開始編寫C/C++軟件,比如算法或控制程序。用戶可以使用現成的軟件庫和開放的操作系統內核加快開發過程;
(2)在Nios ⅡIDE中建立新的軟件工程時,IDE會根據SOPC Builder對系統的硬件配置自動定制HAL(硬件抽象層)系統庫,這個系統庫可以為程序和底層硬件的通訊提供接口驅動程序;
(3)使用Nios ⅡIDE編譯調試軟件;
(4)在硬件已下載到板上的基礎上將軟件下載到開發板上并在硬件上運行。
5 結束語
SOPC技術利用IP庫,并通過SOPCBuilder可快速生成嵌入式系統,同時,可把用戶自定義的邏輯加入到系統中。通過SOPC還可向Nios處理器中添加用戶自定義的指令,擴充了Nios指令集,體現了用SOPC設計嵌入式系統的靈活性,快速生成了最終產品,縮短了開發周期。基于系統級FPGA/CPLD的SOPC嵌入式系統的開發設計是一個新課題,需要了解開發設計的方法、普及EDA工具以及獲得IP核等。本文對SOPC的探討對推動SOPC的應用具有一定的實際借鑒意義。SOPC必將在通信、工業控制、計算機相關產品和消費類電子等各個領域中獲得廣泛的應用。
作者簡介:
劉元元(1979-),女,河南平輿人,工程師,學士,現就職于東方電氣集團(四川)物產有限公司,主要研究方向為嵌入式工控領域和新能源發電設備。
參考文獻:
[1] Anna S. Chiang. 可編程片上系統要求新的設計方法[J]. 半導體技術, 2001, 26 (8) : 5 - 7.
[2] Altera公司. SOPC Builder Data Sheet[M]. 美國: 美國Altera, 2002.
[3] 黃曉林, 蔣偉榮. SoC與IP復用及其應用策略[J]. 現代電子技術, 2003, 159 (16) : 1 - 4.
[4] 黃曉林, 梁玉紅. SoC及其應用[J]. 廣東自動化與信息工程, 2003, 24 (3) : 7 - 10.
[5] 何立民. 以SoC為中心的多學科融合與滲透[J]. 單片機與嵌入式系統應用, 2001 (5) : 5 - 9.
[6] ALTERA. Nios Development Board Reference Marual[Z]. Cyclone Edition, ALTERA Inc, 2003, 5.
[7] ALTERA. SOPC Builder datasheet[Z]. ALTERA Inc, 2003, 1.
摘自《自動化博覽》2023年4月刊