999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于自動de-skew算法的高速SPI接口設(shè)計與實現(xiàn)

2022-12-12 09:38:48姜冬梅何衛(wèi)國楊瑞瑞
通信電源技術(shù) 2022年15期

姜冬梅,何衛(wèi)國,楊瑞瑞

(成都三零嘉微電子有限公司,四川 成都 610041)

0 引 言

傳統(tǒng)的串仔外設(shè)接口(Serial peripheral Interface,SPI)接口傳輸速率較低,本設(shè)計通過采用多比特傳輸和雙沿采樣的方法來提高SPI傳輸帶寬[1,2]。通常印刷電路板(Printed Circuit Board,PCB)布線時不同的數(shù)據(jù)線、時鐘線無法做到等距離傳輸,接收端不同數(shù)據(jù)線、時鐘線的延遲不同,該延遲差別為skew[3]。skew的引入導(dǎo)致接收端的數(shù)據(jù)有效采樣窗口變小,時鐘頻率越高,skew對正確采樣數(shù)據(jù)的影響越大。為了實現(xiàn)高速傳輸,采用自動de-skew 算法解決PCB布線引入的skew問題。此外,傳統(tǒng)SPI通信中從接口不能暫停傳輸,而本文提出一種基于先進(jìn)先出儲存器(First Input First Output,F(xiàn)IFO)空、滿狀態(tài)的流量控制機(jī)制,通信的任意一方都可以隨時暫停傳輸,待準(zhǔn)備好之后繼續(xù)通信[4]。

1 SPI控制器設(shè)計

1.1 SPI主控制器設(shè)計

SPI主接口模塊框架如圖1所示。

圖1 SPI主接口模塊框架

SPI主機(jī)根據(jù)軟件配置的工作模式和數(shù)據(jù)長度發(fā)起對SPI從機(jī)的讀寫操作。當(dāng)SPI主機(jī)發(fā)起寫操作時,軟件先配置模式寄存器為寫模式,再配置數(shù)據(jù)長度,然后將命令和數(shù)據(jù)寫到發(fā)送異步FIFO中。有限狀態(tài)機(jī)(Finite State Machine,F(xiàn)SM)檢測到發(fā)送異步FIFO非空時,啟動SCLK生成電路,產(chǎn)生SCLK_out時鐘,同時啟動并串轉(zhuǎn)化電路,從發(fā)送FIFO讀出TX data,通過并串轉(zhuǎn)化電路轉(zhuǎn)換成TXD輸出。狀態(tài)機(jī)根據(jù)從機(jī)接收FIFO是否快滿和主機(jī)發(fā)送FIFO是否為空來控制SCLK_out輸出,當(dāng)從機(jī)接收FIFO快滿或主機(jī)發(fā)送FIFO為空時,停止SCLK_out時鐘輸出,從而暫停當(dāng)前傳輸;當(dāng)從機(jī)接收FIFO非滿且主機(jī)發(fā)送FIFO非空狀態(tài)時,繼續(xù)傳輸。當(dāng)SPI主機(jī)發(fā)起讀操作時,軟件先配置模式寄存器為讀模式,再配置讀數(shù)據(jù)長度,然后將命令和數(shù)據(jù)長度寫到發(fā)送異步FIFO中。FSM狀態(tài)機(jī)檢測到發(fā)送異步FIFO非空時,啟動SCLK生成電路,產(chǎn)生SCLK_out時鐘,同時啟動并串轉(zhuǎn)化電路,從發(fā)送異步FIFO讀出TX data,通過并串轉(zhuǎn)化電路將命令和數(shù)據(jù)長度發(fā)送給從機(jī)。從機(jī)在接收到讀命令后,由接收狀態(tài)切換到發(fā)送狀態(tài)。主機(jī)在完成命令發(fā)送后進(jìn)入等待狀態(tài),等到從機(jī)完成狀態(tài)切換后再由發(fā)送狀態(tài)切換到接收狀態(tài)。RXD和RXD valid經(jīng)過de-skew模塊后,進(jìn)入串并轉(zhuǎn)化模塊,將RX data寫入接收FIFO中。

AHB從接口模塊完成AHB總線讀寫信號到內(nèi)部信號的轉(zhuǎn)換,可以通過該接口訪問內(nèi)部寄存器[5]。發(fā)送FIFO是一個異步FIFO,寫端口工作在AHB時鐘域,讀端口工作在SSI clock時鐘域。通過寫發(fā)送數(shù)據(jù)寄存器可以將數(shù)據(jù)寫入發(fā)送異步FIFO,并串轉(zhuǎn)換模塊從讀端口將發(fā)送數(shù)據(jù)讀出[6,7]。SCLK生成器產(chǎn)生SCLK_out時鐘,本設(shè)計采用雙數(shù)據(jù)速率(Double Date Rate,DDR)模式傳輸,因此SCLK_out時鐘頻率是數(shù)據(jù)傳輸頻率的一半。當(dāng)SCLK_in有效時,SCLK_out是SSI clock的2分頻時鐘;當(dāng)SCLK_in無效時,SCLK_out保持低電平輸出。

并串轉(zhuǎn)換模塊將32 bit的TX data 轉(zhuǎn)換成8 bit的TXD。為了使從機(jī)接收數(shù)據(jù)建立和保持時間有SCLK_out時鐘周期的余量,TXD采用SSI clock下降沿輸出,如圖2所示[8]。

圖2 SPI主機(jī)TXD與SCLK_out相位關(guān)系

時鐘de-skew電路由粗精度可調(diào)延遲電路和高精度可調(diào)延遲電路組成,粗精度可調(diào)延遲電路可以增大延遲范圍,高精度可調(diào)延遲電路可以提高延遲精度。de-skew模塊中,每條接收數(shù)據(jù)線(RXD[n])和RXD valid分別經(jīng)過1條高精度可調(diào)延遲線后送入串并轉(zhuǎn)化模塊。RX en gate信號經(jīng)過粗精度可調(diào)延遲電路后去門控SSI clock,得到門控時鐘gate SSI clock,該門控時鐘再通過高精度可調(diào)延遲線。串并轉(zhuǎn)化電路完成接收信號的串并轉(zhuǎn)化,并將其寫入接收FIFO。

狀態(tài)機(jī)模塊負(fù)責(zé)數(shù)據(jù)收、發(fā)過程的流程控制。復(fù)位后狀態(tài)機(jī)進(jìn)入空閑狀態(tài),當(dāng)檢測到發(fā)送FIFO非空并且從機(jī)接收FIFO非滿時,狀態(tài)機(jī)進(jìn)入Assert SS狀態(tài),在該狀態(tài)ss_out_n信號生效,隨后進(jìn)入發(fā)送命令狀態(tài)。若是寫模式,在發(fā)送完命令后進(jìn)入發(fā)送數(shù)據(jù)狀態(tài),在發(fā)送數(shù)據(jù)過程中若主機(jī)發(fā)送FIFO空或從機(jī)接收FIFO將滿,則進(jìn)入停止發(fā)送狀態(tài)。在該狀態(tài)下,SCLK_out時鐘為低,直到發(fā)送條件恢復(fù),回到數(shù)據(jù)發(fā)送狀態(tài)完成數(shù)據(jù)發(fā)送。若是讀模式,在發(fā)送完命令后進(jìn)入等待狀態(tài),完成等待狀態(tài)后進(jìn)入接收狀態(tài),當(dāng)主機(jī)接收FIFO將滿時進(jìn)入停止接收狀態(tài)。在該狀態(tài)下,SCLK_out時鐘為低,直到接收條件恢復(fù),回到數(shù)據(jù)接收狀態(tài)。主機(jī)狀態(tài)轉(zhuǎn)移流程如圖3所示。

圖3 主機(jī)狀態(tài)轉(zhuǎn)移流程

1.2 SPI從控制器設(shè)計

SPI從機(jī)默認(rèn)工作在接收模式,接收到命令字段后根據(jù)讀寫命令切換工作模式。當(dāng)收到寫命令,SPI從機(jī)繼續(xù)工作在接收模式;當(dāng)收到讀命令,SPI從機(jī)切換到發(fā)送模式。SPI從機(jī)結(jié)構(gòu)與主機(jī)類似,如圖4所示。

圖4 SPI從接口模塊框架

狀態(tài)機(jī)模塊負(fù)責(zé)數(shù)據(jù)接收和發(fā)送的流程控制,為其他模塊提供控制信號。狀態(tài)機(jī)默認(rèn)為detect狀態(tài),當(dāng)收到寫命令時進(jìn)入接收數(shù)據(jù)狀態(tài),在該狀態(tài)中完成數(shù)據(jù)接收。當(dāng)數(shù)據(jù)傳輸完成后,狀態(tài)機(jī)回到初始狀態(tài)。從機(jī)收到讀請求命令后進(jìn)入等待狀態(tài),在該狀態(tài)中完成接收模式到發(fā)送模式的切換,完成收發(fā)模式切換后進(jìn)入發(fā)送數(shù)據(jù)狀態(tài)。當(dāng)發(fā)送FIFO為空時,進(jìn)入發(fā)送停止?fàn)顟B(tài),在停止?fàn)顟B(tài)TX valid信號無效;當(dāng)發(fā)送FIFO非空時,回到發(fā)送狀態(tài),直到發(fā)送數(shù)據(jù)完成,回到初始狀態(tài)。SPI從機(jī)狀態(tài)轉(zhuǎn)移流程如圖5所示。

圖5 SPI從機(jī)狀態(tài)轉(zhuǎn)移流程

2 自動de-skew算法設(shè)計

自動de-skew算法包含從機(jī)接收端de-skew和主機(jī)接收端de-skew。

2.1 從機(jī)接收端de-skew算法

從機(jī)接收端de-skew算法包含數(shù)據(jù)de-skew和時鐘de-skew。數(shù)據(jù)de-skew完成RXD各比特位對齊,時鐘de-skew使時鐘的跳變沿對齊數(shù)據(jù)的中點位置。分別從主機(jī)算法和從機(jī)算法2個方面進(jìn)行闡述。

2.1.1 主機(jī)算法

步驟一:調(diào)整SSI clock,使其處于低頻模式。本設(shè)計中,SSI clock為50 MHz,數(shù)據(jù)傳輸周期為20 ns,從機(jī)接收端的建立保持時間均有10 ns的余量。在該頻率下,對于skew不敏感,從機(jī)能正確接收數(shù)據(jù)。

步驟二:主機(jī)向從機(jī)發(fā)送訓(xùn)練序列0x00FF00FF00FF00FF,使得傳輸數(shù)據(jù)的每一比特都在不斷進(jìn)行0和1的跳變。

步驟三:等待10 μs,以便從機(jī)完成數(shù)據(jù)接收和延遲線的調(diào)整,再返回步驟二。重復(fù)步驟二、步驟三,直到完成從機(jī)接收端de-skew。

步驟四:將SSI clock調(diào)到正常工作頻率。

2.1.2 從機(jī)算法

步驟一:通過逐步增大接收數(shù)據(jù)線RXD[n]的延遲線長度,尋找RXD[n]的下降沿,得到時鐘上升沿與RXD[n]下降沿的間距,記為dn(n=0,1,2,…,7),如圖6所示。

圖6 RXD[n]下降沿與時鐘上升沿間距

找出d0到d7的最小值并記為dmin,將dn與dmin的差值作為RXD[n]的延遲值。如果延遲線調(diào)到最大延遲值都無法找到數(shù)據(jù)的下降沿,則進(jìn)入步驟二,否則進(jìn)入步驟三。

步驟二:通過不斷增大時鐘的延遲長度尋找數(shù)據(jù)RXD[n]的上升沿,將SCLK_in上升沿和數(shù)據(jù)RXD[n]上升沿的間距記為Rn(n=0,1,2,…,7),如圖7所示。

圖7 RXD[n]上升沿和時鐘上升沿的間距

找出R0到R7的最大值并記為dmax,將dmax與Rn的差值作為RXD[n]的延遲值。

步驟三:通過步驟一、步驟二完成數(shù)據(jù)之間的de-skew后,進(jìn)行時鐘de-skew。

若通過第一步完成數(shù)據(jù)de-skew,則逐步增大時鐘延遲尋找數(shù)據(jù)的上升沿,將SCLK_in上升沿與數(shù)據(jù)RXD上升沿的間距記為L,如圖8所示。

圖8 RXD上升沿與時鐘上升沿的間距

若通過第二步完成數(shù)據(jù)de-skew,則通過不斷調(diào)整數(shù)據(jù)RXD延遲長度尋找數(shù)據(jù)的下升沿,將SCLK_in的上升沿與數(shù)據(jù)RXD的下降沿的間距記為P,如圖9所示。

圖9 RXD下降沿與時鐘上升沿的間距

2.2 主機(jī)接收端de-skew算法

主機(jī)接收端de-skew算法包含數(shù)據(jù)de-skew和時鐘de-skew過程,數(shù)據(jù)de-skew在低頻傳輸模式下完成,時鐘de-skew在高頻傳輸模式下完成。

2.2.1 從機(jī)算法

當(dāng)從機(jī)發(fā)送FIFO處于非滿狀態(tài)時,從機(jī)不斷向發(fā)送FIFO寫入訓(xùn)練序列0x00FF00FF00FF00FF,以便主機(jī)讀回,完成de-skew訓(xùn)練。

2.2.2 主機(jī)算法

步驟一:調(diào)整SSI Clock,使其處于低頻模式。本設(shè)計中SSI clock為50 MHz,數(shù)據(jù)傳輸周期為20 ns。

步驟二:通過逐步增大接收數(shù)據(jù)RXD[n]的延遲尋找RXD[n]的下降沿,得到時鐘上升沿與RXD[n]下降沿的間距記為dn′(n=0,1,2,…,7)。通過逐步增大RX_valid的延遲尋找RX_valid的上升沿,得到時鐘上升沿與RX_valid上升沿的間距記為d8′。找出d0′到d8′的最小值記為dmin′,將dn′與dmin′的差值作為RXD[n]的延遲值。如果步驟二中延遲線調(diào)到最大延遲值都無法找到數(shù)據(jù)的下降沿,則進(jìn)入步驟三,否則進(jìn)入步驟四。

步驟三:通過逐步增大時鐘的延遲尋找數(shù)據(jù)RXD[n]的上升沿,將SCLK_in上升沿和數(shù)據(jù)RXD[n]上升沿的間距記為Rn′(n=0,1,2,…,7)。通過逐步增大時鐘的延遲尋找RX_valid的下降沿,將SCLK_in上升沿和RX_valid下升沿的間距記為d8′。找出R0′到d8′的最大值記為dmax′,將dmax′與Rn′ 的差值作為RXD[n]的延遲值,將dmax′與d8′的差值作為RX_valid的延遲值

步驟四:調(diào)整SSI clock,使其處于正常工作頻率。本設(shè)計中SSI clock為200 MHz,數(shù)據(jù)傳輸周期為5 ns。

步驟五:完成時鐘de-skew,使得SSI clock上升沿對齊數(shù)據(jù)的中點位置。

de-skew后RXD與SSI clock的相位關(guān)系如圖10、圖11所示。

圖10 主機(jī)接收數(shù)據(jù)延遲小于SSI clock周期

圖11 主機(jī)接收數(shù)據(jù)延遲大于SSI clock周期

主機(jī)若不能正確讀到訓(xùn)練序列,則說明接收數(shù)據(jù)的延遲大于時鐘周期,即為圖11情況。在該情況下,通過逐步增加時鐘延遲,直到第1次能正確讀到訓(xùn)練序列,將此時的時鐘延遲記為Tstart。繼續(xù)逐步增加時鐘延遲,直到再一次讀到錯誤的訓(xùn)練序列,將最后一次正確讀到訓(xùn)練序列時的時鐘延遲記為Tend。Tstart和Tend的均值即為時鐘的延遲值。

2.3 自動de-skew算法性能分析

采用Synopsys的VCS仿真軟件搭建仿真環(huán)境,分析de-skew算法的性能[9,10]。SSI clock的低頻時鐘頻率為50 MHz,高頻時鐘頻率為200 MHz,延遲線的最大延遲為15 ns。從機(jī)接收端de-skew仿真波形如圖12所示,從機(jī)接收端de-skew前后對比如圖13所示。

圖12 從機(jī)接收端de-skew仿真波形

從圖13中可以看出,接收數(shù)據(jù)由于傳輸延遲差別,有效數(shù)據(jù)窗口較小,無法正確采樣數(shù)據(jù)。經(jīng)過deskew算法處理后,接收數(shù)據(jù)有效窗口較大,且SCLK時鐘的上升沿和下降沿對齊數(shù)據(jù)窗口的中間位置。

圖13 從機(jī)接收端de-skew前后波形對比

主機(jī)接收端de-skew仿真波形如圖14所示,主機(jī)接收端de-skew前后對比如圖15所示。

圖14 主機(jī)接收端de-skew仿真波形

圖15 主機(jī)接收端de-skew前后波形對比

從圖15中可以看出,接收數(shù)據(jù)由于傳輸延遲差別,有效數(shù)據(jù)窗口較小,無法正確采樣數(shù)據(jù)。經(jīng)過de-skew算法處理后,接收數(shù)據(jù)有效窗口較大,且SSI clock時鐘的上升沿對齊數(shù)據(jù)窗口的中間位置。

3 結(jié) 論

本設(shè)計采用雙沿采樣來提高SPI的傳輸帶寬,通過自動de-skew算法消除后端布局布線和PCB走線引入數(shù)據(jù)間的skew以及數(shù)據(jù)與時鐘間的skew,降低后端設(shè)計和PCB設(shè)計的難度。此外,增加流量控制機(jī)制,根據(jù)FIFO的空、滿狀態(tài),通信中的任意一方可以暫停數(shù)據(jù)傳輸。

主站蜘蛛池模板: 夜夜拍夜夜爽| 欧美色丁香| 国产99视频精品免费视频7| 国产国产人在线成免费视频狼人色| 欧美日韩高清| 久久77777| 天天操天天噜| 国禁国产you女视频网站| 亚洲精品中文字幕无乱码| 五月天久久综合| 国产爽妇精品| 美女黄网十八禁免费看| 国产人成在线视频| 福利在线不卡一区| 国产超碰在线观看| 日本尹人综合香蕉在线观看| 免费观看成人久久网免费观看| 国产成人区在线观看视频| 亚洲精品在线观看91| 青青极品在线| 免费无码网站| 久久黄色一级视频| 中文字幕啪啪| 暴力调教一区二区三区| 日本人妻丰满熟妇区| 男女男免费视频网站国产| h网址在线观看| 中文字幕一区二区视频| 蜜芽一区二区国产精品| 色吊丝av中文字幕| 蜜芽国产尤物av尤物在线看| 日本三区视频| 亚洲人成日本在线观看| 亚洲国产清纯| 91精选国产大片| 又猛又黄又爽无遮挡的视频网站| 一本大道AV人久久综合| 欧美一区精品| 91麻豆精品视频| 国产激情影院| 人妻丝袜无码视频| 在线国产你懂的| 久青草网站| 国产女人水多毛片18| 欧美区一区二区三| 久青草免费在线视频| 日本高清视频在线www色| 久无码久无码av无码| 中文字幕第1页在线播| 亚洲天堂网视频| 国产一级在线观看www色 | 九色综合伊人久久富二代| 免费无码AV片在线观看中文| 亚洲无码91视频| 亚洲色图欧美在线| 欧美日韩国产在线播放| 亚欧美国产综合| 91欧洲国产日韩在线人成| 久久亚洲精少妇毛片午夜无码| 手机看片1024久久精品你懂的| 国产真实二区一区在线亚洲| 91福利一区二区三区| 99热最新在线| av一区二区无码在线| YW尤物AV无码国产在线观看| 亚洲欧美色中文字幕| 亚洲精品桃花岛av在线| av大片在线无码免费| 国产精品无码久久久久久| 国产第一色| 国产成人精品亚洲77美色| 人妻丰满熟妇AV无码区| 国产精品成人一区二区不卡| 精品久久久久久久久久久| 亚洲最大福利视频网| 国产SUV精品一区二区| 老色鬼久久亚洲AV综合| 超薄丝袜足j国产在线视频| 成人亚洲国产| 国产91av在线| 国产精品久久自在自线观看| 日本国产在线|