<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CPRI的數據幀結構與初始化流程

XILINX開發者社區 ? 來源:XILINX開發者社區 ? 2023-10-20 09:55 ? 次閱讀

本文作者:AMD 工程師Gary Pan

CPRI 是無線通信里的一個標準協議,連接 REC 和 RE 的通信。AMD有提供 CPRI IP 核。區別于其它通信協議,如以太網等,CPRI 是一個同步系統。

這就意味著兩端的 Master 和 Slave 應當是同源時鐘的,兩邊不存在頻差,并且內部延時也都是固定的,每次運行可以通過計算獲得,供上層應用使用。因此,可以讓 Master 有一個參考時鐘使用,而 Slave 則利用 GT 從串行數據中恢復出來的時鐘,經過外部一個 Cleanup 的 PLL,產生參考時鐘送回來,供 Slave 參考使用。這樣,兩端就能同源了。

注意,由于 AMD 的 GT 模塊限制,這里外部需要提供一個,在還沒有恢復鐘送到,就能自主產生相同頻率(但有 ppm 差異)時鐘的 PLL;等到 Slave 收到數據,同步并產生恢復時鐘后,外部的這個 PLL 也能將頻率漸漸對齊到恢復時鐘(即對端 Master 真正頻率上面),最終實現整個同步系統。

f215da58-6ea2-11ee-939d-92fbcf53809c.png

CPRI 的內部結構如下圖所示。CPRI 數據,主要指的是 IQ 數據通道,另外還有控制數據,包括 Vendor Specific,Slow C&M(即 HDLC 數),Fast C&M(即 Ethernet 數),這些數據共同分享 CPRI 物理層通道。

接下來,分析 CPRI 的數據幀格式,以幫助我們進一步了解這些不同類型的數據,是如何共同復用 CPRI 通道的。

f2232fd2-6ea2-11ee-939d-92fbcf53809c.png

無線通信中,UTRA-FDD 的 Chip Rate 為 3.84MHz(fc)。因此在 CPRI 的協議中,一個基本幀(Basic Frame)的時間長度就是 1/fc=260.416667ns。

那么,CPRI 的基本幀的結構就如下圖所示,如果是614.4Mbps 的 CPRI 應用,那 Y 就只會等于 0,數據為 Z.X.0 打頭,有 16 個 bytes 數組成,第 1 個 byte 一般做控制用,后 15 個 bytes 就是 IQ 數據。

如果是 2457.5Mbps 的 CPRI 應用,帶寬更大,Y 就可以為 0,1,2,3,按照下圖所展示的發送順序發數,一個基本幀里有 Z.X.0,Z.X.1,Z.X.2,Z.X.3,四個控制字,和 60 個 bytes 的 IQ 數據。

f22fb1c6-6ea2-11ee-939d-92fbcf53809c.png

進一步,CPRI 每隔 10ms 是一個完整的無線幀,其中由150 個超幀(hyperframe)組成,每個超幀又由 256 個上面的基本幀組成。

f244430c-6ea2-11ee-939d-92fbcf53809c.png

之前已經提到過,每個基本幀的第 1 個 byte 一般做控制用;下圖就展示了一個超幀,里面含有 256 個基本幀,這樣一個超幀里就有 256 個 bytes 可作控制用途,非 IQ 數據的 Control Words。

并且,由圖里的位置,可以看到每個 control words 的用途,如 Z.0.0 是用作同步的幀頭數據;Z.1.0 作為 Slow C&M,也就是 HDLC 數據用;而 Z.2.0,Z.66.0,Z.130.0,Z.194.0 這一排四個控制字,會在協議通信,對照信息的時候,都有各自不同的用途定義。

f2596f0c-6ea2-11ee-939d-92fbcf53809c.png

于是,我們結合 AMDIP,看下 CPRI 是如何收發數的。由于 CPRI 是一個完全同步的系統,用戶在使用 CPRI IP 的時候,需要主動每隔 10ms,給 IP 一個 nodebfn_tx_strobe 輸入。IP 會根據用戶此輸入,對應每隔一個基本幀的時間,給出一個 iq_tx_enable 輸出。

基本幀的開頭幾個 bytes 為 control words,來自于各個對應控制數據接口;用戶不用在 IQ 數據接口(iq_tx,iq_rx)管這幾個數,后面則是正常的 IQ 數據收發。

f26e47c4-6ea2-11ee-939d-92fbcf53809c.png

了解了 CPRI 的數據業務如何使用之后,再來看下 CPRI 的初始化流程。CPRI IP 支持自協商,根據用戶選擇的 IP 的可支持速率,從高到低依次下降,與對方互通,直到通信成功為止。

初始化狀態機的運行可以觀察 IP 的 stat_code[3:0] 輸出信號。該狀態機參考 CPRI 協議設計,如下。因此其具體細節,建議直接參照 CPRI 協議。例如,如果初始化狀態機卡在狀態 B 不前進,那意味著此時 IP 無法實現與對端任何通信,可能是 GT 初始化有問題,或者 link 沒有成功,可以先做下近端環回實驗。注意,如果這是一個 Slave 的 CPRI IP,需要先使能 Slave Transmit Enable,再做環回?;蛘呖ㄔ跔顟B C 的話,按照 CPRI 協議,是 Protocol Setup 兩邊沒有對應上,需要檢查 IP 的相關設置,或者看下兩邊收發的 Z.2.0 這個數是否是相一致。

最終,這個 stat_code 狀態走到 F 或者 G,IP 達到了 link 狀態,可以開始進行正常的業務數據收發工作了。

f282baec-6ea2-11ee-939d-92fbcf53809c.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • amd
    amd
    +關注

    關注

    25

    文章

    5257

    瀏覽量

    132816
  • 無線通信
    +關注

    關注

    56

    文章

    4289

    瀏覽量

    142618
  • pll
    pll
    +關注

    關注

    6

    文章

    745

    瀏覽量

    134639
  • CPRI
    +關注

    關注

    1

    文章

    10

    瀏覽量

    8658
  • 數據幀
    +關注

    關注

    0

    文章

    33

    瀏覽量

    6659

原文標題:開發者分享|CPRI 的數據幀結構與初始化流程

文章出處:【微信號:gh_2d1c7e2d540e,微信公眾號:XILINX開發者社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AD9364初始化問題及標準初始化流程?

    AD9364初始化好像不成功。能否請官方給出一個使用外部晶體(如33MHz),FDD的標準初始化例子。
    發表于 09-28 14:56

    labview順序結構中的初始化問題

    Labview中順序結構,我想讓第一執行完成后,程序初始化,再執行第二,以此類推執行九,因為是一個AO,AI口不停地接收發送,不
    發表于 12-25 11:37

    喂狗(重載計數值)初始化流程

    這里寫代碼片IWDG_Initializes();//初始化IWDG_ReloadCounter();//喂狗(重載計數值)初始化流程:void IWDG_Initializes(void){IWDG_Enable();//使能
    發表于 08-02 07:37

    【原創分享】變量的初始化技巧

    由于在嵌入式系統中必須考慮程序規模的問題,因此,對程序中的變量的初始化也需要進行慎重的考慮。在C語言中,基本數據結構(字符型、整型)的初始化相對簡單;數組、結構體屬于C語言中的構造類型
    發表于 09-08 15:28

    MSP文件的初始化流程是怎樣的

    MSP是指什么?MSP文件的初始化流程是怎樣的?
    發表于 12-10 06:17

    nrf51822藍牙初始化流程代碼

    初始化流程代碼、藍牙流程、服務具體講解
    發表于 12-13 07:28

    STM32F1 EXTI初始化流程

    1.EXTI初始化流程建立EXTI、GPIO、NVIC初始化結構體。 EXTI_InitTypeDefEXTI_InitStructure
    發表于 01-13 06:24

    NVIC初始化流程是怎樣的

    1.NVIC初始化流程配置中斷優先級分組void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);建立NVIC初始化結構
    發表于 01-17 07:08

    基本定時器定時初始化流程

    1.基本定時器定時初始化流程建立時基初始化結構體與中斷NVIC結構體TIM_TimeBaseInitTypeDefTIM_TimeBaseS
    發表于 01-20 06:02

    通用定時器PWM模式初始化流程

    1.通用定時器PWM模式初始化流程建立GPIO、時基、輸出比較結構體 GPIO_InitTypeDef GPIO_InitStructure
    發表于 01-25 07:44

    USART初始化流程是怎樣的

    1.USART初始化流程建立GPIO、USART、NVIC初始化結構體USART_InitTypeDefUSART_InitStructure
    發表于 02-14 07:38

    USART初始化結構體詳解

    USART 初始化結構體詳解標準庫函數對每個外設都建立了一個初始化結構體,比如USART_InitTypeDef,結構體成員用于設置外設工作
    發表于 02-22 06:08

    Display驅動初始化流程是怎樣的?

    Display驅動初始化流程是怎樣的?
    發表于 03-10 08:43

    Display驅動初始化流程是怎樣的?

    Display驅動初始化流程是怎樣的?
    發表于 03-10 07:08

    結構體數組的初始化

    char i; TEST data1[5] = {{1,2},{3,4},{5,6},{7,8},{9,10}};//經常使用的初始化方式TEST data2[5] ={0};//初始全為0,否則
    發表于 05-21 15:24
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>