光纖通道(FC)是一個高性能的雙向點對點串行數(shù)據(jù)通道。光纖通道的標準是由T11標準委員會(美國國家信息技術(shù)標準化委員會下屬的技術(shù)委員會)制定的,它是一個為適應(yīng)日益增長的高性能信息傳輸要求而設(shè)計的計算機通訊協(xié)議。FC集中了IO通道和網(wǎng)絡(luò)的優(yōu)點,它既支持IO通道所要求的帶寬與可靠性,又支持網(wǎng)絡(luò)技術(shù)的靈活性與連接能力,使得在同一物理接口上運行當今流行的通道標準和網(wǎng)絡(luò)協(xié)議成為可能。目前,F(xiàn)C已被作為未來航空電子統(tǒng)一網(wǎng)絡(luò)的一種主要聯(lián)網(wǎng)標準。本文討論了一種采用片上系統(tǒng)(SOC)技術(shù)來設(shè)計FC協(xié)議芯片的方案,分析了SOC設(shè)計方法的特點及其與傳統(tǒng)的嵌入式系統(tǒng)設(shè)計方法的不同點,為今后在航電系統(tǒng)的設(shè)計中推廣使用SOC技術(shù)奠定了基礎(chǔ)。
FC工作原理簡介
光纖通道所支持的物理介質(zhì)包括光纖、雙絞線、同軸電纜等,本文統(tǒng)稱其為光纖。物理上,F(xiàn)C可被看成是稱為N端口的多個通信點的連接,這些N端口可以通過交換網(wǎng)進行連接,且通過集線器構(gòu)成仲裁環(huán)路,也可以通過點對點的鏈路進行連接。如圖1所示,F(xiàn)C協(xié)議可以分成一系列的功能層次,各功能層次簡述如下。
圖1 FC的層次結(jié)構(gòu)圖
FC-0層
FC-0定義了接口和介質(zhì)的物理特性,規(guī)定了收發(fā)器和各種物理媒介的光電參數(shù)。按照實現(xiàn)器件的不同,F(xiàn)C可具有不同的數(shù)據(jù)傳輸率:133Mbit/s,266Mbit/s,530Mbit/s,1.0625Gbit/s等。
FC-1層
FC-1定義了編解碼和傳輸協(xié)議,它采用直流平衡8b/10b碼。一個8位字節(jié)編碼為10位進行傳輸,然后在接收端再進行解碼。一部分具有特殊特性的沒有使用的編碼點被用來組成特殊字符,以形成信令和幀描述的有序集。
FC-2層
FC-2層是信號傳輸協(xié)議層。它規(guī)定了數(shù)據(jù)傳輸?shù)囊?guī)則,提供了數(shù)據(jù)塊從一個端口傳輸?shù)较乱粋€端口的傳輸機制,定義了可由FC-4使用的功能和設(shè)備,F(xiàn)C-4可以只采用其中的一個子集。這一層描述了如下概念:
(1)節(jié)點和N端口及相應(yīng)的標識符;
(2)通訊模型;
(3)拓撲結(jié)構(gòu);
(4)服務(wù)類;
(5)通用交換網(wǎng)模型;
(6)FC-2的構(gòu)造塊及體系結(jié)構(gòu);
(7)幀格式;
(8)序列;
(9)交換。
FC-3層
FC-3層為一些高級特性提供了所需要的通用服務(wù),例如:
(1)分類:并行使用若干個N端口來增加帶寬,以便通過多重連接傳輸一個單一信息。
(2)查詢組:使數(shù)量多于一個的端口能響應(yīng)相同的別名地址。這一服務(wù)通過減少接觸到忙N端口的機會來提高效率。
(3)多播:將一個傳輸發(fā)送到多個目標端口,包括發(fā)送到一個交換網(wǎng)上的所有N端口(廣播),或只發(fā)送到交換網(wǎng)上某些N端口。
FC-4層
FC-4層是FC協(xié)議的最高層,它規(guī)定了上層協(xié)議到FC協(xié)議的映射。當前映射的協(xié)議有:小型計算機系統(tǒng)接口(SCSI)、智能外設(shè)接口3(IPI-3)、高性能并行接口(HIPPI)、INTERNET協(xié)議(IP)、IEEE802.2、單字節(jié)命令碼集映射(SBCCS)。另外,F(xiàn)C-AE還描述了一個基于1553B的上層協(xié)議映射。
FC-PH的物理模型
FC通路在物理上至少由2個節(jié)點組成。每個節(jié)點可以由多個N端口組成,每個N端口提供FC-0、FC-1、FC-2的功能。FC-3是可選的,它為多個N端口和FC-4提供通用服務(wù)。FC節(jié)點的組成如圖2所示。
圖2FC節(jié)點的組成
每個端口由一對光纖組成,一個用于輸入,一個用于輸出。這一對按相反方向傳輸?shù)墓饫w和收發(fā)器組成FC鏈路,完成數(shù)據(jù)傳輸。
FC-2層的幀格式
FC-2層的幀格式如圖3所示。
幀起始定界符SOF是一個有序集,4個8b字符,根據(jù)不同幀的類型有不同的碼字;幀頭,24個8b字符,詳見表1;數(shù)據(jù)字段,0–2112個8b字符;CRC,4個8b字符,它對幀頭部分和數(shù)據(jù)字段部分進行校驗,其編碼多項式是X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1;幀結(jié)束定界符EOF是一個有序集,4個8b字符,根據(jù)不同幀的類型有不同的碼字。
FC協(xié)議芯片的設(shè)計概述
功能概述
FC芯片的功能是實現(xiàn)圖1中的FC-PH,即FC-2、FC-1、FC-0層的協(xié)議;每個FC芯片支持2個N端口,可構(gòu)成如圖2所示的FC節(jié)點;支持的數(shù)據(jù)傳輸率為1.0625Gbits/s。
基于SoC的設(shè)計考慮
基于SoC的芯片設(shè)計和嵌入式模塊板的設(shè)計有相似之處,但不能把SoC設(shè)計簡單地理解為對嵌入式模塊板的小型化,它們的主要區(qū)別如下:
(1)嵌入式模塊板的設(shè)計是使用現(xiàn)有的CPU芯片和外設(shè)芯片來實現(xiàn)的,而SoC設(shè)計是由CPU內(nèi)核與各種功能模塊內(nèi)核實現(xiàn)的。
(2)由上文可知,嵌入式模塊板的設(shè)計是在已經(jīng)設(shè)定的規(guī)則框架中進行的,這些規(guī)則就是各種芯片的使用手冊,而SoC設(shè)計可以根據(jù)設(shè)計需求,自行設(shè)計規(guī)則,再設(shè)計各種功能模塊內(nèi)核,以滿足功能要求并使得資源利用最優(yōu)化。
(3)嵌入式模塊板的設(shè)計,由于受到CPU芯片引腳的限制,外設(shè)芯片大多掛在CPU的一條外部總線上,難免會有總線爭用,而SoC設(shè)計原則上芯片內(nèi)部可以并行工作的總線個數(shù)沒有限制,應(yīng)充分利用這個特性,合理確定體系結(jié)構(gòu),避免總線爭用。
(4)嵌入式模塊板的設(shè)計,其軟硬件的設(shè)計都有固定的模式,而SOC設(shè)計先要根據(jù)設(shè)計需求,確定軟硬件的交會點,確定軟硬件協(xié)同的規(guī)則,才能達到資源利用最優(yōu)化的目的。
首先,要確定軟硬件的交會點。軟硬件的交會點放在FC-2層的“序列”上。因為“序列”負責(zé)整塊數(shù)據(jù)的收或發(fā),當數(shù)據(jù)塊的長度超過圖3所示的數(shù)據(jù)長度時,要分為若干個相關(guān)的數(shù)據(jù)幀來傳輸。數(shù)據(jù)幀的相關(guān)性表現(xiàn)在如表1所示的幀頭中,只有序列計數(shù)字段SEQ_CNT發(fā)生改變。因此,軟件將負責(zé)提供幀頭的部分信息和數(shù)據(jù),由硬件負責(zé)數(shù)據(jù)成幀和以后的工作。其次,在設(shè)計芯片的體系結(jié)構(gòu)時,要充分使用芯片內(nèi)部的并行工作的總線。最后,為便于本芯片的測試,對上層接口ULP,先考慮使用PCI總線,以便實現(xiàn)基于PCI接口的FC網(wǎng)卡。根據(jù)今后實際使用需求,ULP將按需設(shè)計。
芯片的結(jié)構(gòu)
根據(jù)3.2節(jié)的討論,F(xiàn)C協(xié)議芯片的結(jié)構(gòu)框圖如圖4所示。FC協(xié)議芯片對上層的接口(ULP)采用PCI接口,由芯片內(nèi)置的PCI-TARGET內(nèi)核實現(xiàn)。
圖4 FC協(xié)議芯片的結(jié)構(gòu)框圖
圖4中虛線方框部分構(gòu)成了FC的N端口,整個芯片中有2個N端口。每個FC-N端口由“FC收發(fā)通道”和“FC幀收發(fā)控制器”2層構(gòu)成。“FC收發(fā)通道”與光電接口模塊配合可實現(xiàn)FC-0層、FC-1層和FC-2層中數(shù)據(jù)幀收發(fā)的功能。該層為上層接口提供用于數(shù)據(jù)幀收發(fā)的片內(nèi)FIFO通道。“FC幀收發(fā)控制器”實現(xiàn)FC-2層的數(shù)據(jù)幀打包、開包和檢錯。另外,通過芯片內(nèi)嵌的軟件模塊實現(xiàn)FC-2層的序列和交換協(xié)議;同時提供ULP接口。下文對FC通道、幀收發(fā)控制器、CPU內(nèi)核及ULP 接口作分別討論。
FC收發(fā)通道模塊的設(shè)計
功能概述
該模塊主要完成FC-2層幀的收發(fā),包括:完成SERDES(串-并互相轉(zhuǎn)換模塊)與光電接口的連接、完成FC-1層的8b/10b編解碼、FC-2層幀級的CRC校驗和FC有序集碼的譯碼;同時利用內(nèi)置存儲器構(gòu)成FIFO與FC芯片后端模塊進行數(shù)據(jù)交換的緩沖區(qū)。
組成結(jié)構(gòu)
該模塊分為“FC發(fā)送通道”和“FC接收通道”,如圖5所示。在收發(fā)通道之間提供多種自環(huán)測試的通路(未在圖中標出)。
“FC發(fā)送通道”主要由以下單元組成:
(1)并-串轉(zhuǎn)化單元;
(2)發(fā)送時鐘鎖相環(huán);
(3)8b/10b編碼單元;
(4)CRC校驗生成單元;
(5)TX-FIFO發(fā)送控制單元;
(6)TX-FIFO數(shù)據(jù)輸入緩沖單元;
(7)自環(huán)控制單元。
“FC接收通道”主要由以下單元組成:
(1)串-并轉(zhuǎn)化單元;
(2)接收時鐘鎖相環(huán);
(3)時鐘恢復(fù)單元;
(4)同步檢測單元;
(5)有序集譯碼單元;
(6)8b/10b解碼單元;
(7)CRC校驗單元;
(8)RX-FIFO發(fā)送控制單元;
(9)RX-FIFO數(shù)據(jù)輸出緩沖單元;
(10)自環(huán)控制單元。
圖5FC通道結(jié)構(gòu)框圖
數(shù)據(jù)收發(fā)緩沖區(qū)的定義
數(shù)據(jù)緩沖區(qū)TX-FIFO、RX-FIFO的定義如表2所示:途中發(fā)送緩沖區(qū)是33位,低32位是發(fā)送的數(shù)據(jù),第32位用于表示當前碼字是否為有序集碼。接收緩沖區(qū)是36位,低32位是接收到的數(shù)據(jù),高位部分保存FC-2幀的CRC校驗結(jié)果、8b/10b碼的譯碼校驗等信息。
5.1 功能概述
FC芯片中有兩路“FC幀收發(fā)模塊及其數(shù)據(jù)緩沖器”,它們實現(xiàn)FC-2層協(xié)議中的幀打包、開包。它是整個系統(tǒng)的軟硬件交會點,是整個系統(tǒng)的核心,其關(guān)鍵在于制定相關(guān)的設(shè)計規(guī)則。
5.2 數(shù)據(jù)緩沖區(qū)的使用規(guī)則
根據(jù)多路總線并行工作的原則,設(shè)置四塊獨立的數(shù)據(jù)緩沖區(qū),采用雙口RAM,用于在CPU和幀收發(fā)器之間交換數(shù)據(jù)。收發(fā)數(shù)據(jù)緩沖區(qū)的使用規(guī)則如下:
(1)發(fā)送緩沖區(qū)TXBUF。根據(jù)圖3所示的FC-2幀格式,該緩沖區(qū)用于存放幀頭和有效數(shù)據(jù)。前24個字節(jié)是固定存放幀頭的幀頭區(qū),后面是有效數(shù)據(jù)區(qū)。發(fā)送時,模塊TXF-CTL從幀頭區(qū)取幀頭信息發(fā)送,根據(jù)寄存器中發(fā)送起始地址(TXOFFSET)和發(fā)送個數(shù)(TXCOUNT)的值從TXBUF中連續(xù)取數(shù)據(jù)發(fā)送。這里,只設(shè)置1個幀頭區(qū),是考慮到在“序列”中幀頭具有相關(guān)性,同時1個幀頭區(qū)不存在多個區(qū)域的切換,簡化了硬件實現(xiàn)。
(2)接收緩沖區(qū)RXBUF。該緩沖區(qū)采用循環(huán)隊列的方式,由模塊RXF-CTL順序?qū)懭霐?shù)據(jù),數(shù)據(jù)的存儲順序如圖3所示的FC-2幀格式。在完成1幀數(shù)據(jù)接收后,模塊RXF-CTL要在寄存器中表明當前幀在RXBUF中的接收起始地址(RXOFFSET)和接收到的個數(shù)(RXCOUNT)。CPU讀取寄存器RXCOUNT后,該寄存器自動清零。上述使用規(guī)則是整個系統(tǒng)進行SoC設(shè)計的要點。
工作過程
數(shù)據(jù)的發(fā)送過程發(fā)送:
(1)CMD_RESET。模塊TXF-CTL復(fù)位,進入空閑態(tài)。
(2)CMD_TEST:由CPU直接控制數(shù)據(jù)的發(fā)送,模塊TXF-CTL進入空閑態(tài)。
(3)CMD_START_TX1:在空閑態(tài)并且CMD_TEST和CMD_START_TX2都無效時,進入按幀發(fā)送數(shù)據(jù)的狀態(tài),模塊TXF-CTL發(fā)出SENDING信號。模塊TXF-CTL先向FC發(fā)送通道的TX-FIFO發(fā)送有序集碼lDLE(K28.5D21.4D21.5D21.5);根據(jù)SOF碼型寄存器發(fā)送相應(yīng)的SOF;然后從TXBUF的幀頭區(qū)取數(shù)據(jù)依次發(fā)送;以后,如果數(shù)據(jù)從TXBUF取,則根據(jù)寄存器發(fā)送起始地址(TXOFFSET)和發(fā)送個數(shù)(TXCOUNT)從TXBUF中取出對應(yīng)的數(shù)據(jù)發(fā)送;發(fā)送完有效數(shù)據(jù)后,再根據(jù)EOF碼型寄存器發(fā)送相應(yīng)的EOF;最后再發(fā)一個有序集碼IDLE(K28.5D21.4D21.5D21.5)。一幀數(shù)據(jù)發(fā)完后,將SENDING信號清零,CMD_START_TX1清零,發(fā)中斷信號INTTXi,然后回到空閑態(tài)。發(fā)送過程只有CMD_RESET可以中斷。
(4)如果數(shù)據(jù)來在ULP-FIFO,則讀發(fā)送個數(shù)(TXCOUNT),從ULP-FIFO中取數(shù)發(fā)送,若發(fā)送個數(shù)(TXCOUNT)大于FC-2幀規(guī)定的長度,則按2112字節(jié)的長度分多幀發(fā)送,每幀完畢,自動修改幀頭中的幀記數(shù)值,并且自動選擇相應(yīng)的SOF和EOF定界符;若發(fā)送的過程中ULP-FIFO空,則自動結(jié)束這一幀的發(fā)送,并啟動超時定時器,等待ULP-FIFO中的數(shù)據(jù)。當發(fā)送個數(shù)(TXCOUNT)規(guī)定的數(shù)據(jù)發(fā)完后,或者超時,則將SENDING信號清零,CMD_START_TX1清零,發(fā)中斷信號INTTXi,然后回到空閑態(tài)。發(fā)送過程只有CMD_RESET可以中斷。
(5)CMD_START_TX2:在空閑態(tài)當CMD_START_TX2有效時,模塊TXF-CTL按有序
集碼寄存器和有序集碼參數(shù)寄存器的定義發(fā)送有序集碼。
數(shù)據(jù)的接收過程
數(shù)據(jù)的接收有兩種方式:由CPU直接控制;由RXF-CTL按FC-2幀格式接收數(shù)據(jù)。CPU可通過FC-2幀收發(fā)控制器的寄存器向模塊RXF-CTL發(fā)命令來控制數(shù)據(jù)發(fā)送:
(1)CMD_RESET。模塊TXF-CTL復(fù)位,進入空閑態(tài)。
(2)CMD_TEST:由CPU直接控制數(shù)據(jù)的接收。
(3)CMD_START_RXi:在空閑態(tài)并且CMD_TEST無效時,進入按幀接收數(shù)據(jù)的狀態(tài)。模塊RXF-CTL從FCSET-A的RX-FIFO中收到有序集碼SOF后,發(fā)出RECEIVE信號,表示已經(jīng)開始1幀數(shù)據(jù)的接收。模塊RXF-CTL將收到的數(shù)據(jù)依次寫入循環(huán)緩沖區(qū)RXBUF。再收到任一個有序集碼后,1幀數(shù)據(jù)接收結(jié)束,將RECEIVE信號清零。更新寄存器接收起始地址(RXOFFSET)和接收到的個數(shù)(RXCOUNT)。如果接收到的CRC碼無效或者最后一個有序集碼不是EOF,則將接收有錯(RXERR)置‘1’,否則發(fā)出INTRXi中斷信號,表示收到1幀正確的數(shù)據(jù)。繼續(xù)下一幀的數(shù)據(jù)的接收。在1幀數(shù)據(jù)接收的過程中,只有CMD_RESET可以中斷;如果尚未開始接收1幀數(shù)據(jù),則CMD_TEST可使其回到空閑態(tài)。CPU讀寄存器RXOFFSET、RXERR和RXCOUNT可知道接收到的數(shù)據(jù)存放的地址和個數(shù)以及數(shù)據(jù)幀是否有效。
另外CMD_START_Rxi還用來控制FC接收通道中的RX-FIFO控制器。CMD_START_Rx1控制FC接收通道按FC-2幀接收數(shù)據(jù)存入RX-FIFO;CMD_START_Rx2控制FC接收通道接收所有數(shù)據(jù)(除了連續(xù)的IDLE有序集碼之外)存入RXFIFO。
內(nèi)置CPU的配置及ULP的設(shè)計
內(nèi)置CPU通過嵌入的軟件完成FC-2層的序列和交換的協(xié)議,同時實現(xiàn)ULP與上層的通訊。
CPU外設(shè)的配置
CPU配置的外設(shè)和總線接口定義如下:
(1)兩個RS232串行口。
(3)兩個FC-2層通訊用的定時器:FCTIMER1,F(xiàn)C-TIMER2。
(4)接收兩路FC-2幀收發(fā)控制器中斷的PIO:INTFRAME-PIO。兩個接受來自RX-FIFO的有序集譯碼的PIO:ORDERSET-PIO1,ORDERSETPIO2。兩個內(nèi)總線接口,用于操作兩路FC-2幀收發(fā)控制器??筛鶕?jù)操作功能需要,對FC-2幀收發(fā)控制器的各寄存器進行定義。
(5)四個獨立的連接收發(fā)數(shù)據(jù)緩沖區(qū)的內(nèi)總線接口。
(6)三條獨立的存儲器總線接口:雙口RAM、程序存儲器和數(shù)據(jù)存儲器。
(7)與ULP交換數(shù)據(jù)的ULP-RXFIFO接口。
(8)與ULP握手的ULP-PIO接口。
ULP的數(shù)據(jù)通道
如圖4所示,F(xiàn)C芯片對ULP提供了兩種數(shù)據(jù)通道:雙口RAM和FIFO。雙口RAM通道:可根據(jù)ULP的需要劃分成若干分區(qū),ULP可通過PCI接口對它存取數(shù)據(jù)。FC芯片的內(nèi)置CPU從雙口RAM中讀數(shù)據(jù),放到TXBUF中,然后啟動“幀發(fā)送模塊”打包發(fā)送;接收數(shù)據(jù)時,CPU從RXBUF中讀取數(shù)據(jù),存到雙口RAM的相應(yīng)的數(shù)據(jù)分區(qū)中,通知ULP來取數(shù)據(jù)。這種數(shù)據(jù)通道對需要確認,出錯要重傳的消息比較有效。
FIFO通道:ULP將數(shù)據(jù)通過PCI接口寫到ULP-TXFIFO中,CPU設(shè)定“幀發(fā)送模塊”從ULP-TXFIFO中取數(shù)據(jù),“幀發(fā)送模塊”在數(shù)據(jù)打包時,從ULP-TXFIFO中取數(shù)據(jù);接收數(shù)據(jù)時,CPU從RXBUF中讀取數(shù)據(jù),存到ULP-RXFIFO。這種數(shù)據(jù)通道對視頻數(shù)據(jù)等實時性要求高的消息比較有效。
FC芯片嵌入軟件的基本操作函數(shù)
FC芯片的嵌入軟件要完成FC-2層的交換、序列、幀收發(fā)、差錯控制、流量控制等功能。它們需要調(diào)用的基本操作函數(shù)如表3所列。這些基本操作函數(shù)是與硬件平臺相關(guān)的函數(shù),在平臺上所作的其他函數(shù)將與硬件平臺無關(guān)。這樣,有利于軟硬件協(xié)同開發(fā),互相隔離錯誤。這是SOC設(shè)計的又一個重要原則。
結(jié)論
目前,高端的FPGA中已內(nèi)嵌了適應(yīng)高速傳輸?shù)氖瞻l(fā)器、鎖相環(huán)和大量的存儲器,本文討論的FC協(xié)議芯片可以在這類FPGA上實現(xiàn)原型樣機。光纖通道以其傳輸速度高、兼容性好等特點在未來的航空電子統(tǒng)一網(wǎng)絡(luò)中將得到廣泛的應(yīng)用,本文討論的FC協(xié)議芯片將為這一應(yīng)用奠定物質(zhì)基礎(chǔ)。本文以FC協(xié)議芯片的設(shè)計為例,介紹了基于SoC設(shè)計的思考重點和SoC設(shè)計的基本原則,它將有助于在航電系統(tǒng)的設(shè)計中推廣使用SoC技術(shù)。
責(zé)任編輯:gt
-
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420929 -
光纖
+關(guān)注
關(guān)注
19文章
3835瀏覽量
72874 -
soc
+關(guān)注
關(guān)注
38文章
4099瀏覽量
217775
發(fā)布評論請先 登錄
相關(guān)推薦
評論