如今,無(wú)線系統(tǒng)無(wú)處不在,無(wú)線設(shè)備和服務(wù)的數(shù)量也在持續(xù)增長(zhǎng)。完整RF系統(tǒng)的設(shè)計(jì)是一項(xiàng)多學(xué)科設(shè)計(jì)挑戰(zhàn),其中模擬RF前端是最關(guān)鍵的部分。然而,AD9361等集成RF收發(fā)器的可用性大大降低了此類設(shè)計(jì)的RF挑戰(zhàn)。這些收發(fā)器為模擬RF信號(hào)鏈提供數(shù)字接口,并允許輕松集成到ASIC或FPGA進(jìn)行基帶處理?;鶐?a target="_blank">處理器(BBP)允許用戶數(shù)據(jù)在終端應(yīng)用和收發(fā)器設(shè)備之間的數(shù)字域中進(jìn)行處理。使用系統(tǒng)建模工具(如 Simulink)也可以輕松設(shè)計(jì)基帶處理器設(shè)計(jì)。但是,新手用戶可能會(huì)發(fā)現(xiàn)很難理解和填寫(xiě)通信系統(tǒng)難題的這一部分。本文是設(shè)計(jì)和實(shí)現(xiàn)用于空中通信系統(tǒng)的簡(jiǎn)單RF基帶處理器的適度嘗試。該設(shè)計(jì)采用AD9361 FPGA參考設(shè)計(jì)框架,在AD-FMCOMMS2-EBZ和Xilinx ZC706平臺(tái)上實(shí)現(xiàn)。
本文的第一部分詳細(xì)介紹了該基帶處理器的一般設(shè)計(jì)原則。本節(jié)主要是對(duì)BBP的理論介紹。在第二部分中,使用ADI公司的AD9361 FPGA參考設(shè)計(jì)討論BBP的實(shí)際硬件實(shí)現(xiàn)。需要注意的是,主要設(shè)計(jì)目標(biāo)是使設(shè)計(jì)盡可能簡(jiǎn)單,并在實(shí)驗(yàn)室環(huán)境中演示快速無(wú)線數(shù)據(jù)傳輸。在使用并因此干擾RF頻譜方面存在法規(guī)和其他影響。
底座設(shè)計(jì)
典型的RF系統(tǒng)如圖1所示,直接RF系統(tǒng)除外。圖 1 中僅顯示了一條數(shù)據(jù)路徑,相反的方向是該數(shù)據(jù)路徑的鏡像。本文所討論的基帶處理器允許以這樣一種方式處理數(shù)據(jù),即在RF兩個(gè)系統(tǒng)之間通過(guò)空中傳輸數(shù)據(jù)。下面討論基本設(shè)計(jì)要求。
圖1.射頻系統(tǒng)框圖。
數(shù)據(jù)在兩個(gè)正交信號(hào) I&Q 上重復(fù)
請(qǐng)注意,載波是獨(dú)立且彼此異步的。因此,發(fā)射和接收載波之間存在相位和頻率偏移。這對(duì)接收器的解調(diào)有不利影響。一個(gè)重要的問(wèn)題是信號(hào)反轉(zhuǎn),正交信號(hào)可能會(huì)反轉(zhuǎn)它們的作用,因?yàn)槠浦芷谛缘睾喜⒑推???朔@種模糊性的簡(jiǎn)單方法是在兩個(gè)正交信號(hào)上重復(fù)相同的數(shù)據(jù)。
數(shù)據(jù)串行傳輸和接收(按位)
在大多數(shù)情況下,BBP的RF前端接口是DAC和ADC。這些是模擬信號(hào)的數(shù)字接口。因此,不可能簡(jiǎn)單地將數(shù)據(jù)發(fā)送到DAC輸入,并期望在ADC輸出端獲得相同的數(shù)據(jù)。數(shù)據(jù)串行傳輸,將單比特?cái)?shù)據(jù)映射到DAC的全分辨率。類似地,數(shù)據(jù)以串行方式接收,從ADC的全分辨率解映射。這提供了充足的冗余。如果這些是 16 位轉(zhuǎn)換器,接收器將從可能的 65536 數(shù)據(jù)集中做出 1 或 0 的決定。僅此一項(xiàng)就大大簡(jiǎn)化了解碼。
I&Q信號(hào)彼此正交
RF前端器件(如AD9361)是I/Q收發(fā)器。如果輸入是正交信號(hào),則這些設(shè)備工作得最好。這些器件通常沿兩條數(shù)據(jù)路徑具有內(nèi)部I/Q匹配和校正功能,以抵消它們之間的任何變化。慣例是實(shí)數(shù)(I)信號(hào)是余弦函數(shù),虛數(shù)(Q)信號(hào)是正弦函數(shù)。
調(diào)制方案為 BPSK
可以部署所有常見(jiàn)的方法,信號(hào)的幅度,頻率或相位調(diào)制。檢測(cè)相位差相對(duì)容易。由于數(shù)據(jù)是串行傳輸?shù)模虼俗匀贿x擇二進(jìn)制相移鍵控(BPSK)。
位間隔為 8 個(gè)樣本
數(shù)據(jù)需要時(shí)序信息,位間隔。最大可能的位間隔是采樣周期。為了使接收器保持簡(jiǎn)單,需要充足的時(shí)間來(lái)解碼信號(hào)并做出決定。最簡(jiǎn)單的時(shí)序恢復(fù)方法是過(guò)零和峰值檢測(cè)。在這種情況下,峰值將不一致。因此,選擇過(guò)零來(lái)檢測(cè)和跟蹤位間隔。兩個(gè)系統(tǒng)之間也存在載波差異。在某些情況下,樣本在用戶數(shù)據(jù)的任一端可能不明確。正弦信號(hào)的每半允許四個(gè)樣本,位間隔設(shè)置為八個(gè)樣本。因此,有效傳輸速率是采樣頻率除以 8。
數(shù)據(jù)沒(méi)有直流內(nèi)容
定時(shí)和相對(duì)相位恢復(fù)基于信號(hào)的過(guò)零。因此,各個(gè)信號(hào)需要不含任何直流成分。它還要求信號(hào)允許每個(gè)位間隔至少跨越一個(gè)零點(diǎn)。正弦信號(hào)具有這兩種特性,并且非常適合上述BPSK調(diào)制方案。
數(shù)據(jù)被打亂
用戶數(shù)據(jù)是任意的,很可能是一長(zhǎng)串 1 或 0。需要對(duì)數(shù)據(jù)進(jìn)行加擾,以便接收器的定時(shí)和相位恢復(fù)能夠更有效地跟蹤信號(hào)。
數(shù)據(jù)以數(shù)據(jù)包形式傳輸
接收器上的信號(hào)預(yù)計(jì)具有幅度、頻率和相位誤差,因?yàn)橄到y(tǒng)彼此異步。解調(diào)信號(hào)是傳輸信號(hào)相對(duì)于本地載波的相位變化。運(yùn)營(yíng)商可能會(huì)跟蹤一段時(shí)間,接受數(shù)據(jù)命中,然后再次跟蹤。因此,設(shè)計(jì)需要準(zhǔn)備好承受一些數(shù)據(jù)丟失。為了支持這一點(diǎn),數(shù)據(jù)以數(shù)據(jù)包的形式傳輸??梢灾貜?fù)幾個(gè)數(shù)據(jù)包來(lái)代替整個(gè)數(shù)據(jù)。
使用 CRC 驗(yàn)證數(shù)據(jù)包
數(shù)據(jù)包帶有循環(huán)冗余校驗(yàn) (CRC),以便允許接收方在不匹配時(shí)丟棄數(shù)據(jù)包并請(qǐng)求再次發(fā)送數(shù)據(jù)包。
在每個(gè)前導(dǎo)碼期間進(jìn)行時(shí)序和相位校正
數(shù)據(jù)包標(biāo)頭帶有一個(gè)前導(dǎo)碼,用于將其與接收到的數(shù)據(jù)流區(qū)分開(kāi)來(lái)。接收器還使用該前導(dǎo)碼來(lái)復(fù)位信號(hào)的時(shí)序和相位信息,以解調(diào)數(shù)據(jù)包數(shù)據(jù)。
內(nèi)置性能指標(biāo)
接收方還支持統(tǒng)計(jì)計(jì)數(shù)器,例如接收、丟棄或更正的數(shù)據(jù)包數(shù)。這些計(jì)數(shù)器用于測(cè)量和監(jiān)控性能指標(biāo),包括誤碼率和有效數(shù)據(jù)率。
總之,數(shù)據(jù)以數(shù)據(jù)包的形式串行傳輸和接收。數(shù)據(jù)包帶有前導(dǎo)碼和 CRC。數(shù)據(jù)在收發(fā)器設(shè)備之前的中間正交信號(hào)上進(jìn)行BPSK調(diào)制和解調(diào)。中間信號(hào)頻率,因此數(shù)據(jù)的比特率是采樣率的八分之一。具有上述設(shè)計(jì)細(xì)節(jié)的基帶處理器模塊如圖2和圖3所示。
圖2.BBP傳輸功能框圖
圖3.BBP接收功能框圖。
發(fā)送器讀取數(shù)據(jù)字節(jié)(字符寬度),并將其轉(zhuǎn)換為帶有標(biāo)頭或前導(dǎo)碼的數(shù)據(jù)包。CRC 被添加到數(shù)據(jù)包的尾端。然后對(duì)數(shù)據(jù)包數(shù)據(jù)進(jìn)行加擾和序列化。然后,單比特?cái)?shù)據(jù)在與收發(fā)器接口之前對(duì)余弦(I)和正弦(Q)功能進(jìn)行相位調(diào)制。
在接收方向上,離線模塊恢復(fù)并跟蹤調(diào)制信號(hào)的時(shí)間間隔和相對(duì)相位。此信息用于從輸入的ADC樣本中恢復(fù)串行數(shù)據(jù)。然后將它們組裝成數(shù)據(jù)包并進(jìn)行解擾。在數(shù)據(jù)包的末尾,比較CRC,如果不匹配,則丟棄數(shù)據(jù)包。如果CRC匹配,則數(shù)據(jù)將傳遞給最終用戶。
實(shí)現(xiàn)
BBP 設(shè)計(jì)在硬件中實(shí)現(xiàn)和測(cè)試。該硬件是兩塊評(píng)估板的組合:采用 Zynq FPGA 器件的賽靈思 ZC706 評(píng)估板和采用 AD9361 收發(fā)器的 AD-FMCOMMS3-EBZ 評(píng)估板。ADI公司提供了支持該硬件的完整參考設(shè)計(jì)。這種開(kāi)源設(shè)計(jì)是免費(fèi)提供的,完全支持,并在主要工具版本中更新。硬件詳細(xì)信息可在以下 URL 中找到:
ZC706
AD-FMCOMMS3-EBZ
Zynq SOC
AD9361
ADI GitHub 存儲(chǔ)庫(kù)
ZC706 和 AD-FMCOMMS3-EBZ HDL 參考設(shè)計(jì)
AXI AD9361 IP
ADI參考設(shè)計(jì)是支持Linux框架的嵌入式系統(tǒng)。它由ARM處理器周圍的各種外圍設(shè)備組成。AD9361器件與axi_AD9361 IP外設(shè)接口。它在RF器件和系統(tǒng)存儲(chǔ)器之間傳輸原始采樣數(shù)據(jù)。??
外圍設(shè)備和設(shè)備通過(guò) Linux 內(nèi)核驅(qū)動(dòng)程序進(jìn)行初始化和控制。BBP 作為與axi_AD9361接口的另一個(gè) IP 外設(shè)實(shí)現(xiàn)。BBP IP因歷史原因被命名為axi_xcomm2ip。Linux 中的用戶空間應(yīng)用程序用于控制、發(fā)送和接收系統(tǒng)之間的數(shù)據(jù)。
在ADI參考設(shè)計(jì)中,axi_AD9361 IP與發(fā)射方向的解包模塊(util_upack)和接收方向的包裝模塊(util_cpack)接口。在發(fā)射方向,BBP數(shù)據(jù)插入解包模塊和AD9361內(nèi)核之間。為了不影響默認(rèn)數(shù)據(jù)路徑,BBP 支持可選的數(shù)據(jù)路徑多路復(fù)用器來(lái)選擇解壓縮的數(shù)據(jù)源或 BBP 數(shù)據(jù)源。BBP 允許將參考設(shè)計(jì)數(shù)據(jù)路徑作為默認(rèn)路徑,并且僅在啟用時(shí)選擇 BBP 數(shù)據(jù)源。在接收方向,BBP僅與AD9361內(nèi)核接口。參考設(shè)計(jì)數(shù)據(jù)路徑不受影響。這允許框架工作不受阻礙地啟動(dòng)和設(shè)置系統(tǒng)。系統(tǒng)設(shè)置完成后,BBP 將啟用,以通過(guò)覆蓋默認(rèn)數(shù)據(jù)路徑來(lái)允許數(shù)據(jù)傳輸。ADI參考設(shè)計(jì)中BBP的框圖如圖4所示。
圖4.BBP IP 框圖。
本文中討論的設(shè)計(jì)、初始化和數(shù)據(jù)傳輸使用此硬件。該設(shè)置只需要一對(duì)HDMI顯示器,一個(gè)鍵盤(pán)和鼠標(biāo)以及天線。這些系統(tǒng)彼此完全異步,但確實(shí)需要相同的設(shè)置。數(shù)據(jù)在每個(gè)方向上通過(guò)不同的載體傳輸。設(shè)備1的發(fā)射載波頻率和設(shè)備2的接收載波頻率相同,但在另一個(gè)方向上不同。但是,如果在環(huán)回中使用單個(gè)設(shè)備,則發(fā)射和接收載波必須具有相同的頻率。BBP的HDL設(shè)計(jì)采用ADI庫(kù)模塊。?
控制(微處理器)接口
AXI-Lite 接口用于控制和監(jiān)視處理器的 BBP。該接口模塊使用ADI公共庫(kù)(hdl/library/common/up_axi.v)中的up_axi模塊簡(jiǎn)單推斷。該模塊將 AXI-Lite 接口轉(zhuǎn)換為簡(jiǎn)單的存儲(chǔ)器,如讀寫(xiě)總線。內(nèi)部寄存器和存儲(chǔ)器的添加方式與任何其他ADI IP一樣。寄存器映射詳見(jiàn)表1。
地址 | 寄存器名稱 | 類型 | ||
領(lǐng)域 | 名字 | 描述 | 違約 | |
0x000 | XCOMM2IP_VERSION | 反滲透 | ||
31:0 | 版本 | IP 版本。 | 0x40063 | |
0x008 | XCOMM2IP_SCRATCH | 烏爾曼 | ||
31:0 | 抓 | 刮刮樂(lè)寄存器 | 0x0 | |
0x800 | XCOMM2IP_TX_RESET | 烏爾曼 | ||
0 | TX_RESET | 如果設(shè)置為 0x1,則重置傳輸。此位必須設(shè)置為 0x0 才能正常運(yùn)行。 | 0x1 | |
0x804 | XCOMM2IP_TX_ENABLE | 烏爾曼 | ||
0 | TX_ENABLE | 如果設(shè)置為 0x0,則數(shù)據(jù)路徑不受影響,解壓縮數(shù)據(jù)將傳輸?shù)?DAC。如果設(shè)置為0x1,則BBP數(shù)據(jù)傳輸?shù)紻AC。 | 0x0 | |
0x808 | XCOMM2IP_TX_REQ | 烏爾曼 | ||
0 | TX_REQ | 如果由軟件設(shè)置,則在傳輸方向上啟動(dòng)數(shù)據(jù)包傳輸。傳輸完成后,硬件會(huì)自行清除此位。 | 0x0 | |
0x80C-0x87C | XCOMM2IP_TX_PKT_DATA_3-XCOMM2IP_TX_PKT_DATA_31 | W | ||
7:0 | TX_PKT_DATA_3-TX_PKT_DATA_31 | 分組數(shù)據(jù)字節(jié)為3至31。硬件將前三個(gè)字節(jié)用于標(biāo)頭,最后一個(gè)字節(jié)用于 CRC。 | W | |
0xC00 | XCOMM2IP_RX_RESET | 烏爾曼 | ||
0 | RX_RESET | 如果設(shè)置為 0x1,則重置接收。此位必須設(shè)置為 0x0 才能正常運(yùn)行。 | 0x1 | |
0xC08 | XCOMM2IP_RX_REQ | 烏爾曼 | ||
0 | RX_REQ | 如果由硬件設(shè)置,則表示已收到數(shù)據(jù)包,需要由軟件讀取。軟件必須在讀取數(shù)據(jù)包數(shù)據(jù)后清除此位。所有后續(xù)數(shù)據(jù)包都將被丟棄,直到軟件清除此位。 | 0x0 | |
0xC0C-0xC7C | XCOMM2IP_RX_PKT_DATA_3-XCOMM2IP_RX_PKT_DATA_31 | W | ||
7:0 | RX_PKT_DATA_3-RX_PKT_DATA_31 | 分組數(shù)據(jù)字節(jié)為3至31。硬件將前三個(gè)字節(jié)用于標(biāo)頭,最后一個(gè)字節(jié)用于 CRC。 | W |
下面介紹了up_axi模塊端口及其端口映射。
up_rstn:AXI 接口復(fù)位(異步低電平有效),連接到s_axi_aresetn。
up_clk:AXI 接口時(shí)鐘,連接到s_axi_aclk。
up_axi_*:AXI 接口信號(hào),連接到等效的 s_axi_* 端口。
up_wreq、up_waddr、up_wdata up_wack:內(nèi)部寫(xiě)入接口,up_wreq信號(hào)被置位以指示寫(xiě)入請(qǐng)求以及地址和數(shù)據(jù)。請(qǐng)求需要通過(guò)up_wack端口進(jìn)行確認(rèn)。
簡(jiǎn)單的寄存器寫(xiě)入實(shí)現(xiàn)如下。
always @(negedge up_rstn or posedge up_clk)
begin
if (up_rstn == 0) begin
up_wack <= ‘d0;
up_reg0 <= UP_REG0_RESET_VALUE;
end else begin
up_wack <= up_wreq_s;
if ((up_wreq_s == 1’b1) && (up_waddr == UP_ REG0_ADDRESS)) begin
up_reg0 <= up_wdata[UP_REG0_WIDTH-1:0];
end
end
end
該模塊在兩者之間執(zhí)行地址轉(zhuǎn)換。AXI 接口使用字節(jié)地址,但內(nèi)部總線使用 DWORD 地址。結(jié)果是up_axi模塊刪除 AXI 地址的兩個(gè)最低有效位以生成內(nèi)部 DWORD 地址。
up_rreq、up_raddr、up_rdata up_rack:內(nèi)部讀取接口(up_rreq信號(hào))被斷言為指示讀取請(qǐng)求以及地址。請(qǐng)求需要通過(guò)up_rack端口以及讀取的數(shù)據(jù)進(jìn)行確認(rèn)。
上面為讀取實(shí)現(xiàn)的相同寄存器如下所示。
always @(negedge up_rstn or posedge up_clk)
begin
if (up_rstn == 0) begin
up_rack <= ‘d0;
up_rdata <= ‘d0;
end else begin
up_rack <= up_rreq_s;
if ((up_rreq_s == 1’b1) && (up_raddr == UP_ REG0_ADDRESS)) begin
up_rdata <= up_reg0;
end else begin
up_rdata <= 32‘d0;
end
end
end
相同的地址轉(zhuǎn)換也適用于讀取。讀取數(shù)據(jù)僅在請(qǐng)求時(shí)驅(qū)動(dòng),否則設(shè)置為零。這是因?yàn)?strong>up_axi模塊將各個(gè)地址塊的單個(gè)讀取數(shù)據(jù)傳遞到OR門(mén)。因此,未選擇的塊需要將讀取數(shù)據(jù)驅(qū)動(dòng)為零。
BBP 有三個(gè)地址空間,如上面的寄存器映射表中所列。公共寄存器空間映射到0x000,發(fā)送(DAC)映射到0x800(0x200),接收(ADC)映射到0xC00(0x300)。軟件(Linux用戶空間應(yīng)用程序)期望將傳輸?shù)臄?shù)據(jù)包數(shù)據(jù)寫(xiě)入緩沖區(qū),并從另一個(gè)緩沖區(qū)讀取接收到的數(shù)據(jù)包數(shù)據(jù)。數(shù)據(jù)包大小選擇為 32 字節(jié),帶有 3 字節(jié)前導(dǎo)碼和 1 字節(jié) CRC。
數(shù)據(jù)接口
AD9361接口內(nèi)核由兩對(duì)16位I/Q數(shù)據(jù)組成,用于接收和發(fā)送方向的兩個(gè)通道。內(nèi)核與AD9361數(shù)字接口的運(yùn)行時(shí)鐘相同。在2R2T模式下,這是采樣率的4×。在1R1T模式下,這是采樣率的2×。有效數(shù)據(jù)速率由有效信號(hào)控制。因此,在2R2T模式下,每四個(gè)時(shí)鐘置位一次有效。在 1R1T 模式下,每?jī)蓚€(gè)時(shí)鐘置位一次有效。BBP 設(shè)計(jì)用于支持 2R2T 和 1R1T 模式。它使用單個(gè)發(fā)射和接收通道。內(nèi)部邏輯在2R2T和1R1T模式下均以采樣速率運(yùn)行。然后,BBP 以時(shí)鐘頻率與接口內(nèi)核傳輸數(shù)據(jù)。這樣做是為了演示BBP內(nèi)的時(shí)鐘轉(zhuǎn)換。在許多情況下,用戶可能希望以采樣速率運(yùn)行BBP邏輯,而不管收發(fā)器的接口速率如何。
采樣頻率下的內(nèi)部時(shí)鐘使用 Xilinx 基元 BUFR 和 BUFG 生成。BUFR是一個(gè)分頻器,BUFG是一個(gè)高扇出時(shí)鐘緩沖器。也可以為此目的使用MMCM。內(nèi)部時(shí)鐘的生成方式如下。
parameter XCOMM2IP_1T1R_OR_2T2R_N = 0; localparam XCOMM2IP_SCLK_DIVIDE = (XCOMM2IP_1T1R_OR_2T2R_N == 1) ? “2” : “4”;
BUFR #(.BUFR_DIVIDE(XCOMM2IP_SCLK_DIVIDE)) i_bufr (
.CLR (1’b0),
.CE (1’b1),
.I (clk),
.O (s_clk_s));
BUFG i_bufg (
.I (s_clk_s),
.O (s_clk));
使用BUFR和BUFG可確保時(shí)鐘的頻率鎖定,但會(huì)犧牲相位確定性。最大相位模糊度是接口時(shí)鐘的單個(gè)周期。這很容易通過(guò)帶有同步信號(hào)的四級(jí)寄存器陣列進(jìn)行補(bǔ)償。但是,該設(shè)計(jì)使用雙端口RAM模塊來(lái)實(shí)現(xiàn)數(shù)據(jù)傳輸。這是有意作為常見(jiàn)信號(hào)處理要求的用例示例完成的。雙端口RAM元件使用ADI庫(kù)存儲(chǔ)器模塊(ad_mem)進(jìn)行推斷。
傳輸接口
在傳輸方向上,處理器將數(shù)據(jù)包數(shù)據(jù)寫(xiě)入緩沖區(qū)(參見(jiàn)上面的寄存器映射表)。然后,它請(qǐng)求硬件發(fā)送此數(shù)據(jù)包。BBP 不斷向設(shè)備發(fā)送數(shù)據(jù)包。在數(shù)據(jù)包的開(kāi)頭,它會(huì)檢查是否有任何請(qǐng)求。如果沒(méi)有掛起的請(qǐng)求,它將傳輸空閑數(shù)據(jù)包。如果請(qǐng)求掛起,則會(huì)讀取并傳輸數(shù)據(jù)包緩沖區(qū)。
發(fā)送邏輯使用自由運(yùn)行的位計(jì)數(shù)器以位寬運(yùn)行。當(dāng)位計(jì)數(shù)器0x0時(shí),緩沖區(qū)讀取地址將更新。由于處理器請(qǐng)求可能在數(shù)據(jù)包傳輸期間的任何時(shí)間發(fā)生,因此會(huì)立即捕獲并在數(shù)據(jù)包傳輸開(kāi)始時(shí)清除該請(qǐng)求。在數(shù)據(jù)包傳輸開(kāi)始時(shí),如果請(qǐng)求處于掛起狀態(tài),則會(huì)將其確認(rèn)回處理器接口。該請(qǐng)求用于在緩沖區(qū)數(shù)據(jù)或空閑數(shù)據(jù)之間進(jìn)行選擇。
圖5.傳輸數(shù)據(jù)路徑。
數(shù)據(jù)包數(shù)據(jù)的前兩個(gè)字節(jié)設(shè)置為 0xfff0。第三個(gè)字節(jié)用于指示空閑 (0xc5) 或數(shù)據(jù) (0xa6) 數(shù)據(jù)包。CRC 字節(jié)作為數(shù)據(jù)包的最后一個(gè)字節(jié)插入。CRC 多項(xiàng)式是 x8 + x2 + x + 1。除標(biāo)頭外的所有字節(jié)都將被打亂。加擾多項(xiàng)式與 SONET/SDH (x7 + x6 + 1) 相同。
余弦和正弦查找表用于生成調(diào)制載波。位間隔等于八個(gè)樣本中信號(hào)的完整周期(0至2π)。位數(shù)據(jù)用于反轉(zhuǎn)信號(hào)。然后將數(shù)據(jù)寫(xiě)入一個(gè)小緩沖器,并使用接口時(shí)鐘根據(jù)來(lái)自AD9361接口內(nèi)核的有效信號(hào)進(jìn)行讀取。
接收接口
在接收方向,I/Q數(shù)據(jù)被監(jiān)視0xfff0的報(bào)頭模式。這是在數(shù)據(jù)包傳輸中出現(xiàn)一次的唯一模式??梢园l(fā)送數(shù)據(jù)包數(shù)據(jù),以便加擾器輸出重復(fù)此模式。軟件不鼓勵(lì)和防止這種情況。該系列連續(xù)12位間隔的同相數(shù)據(jù)序列用于通過(guò)定時(shí)恢復(fù)模塊復(fù)位和跟蹤接收器時(shí)序和相位。因此,它重置其時(shí)序計(jì)數(shù)器并將其相位值設(shè)置為 0x1。此序列之后的第一個(gè)反轉(zhuǎn)被認(rèn)為是0x0的。在此之后,定時(shí)恢復(fù)模塊在整個(gè)數(shù)據(jù)包傳輸過(guò)程中保持其狀態(tài)。
數(shù)據(jù)恢復(fù)模塊對(duì)信號(hào)進(jìn)行平均,并對(duì)信號(hào)的當(dāng)前相位做出決定。然后將其與時(shí)序恢復(fù)模塊跟蹤的相對(duì)相位進(jìn)行比較。在發(fā)生沖突的情況下,決策基于過(guò)去對(duì)信號(hào)的變化。這是因?yàn)闆_突通常由相位切換引起。
圖6.接收數(shù)據(jù)路徑。
然后將解調(diào)的位數(shù)據(jù)組裝成字節(jié)并進(jìn)行解擾。如果數(shù)據(jù)為空,則數(shù)據(jù)將寫(xiě)入傳輸緩沖區(qū)。CRC 在數(shù)據(jù)包末尾進(jìn)行驗(yàn)證。如果匹配并且寫(xiě)入了傳輸緩沖區(qū),則會(huì)通知處理器接口。該軟件應(yīng)監(jiān)視此請(qǐng)求,如果設(shè)置,則通過(guò)讀取其內(nèi)容來(lái)清空緩沖區(qū)。然后,它必須清除請(qǐng)求以允許進(jìn)一步的數(shù)據(jù)包傳輸。
審核編輯:郭婷
-
處理器
+關(guān)注
關(guān)注
68文章
19286瀏覽量
229809 -
收發(fā)器
+關(guān)注
關(guān)注
10文章
3428瀏覽量
105999 -
RF
+關(guān)注
關(guān)注
65文章
3055瀏覽量
167015
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論