
高速數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)的關(guān)鍵是主機(jī)接口卡的設(shè)計(jì)與實(shí)現(xiàn)。傳統(tǒng)的做法是采用分立元件,由若干個(gè)模塊構(gòu)成。大多數(shù)的設(shè)計(jì)都類似于如下結(jié)構(gòu)[1]:接口的主要功能模塊包括光電信號(hào)轉(zhuǎn)換接口(O/E和E/O)、串行化和解串行化模塊(TX和RX)、數(shù)據(jù)緩存F I F O 、c PCI 控制器和可編程邏輯模塊(FPGA或CPLD)或DSP。各模塊中O/E和E/O 實(shí)現(xiàn)光纖通道串行光信號(hào)和串行電信號(hào)之間的相互轉(zhuǎn)換。TX和RX 實(shí)現(xiàn)將串行電信號(hào)和并行電信號(hào)的相互轉(zhuǎn)換功能。F I F O 主要實(shí)現(xiàn)光纖通道和cPCI 之間信號(hào)的緩沖。cPCI 控制器實(shí)現(xiàn)FIFO 輸出的信號(hào)與32 位標(biāo)準(zhǔn)cPCI 信號(hào)的轉(zhuǎn)換。FPGA或CPLD 負(fù)責(zé)各模塊之間的時(shí)序協(xié)調(diào)和傳輸控制。分析以上方案可見,各模塊功能都是由分立芯片完成的。這樣各芯片間的互連勢必會(huì)影響傳輸速率,也將使PCB板的布局布線變得復(fù)雜,使傳輸延時(shí)增大,進(jìn)一步降低傳輸速率。而隨著FPGA(Field Programmable Gate Array)技術(shù)的不斷發(fā)展,其容量、功能、可靠性以及響應(yīng)速度都在不斷的提高。用一片F(xiàn)PGA完全可以實(shí)現(xiàn)計(jì)算機(jī)與光纖通道之間的數(shù)據(jù)傳輸與處理。鑒于此,本論文的設(shè)計(jì)將用一片F(xiàn)PGA來實(shí)現(xiàn)串行信號(hào)與并行信號(hào)的相互轉(zhuǎn)換、數(shù)據(jù)緩沖以及時(shí)序協(xié)調(diào)和傳輸控制等以前用分立元件實(shí)現(xiàn)的功能。
籠統(tǒng)來說,本設(shè)計(jì)主要是要完成主機(jī)接口的實(shí)現(xiàn)。主機(jī)接口是實(shí)現(xiàn)高速數(shù)據(jù)傳輸和數(shù)據(jù)存儲(chǔ)的一個(gè)關(guān)鍵環(huán)節(jié)。主要完成高速數(shù)據(jù)流的信號(hào)轉(zhuǎn)換,實(shí)現(xiàn)數(shù)據(jù)在主機(jī)上的存儲(chǔ),同時(shí)減少CPU對(duì)存儲(chǔ)過程的干預(yù)。CompactPCI簡稱cPCI,是國際PICMG協(xié)會(huì)于1994年提出來的一種總線接口標(biāo)準(zhǔn)。它的出現(xiàn)解決了多年來電信系統(tǒng)工程師與設(shè)備制造商面臨的棘手問題:將VME密集堅(jiān)固的封裝和大型設(shè)備的極佳冷卻效果以及PC廉價(jià)的易采用具有最新處理能力的芯片結(jié)合在一起,既保證99.999%的高可靠度,又降低硬件和軟件的開發(fā)成本。因此希望通過cPCI總線利用DMA方式完成數(shù)據(jù)的傳輸與存儲(chǔ)。由圖1知,接口的主要功能模塊包括電光(光電)信號(hào)轉(zhuǎn)換模塊、可編成邏輯模塊FPGA和cPCI總線接口模塊。接口各模塊中,O/E和E/O實(shí)現(xiàn)光信號(hào)與電信號(hào)的相互轉(zhuǎn)換。FPGA實(shí)現(xiàn)幾乎所有的信號(hào)處理工作,比如實(shí)現(xiàn)數(shù)據(jù)的串行、并行轉(zhuǎn)換與最終通過光纖進(jìn)行數(shù)據(jù)傳輸;實(shí)現(xiàn)FIFO功能進(jìn)行信號(hào)緩沖,在高速數(shù)據(jù)傳輸中緩存是很重要的,它協(xié)調(diào)了數(shù)據(jù)發(fā)送端和接收端之間的數(shù)據(jù)傳輸速度,防止由于數(shù)據(jù)流速度的波動(dòng)導(dǎo)致傳輸?shù)氖。粚?shí)現(xiàn)各模塊之間的時(shí)序協(xié)調(diào)和傳輸控制等。cPCI總線接口卡實(shí)現(xiàn)FPGA輸出的信號(hào)與32位標(biāo)準(zhǔn)cPCI信號(hào)的轉(zhuǎn)換,通過DMA方式實(shí)現(xiàn)cPCI總線到主機(jī)的數(shù)據(jù)存儲(chǔ)。主要的研究與設(shè)計(jì)重點(diǎn)在cPCI總線接口模塊、可編程邏輯模塊FPGA和光電轉(zhuǎn)換模塊。
接口卡的軟件設(shè)計(jì)主要包括兩個(gè)部分,一個(gè)是FPGA控制程序的編寫,一個(gè)是板卡驅(qū)動(dòng)程序的編寫。以下本文主要就接收端FPGA控制程序的編寫加以詳細(xì)論述。正如前面所述,F(xiàn)PGA主要完成時(shí)序協(xié)調(diào)和傳輸控制,以及數(shù)據(jù)流的串并轉(zhuǎn)換和緩存。整個(gè)系統(tǒng)的控制采用有限狀態(tài)機(jī)[3]。狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換以及各個(gè)狀態(tài)下信號(hào)的處理完全依據(jù)PCI9056的Local端到PCI端的DMA傳輸時(shí)序圖。
轉(zhuǎn)換流程分為3個(gè)狀態(tài):idle ,prel,dma_read。idle為空閑狀態(tài),上電復(fù)位后首先進(jìn)入此狀態(tài),在此期間總線無任何操作,只是不斷檢測ADS#信號(hào),一旦檢測到這個(gè)信號(hào)有效,就進(jìn)入下一個(gè)狀態(tài)。prel是一過渡狀態(tài)。根據(jù)PCI9056的DMA傳輸時(shí)序圖可知,每次一個(gè)新的總線接入有效(即ADS#有效)后的第一個(gè)數(shù)據(jù)會(huì)持續(xù)兩個(gè)時(shí)鐘周期(其后的數(shù)據(jù)持續(xù)一個(gè)時(shí)鐘周期),其中,第一個(gè)時(shí)鐘周期并不采集數(shù)據(jù),而只是使從設(shè)備準(zhǔn)備好信號(hào)(即READY#)有效,第二個(gè)時(shí)鐘周期才開始采集第一個(gè)數(shù)據(jù)。所以,此過渡狀態(tài)主要是使READY#信號(hào)在采集數(shù)據(jù)前一個(gè)周期有效。dma_read狀態(tài)期間執(zhí)行從局部總線到cPCI總線的DMA操作,在每次時(shí)鐘的上升沿采集數(shù)據(jù),直到突發(fā)長度內(nèi)的最后一個(gè)數(shù)據(jù),BLAST#信號(hào)有效,下一個(gè)時(shí)鐘周期,狀態(tài)機(jī)又回到空閑狀態(tài),等待下一次傳輸?shù)拈_始。對(duì)數(shù)據(jù)的處理是按照數(shù)據(jù)的流向逐步完成的[4][5]。首先經(jīng)過OE轉(zhuǎn)換的串行數(shù)據(jù)進(jìn)入FPGA,經(jīng)由FPGA內(nèi)部的串行高速收發(fā)通道完成解碼及第一步的串并轉(zhuǎn)換,這時(shí)由1bit串行數(shù)據(jù)變?yōu)?bits并行數(shù)據(jù);其次由于cPCI局部總線數(shù)據(jù)線寬度為32位,所以第二步的串并轉(zhuǎn)換要完成8bits數(shù)據(jù)到32bits數(shù)據(jù)的轉(zhuǎn)換。其過程是,用4個(gè)8bits的D觸發(fā)器來連續(xù)鎖存輸入的8bits的數(shù)據(jù),再用一個(gè)32bits的D觸發(fā)器來同時(shí)鎖存4個(gè)8bits的數(shù)據(jù)以形成32bits寬的數(shù)據(jù)輸出;最后為了對(duì)數(shù)據(jù)進(jìn)行緩沖,完成數(shù)據(jù)速率的轉(zhuǎn)換,將數(shù)據(jù)存入一32位寬異步FIFO。該異步FIFO的寫時(shí)鐘是從串行數(shù)據(jù)提取出的隨路時(shí)鐘,讀時(shí)鐘是與總線控制器PCI9056的局部時(shí)鐘同頻的由板上提供的外部66M時(shí)鐘。
CIO頻道人物視窗
CIO頻道方案案例庫
大數(shù)據(jù)建設(shè)方案案例庫
電子政務(wù)建設(shè)方案案例庫
互聯(lián)集成系統(tǒng)構(gòu)建方案案例庫
商務(wù)智能建設(shè)方案案例庫
系統(tǒng)集成類軟件信息研發(fā)企業(yè)名錄