0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SATA主機(jī)協(xié)議的物理層的實現(xiàn)過程

Hack電子 ? 來源:博客園Mr.想太多 ? 2024-10-22 15:17 ? 次閱讀

這里講解SATA主機(jī)協(xié)議的物理層的實現(xiàn)過程。

下圖是標(biāo)準(zhǔn)SATA協(xié)議文檔中給出的物理層結(jié)構(gòu)??梢钥吹剿刂颇K、時鐘數(shù)據(jù)提取單元、同步字符源和同步字符檢測模塊以及模擬前端幾個部分。其中,控制模塊負(fù)責(zé)協(xié)調(diào)控制整個物理層的邏輯功能,并向上層協(xié)議提供控制信號、狀態(tài)信息接口。時鐘數(shù)據(jù)提取模塊從串行數(shù)據(jù)流中提取時鐘數(shù)據(jù)信息。同步字符源和同步字符檢測兩個模塊負(fù)責(zé)串并/并串轉(zhuǎn)換過程中的字節(jié)對齊。模擬前端包含高速差分?jǐn)?shù)據(jù)發(fā)送接收器和OOB信號檢測與生成電路。

4024935a-9045-11ef-a511-92fbcf53809c.jpg

上面這個圖看上去比較復(fù)雜,但是如果仔細(xì)理解物理層協(xié)議,并對前一篇博客中提到的ALTGX收發(fā)器有一定認(rèn)識之后,我們會發(fā)現(xiàn)其實這個收發(fā)器已經(jīng)幫我們實現(xiàn)了時鐘數(shù)據(jù)提取單元、同步字符源和同步字符檢測模塊以及模擬前端這幾個部分,我們要做的就是如何配置這個收發(fā)器。另外,物理層還有一個重要的工作就是利用OOB(OUT OF BAND)信號實現(xiàn)設(shè)備的識別和上電初始化。因此,這里進(jìn)一步劃分物理層模塊,得到下面這個物理層框圖。整個物理層被劃分為4個模塊,OOB生成和檢測、ALTGX收發(fā)器和物理層狀態(tài)機(jī)。

404f04be-9045-11ef-a511-92fbcf53809c.jpg

首先說一下這個ALTGX收發(fā)器。關(guān)于這個收發(fā)器具體結(jié)構(gòu)這些東西這里限于篇幅就不一一介紹,詳細(xì)的介紹參考StatixIV器件手冊,這里只是說明一下為什么會用上它。我們知道現(xiàn)在常見的FPGA的處理速度最高也只是在幾百兆的水平,但是SATA1.0的串行數(shù)據(jù)流的傳輸速度已經(jīng)達(dá)到了1.5Gbps,這樣的速度不可能直接在FPGA里實現(xiàn),而且SATA最終在傳輸線上傳輸?shù)氖遣罘中盘枺@里會有一個數(shù)字到模擬的過程,這也不是一般的FPGA能干的事。上面這兩個問題其實并不只是實現(xiàn)SATA協(xié)議時會碰到,很多高速串行傳輸協(xié)議在使用FPGA實現(xiàn)時都會遇到,比如PCIe等。FPGA廠商為了滿足對這種高速串行傳輸協(xié)議的支持,通常的做法都是在FPGA芯片中集成專用的硬件,這種專用硬件通常是一組滿足高速數(shù)據(jù)傳輸速率要求的串行器/解串器(SERDES)以及模擬前端。這些集成的專用硬件通常是可以進(jìn)行比較靈活的配置的,以使它們能滿足對不同通信協(xié)議的支持。ALTERA公司的ALTGX收發(fā)器就屬于這種,另外還有XILINX公司的RocketIO MGT等。ALTGX收發(fā)器可以通過QuartusII軟件中的IP配置向?qū)渲蒙?,這個配置過程參考“實現(xiàn)Altera器件中的SATA與SAS協(xié)議”一文。這篇文檔中有詳細(xì)的配置講解,這里不再贅述。

接著說說這個OOB信號。帶外信號,即OOB信號是物理層特有的一組信號,它通過在數(shù)據(jù)線上傳輸一組特定格式的信號實現(xiàn)。OOB信號有3個,分別是COMRESET、COMINIT和COMWAKE,其中COMRESET與COMINIT信號組成形式一樣,只不過CONRESET由主機(jī)發(fā)出,而COMINIT由設(shè)備發(fā)出,它們的作用是在正常的通信鏈路沒有建立之前主機(jī)進(jìn)行SATA設(shè)備識別。關(guān)于這三種信號的組成形式請查閱SATA協(xié)議文檔,這里主要說一下怎么實現(xiàn)這幾個信號。上面關(guān)于ALTGX配置過程中我們應(yīng)該注意到兩個比較特殊的信號端口,一個是rx_signaldetect,一個是tx_forceelecidle,我們主要是通過控制這兩個端口產(chǎn)生和讀取OOB信號。查閱SATA文檔之后我們知道OOB信號實際是由數(shù)據(jù)線上的突發(fā)信號和空閑周期組成的,突發(fā)信號周期比較好理解,在差分?jǐn)?shù)據(jù)線上傳輸特定的原語(ALIGNp)即可,那空閑周期是什么意思呢?簡單的理解就是不發(fā)送數(shù)據(jù),那怎么就代表不發(fā)送數(shù)據(jù)呢?分析tx_forceelecidle這個端口的作用我們大概可以得到一些啟示。這個端口的作用是將ALTGX中的發(fā)送器強(qiáng)制置為高阻,原來“高阻”才意味著沒有數(shù)據(jù)發(fā)送,千萬不要以為發(fā)送器發(fā)送“0”就是空閑周期了,“0”也代表一個數(shù)據(jù)!相反地,在接受端就比較好理解了,對于差分信號來說,在接受器端設(shè)置閾值電平檢測電路就能區(qū)別差分?jǐn)?shù)據(jù)線上“有或沒有”信號,也就是區(qū)分突發(fā)周期和空閑周期,反映閾值檢測結(jié)果的信號就是rx_signaldetect這個端口。這樣就好理解OOB信號的具體實現(xiàn)了,當(dāng)發(fā)送OOB信號時,通過置位或復(fù)位tx_forceelecidle端口來發(fā)送空閑周期和突發(fā)信號周期,接收設(shè)備端的OOB信號時,通過檢測rx_signaldetect端口信號電平來確定當(dāng)前設(shè)備發(fā)送的是空閑周期還是突發(fā)信號周期,當(dāng)該端口被置位,說明接收到的是突發(fā)信號周期,否則是空閑周期。這里需要提醒一下的是這兩個端口的信號都是高電平有效的,這意味著tx_forceelecidle為高電平時是空閑周期,而rx_signaldetect為低電平時為空閑周期。這一點一定要注意,這跟XILINX FPGA中的信號電平定義好像不太一樣,我當(dāng)時就在這里吃過虧。接下來的OOB生成和檢測模塊的實現(xiàn)就好辦了,我們要做的工作就是實現(xiàn)能產(chǎn)生和檢測一組符合OOB信號規(guī)定的高低電平電路就可以了。

最后說說這個物理層狀態(tài)機(jī)。物理層狀態(tài)機(jī)是整個物理層電路工作的大腦,它主要負(fù)責(zé)控制前面提到的三個模塊,在上電時完成主機(jī)對SATA設(shè)備的識別和通信鏈路的建立。下面這個時序圖就是上電時主機(jī)初始化的過程。首先是主機(jī)發(fā)送COMRESET信號,設(shè)備接收后響應(yīng)COMINIT,主機(jī)接收之后發(fā)送COMWAKE,設(shè)備接收后再響應(yīng)COMWAKE。四個OOB信號交互之后,主機(jī)就完成了SATA設(shè)備的識別。之后主機(jī)與設(shè)備之間通過ALIGNp原語進(jìn)行速度協(xié)商并完成通信鏈路的建立,最后在通信鏈路建立之后以SYNCp保持。詳細(xì)的描述參考文檔中關(guān)于這部分的描述。

406f774e-9045-11ef-a511-92fbcf53809c.jpg

根據(jù)上面的時序圖,我設(shè)計了以下的狀態(tài)機(jī),它的狀態(tài)轉(zhuǎn)移圖如下圖所示,供大家參考。

40933102-9045-11ef-a511-92fbcf53809c.jpg

物理層狀態(tài)機(jī)共有12個狀態(tài),狀態(tài)轉(zhuǎn)移圖上圖所示。主機(jī)上電后需要先對ALTGX收發(fā)器進(jìn)行復(fù)位操作,使CDR能成功鎖定到接收數(shù)據(jù)。當(dāng)復(fù)位完成后,狀態(tài)機(jī)能接收到power_rst_done信號,狀態(tài)機(jī)進(jìn)入發(fā)送COMRESET狀態(tài),使能OOB信號生成模塊發(fā)送COMRESET信號。如果設(shè)備接收到COMRESET信號,設(shè)備會向主機(jī)發(fā)送COMINIT信號,主機(jī)接收到COMINIT信號后,狀態(tài)機(jī)進(jìn)入發(fā)送COMWAKE信號狀態(tài),使能發(fā)送模塊發(fā)送COMWAKE信號,之后主機(jī)等待設(shè)備響應(yīng)COMWAKE信號。主機(jī)在接到COMWAKE信號后會向設(shè)備發(fā)送一段時間D10.2數(shù)據(jù),直到檢測到設(shè)備發(fā)送的ALIGNp原語。這時主機(jī)存儲ALIGNp原語,并以相同的速率返還給設(shè)備,完成速度協(xié)商。最后設(shè)備向主機(jī)發(fā)送SYNCp原語,主機(jī)在接收到該原語后進(jìn)入Link_ready狀態(tài),表示通信鏈路已經(jīng)建立。

最終整個物理層的實現(xiàn)情況如下圖所示,這是用SignalTapII捕捉到的信號波形。第一個是OOB信號發(fā)送,即tx_forceelecidle端口控制信號,第二個是OOB信號接收,即rx_signaldetect端口信號,第三個是ALTGX接收轉(zhuǎn)換后的16位并行數(shù)據(jù),第四個是ALTGX發(fā)送的16位并行數(shù)據(jù)。

40b9ccae-9045-11ef-a511-92fbcf53809c.jpg

至此,物理層基本邏輯設(shè)計完成

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 收發(fā)器
    +關(guān)注

    關(guān)注

    10

    文章

    3374

    瀏覽量

    105803
  • SATA
    +關(guān)注

    關(guān)注

    0

    文章

    264

    瀏覽量

    83241
  • 物理層
    +關(guān)注

    關(guān)注

    1

    文章

    147

    瀏覽量

    34269
  • 模擬前端
    +關(guān)注

    關(guān)注

    3

    文章

    179

    瀏覽量

    29682

原文標(biāo)題:SATA主機(jī)協(xié)議的FPGA實現(xiàn)之物理層設(shè)計

文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    [討論]討論一下:SATA物理層的作用

    SATA中的物理層規(guī)定了一些基本的電氣性能,具體點呢?它的作用是什么?那位大俠指導(dǎo)一下,不勝感激
    發(fā)表于 07-22 14:59

    IIC物理層的特點是什么

    (IC)間的通訊。IIC物理層的特點??電阻一般為4.7k??它是一個支持多設(shè)備的總線?!翱偩€”指多個設(shè)備共用的信號線。在一個IIC通訊總線中,可連接多個IIC通訊設(shè)備,支持多個通訊主機(jī)及多個...
    發(fā)表于 08-23 06:55

    淺析I2C物理層協(xié)議

    I2C物理層的特點有哪些?I2C通訊設(shè)備之間的常用連接方式是什么?I2C協(xié)議的基本讀寫過程是怎樣的?
    發(fā)表于 09-29 06:24

    淺析串口通訊協(xié)議物理層協(xié)議

    什么是串口通訊?串口通訊協(xié)議物理層的結(jié)構(gòu)是由哪些部分組成的?串口通訊協(xié)議協(xié)議的主要標(biāo)準(zhǔn)是什么?
    發(fā)表于 10-22 09:30

    串口通訊協(xié)議物理層協(xié)議看完你就懂了

    串口通訊協(xié)議物理層協(xié)議看完你就懂了
    發(fā)表于 12-10 06:00

    IIC的物理層特點

    IIC的物理層特點SCL和SDA是兩根總線, 支持多設(shè)備。所有要進(jìn)行通信的設(shè)備都要引出兩個引腳,連接到這兩根總線上。IIC協(xié)議只使用兩條總線,** 一條雙向的串行數(shù)據(jù)線(SDA), 一條串行時鐘線
    發(fā)表于 01-12 08:00

    串口通信的物理層協(xié)議的相關(guān)資料推薦

    一.串口通信的物理層協(xié)議物理層規(guī)定了通訊系統(tǒng)的機(jī)械、電子特性(相當(dāng)于規(guī)定了用嘴巴還是肢體交流)協(xié)議
    發(fā)表于 02-17 07:07

    串口通訊協(xié)議物理層協(xié)議是什么樣的?

    串口通訊協(xié)議物理層協(xié)議是什么樣的?
    發(fā)表于 02-18 07:30

    WCDMA系統(tǒng)的物理層(FDD)

    WCDMA系統(tǒng)的物理層(FDD):概述;編碼技術(shù);物理層的成幀過程;業(yè)務(wù)復(fù)用;擴(kuò)頻與擾碼;物理層幀結(jié)構(gòu); 蜂窩系統(tǒng)的焦點:物理層直接影響無
    發(fā)表于 06-14 23:09 ?16次下載

    物理層的成幀過程

    WCDMA系統(tǒng)的物理層(FDD)一、物理層的成幀過程1.    傳輸信道向物理信道的映射    高層的數(shù)據(jù)通過傳輸信道映射到
    發(fā)表于 02-09 09:10 ?48次下載

    SATA/SAS 6G最新物理層測試方法

    SATA/SAS 6G最新物理層測試方法:Physical Layer Validation of Storage Systems Presenter Biography􀂃
    發(fā)表于 06-29 17:12 ?36次下載

    物理層的作用

    物理層的作用:物理層是提供數(shù)據(jù)傳輸?shù)?b class='flag-5'>物理媒體,物理層協(xié)議是各種網(wǎng)絡(luò)設(shè)備進(jìn)行互連時必須遵守的最低層協(xié)議
    發(fā)表于 07-22 15:48 ?6683次閱讀

    物理層及其協(xié)議

    物理層及其協(xié)議 物理層的定義
    發(fā)表于 07-22 15:50 ?1.2w次閱讀

    sd卡協(xié)議物理層

    sd卡協(xié)議物理層)資料,很好的資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-25 17:40 ?0次下載

    LIN協(xié)議物理層要求

    電子發(fā)燒友網(wǎng)站提供《LIN協(xié)議物理層要求.pdf》資料免費下載
    發(fā)表于 08-30 09:36 ?1次下載
    LIN<b class='flag-5'>協(xié)議</b>和<b class='flag-5'>物理層</b>要求