何 春,李彬華,陳小明
(昆明理工大學(xué)信息工程與自動化學(xué)院,云南 昆明 650504)
隨著存儲技術(shù)的發(fā)展,F(xiàn)PGA器件由于其低功耗、高性能、低成本和高可靠性等優(yōu)點,在復(fù)雜邏輯電路和數(shù)字信號處理領(lǐng)域扮演著重要的角色,與其最為相關(guān)的是以FPGA芯片為核心,借助開發(fā)軟件結(jié)合外設(shè)構(gòu)成的嵌入式可編程片上系統(tǒng)(System-on-a-Programmable-Chip, SOPC)的應(yīng)用。為了適應(yīng)系統(tǒng)數(shù)據(jù)交換,F(xiàn)PGA系統(tǒng)開發(fā)板的典型應(yīng)用都為主FPGA芯片配接閃存和外部隨機(jī)存儲器(Random Access Memory, RAM)的結(jié)構(gòu)。閃存用來存儲FPGA 配置信息和Nios II程序,配置信息和Nios II程序可于系統(tǒng)上電時,由FPGA內(nèi)嵌的閃存配置控制器對FPGA芯片自動完成配置并引導(dǎo)程序在隨機(jī)存儲器中運行。隨機(jī)存儲器用于運行Nios II程序和處理任意類型數(shù)據(jù),任意類型數(shù)據(jù)可以是以二進(jìn)制方式存儲的圖像、聲音數(shù)據(jù)等等。
近年來,國內(nèi)外關(guān)于SOPC在天文成像和數(shù)據(jù)采集方面的應(yīng)用越來越多。國外研究人員使用電子倍增電荷耦合器件(Electron-Multiplying Charge-Coupled Device, EMCCD)研制的相機(jī),進(jìn)行了微光成像實驗,取得了極好的天文觀測結(jié)果[1-2];國內(nèi)研究人員也進(jìn)行了大量的研究探討,不僅是SOPC數(shù)據(jù)采集系統(tǒng)的構(gòu)成[3-5],還把具體技術(shù)應(yīng)用于實際,解決了不少非常實際的工程問題[6-9]。
本文以目前正在進(jìn)行的一個基于EMCCD的成像系統(tǒng)研究項目中使用的系統(tǒng)板為例,介紹16位SRAM組件的設(shè)計過程及其在32 bit SOPC系統(tǒng)中的使用方法。
為進(jìn)行EMCCD成像系統(tǒng)的實驗研究,設(shè)計了一塊高速數(shù)?;旌想娐钒?,稱為FPGA板。其模擬部分有非常重要的視頻信號及其處理電路,數(shù)字部分主要由SOPC及其周邊系統(tǒng)、圖像和控制數(shù)據(jù)傳輸接口系統(tǒng)組成。SOPC及其周邊系統(tǒng)框圖如圖1。系統(tǒng)使用Quartus II 8.0(32 bit)和Nios II 8.0(32 bit)作為軟件開發(fā)平臺。
圖1 FPGA板SOPC及其周邊系統(tǒng)框圖
Fig.1 Schematic diagram of an SOPC and its interfaces in the FPGA board
該系統(tǒng)用于高速模擬視頻信號的處理和模擬/數(shù)字(Analog-to-Digital, A/D)轉(zhuǎn)換、CCD時鐘的產(chǎn)生、相機(jī)的控制和圖像數(shù)據(jù)傳輸?shù)?,是一個典型的高速低噪聲數(shù)?;旌舷到y(tǒng)。考慮到低噪聲的要求,希望在保證相機(jī)控制和數(shù)據(jù)傳輸可靠性的前提下,盡量減小數(shù)字系統(tǒng)所占的比重。所以,要求電路板上的FPGA芯片及其周邊電路規(guī)模不要太大。FPGA工作頻率較高,成像控制與A/D轉(zhuǎn)換、數(shù)據(jù)傳輸、測試和功能擴(kuò)展等端口占用了FPGA芯片大量的I/O資源,從系統(tǒng)可靠性和芯片管腳資源的合理分配利用出發(fā),F(xiàn)PGA板使用了單片IDT71V416S10作為擴(kuò)展隨機(jī)存儲器。由于 IDT71V416S10為16位靜態(tài)隨機(jī)存儲器芯片,不需要附加刷新控制,芯片的數(shù)據(jù)交換和控制端相對較少,利用FPGA一個獨立的I/O組就可以對其進(jìn)行控制并完成數(shù)據(jù)交換,方便在電路板的設(shè)計走線上對線路分布參數(shù)、阻抗匹配等問題進(jìn)行處理,能夠有效抑制數(shù)字信號傳遞過程中的開關(guān)噪聲等問題,在滿足系統(tǒng)工作需求的同時,節(jié)省了FPGA的I/O資源,也可以適應(yīng)FPGA芯片中構(gòu)建的SOPC系統(tǒng)與擴(kuò)展隨機(jī)存儲器間進(jìn)行高速數(shù)據(jù)交換。FPGA板的配置信息和Nios II程序存儲在串行FLASH存儲器芯片上。其他外圍常規(guī)接口和I/O結(jié)構(gòu),不再贅述。
Quartus II默認(rèn)的內(nèi)嵌式SOPC系統(tǒng)為32位結(jié)構(gòu),常規(guī)使用方法是利用兩片IDT71V416S10構(gòu)成32位擴(kuò)展隨機(jī)存儲器,而且內(nèi)建的SRAM組件沒有數(shù)據(jù)位寬的調(diào)整項,若FPGA板采用單片IDT71V416S10作為擴(kuò)展隨機(jī)存儲器,在創(chuàng)建SOPC器件框架時不能使用SOPC組件庫提供的成型組件,必須按照Avalon總線規(guī)范自行構(gòu)建其框架。
由Avalon總線規(guī)范[10-11]知道,Avalon總線擁有多種傳輸模式,以適應(yīng)不同外設(shè)的要求。Avalon總線的基本傳輸模式是在一個主外設(shè)和一個從外設(shè)之間進(jìn)行單字節(jié)、半字或字(8、16或32位)的傳輸。Avalon總線還支持一些高級傳輸模式和特性,例如支持需要延遲操作的外設(shè)、支持需要流傳輸操作的外設(shè)以及支持多個總線主設(shè)備并發(fā)訪問。
IDT71V416S10容量=218×16=262 144×16=4 194 304 bit,即256 k×16=4 Mbit。
該芯片為18位地址、16位數(shù)據(jù)寬度的SRAM。在32位SOPC系統(tǒng)中Avalon總線可以直接對低16位或低幾位總線進(jìn)行讀寫,擴(kuò)展隨機(jī)存儲器在符合Avalon總線規(guī)范的情況下,可以定義為不同的數(shù)據(jù)位寬。
2.1 SRAM的Verilog HDL框架程序設(shè)計
SOPC系統(tǒng)所用組件的設(shè)計,需要先構(gòu)建其框架,然后才能進(jìn)行組件創(chuàng)建??蚣芡ǔJ鞘褂媚骋环N硬件描述語言(Hardware Description Language, HDL)編寫的程序?qū)崿F(xiàn)的。本文使用Verilog HDL構(gòu)建16位SRAM的框架程序。為增加程序的可讀性,約定:SRAM組件與SOPC內(nèi)部系統(tǒng)時鐘、復(fù)位和Avalon總線的關(guān)聯(lián)信息,端口描述用小寫字母表示;SRAM組件輸出與實際SRAM芯片的關(guān)聯(lián)信息,端口描述用大寫字母表示。該程序命名為SRAM_16bit.v,其實體描述了必要的端口信號連接關(guān)系和數(shù)據(jù)寫入規(guī)則。具體程序如下:
module SRAM_16bit
#(
parameter DATA_LEN=16, //數(shù)據(jù)位寬定義
parameter ADDR_LEN=18 //地址位寬定義
)
(
//自定義SRAM組件與系統(tǒng)時鐘、 復(fù)位關(guān)聯(lián)的端口
input clk,
input reset_n,
//自定義SRAM組件與avalon_slave關(guān)聯(lián)的端口
input [(ADDR_LEN-1): 0] address,
input [(DATA_LEN/8-1): 0] byte_n, //字節(jié)使能信號byteenable_n
input write_n,
input [(DATA_LEN-1): 0] writedata,
input read_n,
output [(DATA_LEN-1): 0] readdata,
//自定義SRAM組件輸出端口, 用于連接IDT71V416S10芯片
inout [(DATA_LEN-1): 0] SRAM_DATA,
output [(ADDR_LEN-1): 0] SRAM_ADDR,
output [(DATA_LEN/8-1): 0] SRAM_BE_N,
output SRAM_CS_N,
output SRAM_OE_N,
output SRAM_WE_N
);
//數(shù)據(jù)讀出、寫入規(guī)則和信號連接
assign SRAM_DATA=SRAM_WE_N? ′hz: writedata; //數(shù)據(jù)寫入規(guī)則
assign readdata=SRAM_DATA;
assign SRAM_ADDR=address;
assign SRAM_BE_N=byte_n;
assign SRAM_WE_N=write_n;
assign SRAM_OE_N=read_n;
assign SRAM_CS_N=read_n & write_n; //CS片選有效規(guī)則
endmodule
端口描述中,字節(jié)使能信號byteenable_n可以控制對符合規(guī)范位寬的SRAM進(jìn)行寫操作。由Avalon總線規(guī)范,寫入規(guī)則參考表1。
表1 字節(jié)使能信號對從端口的寫入控制
SRAM_16bit.v程序中數(shù)據(jù)位寬DATA_LEN定義為16位時,byteenable_n位寬為2,這樣Avalon主端口只能對從端口的低16位進(jìn)行控制;DATA_LEN定義為32位時,byteenable_n位寬為4,Avalon主端口可以對從端口的滿32位進(jìn)行控制。
SRAM數(shù)據(jù)的讀取遵循基本讀傳輸方式,只要SRAM被選中和/或地址發(fā)生變化,SRAM就立刻返回數(shù)據(jù)。
SRAM_16bit.v程序中數(shù)據(jù)讀出和寫入規(guī)則的制定可參考IDT71V416S10數(shù)據(jù)手冊中控制端與輸出功能真值表[12]。數(shù)據(jù)線上的數(shù)據(jù)在讀寫狀態(tài)切換瞬間如不處理會出現(xiàn)混亂,為避免讀寫操作發(fā)生沖突,讀寫轉(zhuǎn)換過程中需使數(shù)據(jù)線呈高阻態(tài),參見程序中數(shù)據(jù)寫入規(guī)則。寫和讀的時候,SRAM芯片的片選必須有效,故取低電平有效的讀和寫相“與”,參見程序中CS片選有效規(guī)則。
2.2 16位SRAM組件創(chuàng)建
完成器件的框架程序設(shè)計后,就需要在Quartus II中創(chuàng)建SOPC器件,以便在Quartus II工程中進(jìn)行調(diào)用。在SOPC Builder工作界面下,創(chuàng)建新的組件(Create new component……),加載SRAM_16bit.v文件,若程序校驗無誤,可在信號定義選項卡(Signals)中定義信號關(guān)聯(lián),如圖2。
圖2 SRAM信號關(guān)聯(lián)定義
Fig.2 Definitions of the SRAM signals associated with interfaces
接下來需要根據(jù)端口的使用情況,在接口設(shè)置選項卡(interfaces)中增加端口或是刪除無信號關(guān)聯(lián)的多余端口并進(jìn)行端口特性的設(shè)置。其中時序參數(shù)(Timing)的設(shè)置,必須參考實際器件的技術(shù)數(shù)據(jù)手冊中器件的讀/寫時序,認(rèn)真選取相應(yīng)參數(shù)。IDT71V416S10的讀/寫時序如圖3、4[12],其平均讀寫時間周期為10 ns,即tWC=tRC=10 ns,數(shù)據(jù)輸出保持時間tOH=4 ns,輸出使能等待時間為5 ns。這樣,在時序參數(shù)設(shè)置中設(shè)定的參數(shù)取值如下:Setup=5 ns;Read Wait≥tRC+tOH(參考圖3)。參照已設(shè)定的Hold參數(shù),取Read Wait=tRC+Hold=20 ns;Write Wait≥tWC=10 ns(參考圖4),取Writer Wait=10 ns;tOH=4 ns,為保證系統(tǒng)讀出數(shù)據(jù)可靠,取Hold=10 ns。
圖3 IDT71V416S10讀時序[12]
Fig.3 Timing diagram of the read cycle of the IDT71V416S10[12]
圖4 IDT71V416S10寫時序[12]
Fig.4 Timing diagram of the write cycle of the IDT71V416S10[12]
另外,若要SOPC器件中的中央處理器(Central Processing Unit, CPU)可以將該SRAM作為擴(kuò)展隨機(jī)存儲器使用,還必須在接口設(shè)置選項卡(interfaces)中在不推薦參數(shù)設(shè)置(Deprecated)中把Memory device項選上。最后在組件向?qū)?Component Wizard)中填入包括組件名稱、分組等信息后,可形成SOPC器件的新組件。
一個含16位SRAM的SOPC器件的局部框架如圖5。新建的SRAM組件內(nèi)建立了與中央處理器時鐘的關(guān)聯(lián),可以直接工作,不必掛接avalon三態(tài)橋(avalon-MM Tristate Bridge)。
圖5 包含16bit SRAM的SOPC器件局部框架
Fig.5 A part of the framework of the SOPC device with the 16bit SRAM
按照圖5框架結(jié)構(gòu)在Quartus II中形成的SOPC器件見圖6,利用此器件形成的工程下載到FPGA板后,系統(tǒng)板上電加載Nios II程序?qū)︻A(yù)設(shè)輸入和輸出響應(yīng)正常,系統(tǒng)順利工作運行。
此后,將一個EMCCD相機(jī)控制工程[13]下載到FPGA板,用示波器測得的相機(jī)時鐘和控制波形的一部分如圖7。該實測波形與仿真波形[13]一致,說明包括該16位SRAM在內(nèi)的所有SOPC系統(tǒng)均工作正常。
由于SRAM_16bit.v中存儲器地址和數(shù)據(jù)位寬作了參數(shù)化處理,故其也可用于2片IDT71V416S10構(gòu)建的256 k×32 bit的系統(tǒng)或類似SRAM芯片構(gòu)建的其他系統(tǒng)。數(shù)據(jù)位寬不變,改變地址讓ADDR_LEN=19,系統(tǒng)可使用512 k×16 Bit的芯片,見圖8。固定地址,讓數(shù)據(jù)位寬DATA_LEN為8或32,系統(tǒng)可使用256 k×8 Bit的芯片或256 k×32 Bit的芯片,見圖9。
圖6 Quartus II中使用的SOPC器件
Fig.6 An SOPC device used in a Quartus II test project
圖7 實測的EMCCD相機(jī)時鐘和控制波形
Fig.7 Measured waveforms of clocks and control signals in an EMCCD camera
本文針對天文用EMCCD相機(jī)項目的FPGA板上使用的16位擴(kuò)展SRAM芯片,介紹了在Quartus II的SOPC開發(fā)系統(tǒng)中按照Avalon總線規(guī)范定制非常規(guī)位寬擴(kuò)展隨機(jī)存儲器組件的方法,并在實際項目的FPGA板上進(jìn)行了實驗驗證。按此思路,用戶可根據(jù)實際情況和需要,對其他外設(shè)定制類似的SOPC組件,以構(gòu)建合理且有效的SOPC系統(tǒng)。
圖8 SRAM組件改變地址參數(shù)后的SOPC器件
Fig.8 An SOPC device after modifying address parameters of the SRAM
圖9 改變SRAM組件數(shù)據(jù)位寬參數(shù)后的SOPC器件局部
Fig.9 SOPC devices with different data widths of the SRAM
[1] Mackay C D. Near diffraction limited visible imaging on 10M class telescopes with EMCCD[C]// J E Beletic, J W Beletic, P Amico. Scientific Detector for Astronomy. Springer, 2006, 336: 93-98.
[2] Downing M, Hubin N, Kasper M, et al. A dedicated L3Vision CCD for adaptive optics applications[C]// Beletic J E, Beletic J W, Amico P. Scientific Detector for Astronomy. Springer, 2006, 336: 321-328.
[3] 林鵬, 姚耐軍, 郝庭柱, 等. 基于SOPC數(shù)據(jù)采集系統(tǒng)的研究[J]. 天津理工大學(xué)學(xué)報, 2006, 22(3): 39-41.
Lin Peng, Yao Naijun, Hao Tingzhu, et al. Study on the data collection system based on SOPC design[J]. Journal of Tianjin University of Technology, 2006, 22(3): 39-41.
[4] 姚國國, 李寶森, 王景賢, 等. 基于SOPC技術(shù)的數(shù)據(jù)采集系統(tǒng)設(shè)計[J]. 電子科技, 2008, 21(10): 68-71.
Yao Guoguo, Li Baosen, Wang Jingxian, et al. Design of the data acquisition system based on SOPC[J]. Electronic Science and Technology, 2008, 21(10): 68-71.
[5] Li B, Hu K, Wang Ch, et al. Data acquisition system based on the Nios II for a CCD camera[C]// Proceedings of SPIE, 2006, 6274: 62741C.
[6] 邱志強(qiáng), 鄧建, 葉彬潯, 等. 基于NiosⅡ嵌入式軟核處理器的天文用IRFPA圖像采集系統(tǒng)[J]. 天文研究與技術(shù)——國家天文臺臺刊, 2006, 3(4): 373-379.
Qiu Zhiqiang, Deng Jian, Ye Binxun, et al. Astronomical IRFPA image collecting system based on the Nios II soft-core embedded processor[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2006, 3(4): 373-379.
[7] Li B, Song Q, Ji K, et al. Method to implement the CCD timing generator based on FPGA[C]// Proceedings of SPIE, 2010, 7742: 77421Y.
[8] 和琳, 李彬華, 尚媛圓, 等. 行間轉(zhuǎn)移CCD數(shù)字系統(tǒng)的VHDL設(shè)計[J]. 天文研究與技術(shù)——國家天文臺臺刊, 2010, 8(4): 380-387.
He Lin, Li Binhua, Shang Yuanyuan, et al. A VHDL design of digital system for an interline-transfer CCD[J]. Astronomical Research & Technology——Publications of National Astronomical Observatories of China, 2010, 8(4): 380-387.
[9] 朱丹, 王家寧, 朱玙驊, 等. 一種多核遠(yuǎn)程重構(gòu)控制器的設(shè)計與實現(xiàn)[J]. 計算機(jī)工程, 2011, 37(9): 254-256.
Zhu Dan, Wang Jianing, Zhu Yuhua, et al. Design and Implementation of multi-core remote reconfigurable controller[J]. Computer Engineering, 2011, 37(9): 254-256.
[10]Altera Corporation. Avalon bus specification reference manual[EB/OL]. [2012-02-19]. http://www.altera.com.cn/literature/manual/mnl_avalon_bus.pdf.
[11]孫愷, 程世恒. Nios II系統(tǒng)開發(fā)設(shè)計與應(yīng)用實例[M]. 北京: 北京航空航天大學(xué)出版社, 2007.
[12]Integrated Device Technology Inc. IDT71V416L10BEG Datasheet[EB/OL]. [2012-02-19].http://pdf1.alldatasheet.com/datasheet-pdf/view/124915/IDT/IDT71V416L10BEG.html.
[13]陳小明, 李彬華. EMCCD時序發(fā)生器的VHDL設(shè)計[J]. 計算機(jī)工程與應(yīng)用, 2012, 48(1): 72-75.
Chen Xiaoming, Li Binhua. VHDL design of EMCCD timing generator[J]. Computer Engineering and Applications, 2012, 48(1): 72-75.