亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2022-12-12 09:38:48姜冬梅何衛(wèi)國(guó)楊瑞瑞
        通信電源技術(shù) 2022年15期
        關(guān)鍵詞:接收數(shù)據(jù)狀態(tài)機(jī)接收端

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

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

        0 引 言

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

        1 SPI控制器設(shè)計(jì)

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

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

        圖1 SPI主接口模塊框架

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

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

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

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

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

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

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

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

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

        圖4 SPI從接口模塊框架

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

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

        2 自動(dòng)de-skew算法設(shè)計(jì)

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

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

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

        2.1.1 主機(jī)算法

        步驟一:調(diào)整SSI clock,使其處于低頻模式。本設(shè)計(jì)中,SSI clock為50 MHz,數(shù)據(jù)傳輸周期為20 ns,從機(jī)接收端的建立保持時(shí)間均有10 ns的余量。在該頻率下,對(duì)于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ī)算法

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

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

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

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

        圖7 RXD[n]上升沿和時(shí)鐘上升沿的間距

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

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

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

        圖8 RXD上升沿與時(shí)鐘上升沿的間距

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

        圖9 RXD下降沿與時(shí)鐘上升沿的間距

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

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

        2.2.1 從機(jī)算法

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

        2.2.2 主機(jī)算法

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

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

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

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

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

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

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

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

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

        2.3 自動(dòng)de-skew算法性能分析

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

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

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

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

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

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

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

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

        3 結(jié) 論

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

        猜你喜歡
        接收數(shù)據(jù)狀態(tài)機(jī)接收端
        基于擾動(dòng)觀察法的光通信接收端優(yōu)化策略
        沖激噪聲背景下基于幅度預(yù)處理的測(cè)向新方法*
        頂管接收端脫殼及混凝土澆筑關(guān)鍵技術(shù)
        一種設(shè)置在密閉結(jié)構(gòu)中的無(wú)線電能傳輸系統(tǒng)
        新能源科技(2021年6期)2021-04-02 22:43:34
        基于多接收線圈的無(wú)線電能傳輸系統(tǒng)優(yōu)化研究
        基于有限狀態(tài)機(jī)的交會(huì)對(duì)接飛行任務(wù)規(guī)劃方法
        低復(fù)雜度多輸入多輸出雷達(dá)目標(biāo)角度估計(jì)方法
        單片機(jī)模擬串口數(shù)據(jù)接收程序的實(shí)現(xiàn)及優(yōu)化
        FPGA設(shè)計(jì)中狀態(tài)機(jī)安全性研究
        基于反熔絲FPGA的有限狀態(tài)機(jī)加固設(shè)計(jì)
        毛片一级精油按摩无码| 日韩精品极品视频在线免费| 天堂最新在线官网av| 亚洲天堂免费一二三四区| 日韩国产有码精品一区二在线| 中文字幕日本av网站| 国产精品沙发午睡系列| 色天使综合婷婷国产日韩av| 午夜无码片在线观看影院| AV无码免费不卡在线观看| 色婷婷一区二区三区四| 蜜桃视频网址在线观看| 亚洲不卡av二区三区四区| 亚洲一区二区在线观看网址| 国产精品婷婷久久爽一下| 国产喷水1区2区3区咪咪爱av| 永久免费观看的毛片手机视频| 无码AⅤ最新av无码专区| 亚洲女人毛茸茸的视频| www婷婷av久久久影片| 亚洲国产精品va在线播放| 91爱爱视频| 最新日韩精品视频免费在线观看| 国产tv不卡免费在线观看| 久久综合噜噜激激的五月天| 一本色道无码道dvd在线观看| 久久久精品久久日韩一区综合| 免费观看视频在线播放| 亚洲国产区中文在线观看| 亚洲日韩精品无码av海量| 成人妇女免费播放久久久| 丝袜足控一区二区三区| 日本在线免费精品视频 | 四虎影视永久在线精品| 欧洲乱码伦视频免费| 国产高清在线精品一区二区三区| 精品亚洲国产成人蜜臀av| 午夜射精日本三级| a在线观看免费网站大全| 国产男女做爰猛烈视频网站| 亚洲精品国产av日韩专区|