引言 SpacewiTe是歐空局2003年提出的一種高速的、點(diǎn)對點(diǎn)、全雙工的串行總線(xiàn)網(wǎng)絡(luò ),面向空間應用。它以IEEE 1355—1995和LVDS標準為基礎,提供了一種通用接口標準以簡(jiǎn)化和規范不同設備之間的互連,對解決目前星上數據處理系統的總線(xiàn)帶寬不足有重要作用。而且,隨著(zhù)FPGA容量增大和功耗降低,以及內部軟核的廣泛應用,使用FPGA開(kāi)發(fā)數字電路,可以縮短設計時(shí)間、減少PCB面積、提高系統的可靠性,FPGA已成為解決系統級設計的重要選擇方案之一。本文在A(yíng)ctel的集成開(kāi)發(fā)環(huán)境Libem下編寫(xiě)了HDL代碼,利用內部集成仿真工具M(jìn)od—elSim對設計進(jìn)行了時(shí)序仿真。 1 SpaceWire Codec接收端概述 SpaceWire標準餌CSS—E一50—12A)包括鏈路,節點(diǎn)和交換機三方面的內容。SpaceWire采用線(xiàn)路交換形式,節點(diǎn)是指傳輸包的流出設備或者流向設備,鏈路是指數據包傳輸的路徑。 SpaceWire是總線(xiàn)數據網(wǎng)絡(luò )結構,包括6層協(xié)議:物理層,信號層,字符層,交換層,信息包層和網(wǎng)絡(luò )層。SpaceWire Codec實(shí)現的是信號層,字符層和交換層的相關(guān)內容。 SpaceWire物理層電纜采用九針微型D連接器.由四對雙絞線(xiàn)組成,傳輸四對差分信號。 SpaceWire信號層用LVDS差分信號傳輸,抑制了共模噪聲,保證了低電磁干擾。采用DS(data-strobe)編碼實(shí)現嵌入式時(shí)鐘總線(xiàn)傳輸,Ds編碼用data信號表示實(shí)際傳輸的數據,strobe信號隨D信號變化而編碼,原則是在任一時(shí)鐘周期Ds信號只有一個(gè)發(fā)生變化,這樣DS信號異或就可得到接收端的時(shí)鐘。如圖1: ![]() SpaceWire字符層定義了兩種類(lèi)型的字符:四個(gè)控制字符和數據字符,采用奇校驗方式。 串行比特流各個(gè)字符之間沒(méi)有分隔符,每個(gè)字符以奇偶檢驗位開(kāi)始,第二位是ctrl—flag位,即區分數據字符和控制字符的標志,后面是不同的數據字符和控制字符。串行的比特流以包的形式傳輸,包以控制字符EOP標志結尾。 SpaceWire交換層定義了鏈路的初始化和狀態(tài)機的運轉,實(shí)現鏈路的擁塞控制,檢測鏈路的斷開(kāi)等。 SpaceWire Codec由發(fā)送端,接收端和控制器組成,控制器根據接收端收到的不同數據字符控制狀態(tài)機的運行,協(xié)調發(fā)送端和接收端的工作。 其中接收端實(shí)現時(shí)鐘恢復,檢測DS信號,判斷并處理Data數據,進(jìn)行奇偶校驗,把數據字符送到fifo中,實(shí)現鏈路的擁塞控制,檢測鏈路的斷開(kāi)狀況等。這些功能的實(shí)現使用到不同的時(shí)鐘,設計時(shí)需要解決多時(shí)鐘域信號傳輸的同步問(wèn)題。 在本設計中。SpaceWire Codec接收端按照功能不同劃分為以下幾個(gè)模塊: ![]() 圖2接收端模塊劃分 上圖中的asyrst_n由epu復位信號和控制器的復位信號做組合邏輯得到。設計時(shí)用cpu配置鏈路狀態(tài),控制FPGA運行。數據字符經(jīng)過(guò)6fo送到epu存儲區中。 2 時(shí)鐘域劃分 上圖中,虛線(xiàn)表示了不同的時(shí)鐘域。 用恢復的時(shí)鐘clk0進(jìn)行Ds信號的檢測和處理.在clk0時(shí)鐘域內實(shí)現的是同步檢測和設計。由于DS信號不能通過(guò)自身恢復得到的時(shí)鐘去檢測DS鏈路的斷開(kāi).因此需要采用FPGA的pU模塊倍頻得到的高頻時(shí)鐘gclk 來(lái)檢測鏈路的斷開(kāi)狀_re況。在本設計中,擁塞控制要和發(fā)送端配合工作,發(fā)送端使用的是本地時(shí)鐘gclk,因此鏈路擁塞控制模塊也要用本地時(shí)鐘gclk來(lái)控制。用cpu時(shí)鐘clk_c讀走fifo中數據,送到cpu存儲區中。 3 復位信號處理 接收端模塊的復位信號由cpu給出,鏈路狀態(tài)機運行到復位狀態(tài)也要對接收端進(jìn)行復位。由于復位信號扇出很大,且要在不同的時(shí)鐘域起作用.因此對復位信號的處理相當重要。 在接收端中,DS信號到來(lái)之前,DS信號檢測和Data數據一處理模塊的寄存器必須有確定的狀態(tài),這兩個(gè)模塊復位時(shí)clk0還沒(méi)有出現,因此采用了不需要時(shí)鐘控制的異步復位。 對復位信號而言,復位信號的釋放和時(shí)鐘沿之間也存在時(shí)間約束關(guān)系,如同觸發(fā)器的D輸入端必須滿(mǎn)足建立和保持時(shí)間一樣,復位信號相對時(shí)鐘也必須滿(mǎn)足recovery time/removaltime。如圖3所示,recovery time指復位信號無(wú)效電平相對時(shí)鐘沿到來(lái)前的穩定時(shí)間,removal time指復位信號無(wú)效電平相對時(shí)鐘沿到來(lái)后的穩定時(shí)間。 ![]() 圖3復位信號的recovery/removal time 4 DS信號的檢測 如圖4示,恢復的clkO時(shí)鐘是D信號頻率的1/2,用clk0檢測DS信號,必須用elk0的上沿和下沿實(shí)現,如下圖所示: ![]() 圖4 DS信號的檢測 clk0是DS組合邏輯得到的門(mén)控時(shí)鐘,且clk0的扇出很大,上沿和下沿都要用到,布局布線(xiàn)時(shí)將它放在全局時(shí)鐘bu雎r上,保證了clkO有最小的抖動(dòng)和偏移。 5 data數據處理 SpaceWire總線(xiàn)定義的串行數據的最大特點(diǎn)是各個(gè)不同的數據之間沒(méi)有分割字符。處理數據時(shí)不僅要對本次數據格式進(jìn)行正確判斷和校驗,并且要根據判讀和檢驗結果指出下一個(gè)data起始位,否則下一個(gè)數據的判斷將會(huì )出現錯誤。 設計中采取了串行移位寄存器的方法,設置了5個(gè)兩位的寄存器。在同—個(gè)cIkO周期內能看到串行數據線(xiàn)上的10位串行數據,根據不同數據位進(jìn)行判讀和奇偶校驗。正確判讀后,根據不同的data數據長(cháng)度.分別用不同的ready信號指示下—個(gè)data的起始位,進(jìn)而進(jìn)行下一個(gè)數據格式的處理。 這些信號都是clkO時(shí)鐘域的同步信號,且移位寄存器間沒(méi)有長(cháng)路徑延時(shí),這樣可以保證數據處理模塊的穩定運行。 6 多時(shí)鐘設計 接收端不同的時(shí)鐘域產(chǎn)生的信號是異步信號,信號傳輸時(shí)需要同步到不同的時(shí)鐘域。數據信號通過(guò)fifo傳輸,控制信號在標志位同步模塊中實(shí)現同步到gclk時(shí)鐘域。 在鏈路被動(dòng)啟動(dòng)時(shí),接收端收到NULL信號后,給出異got—NULL標志,使link_enabh信號有效,鏈路由ready狀態(tài)進(jìn)入started狀態(tài),因此gotNULL信號電平有效。gotNULL信號由clkO時(shí)鐘域的DS數據處理模塊給出,需要同步到FPGA的本地時(shí)鐘域。電平同步通常用兩個(gè)D觸發(fā)器構成同步器,第一級觸發(fā)器在采樣輸入信號時(shí)可能進(jìn)入亞穩態(tài),后面的觸發(fā)器獲得前一個(gè)觸發(fā)器輸出時(shí),前一個(gè)觸發(fā)器已退出了亞穩態(tài),并且輸出已穩定.極大地減小了亞穩態(tài)的發(fā)生。 其他的標志位信號,如gotDATA、gotFCT、gotEOP、gotEEP等都是脈沖有效,這些信號的同步是在電平同步的基礎上做組合邏輯實(shí)現的,如圖5所示: ![]() 圖5電平信號gotDATA的同步 在信號同步中,第二級寄存器的輸出是穩定可用的,把第二級的輸出再延遲一拍,對gotDATA_2和gotDATA_3寄存器的輸出做組合邏輯,實(shí)現了一個(gè)gclk周期的有效電平。在時(shí)序允許的情況下,打一拍輸出,實(shí)現了脈沖有效信號的同步。 鏈路檢測模塊在gclk_re時(shí)鐘域實(shí)現,根據協(xié)議要求,當離上一次DS信號出現850m后沒(méi)有Ds數據出現,則認為鏈路斷開(kāi)。該模塊給出的鏈路斷開(kāi)標志link_dis相對gclk時(shí)鐘,是快時(shí)鐘域信號,為了便于信號同步,link_dis標志輸出電平而非脈沖。 結束語(yǔ) 本文介紹了SpaeeWire Codec接收端的時(shí)序設計,給出了各個(gè)不同模塊的時(shí)鐘域劃分,門(mén)控時(shí)鐘和復位信號的有效處理,以及對串行數據的檢測和判讀,多時(shí)鐘域信號的同步等實(shí)現方法。 本文作者創(chuàng )新點(diǎn):對多時(shí)鐘域復位信號采用了對應時(shí)鐘域的異步復位同步釋放方法;對串行總線(xiàn)數據判讀采用了串行移位寄存器的方法,便于數據的正確識別。對嵌入式時(shí)鐘總線(xiàn)傳輸的接收端設計有一定的參考意義。 作者:曹海源 來(lái)源:《微計算機信息》2009年第1-2期 |