4.4
外部存儲器接口
EMIF
通信接口實現(xiàn)
DSP
主系統(tǒng)與光纖通信內(nèi)核之間的通信通過外部存儲器接口
EMIF
來實現(xiàn)。
EMIF
支持多種類型的異步接口,包括
SRAM,EPROM,FLASH,FPGA
和
ASIC
等。本課題中,
光纖通信內(nèi)核由
FPGA
來實現(xiàn),因為在
FPGA
和
DSP
主系統(tǒng)之間沒有時鐘存在,故為
異步類型。異步訪問的速度參數(shù)通過
CLKOUT
的時鐘周期個數(shù)來配置。
EMIF
最高配置
速度為
100 MHz
。可編程參數(shù)包括建立、選通、保持三個參數(shù)。在讀和寫訪問中,這三
個參數(shù)可以獨立配置。圖
4.9
為
EMIF
異步寫時序,其中建立、選通、保持三個參數(shù)分
別設置為
2,3,2
。寫訪問過程分為建立、選通、保持共三個階段。建立階段首先片選信號
CE
拉低,地址總線同步有效,數(shù)據(jù)總線最晚在一個時鐘周期之后開始有效;選通階段
寫使能信號
AWEn
拉低變?yōu)橛行?;保持階段一開始寫使能信號
AWEn
拉高失效,到保
持階段結束,地址總線和數(shù)據(jù)總線變?yōu)楦咦钁B(tài),片選信號拉高失效,一個完整的寫周期
結束
[17]
。
光纖通信內(nèi)核中發(fā)送和接收緩存區(qū)是通過
Quartus II
提供的宏模塊雙口
RAM
來實
現(xiàn)的。圖
4.10
所示為
FPGA
內(nèi)嵌的雙口
RAM
寫時序要求。
本課題中,將
EMIF
的地址總線低八位與雙口
RAM
的地址總線相連,將
EMIF
的
寫使能信號取非運算后與雙口
RAM
的寫使能相連,將雙口
RAM
的數(shù)據(jù)總線在地址區(qū)
間正確的時候與
EMIF
的數(shù)據(jù)總線聯(lián)通,其余時刻保持高阻。這樣就實現(xiàn)了由
FPGA
內(nèi)
嵌的
256*32
位即
1Kb
的緩存區(qū)。
4.5
高速串行通信的協(xié)議實現(xiàn)
4.5.1 高速串行通信模型
本課題高速光纖串行通信參考了開放式系統(tǒng)互聯(lián)模型
OSI
的
7
層體系架構,并且為
了最大程度的減小通信冗余降低通信延時,從而有效縮短伺服控制周期,提高控制特性,
采用了與
OSI
模型類似的三層體系架構,如圖
4.11
所示。在這三層體系架構模型中,
物理層
(FC-0)
規(guī)定了傳輸物理介質(zhì)、接收器和發(fā)送器及其接口、通信帶寬等物理特性。
傳輸層
(FC-1)
涉及用以限制編碼最大運行長度的
8B/10B
編解碼方案、維持直流平衡、
提供字節(jié)邊界對齊方案、傳輸數(shù)據(jù)幀格式及錯誤控制等。根據(jù)
8B/10B
編解碼方案,傳
輸字符分為兩大類:數(shù)據(jù)和特殊字符,詳細內(nèi)容將在后續(xù)章節(jié)介紹。應用層
(FC-2)
處于
高速串行通信模型的最高層,它決定了數(shù)據(jù)幀的含義解析、外設寄存器的定義及最高指
令的收發(fā)控制。
本課題高速串行通信模型中,傳輸介質(zhì)采用
62.5/125um MMF
光纜,
MMF
線纜需
交叉連接,即一端接發(fā)送端,另一端必須接接收端。激光收發(fā)器選取安捷倫公司的
HFBR53A3
完成電信號與光信號的轉(zhuǎn)換。
HFBR53A3
是一款多模光纖接口的光纖收發(fā)
器,兼容
ANSI X3.297-1996
標準的光纖通道物理接口,支持
300m
長的
62.5/125um MMF
光纜。串并轉(zhuǎn)換器采用
IEEE 802.3
千兆以太網(wǎng)收發(fā)器
TLK1221
,用于高速全雙工的點
對點數(shù)據(jù)傳輸,支持最大
1.3Gbps
的數(shù)據(jù)速率。
在發(fā)送端,經(jīng)過
8B/10B
編碼的并行
10
位數(shù)據(jù)在發(fā)送參考時鐘
TBC
的上升沿被鎖
存,然后將數(shù)據(jù)以參考時鐘的
10
倍頻將串行化并通過
PECL
兼容的電平差分信號進行
傳輸;在接收端,將隱藏在串行數(shù)據(jù)流中的時鐘信號提取出來。該時鐘信號是從發(fā)送端
的時鐘信號經(jīng)過相位內(nèi)插調(diào)整相位關系而來,與
10
位的恢復并行數(shù)據(jù)的字節(jié)邊界對齊,
因此被形象的稱為恢復字節(jié)時鐘
RBC
,如圖
4.12
所示。
4.5.1 時鐘恢復與接收字對齊
在串行數(shù)據(jù)傳輸中,接收端需恢復出正確的字邊界,以實現(xiàn)從串行數(shù)據(jù)流中的恢復
正確的字數(shù)據(jù)。故發(fā)送端在數(shù)據(jù)幀中添加特殊字符,并保證該字符與發(fā)送參考時鐘的相
位關系;接收端監(jiān)測該特殊字符,并調(diào)整接收端時鐘與特殊字符的相位關系,獲取隱藏
在串行數(shù)據(jù)流中的時鐘相位信息,此過程被稱為時鐘數(shù)據(jù)恢復(
CDR
)。通過時鐘數(shù)
據(jù)恢復技術對接受到的數(shù)據(jù)進行重定時(
Retiming
),以消除傳輸過程中積累的抖動,使
系統(tǒng)能夠和發(fā)送端同步工作。時鐘信號能被正確恢復,應具備以下條件:(
1
)恢復時鐘
頻率必須與數(shù)據(jù)傳輸速率相當,即圖
4.12
中
RBC
與
TBC
基于同一時鐘基準產(chǎn)生,需調(diào)
整的僅僅的兩者之間的相位,而頻率是一致的;(2)時鐘與數(shù)據(jù)必須有一個穩(wěn)定的相位
關系。對應措施是在數(shù)據(jù)發(fā)送端建立一個時鐘與數(shù)據(jù)的相位關系,使得時鐘對數(shù)據(jù)信號
進行最佳抽樣(即時鐘上升沿與每個比特的中點重合),從而為接收機提供最大的抖動
容忍;(3)時鐘的抖動必須很小。對應措施是采用精密晶振,且基準時鐘由
FPGA
的
PLL
單元產(chǎn)生,此外,在
FPGA
設計中對時鐘信號進行嚴格性能約束,時鐘約束方法見
參考文獻
[35]
。
目前主要有四種時鐘數(shù)據(jù)恢復方式,它們分別是基于
PLL
、基于
DLL
、基于過采樣
以及基于相位插值?;?
PLL
的
CDR
恢復時鐘精確度比較高,但系統(tǒng)穩(wěn)定性不佳,響
應時間,頻率捕獲時間等較大;基于
DLL
的
CDR
通過鑒頻鑒相器(
PD
)比較接收的
數(shù)據(jù)和輸入?yún)⒖紩r鐘的相位,其出恢復時鐘的積累抖動一般較小,但是調(diào)節(jié)能力有限,
不能處理小頻率的失配;基于過采樣的
CDR
采用判決算法對存儲下來的樣點值進行判
定,從中選出最佳采樣點,其性能取決與過采樣算法;基于相位插值拓撲結構的
CDR
通過鑒相器檢測本地時鐘和輸入數(shù)據(jù)的相位差,然后產(chǎn)生控制信號控制相位插值器獲得
相位正確的時鐘,能快速跟蹤輸入數(shù)據(jù)
[28-33]
。
本文采用由
SerDes
硬件完成的,基于相位插值拓撲結構的
CDR
,通過檢測同步字
符
K28.5
來調(diào)整
RBC
時鐘相位。串并轉(zhuǎn)換器
TLK1221
采用
IEEE 802.3
千兆以太網(wǎng)預定
義的
10
位
K28.5 字符作為字對齊的解決方案。在接收端,時刻監(jiān)測串行數(shù)據(jù)流并與某
個
7
位的同步數(shù)據(jù)流對比。根據(jù)
8B/10B
編碼方案,
K28.5
字符編碼后的結果為
0011 1110
10
,
7
個最高有效位
(0011 111)
與同步數(shù)據(jù)流相一致,因此
K28.5
字符被用來作為字邊界
重新對齊的特殊字符使用。當
K28.5
字符落在期望的字邊界上時,說明
10
位的字邊界
與恢復時鐘
RBC
正確對齊,不需要重新校正對齊;當
K28.5
字符橫跨在期望字邊界上
時,需要重新校正對齊字邊界。在收到
K28.5
字符后,通過重新調(diào)整恢復時鐘與字邊界
的相位關系,當前的數(shù)據(jù)被縮短或延長,數(shù)據(jù)出現(xiàn)損壞,但
K28.5
字符之后的數(shù)據(jù)又重
新對齊了字邊界
[19,31]
。圖
4.13
所示為字邊界重新對齊的波形,最壞的情形是
K28.5
與
RBC0
從原來的上升沿對齊變差到了下降沿對齊。
4.5.3 高速串行通信協(xié)議幀的格式及類型
本課題中,高速串行通信協(xié)議由
FPGA
通過編程實現(xiàn),隸屬于三層體系架構模型中
的傳輸層。數(shù)據(jù)的傳輸通過將數(shù)據(jù)封裝成幀來進行,幀就是按一定格式組織起來的數(shù)據(jù)。
高速串行通信協(xié)議共包括三種格式的幀,他們分別是數(shù)據(jù)幀、應答幀以及遠程幀。數(shù)據(jù)
幀將數(shù)據(jù)從發(fā)送器傳輸?shù)浇邮掌鳎粦饚墙邮辗皆谑盏揭粋€數(shù)據(jù)幀之后向發(fā)送方發(fā)出
的本次傳輸狀態(tài)的反饋信息;遠程幀由應用層發(fā)出,請求傳感與伺服控制系統(tǒng)發(fā)送相應
的數(shù)據(jù)幀。
1.
數(shù)據(jù)幀
數(shù)據(jù)幀傳輸格式如圖
4.14
所示,由數(shù)據(jù)幀開始標識符
SOF
、數(shù)據(jù)幀結束標識符
EOF
、
32
位的幀頭、
32
位的有效數(shù)據(jù)、字對齊字符
K28.5
及各自的校驗字符組成。其中
32
位
的有效數(shù)據(jù)可以通過幀頭的最高
8
位數(shù)據(jù)長度由
DSP
從
1
到
255
自由配置。對每個
32
位的有效數(shù)而言,傳輸總是以最低
8
位開始,最高
8
位結束。校驗字符由四個
8 位數(shù)據(jù)
相加得到,溢出位自動忽略,因此校驗字符長度也是
8
位。
其中,校驗字符
= Data[7:0]+Data[15:8]+Data[23:16]+Data[31:24]
;數(shù)據(jù)長度字節(jié)代
表該幀數(shù)據(jù)中
32
位的有效數(shù)據(jù)的數(shù)目,由于用
8
位表示其長度,故最大值為
255
;基地
址字節(jié)代表該幀數(shù)據(jù)在數(shù)據(jù)緩存區(qū)中存放的起始地址;有效數(shù)據(jù)塊之間填充字對齊字符
K28.5
,
K28.5
字符字邊界對齊的詳細內(nèi)容已在上文中介紹,此處不再多說;
然而,在每個
32
位的有效數(shù)據(jù)之后都要插入一個字節(jié)的校驗字符,這也就意味著
校驗消耗了五分之一的通信鏈路帶寬。同時,為了對齊正確的字邊界,在每個校驗字符
后面又插入了字對齊字符
K28.5
,連同校驗字符一樣,消耗了有效的通信鏈路帶寬。但
對于高速高可靠性的控制系統(tǒng)而已,這樣的協(xié)議開銷是值得的,也是必須的。
2.
應答幀
接收方在接收完一個完整的數(shù)據(jù)幀之后
,
向發(fā)送方發(fā)送表征數(shù)據(jù)接收情況的一個特
殊幀,這就是應答幀。應答幀總長度固定為兩個字節(jié),第一個字節(jié)為特殊字符
ATC
,第
二個字節(jié)為接收方的狀態(tài)信息,包括接收方的數(shù)據(jù)校驗狀態(tài)及校驗結果。
3.
遠程幀
遠程幀由應用層發(fā)出,請求遠程傳感與伺服控制子系統(tǒng)將當前傳感器及當前運動位
置數(shù)據(jù)上傳,作為下一伺服周期的計算依據(jù)。遠程幀的長度也是固定的,只有一個字節(jié),
即遠程請求特殊字符
TTC
。
三種格式的幀用到的特殊字符將在
8B/10B
高速編碼方案一節(jié)詳細介紹。
4.5.4 8B/10B 高速編碼方案
高速光纖通信屬于串行通信方式,數(shù)據(jù)通過差分線路發(fā)送和接收。未經(jīng)編碼的數(shù)據(jù)
會產(chǎn)生直流偏移,這將影響在接收端的信號質(zhì)量,使得時鐘和數(shù)據(jù)的提取變得異常困難。
本文所述系統(tǒng)采用
IBM
提出的標準
8B/10B
編碼方式。在圖
4.15
中,發(fā)送控制器送出的
8
位并行數(shù)據(jù)在送往串并轉(zhuǎn)換器
SerDes
之前必須經(jīng)過
8B/10B
編碼,然后將編碼后的
10
位并行數(shù)據(jù)串行化發(fā)送。
8B/10B
編碼支持
8
位數(shù)據(jù)的
256
種編碼組合,除此之外還有
一些編碼組合用以特殊的功能,故被稱之為特殊字符。采用
8B/10B
編碼的目的是提高
信號在光纖信道上的傳輸特性。該編碼方式保證了串行數(shù)據(jù)流有足夠的跳變密度,從而
有利于接收端的時鐘恢復;最大運行長度(
Run Length
)即連續(xù)的
0
或者
1
的個數(shù)為
5
,
可以有效的抑制串行數(shù)據(jù)流的頻譜范圍和碼間干擾(
ISI, Inter-Symbol Interference
);由
于
0
和
1
的數(shù)量相同,故達到了直流平衡,提供足夠的驅(qū)動能力
[31,32,35,36,40]
。