摘 要:為了滿足高幀頻" title="高幀頻">高幀頻、大面陣CCD相機(jī)數(shù)字視頻實(shí)時存儲要求,設(shè)計(jì)出基于SCSI協(xié)議處理器(FAS466),脫離計(jì)算機(jī)平臺的圖像數(shù)據(jù)直接存儲系統(tǒng)。該系統(tǒng)采用FPGA芯片編程實(shí)現(xiàn)DMA控制功能,從而協(xié)調(diào)SCSI協(xié)議處理器實(shí)現(xiàn)數(shù)據(jù)的傳輸。此外,系統(tǒng)采用雙硬盤交替存儲方案以提高存儲速度,實(shí)現(xiàn)存儲流量達(dá)70MBps。本文介紹了該設(shè)備的系統(tǒng)結(jié)構(gòu)和軟硬件設(shè)計(jì)方法。
關(guān)鍵詞: FAS466協(xié)議處理器 微處理器? DMA控制器? FPGA? FIFO
由于高幀頻、大面陣CCD數(shù)字相機(jī)的圖像數(shù)據(jù)量非常巨大,存儲流量超過50MBps。而且圖像輸出速率也比較高,所以高速圖像數(shù)據(jù)的實(shí)時記錄是一個不易解決的問題。高幀頻、大面陣CCD相機(jī)的數(shù)字視頻存儲的一般方案是基于高性能" title="高性能">高性能計(jì)算機(jī)體系結(jié)構(gòu),把PCI總線的視頻采集卡與高性能IDE硬盤系統(tǒng)或基于PCI-SCSI橋的SCSI存儲硬盤系統(tǒng)結(jié)合起來完成任務(wù)。這種方案實(shí)現(xiàn)起來比較容易,但存在總線瓶頸問題,一次存儲占用兩次PCI總線,而且還受到操作系統(tǒng)和文件系統(tǒng)的限制,因而在實(shí)際應(yīng)用中存儲速度很難突破40MBps[1]。針對這一問題,本文設(shè)計(jì)出脫離計(jì)算機(jī)平臺的圖像數(shù)據(jù)存儲方式,采用FPGA芯片控制時序,運(yùn)用VHDL語言編程實(shí)現(xiàn)微處理器和DMA控制功能,從而協(xié)調(diào)SCSI協(xié)議處理器實(shí)現(xiàn)數(shù)據(jù)的傳輸。FPGA的運(yùn)用比單獨(dú)使用DMA控制器減少了電路板的體積,降低了成本,提高了存儲的速率。
1 系統(tǒng)的硬件結(jié)構(gòu)設(shè)計(jì)
實(shí)現(xiàn)SCSI協(xié)議和硬盤存儲,通常需要有微處理器、DMA控制器、SCSI協(xié)議控制器、數(shù)據(jù)緩存" title="數(shù)據(jù)緩存">數(shù)據(jù)緩存器等硬件支持和相應(yīng)的軟件控制模塊。而本系統(tǒng)DMA控制通過對FPGA編程來實(shí)現(xiàn)。圖像數(shù)據(jù)存儲系統(tǒng)結(jié)構(gòu)圖如圖1所示。
1.1 微處理器
微處理器負(fù)責(zé)對各個模塊進(jìn)行協(xié)調(diào)和控制。本系統(tǒng)所設(shè)計(jì)的專用高速硬盤存儲設(shè)備實(shí)現(xiàn)數(shù)據(jù)的持續(xù)高速存儲,要求處理數(shù)據(jù)的速度高,因此采用DSP微處理器。微處理器主要功能如下:
(1)完成與外接數(shù)據(jù)的傳輸起始、結(jié)束控制。
?。?)對FPGA進(jìn)行復(fù)位、開始操作。
?。?)對FAS466的初始化操作,對傳輸?shù)漠惓G闆r進(jìn)行中斷處理。
?。?)對協(xié)議控制芯片內(nèi)部寄存器的讀寫控制,從而控制SCSI總線的命令傳輸和狀態(tài)監(jiān)控。對SCSI的命令信息進(jìn)行解釋、執(zhí)行、管理;對來自SCSI總線的信息狀態(tài)進(jìn)行翻譯、執(zhí)行、管理。
1.2 DMA控制器
DMA控制器控制數(shù)據(jù)發(fā)送或接收源的數(shù)據(jù)緩沖器與SCSI協(xié)議控制器內(nèi)部緩沖器之間的數(shù)據(jù)傳送,這樣通過與協(xié)議控制器的DMA接口相協(xié)調(diào)以控制數(shù)據(jù)源與SCSI總線間的數(shù)據(jù)傳送。本設(shè)計(jì)采用FPGA器件,利用VHDL語言編程實(shí)現(xiàn)DMA控制器功能,而不采用專用的DMA控制器,主要考慮以下一些因素:本設(shè)計(jì)的數(shù)據(jù)傳輸速率" title="傳輸速率">傳輸速率達(dá)到50MBps,而一般的專用DMA控制器難以勝任;專用的DMA控制器與SCSI協(xié)議控制芯片之間的連接需要大量的邏輯轉(zhuǎn)換電路和外圍連線,使設(shè)計(jì)難度加大;使用FPGA器件,除了完成DMA控制功能之外,還可以把電路中的邏輯轉(zhuǎn)換、系統(tǒng)復(fù)位等模塊設(shè)計(jì)進(jìn)去,減小了設(shè)備的體積,方便了以后對系統(tǒng)的升級和改進(jìn)。
1.3? SCSI協(xié)議處理器(FAS466)
SCSI協(xié)議處理器是SCSI總線操作的執(zhí)行部件,各公司都有專門的SCSI集成電路芯片作為協(xié)議控制器,如Qlogic公司的FAS368M、FAS466等。FAS466(Fast Architecture SCSI Processor)處理器是Qlogic公司1999年上市的一種高性能SCSI引擎,它源于Qlogic公司的TEC450/452三重嵌入式控制的鋁系列,可提供Fast40的同步傳輸速率[2],它的同步數(shù)據(jù)寬總線傳輸速率可達(dá)80MBps;支持先進(jìn)的SCSI自動配置模式的1層和2層協(xié)議;內(nèi)部嵌有微控制器,能夠通過編程方式靈活地協(xié)調(diào)SCSI作業(yè)隊(duì)列,可以工作在啟動或目標(biāo)模式并支持單端或低電壓差分模式的SCSI連接。
FAS466區(qū)別于其他SCSI協(xié)議處理器的最大特點(diǎn)是:它采用微處理器和DMA接口結(jié)構(gòu),而常見的SCSI協(xié)議控制器采用PCI接口總線結(jié)構(gòu)。這是本設(shè)計(jì)采用FAS466的一個主要原因。采用微處理器和DMA接口結(jié)構(gòu),可以通過DSP對傳輸進(jìn)行控制,脫離微機(jī)平臺,減少傳輸帶寬限制,使數(shù)據(jù)存儲系統(tǒng)具有非常好的靈活性和可移植性。 FAS466由SCSI控制器、微控制器、DMA接口和微處理器接口四個模塊組成。外部微處理器通過微處理器接口對FAS466進(jìn)行控制,協(xié)議控制器接受微處理器的操作指令,如總裁、選擇、失連、復(fù)位總線等。SCSI控制器提供靈活、有效的底層SCSI協(xié)議控制,微控制器則負(fù)責(zé)控制數(shù)據(jù)從DMA接口到SCSI硬盤的傳輸以及各個模塊之間的協(xié)調(diào)。FAS466的內(nèi)部結(jié)構(gòu)如圖2所示。
1.4 數(shù)據(jù)緩存器
在設(shè)備的輸入接口部分,需要有數(shù)據(jù)緩存單元。數(shù)據(jù)緩存的目的是為SCSI的高速DMA傳輸做好準(zhǔn)備,使兩邊數(shù)據(jù)傳輸速度匹配。數(shù)據(jù)的流向一般是一個口進(jìn),一個口出,不對信號進(jìn)行任何處理。普通的存儲器在寫入的同時不能讀取,雙口隨機(jī)存儲器RAM雖然也可完成這個任務(wù),但是由于它需要復(fù)雜的地址譯碼電路,所以不采用。采用FIFO芯片,可以去掉復(fù)雜的緩存器譯碼電路,大大簡化了系統(tǒng)設(shè)計(jì)。緩存單元在結(jié)構(gòu)上相當(dāng)于先進(jìn)先出(First In First Out,F(xiàn)IFO)隊(duì)列,即先到的數(shù)據(jù)先被存儲。本設(shè)計(jì)中FIFO選用IDT公司的IDT72V2113芯片。
2系統(tǒng)的軟件設(shè)計(jì)
軟件設(shè)計(jì)" title="軟件設(shè)計(jì)">軟件設(shè)計(jì)是本系統(tǒng)設(shè)計(jì)的重點(diǎn)和難點(diǎn),它負(fù)責(zé)對相關(guān)硬件的控制和協(xié)調(diào),最終實(shí)現(xiàn)SCSI協(xié)議、硬盤的控制和DMA傳輸?shù)?。軟件設(shè)計(jì)分為SCSI控制軟件和DMA控制器的FPGA實(shí)現(xiàn)兩部分。下面分別進(jìn)行討論。
2.1 SCSI控制軟件
一般來說,要完成一次數(shù)據(jù)交換必須完成SCSI總線的仲裁、選擇、消息、命令、數(shù)據(jù)和狀態(tài)等階段。這些階段,微處理器通過對FAS466寄存器的讀寫控制來實(shí)現(xiàn)。FAS466的寄存器主要有:
(1)命令寄存器:DSP通過向命令寄存器寫入相應(yīng)指
令,控制FAS466完成初始化、復(fù)位、總線分配與復(fù)位以及SCSI總線各個階段的轉(zhuǎn)變等功能。
(2)FIFO寄存器:這是一個128字節(jié)的雙端口RAM,SCSI硬盤和FAS466之間的數(shù)據(jù)交換都通過該FIFO16字(深)的FIFO寄存器來完成。
?。?)傳輸計(jì)數(shù)寄存器:是一個減法計(jì)數(shù)器,用于保存一次DMA數(shù)據(jù)傳輸?shù)淖止?jié)數(shù)。
?。?)中斷寄存器:DSP通過FAS466中斷寄存器了解SCSI命令的執(zhí)行情況,從而決定程序的執(zhí)行流向。
SCSI控制軟件流程如圖3所示。首先初始化SCSI控制器,然后SCSI控制器與SCSI硬盤建立同步傳輸協(xié)議,在硬盤準(zhǔn)備好的情況下才可以發(fā)送各種SCSI命令,如讀、寫等,同時處理好各種意外情況的發(fā)生。
2.2 DMA控制器的FPGA實(shí)現(xiàn)設(shè)計(jì)
FAS466外部DMA控制器由FPGA實(shí)現(xiàn)。FAS466通過DREQ信號有效請求數(shù)據(jù)傳輸,當(dāng)DMA控制器檢測到DREQ有效并且外部FIFO非空時,使DACK有效并通知FAS466開始DMA傳輸。DMA控制器的狀態(tài)機(jī)如圖4所示。
FPGA除了實(shí)現(xiàn)FAS466的外部DMA控制器之外,還實(shí)現(xiàn)FAS466與外部微處理器的部分邏輯和其他邏輯控制。FPGA內(nèi)部邏輯功能模塊如圖5所示。
本文在FAST-40 SCSI協(xié)議基礎(chǔ)上,對實(shí)時高速數(shù)字視頻SCSI存儲系統(tǒng)的軟硬件進(jìn)行了設(shè)計(jì)。利用FAS466作為SCSI控制器實(shí)現(xiàn)啟動器功能,控制兩塊SCSI硬盤實(shí)現(xiàn)直接存儲,充分利用SCSI總線的帶寬,從而大幅度提高了系統(tǒng)的效率。初步建立了較完善實(shí)用的直接存儲的結(jié)構(gòu)體系,實(shí)現(xiàn)存儲流量達(dá)70MBps。為解決大面陣、高幀頻CCD數(shù)據(jù)實(shí)時存儲奠定了良好的基礎(chǔ)。該項(xiàng)技術(shù)的解決,將會大力促進(jìn)在科學(xué)研究、軍事技術(shù)、尤其在航天、航空偵察及高速數(shù)據(jù)記錄領(lǐng)域的應(yīng)用發(fā)展。
參考文獻(xiàn)
1 黃 進(jìn).基于SCSI實(shí)時高速數(shù)字視頻直接存儲技術(shù)的研究[D].長春:中科院長春光機(jī)所,2005
2 趙忠文,曾 巒.一種專用高速硬盤存儲設(shè)備的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2002;28(8):18~20
3 達(dá)選福,張伯珩,邊川平.高速CCD圖像數(shù)據(jù)存儲技術(shù)[J].光子學(xué)報,2003;32(11):1393~1395
4 欒志超,歐陽益民.用FPGA的直寫硬盤圖像記錄技術(shù)[J].光電工程,2003;30 (6):47~49
5 歐陽興華.計(jì)算機(jī)系統(tǒng)接口——SCSI [M].北京:電子工業(yè)出版社,1994
6 王忠寶,李變俠,曹劍中.SCSI處理器FAS466的通用軟件解決方案及應(yīng)用[J]. 國外電子元器件,2005;27(9):26~29