(1.中國石油大學(北京)油氣資源與探測國家重點實驗室, 北京 102249;2.北京市地球探測與信息技術重點實驗室,北京 102249;3.中國石油集團測井有限公司生產(chǎn)測井中心,河北 任丘 062552)
隨著大規(guī)模陣列化成像測井儀器的出現(xiàn),井下儀器采集的數(shù)據(jù)量大幅度增加,對數(shù)據(jù)的實時性要求越來越高,靜態(tài)數(shù)據(jù)存儲器SRAM因具有較高的性能、較低的功耗和較快的速度被大量應用于井下電路設計中。在測井儀器電路設計和測試中需要用到不同類型的SRAM存儲器,設計一種用于井下儀器電路中可配置的SRAM控制器的解決方案有利于提高儀器開發(fā)和測試的效率,并能夠較好地適用于儀器功能的擴展和升級。
Altera的Nios II核是用戶可隨意配置和構建的32位嵌入式處理器IP核,采用Avalon總線結構的通信接口。利用Altera開發(fā)環(huán)境下的Quartus II和SOPC Builder工具可以根據(jù)設計要求對Nios II處理器內(nèi)核及其外圍設備進行搭建,使該嵌入式系統(tǒng)全面滿足用戶系統(tǒng)設計的要求。由于處理器是軟核形式,具有很大的靈活性,采用Nios II處理器,用戶將不再局限于ASIC處理器技術,而是根據(jù)自己要求定制處理器,按照需要選擇合適的外設設備、存儲器以及各種接口,很受用戶們歡迎。NiosII開發(fā)包含一套通用的外設和接口庫,另外利用SOPC Builder軟件中的用戶邏輯接口向?qū)Э梢陨勺约旱亩ㄖ仆庠O,從而實現(xiàn)現(xiàn)有處理器無法實現(xiàn)的嵌入式處理器配置,得到用戶所需的結果[1]。
本文結合Altera公司的Cyclone II 系列FPGA芯片,以SRAM(CY7C1011DV33)為例,設計一款應用于測井儀器中SRAM控制器IP核,并基于一定硬件平臺通過構建SOPC(System On Programmable Chip,可編程的片上系統(tǒng))系統(tǒng)對設計的IP核進行了相關測試。該測試平臺也可應用在對SRAM的選型中[2-3]。
以聲波測井儀器為例,常規(guī)聲波測井儀器的電子系統(tǒng)由主控電路、聲激勵電路、聲信號采集電路組成[4],各電路采用自定義高速總線TMB互聯(lián)。主控電路作為整個系統(tǒng)的控制中心和數(shù)據(jù)處理中心,通常采用DSP+FPGA/CPLD+存儲器的架構實現(xiàn),如圖1所示。在DSP中運行主控制程序,控制儀器發(fā)射和數(shù)據(jù)采集、處理和上傳等。井下多通道數(shù)據(jù)采集使用FPGA作為接口控制邏輯,能夠?qū)崿F(xiàn)高速總線的節(jié)點協(xié)議和數(shù)據(jù)緩存。采集數(shù)據(jù)沒有立即經(jīng)過DSP處理后寫入存儲器中而是通過SRAM進行數(shù)據(jù)緩存,這樣能夠避免DSP頻繁干預采集過程從而降低數(shù)據(jù)處理速度。另外井下高溫高壓的惡劣環(huán)境對大容量耐高溫的SRAM選型要求難度越來越大。DSP可以利用專用外部存儲器接口來直接訪問SRAM,而FPGA對SRAM需要自行設計實現(xiàn)[5]。
一般FPGA對SRAM管理采用Verilog/VHDL硬件語言設計SRAM管理模塊實現(xiàn),過程繁瑣且靈活性差,如果儀器更換其他型號或容量的芯片,需要重新設計該模塊,不利于儀器升級改造。設計一款可靈活配置的SRAM控制器,實現(xiàn)對不同數(shù)據(jù)寬度和容量的SRAM的控制管理,可提高控制器的復用性,靈活訪問SRAM空間。
圖1 聲波測井儀器電子系統(tǒng)
以CY7C1011DV33為例,對該SRAM芯片進行分析,SRAM芯片包含A0~A16共17根地址線,IO0~IO15共16根數(shù)據(jù)線,片選信號/CE,讀使能信號/OE,寫使能信號/WE和高低字節(jié)選擇信號/BHE和/BLE[6]。SRAM操作主要包括寫操作和讀操作:通過片選和讀/寫控制信號可實現(xiàn)SRAM寫入和讀出數(shù)據(jù),讀寫時序如圖2所示(前半部分為寫:tWCmin=10 ns,后半部分為讀:tRCmin=10 ns)。
圖2 SRAM讀寫時序圖
用戶自定制外設有兩種可行的辦法:一種是利用SOPC Builder提供的元件編輯器在圖形化用戶界面下將硬件描述語言(Verilog或者VHDl)描述的用戶邏輯封裝為一個SOPC Builder元件(也可稱為IP核);另一種是在Altera提供的IP核的基礎上來修改(主要是通過修改Class.ptf文件)滿足用戶實現(xiàn)其功能[1,7]。本設計采用第一種方式[8],根據(jù)SRAM讀寫操作要求采用Verilog語言編寫元件邏輯的硬件描述邏輯(HDL文件)。
下面附上是硬件描述邏輯的verilog代碼。由于篇幅限制,詳細代碼略去,這里只附上一些重要部分:
--以下是端口部分說明
module SRAM_xBit_xK(
// Host Data
oDATA,iDATA,iADDR,
iWE_N,iOE_N,
iCE_N,iCLK,
iBE_N,
// SRAM
SRAM_DQ,
SRAM_ADDR,
SRAM_UB_N,
SRAM_LB_N,
SRAM_WE_N,
SRAM_CE_N,
SRAM_OE_N
);
將前面設計好的SRAM控制邏輯封裝為SOPC Builder元件主要包括以下幾個步驟[1]:
1)在SOPC Builder中,單擊菜單選項File下的New Component,打開創(chuàng)建新元件向?qū)?,從Introducation選項卡頁面點擊next進入創(chuàng)建過程。
2)在HDL Files選項卡中,單擊Add HDL Files按鈕,加入設計好的硬件描述語言文件模塊(HDL文件),點擊next進入Signals選項卡。
3)在Signals選項卡,按照圖3設置信號類型:Name一欄是用戶定義的信號類型;Interface是接口類型名稱;Signal Type一欄是信號類型,其中“_n”表示低電平有效;Width為信號的寬度,這里在設計HDL文件時將數(shù)據(jù)寬度和地址寬度分別宏定義為DATA_LEN和ADDR_LEN是為了在使用時能夠靈活配置SRAM控制器IP核;Direction一欄為信號的方向選擇,注意這是對外部器件而言的。
圖3 SRAM控制器Signals選項卡
4)選擇Interface選項卡。對于avalon_slave_0選項欄選擇Associated Clock為clock_sink,Timing選項欄(如圖4所示)可以根據(jù)具體器件的讀寫參數(shù)進行配置,單位可以是時鐘周期也可以為ns。讀寫時序參數(shù)關乎SRAM讀寫速度,可通過不斷調(diào)整選擇最佳參數(shù)。設計使用的SRAM芯片的讀/寫時序圖如圖2所示,為了能夠在高溫環(huán)境中實現(xiàn)對SRAM的穩(wěn)定讀寫,本設計將此控制器的讀寫時間設定為2個時鐘周期。在Deprecated選項下,因為SRAM是易失性存儲器,所以一定要勾選Memeory device選項,Slave addressing選擇NATIVE即靜態(tài)地址對齊方式。對于 “clock_sink”和“conduit_end”選項欄可默認設置不用修改。
圖4 SRAM讀寫時序配置
5)最后進入Component Wizard選項卡,該選項卡主要設置SRAM控制器IP核的名稱、版本等說明信息,可根據(jù)實際情況進行填寫。單擊Finish,至此完成對SRAM控制器IP核的創(chuàng)建,可在Component Library一欄中找到剛剛創(chuàng)建的IP核,設計完成的SRAM控制器IP核可以靈活配置數(shù)據(jù)和地址寬度。
測試在以Altera Cyclone II系列的EP2C8T144I8N FPGA為核心的最小系統(tǒng)板的硬件平臺上實現(xiàn)的。Cyclone II系列 FPAG具有很高的性能和極低的功耗,而且性價比較高,能夠提供多種功能,還可以擴展外圍設備、存儲器、I/O以及嵌入式處理器。同時提供了豐富的可編程資源和可編程I/O資源。EP2C8T144I8N系列FPGA提供高達8256個邏輯單元,36塊M4KRAM塊即165888bits的RAM資源,2個PLLS及144個引腳。此款FPGA支持多種配置模式:包括主動串行,被動方式和JTAG方式[9]。Cyclone II系列FPGA為了固化程序需要選擇合適的配置器件,EP2C8系列支持EPCS4、EPCS16和EPCS64。
底層板通過FPGA+晶振+配置芯片+電源搭建形成最小系統(tǒng)板。以EP2C8T144I8N為核心,外圍設備包括: 1.2 V的核心電壓和3.3 V的I/O電壓,外部直流電源經(jīng)過濾波電路可直接給芯片供電,地端統(tǒng)一共地;20 MHz的外部有源晶振CSTOSC,其中引腳2接地,引腳3為時鐘輸出信號,引腳4接3.3 V電源。引腳3的時鐘輸出和FPGA的時鐘輸入引腳之間串聯(lián)了一個電阻用于保證時鐘波形穩(wěn)定;配置芯片采用Altera公司生產(chǎn)的EPCS4N,可用于存儲程序代碼、非易失性程序代碼和FPAG的配置數(shù)據(jù);JTAG配置電路,按照設計規(guī)范,數(shù)據(jù)輸入信號和模式選擇信號分別接1 kΩ的上拉電阻,時鐘信號TCK需要接1 kΩ的下拉電阻,JTAG插座型號為DC3-10P;UART接口,直接擴展兩個I/O引腳為串口通信接口。設計沒有采用硬件復位電路,復位是通過軟件實現(xiàn)。將FPAG余下的I/O引腳進行外擴,擴展為兩排12x2的直插插座。
SRAM測試底座是將芯片引腳進行擴展,其中片選、讀/寫使能信號串聯(lián)22.9 Ω的電阻后與接口引腳相連。SRAM電源采用單獨供電。利用底層板預留的擴展接口,采用搭積木方式,將SRAM測試插座通過插針直插到底層最小系統(tǒng)板上進行測試。
SOPC是Altera公司提出來的一種靈活、高效的片上系統(tǒng)解決方案。它將處理器、存儲器、I/O口、各種接口等系統(tǒng)設計所需要的功能模塊集成到FPGA上,構成一個可編程的片上系統(tǒng)。SOPC系統(tǒng)開發(fā)流程主要包括硬件開發(fā)和軟件開發(fā)兩部分,其中硬件開發(fā)是在QuartusII中利用SOPCBuilder搭建NiosII系統(tǒng),然后在QuartusII中進行綜合布線、引腳分配等形成完整系統(tǒng);軟件開發(fā)是根據(jù)設計需求在NiosII的SBT環(huán)境中利用C/C++語言和系統(tǒng)自帶API函數(shù)編寫程序[10-11],圖5為設計的SOPC系統(tǒng)框圖。
圖5 SOPC系統(tǒng)框圖
3.2.1 硬件開發(fā)
本文設計的系統(tǒng)硬件部分主要包括:NiosII嵌入式系統(tǒng)、PLL模塊、復位模塊等。首先需要構建NiosII嵌入式系統(tǒng):在Quartus II中新建工程并建立頂層模塊后,利用Quartus II的組件SOPC Builder創(chuàng)建完整的Nios II系統(tǒng)。啟動SOPC Builder后,首先指定目標FPGA和時鐘設置為50 MHz,然后選擇合適的Nios II處理器內(nèi)核:在AvalonComponents目錄下雙擊Nios II Process or-Altera Coporation,彈出Altera Nios II配置向?qū)υ捒颍x擇Nios II Core選項卡,可以看到Nios II系列支持3種類型的CPU(Nios II/e、Nios II/s、Nios II/f),本設計選擇標準型CPU核Nios II/s,在CachesandMemoryInterface選項卡中指定Instruction Cache為4 KB,DATACache為2 KB,在JTAG Debug Module選項卡中選擇Level型JTAG,方便調(diào)試。完成Nios II處理器配置,生成一個帶有JTAG調(diào)試接口的Nios II/s型處理器核。添加JTAG UART控制器IP核可用于PC機對FPGA的程序下載和調(diào)試。然后添加8 KB片內(nèi)RAM用于程序運行空間。另外因需要固化程序,添加系統(tǒng)提供的epcs_flash_controller控制器IP核,EPCS控制器自帶Boot-Loader代碼。因需要與上位機通訊,添加系統(tǒng)提供的UARTIP核[12]。添加System ID外設(當SOPC Builder生成NiosII系統(tǒng)時,將為該NiosII系統(tǒng)生成一個標識符(ID號),供IDE編譯器和用戶所設計的軟件程序判斷是否與目標系統(tǒng)匹配)。最后添加前面設計的SRAMIP核。將所需IP核都添加到Nios II系統(tǒng)后生成的界面如圖6所示。
圖6 SRAM控制器IP核添加到Nios II系統(tǒng)后生成的界面
至此,系統(tǒng)中已經(jīng)添加完所需的元件,接下來需要為每個外設分配基地址和中斷請求優(yōu)先級??梢岳肧OPC Builder的System菜單提供的Auto-Assign Base Address命令進行自動基地址分配即可。本系統(tǒng)中所有外設沒有使用中斷,無需進行中斷優(yōu)先級分配。然后需要選中Nios II Processor中的CORE Nios II選項卡進行系統(tǒng)的復位地址和異常向量的設置。最后選擇System Generation選項卡單擊Generate進行系統(tǒng)生成編,在系統(tǒng)生成過程中,SOPC Builder會執(zhí)行一系列操作,包括:生成所有部件Verilog HDL源文件、硬件部件、連接部件的片內(nèi)總線以及為系統(tǒng)生成IDE軟件開發(fā)所需要的HAL和C文件等。
生成過程的時間一般需要幾分鐘,當選項卡中顯示“SUCCESS:SYSTEM GENERATION COMPLETED”信息時,代表系統(tǒng)生成結束,將會輸出一個.bsf文件。通過在頂層模塊中左鍵雙擊,在出現(xiàn)的Symbol選項卡中的Project文件夾下將SOPC Builder搭建Nios II系統(tǒng)時生成的Symbol模塊加入到工程創(chuàng)建的頂層模塊BDF文件中。同樣在Symbol選項卡中加入input/output/bidir引腳和所需的PLL模塊(PLL備頻到50 MHz)。最后添加自行設計的自動復位模塊,將各功能模塊用連接線連起來組成系統(tǒng)功能原理圖,并進行相應的引腳分配。這一過程類似于傳統(tǒng)硬件電路設計中在PCB上連接各功能模塊。完成硬件系統(tǒng)設計并編譯無誤后就可以將硬件設計下載到目標FPGA中。通過USB-Blaster下載電纜連接目標板和PC機,接通電源后在Quartus II軟件中選擇Tool-Programmer,將配置文件.sof下載到FPGA中。完成硬件設計后,接下來需要進行程序開發(fā)。
3.2.2 軟件開發(fā)
Nios II軟件構建工具Nios II Software Build Tools是一組功能強大的集成開發(fā)環(huán)境,利用它們可以管理應用程序、硬件抽象層(HAL)(或者稱為板級支持包BSP)和軟件庫的編譯選項。硬件抽象層是底層硬件和應用程序開發(fā)之間的系統(tǒng)庫,用戶可以利用HAL提供的各種函數(shù)編寫應用程序。HAL在新建SBT工程時自動生成,與硬件開發(fā)緊密相關。所有的軟件開發(fā)任務都是在Nios II SBT下完成的,包括代碼編寫、編譯和程序調(diào)試。調(diào)試無誤的程序可以將生成的可執(zhí)行文件.elf固化到配置芯片中。
打開Nios IISBT。啟動一個新的Nios II Application and BSP from Template工程時,Nios IISBT需要使用SOPC Builder系統(tǒng)文件(.sopcinfo)進行創(chuàng)建。創(chuàng)建工程成功后,在SBT主界面左側會顯示兩個新的工程文件夾:sram和sram_bsp,其中sram是應用工程,sram_bsp是描述硬件的系統(tǒng)庫。在sram工程文件夾下打開源文件進行C程序開發(fā)[13]。程序編寫并編譯成功后在硬件下載成功的前提下可以利用Nios IISBT的菜單欄Nios II中的Flash Program將工程文件下載到目標FPGA中,下載成功后重新上電可以觀察程序運行情況。
為了測試SRAM控制器IP核可用性,軟件設計是通過往SRAM中循環(huán)寫入測井數(shù)據(jù)并將數(shù)據(jù)讀出,比較寫入與讀出數(shù)據(jù)的一致性,將比較結果發(fā)送到PC機進行實時監(jiān)測,具體測試流程如圖7所示。為了實現(xiàn)測試該IP的穩(wěn)定性和SRAM耐溫耐壓特性,該測試平臺是放置在加溫箱中進行連續(xù)測試。下位機(測試平臺)可以通過串口接收上位機發(fā)出的命令,通過對命令進行判別來進行測試模式切換,分別進行連續(xù)地址寫入和隨機地址寫入兩種測試。
圖7 測試流程
將設計完成的測試平臺放置于加溫烘箱內(nèi),底層板所需的1.2 V和3.3 V電源及SRAM測試板所需的3.3 V電源通過高溫導線引出直接連接到直流電源上。UART接口的TX和RX通過高溫導線引出后連接到電平轉換盒子再通過USB轉串口線直接與PC機相連。將待測SRAM芯片放置于測試板上,啟動外部直流電源對設備進行供電,通過PC機中的串口調(diào)試助手觀察設備運行情況。
將SRAM測試系統(tǒng)放置在加溫箱內(nèi)進行連續(xù)高溫測試,測試溫度梯度為85(30 min)-125(30 min)-155(30 min)-175(2 h)℃,在175 ℃連續(xù)工作2 h后測得的讀寫時序如圖8所示(其中第1道為使能信號,第2道為寫使能(a)/讀使能(b)信號),從圖中可以看出讀寫周期均為2個時鐘周期,讀寫時序平穩(wěn)且毛刺少。通過PC機串口調(diào)試助手打印的數(shù)據(jù)寫入、讀出信息能夠判斷該控制器IP核實現(xiàn)了高溫環(huán)境下SRAM數(shù)據(jù)寫入、讀出無誤,SRAM控制器IP核在高溫環(huán)境下可以連續(xù)正常工作。
圖8 讀寫時序圖
另外,借助此測試平臺可以實現(xiàn)測井儀器中SRAM芯片高溫選型,芯片插座支持相同封裝的不同數(shù)據(jù)寬度和容量的SRAM芯片,通過簡單修改IP核配置即可進行不同類型SRAM讀寫測試。整個測試流程圖可選擇圖7所示的流程。通過UART接口,下位機把加溫過程中的測試信息傳輸?shù)絇C機上進行顯示,可以觀察芯片的工作狀態(tài),進而判斷芯片的耐溫特性。
本文重點介紹了基于Nios II的SRAM控制器IP核的設計過程,并將設計好的SRAM控制器IP核加入到完整的NiosII系統(tǒng)中進行了測試。測試結果表明該IP核能夠很好地實現(xiàn)對SRAM的讀寫控制,并能穩(wěn)定的運行在高溫環(huán)境中。對于不同位寬和容量的SRAM只需修改配置參數(shù)就可實現(xiàn)移植,提高了IP核的重復利用性,避免重復開發(fā)。該設計不僅解決了測井儀器中高速數(shù)據(jù)緩存的管理問題,也提供了一套SRAM選型測試系統(tǒng),能夠較好地適用于儀器功能的擴展和升級,對其它SOPC系統(tǒng)開發(fā)也具有一定的參考價值。