《電子技術應用》
您所在的位置:首頁 > 可编程逻辑 > 设计应用 > FC-AL系统中FPGA的弹性缓存设计
FC-AL系统中FPGA的弹性缓存设计
摘要: 一个简化的异步数据通信系统如图1所示。接收机端从接收到的来自串行链路的比特流中提取时钟信号Clk1,作为其工作时钟源;而发送机端采用本地晶振和锁相环产生的时钟Clk2,作为其工作时钟源。接收机在时钟Clk1的上升沿把数据写入弹性缓存,发送机在时钟Clk2的上升沿从弹性缓存中读出数据,从而实现数据的同步。
關鍵詞: FPGA 弹性缓存 FC-AL
Abstract:
Key words :

引  言

      一個簡化的異步數據通信系統如圖1所示。接收機端從接收到的來自串行鏈路的比特流中提取時鐘信號Clk1,作為其工作時鐘源;而發送機端采用本地晶振和鎖相環產生的時鐘Clk2,作為其工作時鐘源。接收機在時鐘Clk1的上升沿把數據寫入彈性緩存,發送機在時鐘Clk2的上升沿從彈性緩存中讀出數據,從而實現數據的同步。 

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

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

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

彈性緩存管理的基本原理如圖2所示。假設彈性緩存的深度為4,圖中被標識為0或1的每一個小格代表彈性緩存的一個存儲空間。置1,表示相應的存儲空間已被寫入有效數據,且未被讀出;置0,表示相應的存儲空間未被寫入,或寫入的數據已被讀出。

 

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

2硬件電路設計

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

在異步數據通信系統中,使用彈性緩存實現數據在多時鐘域之間的同步存在兩個問題——數據延時和緩存大小。數據延時指的是,數據從被寫入緩存到從緩存中讀出的時間差。假設彈性緩存的大小為N,在不出現數據覆蓋的前提下,當前數據被寫入緩存的第N個存儲空間,而此時緩存中還有N-1個空間中的數據還未被讀出,至少在讀時鐘域看來是這樣的,那么當前被寫入的數據需要至少N-1個讀時鐘周期的延時后才能被讀出。由此可見,緩存空間越大,經過緩存的數據的延時可能越大。但是,為了防止緩存將滿或將空而添加或刪除填充字的操作不能得到及時的執行而致使緩存溢出,須設置較大的緩存空間,給緩存管理提供較充足的時間范圍,從而減小了緩存出現溢出的可能性。

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

3仿真結果分析

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

 

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

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

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

結  語

本文提出的彈性緩存設計方法,充分利用了光纖通道協議的特性,通過提高對彈性緩存的管理精度,減小了數據在彈性緩存中可能的最大延時,有利于提高仲裁環網的整體性能。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 97欧美精品一区二区三区| 一区二区免费在线视频| 久久久久高清| 国产精品免费成人| 久久亚洲欧美日韩精品专区| 亚洲欧美日韩精品久久久| 国产精品手机在线| 日韩有码在线视频| 欧美二区在线| 亚洲制服欧美久久| 国产精品欧美激情| 日韩精品视频一区二区在线观看| 国产精品成av人在线视午夜片 | 日本一区二区久久精品| 日韩视频―中文字幕| 日韩人妻无码精品久久久不卡| 国产精品久久久久久久天堂 | 日韩美女视频中文字幕| 亚洲精品在线免费| 91成人国产在线观看| 俺也去精品视频在线观看| 五月婷婷综合色| 国产成人中文字幕| 国产日韩一区二区在线观看| 国产伦精品一区二区三区视频免费 | 91精品国产乱码久久久久久久久 | 国产国产精品人在线视| 国产又粗又长又爽视频| 久久九九国产视频| 精品国产一区二区三区久久狼黑人| 国产午夜精品一区| 久久99久久久久久| 国产精品国产亚洲精品看不卡15 | 国产福利一区二区三区在线观看| 国产欧美一区二区三区视频| 国产三级中文字幕| 国产精品日韩欧美综合| 91精品在线看V| 无码日韩人妻精品久久蜜桃V| 日韩中文字幕一区| 日韩在线视频网站|