0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用光纖通道協(xié)議和異步FIFO實(shí)現(xiàn)FC-AL通信彈性緩存的設(shè)計(jì)

電子設(shè)計(jì) ? 來源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 ? 作者:何曉蓉,周東 ? 2020-05-13 08:01 ? 次閱讀

引 言

一個(gè)簡化的異步數(shù)據(jù)通信系統(tǒng)如圖1所示。接收機(jī)端從接收到的來自串行鏈路的比特流中提取時(shí)鐘信號Clk1,作為其工作時(shí)鐘源;而發(fā)送機(jī)端采用本地晶振和鎖相環(huán)產(chǎn)生的時(shí)鐘Clk2,作為其工作時(shí)鐘源。接收機(jī)在時(shí)鐘Clk1的上升沿把數(shù)據(jù)寫入彈性緩存,發(fā)送機(jī)在時(shí)鐘Clk2的上升沿從彈性緩存中讀出數(shù)據(jù),從而實(shí)現(xiàn)數(shù)據(jù)的同步。

利用光纖通道協(xié)議和異步FIFO實(shí)現(xiàn)FC-AL通信彈性緩存的設(shè)計(jì)

雖然光纖通道仲裁環(huán)中的所有通信設(shè)備必須工作在同一頻率,但圖1中兩個(gè)不同源的時(shí)鐘信號Clk1和Clk2除了在相位上可能存在差異外,由于制造工藝的因素,晶振產(chǎn)生時(shí)鐘時(shí)其頻率也是被允許有一定誤差存在的。這個(gè)誤差范圍為±100×10-6,即在每一百萬個(gè)理想時(shí)鐘周期的時(shí)間內(nèi)容許±100個(gè)時(shí)鐘周期的偏差。兩個(gè)不同的晶振產(chǎn)生同一頻率的時(shí)鐘時(shí),它們之間可能存在的誤差最大為200×10-6。所以,對于由不同晶振產(chǎn)生的同一頻率的2個(gè)時(shí)鐘,除了相位上的不同外,在最壞情況下,經(jīng)過106/200=5 000個(gè)周期后,它們之間將出現(xiàn)一個(gè)時(shí)鐘周期的偏移。對于連續(xù)的數(shù)據(jù)流,由于用于時(shí)鐘同步的彈性緩存的大小有限,如果不能正確處理這個(gè)時(shí)鐘周期的偏移,將會導(dǎo)致緩存溢出,損壞有效數(shù)據(jù),嚴(yán)重影響系統(tǒng)的性能。

1、 FC-AL彈性緩存管理的基本原理

FC-AL通信系統(tǒng)中,也采用彈性緩存來解決數(shù)據(jù)在不同時(shí)鐘域的同步問題,并通過對彈性緩存的管理適時(shí)地向緩存中添加或刪除填充字,以控制緩存中有效傳輸字的數(shù)量(本設(shè)計(jì)中彈性緩存的存儲單位為字),從而達(dá)到對時(shí)鐘傾斜的補(bǔ)償。填充字是FC-AL協(xié)議中定義的一類特殊的傳輸字,它們在幀與幀的間隙,且在幀界定符之外被傳輸。所以,彈性緩存的管理對這些特殊傳輸字進(jìn)行的適當(dāng)?shù)奶砑踊騽h除操作,不會損壞數(shù)據(jù)幀或影響環(huán)網(wǎng)的正常運(yùn)作。何時(shí)對彈性緩存添加或刪除填充字,是由緩存的占用率來決定的。彈性緩存空間的使用狀態(tài)分為4個(gè)等級:添加填充字等待、保持狀態(tài)、低級別的刪除填充字等待以及高級別的刪除填充字等待。當(dāng)彈性緩存的寫時(shí)鐘慢于讀時(shí)鐘時(shí)(如圖1中Clk1的頻率略低于Clk2的頻率),緩存可能被讀空而出現(xiàn)誤讀,此時(shí)需要添加填充字,相當(dāng)于增加緩存中可讀的數(shù)據(jù)量,防止緩存出現(xiàn)下溢;當(dāng)彈性緩存的寫時(shí)鐘快于讀時(shí)鐘時(shí)(如圖1中Clk1的頻率略高Clk2的頻率),緩存可能出現(xiàn)被寫滿導(dǎo)致錯(cuò)誤的數(shù)據(jù)覆蓋,此時(shí)需要刪除填充字,以增加緩存中的可用空間防止緩存出現(xiàn)上溢。

彈性緩存管理的基本原理如圖2所示。假設(shè)彈性緩存的深度為4,圖中被標(biāo)識為0或1的每一個(gè)小格代表彈性緩存的一個(gè)存儲空間。置1,表示相應(yīng)的存儲空間已被寫入有效數(shù)據(jù),且未被讀出;置0,表示相應(yīng)的存儲空間未被寫入,或?qū)懭氲臄?shù)據(jù)已被讀出。

由于對于緩存的讀操作必須是在有數(shù)據(jù)已寫入緩存后才能開始,假設(shè)當(dāng)緩存中有2個(gè)空間被寫入時(shí)才開始讀操作。所以,對于隨后的彈性緩存管理,當(dāng)緩存中剛好有2個(gè)空間被占用時(shí),其處于保持狀態(tài),執(zhí)行正常的讀寫操作;當(dāng)緩存中超過2個(gè)的空間被占用時(shí),其處于刪除填充字等待的狀態(tài),說明寫時(shí)鐘的頻率高于讀時(shí)鐘的頻率,需要進(jìn)行刪除填充字的操作;當(dāng)緩存中少于2個(gè)空間被占用,其處于添加填充字等待狀態(tài),說明寫時(shí)鐘的頻率低于讀時(shí)鐘的頻率,需要進(jìn)行添加填充字的操作。

2、硬件電路設(shè)計(jì)

用異步FIFO實(shí)現(xiàn)彈性緩存的關(guān)鍵是監(jiān)測緩存空間的占用率,以此來判斷讀寫時(shí)鐘可能存在的微小差異,預(yù)見彈性緩存可能出現(xiàn)讀空還是寫滿,并決定在何時(shí)進(jìn)行填充字的添加或刪除操作,以及何種等級的刪除操作,并保證在添加或刪除操作之后不對其后的數(shù)據(jù)讀寫產(chǎn)生任何影響。需要注意的是,這里的添加或刪除填充字的操作都必須在讀時(shí)鐘域進(jìn)行。

在異步數(shù)據(jù)通信系統(tǒng)中,使用彈性緩存實(shí)現(xiàn)數(shù)據(jù)在多時(shí)鐘域之間的同步存在兩個(gè)問題——數(shù)據(jù)延時(shí)和緩存大小。數(shù)據(jù)延時(shí)指的是,數(shù)據(jù)從被寫入緩存到從緩存中讀出的時(shí)間差。假設(shè)彈性緩存的大小為N,在不出現(xiàn)數(shù)據(jù)覆蓋的前提下,當(dāng)前數(shù)據(jù)被寫入緩存的第N個(gè)存儲空間,而此時(shí)緩存中還有N-1個(gè)空間中的數(shù)據(jù)還未被讀出,至少在讀時(shí)鐘域看來是這樣的,那么當(dāng)前被寫入的數(shù)據(jù)需要至少N-1個(gè)讀時(shí)鐘周期的延時(shí)后才能被讀出。由此可見,緩存空間越大,經(jīng)過緩存的數(shù)據(jù)的延時(shí)可能越大。但是,為了防止緩存將滿或?qū)⒖斩砑踊騽h除填充字的操作不能得到及時(shí)的執(zhí)行而致使緩存溢出,須設(shè)置較大的緩存空間,給緩存管理提供較充足的時(shí)間范圍,從而減小了緩存出現(xiàn)溢出的可能性。

為了獲得盡可能小的數(shù)據(jù)延時(shí),同時(shí)不對數(shù)據(jù)的正常傳輸產(chǎn)生影響,在緩存大小滿足系統(tǒng)基本要求的情況下,如何更精確地判斷彈性緩存空間的占用率就變得很重要了。為了提高緩存管理的精度,本文中所采取的彈性緩存的設(shè)計(jì)方法如圖3所示。在寫時(shí)鐘的上升沿將數(shù)據(jù)寫入到基于寫時(shí)鐘上升沿的寫地址產(chǎn)生邏輯的輸出,即寫指針?biāo)赶虻膹椥跃彺婵臻g;在讀時(shí)鐘的上升沿將基于讀時(shí)鐘上升沿的讀地址產(chǎn)生邏輯的輸出,即讀指針?biāo)赶虻膹椥跃彺婵臻g的數(shù)據(jù)讀出。此外,還各設(shè)置了一個(gè)基于時(shí)鐘下降沿的讀和寫地址產(chǎn)生邏輯,但它們不對彈性緩存的讀寫操作產(chǎn)生影響。分別對基于讀時(shí)鐘上升沿的讀地址和經(jīng)過延時(shí)后的基于寫時(shí)鐘上升沿的寫地址,以及基于讀時(shí)鐘下降沿的讀地址和經(jīng)過延時(shí)后的基于寫時(shí)鐘下降沿的寫地址進(jìn)行異步比較。綜合兩個(gè)比較結(jié)果,判斷因同頻但不同源的讀寫時(shí)鐘之間可能存在的差異而導(dǎo)致的彈性緩存空間占用率的變化。判斷得到的異步信號通過一個(gè)同步邏輯被同步到讀時(shí)鐘域,控制基于讀時(shí)鐘上升沿的讀地址產(chǎn)生邏輯的輸出,從而實(shí)現(xiàn)對彈性緩存中填充字的添加或刪除,達(dá)到預(yù)防緩存出現(xiàn)溢出的目的。

3、仿真結(jié)果分析

Verilog語言實(shí)現(xiàn)圖3所示電路的RTL描述,并對其用ModelSim進(jìn)行仿真,仿真結(jié)果如圖4和圖5所示。兩圖中,CLK_rcv和CLK_local分別為頻率非常相近的緩存的寫時(shí)鐘和讀時(shí)鐘。

圖4中,CLK_rcv的時(shí)鐘頻率略低于CLK_local的時(shí)鐘頻率,彈性緩存有被讀空的可能。當(dāng)CLK_local比CLK_rcv多出半個(gè)時(shí)鐘周期左右后,緩存管理就發(fā)出添加填充字的請求,以在最近的幀間隙進(jìn)行添加操作。

圖5中,CLK_rcv的時(shí)鐘頻率略高于CLK_local的時(shí)鐘頻率,彈性緩存有被寫滿的可能。當(dāng)CLK_local比CLK_rcv少了半個(gè)時(shí)鐘周期左右后就發(fā)出較低級別的刪除填充字的請求,以在最近的間隙進(jìn)行刪除操作。若低級別的刪除操作未被及時(shí)執(zhí)行,致使緩存空間占用率進(jìn)一步提高,則請求較高級別的刪除操作。

從圖4和圖5中可以看出,添加填充字,即在當(dāng)前時(shí)鐘周期不讀緩存空間的數(shù)據(jù),而是發(fā)送一個(gè)當(dāng)前填充字;刪除填充字,即在條件滿足的情況下跳過當(dāng)前讀地址空間,直接讀取下一個(gè)地址空間中的數(shù)據(jù)。

4、結(jié) 語

本文提出的彈性緩存設(shè)計(jì)方法,充分利用了光纖通道協(xié)議的特性,通過提高對彈性緩存的管理精度,減小了數(shù)據(jù)在彈性緩存中可能的最大延時(shí),有利于提高仲裁環(huán)網(wǎng)的整體性能。

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 光纖
    +關(guān)注

    關(guān)注

    19

    文章

    3804

    瀏覽量

    72741
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    5927

    瀏覽量

    135713
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    385

    瀏覽量

    43466
收藏 人收藏

    評論

    相關(guān)推薦

    基于FPGA的異步FIFO實(shí)現(xiàn)

    大家好,又到了每日學(xué)習(xí)的時(shí)間了,今天我們來聊一聊基于FPGA的異步FIFO實(shí)現(xiàn)。 一、FIFO簡介 FIFO是英文First In Fir
    的頭像 發(fā)表于 06-21 11:15 ?6436次閱讀
    基于FPGA的<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的<b class='flag-5'>實(shí)現(xiàn)</b>

    FC(Fibre Channel光纖通道)仿真測試(通訊)卡

    美國AIT公司的FC(Fibre Channel光纖通道)仿真測試卡,支持XMC、PXI express、PCI、PCI-X、PCI express等多種總線平臺。 FC(Fibre
    發(fā)表于 02-18 10:13

    基于FC-AL系統(tǒng)中FPGA的彈性緩存方案設(shè)計(jì)

    采用本地晶振和鎖相環(huán)產(chǎn)生的時(shí)鐘Clk2,作為其工作時(shí)鐘源。接收機(jī)在時(shí)鐘Clk1的上升沿把數(shù)據(jù)寫入彈性緩存,發(fā)送機(jī)在時(shí)鐘Clk2的上升沿從彈性緩存中讀出數(shù)據(jù),從而
    發(fā)表于 07-05 08:23

    如何利用FC-AL系統(tǒng)設(shè)計(jì)FPGA的彈性緩存

    如何利用FC-AL系統(tǒng)設(shè)計(jì)FPGA的彈性緩存?需要注意哪些事項(xiàng)?
    發(fā)表于 08-05 08:07

    什么是光纖通道Fibre Channel

    127個(gè)節(jié)點(diǎn),但是實(shí)際上更接近20。FC-AL目前大多數(shù)都是用于特殊用途,包括但不限于內(nèi)部磁盤陣列通信,以及高端服務(wù)器的內(nèi)部存儲?! ?b class='flag-5'>FC交換機(jī)可以按照你喜歡的任意方式進(jìn)行連接,因?yàn)?b class='flag-5'>光纖
    發(fā)表于 07-14 17:27

    光纖通道FC存儲交換機(jī)的常見問題有哪些

    :FibreChannelArbitratedLoop(FC-AL)和Fabric。我們常說的的FibreChannelHub和LoopSwitch使用FC-AL協(xié)議,而FabricSwitch使用
    發(fā)表于 07-14 17:29

    怎么利用異步FIFO和PLL結(jié)構(gòu)來實(shí)現(xiàn)高速緩存?

    結(jié)合高速嵌入式數(shù)據(jù)采集系統(tǒng),提出一種基于CvcloneⅢ FPGA實(shí)現(xiàn)異步FIFO和鎖相環(huán)(PLL)結(jié)構(gòu)來實(shí)現(xiàn)高速緩存,該結(jié)構(gòu)可成倍提高數(shù)
    發(fā)表于 04-30 06:19

    高速異步FIFO的設(shè)計(jì)與實(shí)現(xiàn)

    本文主要研究了用FPGA 芯片內(nèi)部的EBRSRAM 來實(shí)現(xiàn)異步FIFO 設(shè)計(jì)方案,重點(diǎn)闡述了異步FIFO 的標(biāo)志信號——空/滿狀態(tài)的設(shè)計(jì)思路
    發(fā)表于 01-13 17:11 ?40次下載

    FC-AL系統(tǒng)中FPGA的彈性緩存設(shè)計(jì)

    FC-AL系統(tǒng)中FPGA的彈性緩存設(shè)計(jì) 引? 言一個(gè)簡化的異步數(shù)據(jù)通信系統(tǒng)如圖1所示。接收機(jī)端從接收到的來自串行鏈路的比特流中提取時(shí)鐘信號
    發(fā)表于 02-06 08:58 ?582次閱讀
    <b class='flag-5'>FC-AL</b>系統(tǒng)中FPGA的<b class='flag-5'>彈性</b><b class='flag-5'>緩存</b>設(shè)計(jì)

    異步FIFO在FPGA與DSP通信中的運(yùn)用

    文中給出了異步FIFO實(shí)現(xiàn)代碼和FPGA與DSP的硬件連接電路。經(jīng)驗(yàn)證,利用異步FIFO的方法
    發(fā)表于 12-12 14:28 ?51次下載
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>在FPGA與DSP<b class='flag-5'>通信</b>中的運(yùn)用

    異步FIFO在FPGA與DSP通信中的應(yīng)用解析

    摘要 利用異步FIFO實(shí)現(xiàn)FPGA與DSP進(jìn)行數(shù)據(jù)通信的方案。FPGA在寫時(shí)鐘的控制下將數(shù)據(jù)寫入FIFO
    發(fā)表于 10-30 11:48 ?2次下載
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>在FPGA與DSP<b class='flag-5'>通信</b>中的應(yīng)用解析

    Emulex引導(dǎo)的光纖通道和NVMe FC協(xié)議用戶指南 14.2版

    電子發(fā)燒友網(wǎng)站提供《Emulex引導(dǎo)的光纖通道和NVMe FC協(xié)議用戶指南 14.2版.pdf》資料免費(fèi)下載
    發(fā)表于 08-18 09:38 ?0次下載
    Emulex引導(dǎo)的<b class='flag-5'>光纖</b><b class='flag-5'>通道</b>和NVMe <b class='flag-5'>FC</b><b class='flag-5'>協(xié)議</b>用戶指南 14.2版

    利用光纖通道釋放NVMe的威力

    電子發(fā)燒友網(wǎng)站提供《利用光纖通道釋放NVMe的威力.pdf》資料免費(fèi)下載
    發(fā)表于 08-29 15:04 ?0次下載
    <b class='flag-5'>利用光纖</b><b class='flag-5'>通道</b>釋放NVMe的威力

    基于循環(huán)隊(duì)列的FIFO緩存實(shí)現(xiàn)

    FIFO緩存是介于兩個(gè)子系統(tǒng)之間的彈性存儲器,其概念圖如圖1所示。它有兩個(gè)控制信號,wr和rd,用于讀操作和寫操作。當(dāng)wr被插入時(shí),輸入的數(shù)據(jù)被寫入緩存,此時(shí)讀操作被忽視。
    的頭像 發(fā)表于 09-11 10:12 ?738次閱讀
    基于循環(huán)隊(duì)列的<b class='flag-5'>FIFO</b><b class='flag-5'>緩存</b><b class='flag-5'>實(shí)現(xiàn)</b>

    光纖通信利用光纖來傳送什么信號

    光纖通信是一種基于光傳輸?shù)?b class='flag-5'>通信技術(shù),利用光纖來傳輸不同類型的信號,包括音頻、視頻、數(shù)據(jù)和互聯(lián)網(wǎng)通信等。 光纖通信的原理是通過將光信號轉(zhuǎn)換為
    的頭像 發(fā)表于 04-03 17:54 ?1320次閱讀