寫在前面
本文是本系列的第六篇,本文主要介紹FPGA常用運算模塊-DDS信號發生器,xilinx提供了相關的IP以便于用戶進行開發使用。
簡介
數字合成器 (DDS) 編譯器內核通過 AXI4-Stream 兼容接口實現了高性能、優化的相位生成和相位到正弦曲線電路。IP源可用于許多應用的正弦波形。 DDS 由相位發生器和 SIN/COS 查找表(相位到正弦波轉換)組成。 這些部件可單獨使用或使用此內核組合使用。
概述
直接數字合成器(DDS)或數控振蕩器(NCO)是許多數字通信系統中的重要部件。正交合成器用于構造數字下變頻器和上變頻器、解調器以及實現各種類型的調制方案,包括PSK(相移鍵控)、FSK(頻移鍵控)和MSK(最小移位鍵控)。數字生成復數或實數正弦波的常用方法采用查找表方案。查找表存儲正弦曲線的樣本。數字積分器用于生成合適的相位參數,該相位參數由查找表映射到所需的輸出波形。簡單的用戶界面接受系統級參數,如所需的輸出頻率和生成波形的雜散抑制。
特性
相位發生器和 SIN/COS 查找表可以單獨生成或與可選抖動一起生成,以提供完整的 DDS 解決方案。
- 光柵化功能消除了相位截斷造成的相位噪聲。
- 正弦、余弦或正交輸出。
- 可選的每通道累積相位重新同步。
- 查找表可以存儲在分布式 RAM 或塊 RAM 中。
- 可選的相位抖動擴展了譜線能量,以獲得更大的無雜散動態范圍 (SFDR)。
- 相位抖動或泰勒級數校正選項使用最少的 FPGA 資源提供高動態范圍信號。 支持從 18 dB 到 150 dB 的 SFDR。
- 多達 16 個獨立的時分復用通道。
- 使用高達 48 位相位累加器和 DSP Slice 或 FPAGA 邏輯選項的精細頻率分辨率。
- 3 位到 26 位有符號輸出采樣精度。
IP框圖
下圖提供了DDS編譯器IP的框圖。核心由兩個主要部分組成,一個相位發生器和一個正弦/余弦LUT,可以單獨使用,也可以與可選抖動發生器一起使用,以創建DDS功能。支持時分(TDM)多信道能力,具有獨立可配置的相位增量和偏移參數。
相位發生器
相位發生器由一個累加器和一個可選的加法器組成,以提供相位偏移的加法。當核心定制時,相位增量(PINC)和相位偏移(POFF)可以獨立配置為固定、可編程(使用配置通道)或流式(使用輸入相位通道)。
當設置為固定時,DDS輸出頻率在核心定制時設置完成后無法調整。
當設置為可編程時,CONFIG channel TDATA(配置信道TDATA)字段有一個子字段用于相關輸入(PINC或POFF),或者如果兩者都被選擇為可編程,則兩者都有。如果PINC和POFF均未設置為可編程,則沒有配置通道。
設置為流式傳輸時,輸入相位通道TDATA字段有一個子字段用于相關輸入(PINC或POFF),如果兩者都被選擇為流式傳輸,則兩者都有。如果PINC和POFF均未設置為流式,且磁芯配置為具有相位發生器,則不存在輸入相位通道。
當PINC設置為stream模式時,可以配置可選的重新同步流輸入。斷言時,該信號重置相關信道的累積相位。
選擇光柵化模式時,輸入或配置的PINC和POFF的硬件值必須為0到模數-1。這相當于一個完整的圓。因此,對于負PINC或POFF值,將模量添加到所需的負值,以映射到所需的范圍。例如,模數=100時,所需范圍為0到99。對于該模量,-90°的角度為-25。加100等于75(270°)。
使用系統參數時,PINC和POFF不是直接輸入的,而是根據輸入輸出頻率和相位角計算得出的。注意,對于較小的模數值,可用值相距相對較遠,因此實際輸出頻率或相位角可能與“附加摘要”選項卡中顯示的所需值存在顯著差異。
SIN/COS LUT
當僅配置為SIN/COS LUT時,不實現相位發生器,相位輸入信號使用輸入相位通道輸入,并使用查找表轉換為正弦和余弦輸出。利用正弦波的對稱性可以實現高效的內存使用。核心可以配置為僅正弦輸出、僅余弦輸出或兩者(正交)輸出。每個輸出都可以獨立配置為否定。使用可選的泰勒級數校正可以提高精度。它利用FPGA系列上的DSP片,支持它們以高速操作實現高SFDR。
Phase Generator and SIN/COS LUT (DDS)
相位發生器與正弦/余弦LUT結合使用,以提供相位截斷DDS或泰勒級數校正DDS。可在兩個模塊之間添加可選抖動發生器,以提供相位抖動DDS。
端口描述
DDS IP的引腳如下圖所示。
端口名 | 輸入輸出 | 是否可配置 | 描述 |
---|---|---|---|
aclk | Input | No | 上升沿時鐘 |
aclken | Input | Yes | 高時鐘使能 |
aresetn | Input | Yes | 低同步清除。總是優先于aclken。aresetn必須拉低至少兩個周期 |
s_axis_config_tvalid | Input | Yes | 配置通道的TVALID |
s_axis_config_tready | Output | Yes | 配置通道的TREADY |
s_axis_config_tdata | Input | Yes | 配置通道的TDATA |
s_axis_config_tlast | Input | Yes | 配置通道的TLAST |
s_axis_phase_tvalid | Input | Yes | 輸入相位通道的TVALID |
s_axis_phase_tready | Output | Yes | 輸入相位通道的TREADY |
s_axis_phase_tdata | Input | Yes | 輸入相位通道的TDATA |
s_axis_phase_tuser | Input | Yes | 輸入相位通道的TUSER |
s_axis_phase_tlast | Input | Yes | 輸入相位通道的TLAST |
m_axis_phase_tvalid | Output | Yes | 輸出相位通道的TVALID |
m_axis_phase_tready | Input | Yes | 輸出相位通道的TREADY |
m_axis_phase_tdata | Output | Yes | 輸出相位通道的TDATA |
m_axis_phase_tuser | Output | Yes | 輸出相位通道的TUSER |
m_axis_phase_tlast | Output | Yes | 輸出相位通道的TLAST |
m_axis_data_tvalid | Output | Yes | 輸出相位通道的TVALID |
m_axis_data_tready | Input | Yes | 輸出相位通道的TREADY |
m_axis_data_tdata | Output | Yes | 輸出相位通道的TDATA |
m_axis_data_tuser | Output | Yes | 輸出相位通道的TUSER |
m_axis_data_tlast | Output | Yes | 輸出相位通道的TLAST |
event_s_phase_ tlast_missing | Output | No (But leave unconnected to remove associated circuitry) | 當最后一個通道(在多通道配置中)的s_axis_phase channel傳輸未斷言tlast時斷言。 |
event_s_phase_ tlast_unexpected | Output | No | 當TLAST被斷言用于傳輸到s_axis_phase channel(不是最后一個信道)(在多信道配置中)時被斷言。 |
event_s_phase_ chanid_incorrect | Output | No | 當通道字段s_axis_phase channel(中TUSER的子字段)與通道號的內部預期不一致時斷言。 |
event_pinc_invalid | Output | No | 當要累積的PINC值超出范圍時斷言。僅適用于光柵化配置。 |
event_poff_invalid | Output | No | 當要累積的POFF值超出范圍時斷言。僅適用于光柵化配置。 |
event_phase_ in_ invalid | Output | No | 當相位_In的值超出范圍時斷言。僅適用于光柵化和SIN_COS_LUT配置。 |
event_s_config_ tlast_missing | Output | No | 當最后一次傳輸(針對最后一個通道)到s_axis_config_channel通道時未伴隨TLAST斷言時斷言。 |
event_s_config_ tlast_unexpected | Output | No | 當傳輸到s_axis_config_channel的傳輸不是與最后一個通道關聯的傳輸時,已斷言TLAST。 |
DDS理論
DDS Compiler 內核的標準模式使用相位截斷,如下圖所示:
積分器(組件 D1 和 A1)計算通過查找表 T1 映射到正弦曲線(可能是復數)的相位斜率。 量化器 Q1 簡單地截斷,接受高精度相位角并生成如圖所示角度的較低精度表示。 該值被提供給執行從相空間到時間的映射的查找表的地址端口。通過從查找表中調用正弦曲線樣本形成的信號的保真度受到過程的相位和幅度量化的影響。 查找表的深度和寬度分別影響信號的相位角分辨率和幅度分辨率。
直接數字合成器使用具有適當查找表的尋址方案來形成任意頻率正弦曲線的樣本。 如果需要模擬輸出,DDS 會將這些樣本提供給數模轉換器 (DAC) 和低通濾波器,以獲得具有特定頻率結構的模擬波形。 當然,樣本也常直接用于數字領域。 查找表傳統上存儲余弦和正弦波的均勻間隔樣本。 這些樣本代表長度為原型復數正弦曲線的單個周期,并對應于正弦曲線參數的特定值,如下所示:
可以利用基礎波形中的四分之一波對稱性來構建使用縮短表的 DDS。 在這種情況下,量化相位角的兩個最高有效位用于執行象限映射。 由于內存需求被最小化,這種實現導致資源效率更高的實現,提供更少的 FPGA 塊 RAM 或減少的分布式內存。 根據內核定制參數,DDS 內核會在適當的時候自動采用四分之一波或半波對稱。
DDS 的光柵化操作模式不會截斷累積相位。光柵化操作適用于所需頻率是系統時鐘的有理部分的配置(輸出頻率 = 系統頻率 * N/M,其中 0 < N < M)。 支持從 9 到 16384 的 M 值。 SIN/COS LUT 被相應地配置為從 0 到 M-1 的值,它描述了一個完整的圓。 因為在光柵化操作模式中沒有相位截斷,所以不需要抖動或泰勒校正,因為它們減輕了相位截斷的影響。 在光柵化操作中,相位噪聲顯著降低。 因此,輸出相角分辨率和幅度分辨率僅由LUT表輸出寬度決定。 在光柵化模式下,在適用的情況下利用象限對稱來減少內存使用。
輸出頻率
介紹在標準模式或光柵化模式下使用內核時的輸出頻率。
標準操作模式
DDS 波形的輸出頻率fout是系統時鐘頻率 、相位寬度(即相位累加器中的位數 () 和相位增量值 :
的函數。 以HZ為單位的輸出頻率定義為:
計算fout的示例:
生成輸出頻率所需的相位增量值為:
如果 DDS 內核被時分復用以執行多個通道,則每個通道的有效時鐘頻率會降低。 對于 C 通道,所需的相位增量為:
光柵化操作模式
單通道配置的 DDS 波形的輸出頻率 fout 是系統時鐘頻率 fclk、模數 M 和相位增量值 ΔΘ 的函數。 以赫茲為單位的輸出頻率定義為:
示例,DDS參數如下:
- fclk = 120 MHz
- M = 1000
- ?Θ = 12 (decimal)
然后輸出頻率計算如下:
產生輸出頻率 fout Hz 所需的相位增量值 ΔΘ 為:
如果 DDS 內核被時分復用以執行多個通道,則每個通道的有效時鐘頻率會降低。 對于 C 通道,所需的相位增量為:
頻率分辨率
本節介紹在標準模式或光柵化模式下使用內核時的頻率分辨率。
標準操作模式
合成器的頻率分辨率是時鐘頻率和相位累加器中使用的位數的函數。 頻率分辨率可以通過以下方式確定:
例如,對于以下 DDS 參數:
- fclk = 120 MHz
- BΘ(n) = 32,頻率分辨率為:
在時分多通道的情況下,頻率分辨率通過通道數來提高,如下:
光柵化操作模式
合成器的頻率分辨率 Δf 是時鐘頻率和模數的函數。 頻率分辨率可以通過以下方式確定:
例如,對于以下 DDS 參數:
- fclk = 120 MHz
- M = 1000
頻率分辨率為:
在時分多通道的情況下,頻率分辨率通過通道數來提高,如下:
相位增量
對于標準模式,0 到 2 ^N-1 范圍內的相位增量值描述了 [0,360)° 范圍(其中 N 是相位累加器中的位數)。 對于光柵化模式,由于內部實現,相位增量值必須被認為是無符號的。相位增量值 [0 到 Modulus-1] 描述了范圍 [0,360]。
相位增量項定義了合成器的輸出頻率。 考慮具有以下參數化的標準 DDS:
要生成頻率為19MHz的正弦曲線,所需的相位增量為:
該值必須截斷為整數,給出以下實際頻率:
考慮具有以下參數化的光柵化模式的 DDS:
- Fclk = 100 MHz
- M(模數)= 1536
要生成頻率為19MHz的正弦曲線,所需的相位增量為:
最接近的整數值為 292,給出以下實際頻率:
示例
示例 1
在標準模式下,系統時鐘為 1 MHz 的單通道 DDS,頻率分辨率為 1 Hz,相位寬度為 20 位。 要合成 23.4 kHz 的輸出,必須在用戶界面中輸入 0.0234 MHz 的輸出頻率值,然后返回十六進制值 5FD8,即十進制 24536。這給出了 24536/220 *1 MHz = 23399.35 Hz 的合成頻率。 如果應用需要通過 8 個相位偏移之一對其進行調制,則相位偏移總線只需 3 位精度,但這些必須是相位偏移輸入的前 3 位。 因此,1/8 個周期的相位偏移將在用戶界面中輸入為 0.125。 這將返回值 20000(十六進制)。 這可以在 3 位總線上輸入為 001(二進制)。
示例 2(需要負頻率的 DDS)
在標準模式下,具有 100 MHz 系統時鐘的單通道 DDS,頻率分辨率為 1 Hz,相位寬度為 25 位。 需要 -3 MHz、-1 MHz、1 MHz 和 3 MHz 的頻率。 Fs 是每個通道的頻率,即系統時鐘/通道數,即 25 MHz。 負頻率混疊到每個 Fs Hz。 在用戶界面中輸入的合法范圍是 0 到 F s,因此本示例中輸入的頻率必須分別為 22 MHz (Fs-3 MHz)、24 MHz (Fs-1 MHz)、1 MHz 和 3 MHz。
協議說明
除了事件信號,所有進出 DDS 的接口都是 AXI4-Stream 接口。事件信號在檢測到它們描述的事件時被注冊和斷言。握手機制遵守AXI-Stream協議。不再詳細介紹。
CONFIG channel
CONFIG channel(s_axis_config_t*) 取代了 DDS Compiler v4.0 的編程接口。 對于 CONFIG channel,有向量的概念。 所討論的向量是所有通道的一組完整值(PINC 和/或 POFF)。 CONFIG 通道是非阻塞的,這意味著 DDS 編譯器的其他通道不會等待來自 CONFIG 通道的數據。 要對 CONFIG 通道進行編程,必須進行 N 次傳輸,其中 N 是通道數。 每次傳輸都包含每個通道的 PINC 和/或 POFF 值,從通道 0 開始按順序排列。只有最后一次傳輸,通道(索引 N-1)必須使 TLAST 有效。 不這樣做會導致 ·或 event_s_config_tlast_unexpected 輸出在一個周期內被斷言。 數據包僅在完成時才被視為已接收。 只有當它被完全接收時,它才有資格在等待同步事件時使用。 同步事件發生在 TDM 通道計數器翻轉(矢量成幀)或輸入 PHASE 通道被配置為接收包 TLAST 并且接收到一個這樣的 TLAST 時(包成幀)。
當內核配置為單通道操作時,不需要 TLAST 并且引腳CONFIG 通道上不存在。
CONFIG 通道 TDATA 結構
當 CONFIG 通道配置為為每個 TDM 通道提供 PINC 和 POFF 值時,每個字段都進行符號擴展以適應字節邊界,然后這些面向字節的字段與 PINC 在最低有效位置連接。 例如,對于 11 位的相位寬度,PINC 將占用 10:0 位,而 POFF 將占用 26:16。 因此 s_axis_config_tdata 總體上將是 31:0。 下圖顯示了前面示例中寬度的結構,用于以下配置:
- PINC 和 POFF 都設置為可編程。
- PINC only 設置為可編程。
- POFF only 設置為可編程。
輸入 PHASE 通道
輸入 PHASE 通道 (s_axis_phase_t*) 取代了 DDS 編譯器 v4.0 的流接口(PINC_IN 和 POFF_IN)或 PHASE_IN 端口。 輸入 PHASE 通道適用于 DDS 編譯器執行動態功能(例如相位或頻率調制)的應用,其中每個輸入樣本都有一個輸出樣本。 輸入和輸出之間存在一對一關系的事實意味著施加到輸出的背壓(TREADY 置低)導致輸入 PHASE 通道上的 TREADY 置低(根據內部緩沖容量延遲)。 同樣,PHASE 通道上的輸入數據不足(TVALID 無效)傳播為輸出通道上的 TVALID 無效。
在光柵化模式下,PINC、POFF 和 PHASE_IN 的值必須限制在 0 和 Modulus-1(含)之間。 這對應于一個完整的圓圈。 所以如果負值是必需的,添加模數以將它們映射到所需的范圍。 例如,對于模數 360,如果需要 -90,則添加 360 以獲得所需范圍內的 270。 存在事件信號以在運行時檢測 PINC、POFF 和 PHASE_IN 輸入的無效值。
當 DDS 編譯器配置為具有相位累加器并且相位增量或相位偏移選擇為“流式傳輸”時,輸入 PHASE 通道接口存在。 當 DDS 編譯器僅配置為 SIN/COS LUT 時,PHASE_IN 字段在輸入 PHASE 通道的 TDATA 總線上輸入。 這兩種配置是互斥的。
輸入 PHASE 通道 TDATA 結構
如前所述,DDS 編譯器可以具有輸入 PHASE 通道的兩種配置是互斥的,因此雖然 TDATA 中可以出現四個字段,但所有四個字段不能同時出現。
當 DDS 編譯器配置為僅 SIN/COS LUT 時,PHASE_IN 字段映射到 s_axis_phase_tdata。 PHASE_IN 字段在總線的最低有效部分中占據一個面向字節的字段。 所以 s_axis_phase_tdata 的寬度是容納 PHASE_IN 寬度所需的 8 位的最小倍數。 因為這是一個輸入,所以實現此字節方向所需的任何額外位都會被內核忽略,并在綜合或映射期間被優化掉。
- PINC 和 POFF 都設置為 Streaming。
- PINC only 設置為流式傳輸。
- POFF only 設置為 Streaming。
- DDS 僅配置為 SIN/COS LUT。
下圖顯示 s_axis_phase_tdata 的結構,其中 Phase_Width = 11 用于以下配置:
輸入 PHASE 通道 TUSER 結構
輸入 PHASE 通道可以配置為沒有 TUSER 端口,有用戶字段或攜帶 TDM 通道索引,或同時有用戶字段和 TDM 通道索引。 這些字段沒有字節方向。 TDM 通道索引(如果已配置)具有描述 TDM 通道數量所需的最小寬度。 用戶字段的寬度由用戶選擇,從 1 到 256 位。 這兩個字段在最不重要的位置與 TDM 信道 ID 字段連接。 如果只存在一個字段,則占用 s_axis_phase_tuser 的最低有效位。
下圖顯示了三種可能的組合; 用戶字段和 chan_id 字段,僅 chan_id 字段和僅用戶字段。
輸入PHASE通道 TLAST選項
輸入 PHASE 通道可以配置為沒有 TLAST、有一個矢量成幀 TLAST 或有一個分組成幀 TLAST。 選擇矢量Vector Framing 框架時,預計TLAST將指示頻道的TDM周期中的最后一個通道。 如果 TLAST 與 TLAST 應該何時到達的內部預期不匹配,則在一個時鐘周期內斷言兩個事件信號之一。 當選擇分組幀Packet Framing 時,核心對 TLAST 的時間沒有任何期望,因此事件信號不存在,但 TLAST 以與 TDATA 輸入相同的延遲被傳輸到輸出通道。
輸出數據通道
只要 DDS 編譯器配置為具有 SIN/COS LUT。 該通道替代了 DDS Compiler v4.0 的 SINE 和 COSINE 輸出。 這些以前的輸出現在作為 m_axis_data_tdata 的字段存在。
輸出數據通道 TDATA 結構
正弦和余弦輸出字段被符號擴展到下一個字節邊界,然后連接,余弦在最不重要的部分,以創建 m_axis_data_tdata。如果只選擇正弦或余弦之一,則將其符號擴展并放入最小m_axis_data_tdata 的重要部分。 圖 3-22 顯示了三種配置的 TDATA 的內部結構; 正交輸出,僅余弦和僅正弦。 圖中顯示了一個 11 位輸出例如,符號擴展到 16 位。 <<< 表示符號擴展。
輸出 DATA 通道 TUSER 結構
輸出 DATA 通道可以配置為沒有 TUSER 字段,或讓 TUSER 保存用戶字段,或 TDM 通道索引,或同時包含用戶字段和 TDM 通道 ID。 當同時選擇用戶字段和 TDM 通道 ID 時,這些字段與 TDM 通道 ID 連接在最不重要的位置。 TDM 通道 ID 將 TDATA 總線中用于該傳輸的字段限定為屬于所描述的 TDM 通道。 有關結構,請見圖 3-21,因為這與輸出數據通道 TUSER 端口的結構相同。
IP不使用也不解釋用戶字段。 它作為一項服務提供,允許系統設計人員以與主數據路徑(輸入 PHASE 通道到輸出通道)相同的延遲通過內核傳遞信息。 例如,用戶字段可能包含與 DDS 無關但與 DDS 下游的某些核心相關的標志和其他輔助信息。
輸出數據通道 TLAST 選項
輸出數據通道可以配置為沒有 TLAST、有矢量成幀、有數據包成幀或有一個“配置觸發”的 TLAST。
當設置為矢量幀時,TLAST 被斷言用于傳輸,其中包含 TDM 通道周期的最后一個 TDM 通道的 TDATA(例如,12 通道中的第 12 通道)。
當設置為數據包成幀時,輸入 PHASE 通道的 TLAST 以與主數據路徑的延遲相等的延遲不變地傳遞。 這旨在為系統設計人員提供服務,其中 TLAST 可能具有與 DDS 無關但與某些核心下游相關的含義。
當設置為“配置觸發”時,TLAST 由 DDS 在內部生成,而不是從輸入 PHASE 通道傳送。 在配置更改生效之前,它在 TDM 周期的最后一個通道上被斷言。
換句話說,如果一個配置更改是使用 CONFIG 通道引發的,TLAST 在舊配置的最后一個樣本上被斷言。
輸出 PHASE 通道
輸出 PHASE 通道取代了 DDS Compiler v4.0 的 PHASE_OUT 端口。 PHASE_OUT 端口現在作為 m_axis_phase_tdata 的一個字段存在。
輸出 PHASE 通道 TDATA 結構 - 常規 DDS
PHASE_OUT 字段符號擴展為 8 位的下一個倍數,并成為 m_axis_phase_tdata。 例如,如果 PHASE_OUT 為 20 位,則 m_axis_phase_tdata 為 24 位寬 [23:0],由符號擴展 PHASE_OUT 占用。
圖 3-23 顯示了將 11 位符號擴展為 16 位的示例寬度。
輸出 PHASE 通道 TDATA 結構 - 光柵化 DDS
光柵化模式下的相位值是 0 到 Modulus-1 范圍內的正整數。因此,PHASE_OUT 字段用零填充,直到下一個 8 位的倍數,并變為 m_axis_phase_tdata。
輸出 PHASE 通道 TUSER 結構
TUSER 字段具有與輸出 DATA 通道相同的配置選項,但選項對于兩個輸出通道是獨立的,因此,例如,一個可能配置為具有用戶字段,而另一個具有 TDM 頻道 ID 字段。 圖 3-21 與輸出 PHASE Channel TUSER 端口的結構選項相同。
輸出相位通道 TLAST 選項
輸出相位通道使用與輸出數據通道相同的 TLAST 設置。
事件接口
為了允許用戶正確同步到內部通道計數器,并在將多通道數據寫入 CONFIG 和/或 PHASE 通道時標記錯誤,DDS 編譯器內核提供了多個事件輸出以指示何時發生意外情況。事件輸出遵循 aclken 和 aresetn 條件,立即發生并在每個存在差異的周期中斷言。如果不需要事件輸出,它們可以保持懸空狀態,并且相關的邏輯會被賽靈思工具優化掉。
CONFIG 通道事件輸出
對于多通道配置,CONFIG 通道需要 s_axis_config_tlast 上的單個脈沖來指示通道序列中的最后一個樣本(“向量”)。 如果 s_axis_config_tlast 在內核不期望的情況下被斷言,則 event_s_config_tlast_unexpected 被斷言。 如果 s_axis_config_tlast 脈沖沒有與最后一個通道的配置數據一起被斷言,則 event_s_config_tlast_missing 被斷言。
PHASE 通道事件輸出
當 PHASE 通道存在多個通道時,PHASE 通道需要 s_axis_phase_tlast 上的單個脈沖來指示通道序列中的最后一個樣本(“vector2”)。如果 s_axis_phase_tlast 在內核不期望的情況下被斷言,則 event_s_phase_tlast_unexpected 被斷言。 如果 s_axis_phase_tlast 脈沖沒有與最終通道的數據一起斷言,則 event_s_phase_tlast_missing 被斷言。
當 DDS 配置為光柵化模式時,PINC 和 POFF 值(固定、可編程或流式傳輸)都應在 0 到 Modulus-1 的范圍內。 超出此范圍的值不受支持,可能導致錯誤輸出。 當檢測到超出支持范圍的值時,信號 event_pinc_invalid 和 event_poff_invalid 被置位。
s_axis_phase_tuser 配置選項允許您輸入通道 ID 值以促進與內部通道計數器的同步。 如果選擇此選項,則event_s_phase_chanid_incorrect 輸出出現在內核上,并且在 s_axis_phase_tuser 上的輸入通道 ID 與內核的當前通道不匹配的每個周期都被斷言。
配置
配置選項卡
Configuration Options : :可以生成完整的 DDS 或可選的相位發生器部分或 SIN/COS LUT 部分。
- Phase Generator and SIN/COS LUT :DDS 是通過將相位發生器和 SIN/COS LUT 與可選的抖動電路相結合來提供的。
- Phase Generator only :僅提供相位發生器。
- SIN/COS LUT only :僅提供帶有可選泰勒級數校正電路的 SIN/COS LUT。
System Requirements :DDS 的一般上下文由這組參數設置:
- System Clock :DDS 內核的時鐘頻率。 提供的值影響架構選擇,并用于計算輸出頻率的相位增量值(輸出頻率與系統時鐘的相對值指定相位增量,因此在保持輸出頻率的同時加倍系統時鐘會導致加倍 相位增量)。
- Number of Channels : DDS 和相位發生器最多可支持 16 個通道。 通道是時分復用的,這降低了每個通道的有效時鐘頻率。
- Mode of Operation : DDS 支持標準模式,其中累積的相位可以在用于訪問 SIN/COS LUT 之前被截斷,或者當所需頻率和系統時鐘以有理分數相關時可以使用的光柵化模式。
- Modulus (rasterized mode only) : 描述系統時鐘頻率和所需頻率之間的關系。
- Frequency per Channel (Fs) : 由于時分復用,每個通道的有效系統時鐘是實際系統時鐘除以通道數。
系統參數
- Spurious Free Dynamic Range (SFDR) : DDS 產生的目標音調純度。 這設置了輸出寬度以及內部總線寬度和各種實現決策。
- Frequency Resolution : 較大的值會減少硬件資源。 根據噪聲整形的選擇,可以增加相位寬度,并且頻率分辨率高于指定的頻率分辨率。 對于光柵化模式,頻率分辨率由系統時鐘、通道數和所選模數固定。
Noise Shaping : 這控制是否使用相位截斷、抖動或泰勒級數校正。
- None : 產生相位截斷 DDS。
- Dithering : 相位抖動用于提高 SFDR,但會增加本底噪聲。
- **Taylor Series Corrected ** : 正弦/余弦值使用相位截斷中否則丟棄的位進行插值。
- Auto :根據 SFDR 等系統參數自動確定噪聲整形。 選定的噪聲整形選項顯示在核心摘要頁面中。 自動僅在參數選擇為系統參數時可用。
特定噪聲整形選項的可用性取決于選擇的配置選項和參數選擇方法。 系統參數輸入自動限制特定的噪聲整形選項是否可行。 選擇硬件參數條目時,表 4-1 中匯總的選項可用,然后噪聲整形選項的選擇將硬件參數限制在所選選項支持的范圍內。
根據輸入的系統參數和選擇的噪聲整形,最小相位寬度和輸出寬度由 Vivado IDE 通過以下方式得出。可以增加相位寬度以啟用特定的噪聲整形選項。 例如,泰勒級數校正需要 12 位的最小相位寬度。
圖 4-1 顯示了每個噪聲整形選項運行的 SFDR 和相位寬度區域。
None、Phase Dithering 和 Taylor Series Correction 有三個重疊區域,并且使用更深層次的陰影來顯示區域重疊的位置。 最暗的區域是所有三個區域重疊的地方,并且所有三個噪聲整形選項都是可能的。 下面的虛線表示泰勒級數校正僅適用于 SDFR > 66.0 dB(而不是 66.0 dB)。 可以增加相位寬度以最大化特定 SFDR 目標的噪聲整形選項的數量。
硬件參數
- Phase Width : 設置 m_axis_phase_tdata 中 PHASE_OUT 字段的寬度,當 DDS 僅配置為 SIN/COS LUT 時,設置 s_axis_phase_tdata 中的相位字段,相位累加器,相關的相位增量和偏移寄存器以及相位字段 s_axis_config_tdata。 對于光柵化模式,相位寬度固定為描述有效輸入范圍 [0, Modulus-1] 所需的位數,即 log2 (Modulus-1) 向上取整。
- Output Width : 僅在選擇 DDS 或 SIN/COS LUT 部分時啟用,因為相位發生器部分不需要它。 設置 m_axis_data_tdata 中 SINE 和 COSINE 字段的寬度。 這提供的 SFDR 取決于先前選擇的噪聲整形選項。 表 4-3 中的等式可用于估算可實現的 SFDR:
Implementation 選項卡
Phase Increment Programmability :選擇設置 PINC 值的方式。
- Fixed :PINC 在生成時是固定的,不能在運行時更改。 固定需要最少的資源。
- Programmable :可以在運行時使用 CONFIG 通道更改 PINC 值。 當 DDS 頻率要在操作模式之間改變時,建議這樣做。
- Streaming :PINC 值直接取自輸入 PHASE 通道。 當 PINC 值必須經常更改時,或者例如需要頻率調制時,建議使用此方法。
Resync :選擇時,s_axis_phase 通道有一個 RESYNC 字段。 該位在置位時會靜音相關通道的累積相位。 該周期的累加相位值是伴隨 RESYNC 斷言的 PINC 值加上 POFF 值。
Phase Offset Programmability :選擇設置 POFF 值的方式。
- None :沒有相位偏移功能,并且未生成所需的硬件。 這節省了 FPGA 資源。
- Fixed :POFF 在生成時是固定的,不能在運行時更改。
- Programmable : 可以使用 CONFIG 通道更改 POFF 值。 當 DDS 階段要在操作模式之間切換時,建議這樣做。
- Streaming : 可以使用輸入 PHASE 通道更改 POFF 值。 當 POFF 值必須經常改變時,或者例如需要相位調制時,建議使用此方法。
Output
- Output_Selection : DDS 可能在 m_axis_data_tdata 總線中具有正交 SINE 和 COSINE 字段,或只有這兩個字段之一。 m_axis_data_tdata 內部結構見前所述。
- Polarity : m_axis_data_tdata 的 SINE 和 COSINE 字段可以反轉。這允許使用共軛輸出將用作發射器混頻器的 DDS 轉換為接收器混頻器; 因此,除了這里的兩個選擇的值之外,兩個實例都是相同的。
- Negative Sine : 選中此選擇會導致 SINE 字段在運行時被反轉。
- Negative Cosine : 選中此選擇會導致余弦字段在運行時被反轉。
- Amplitude Mode : 此選擇允許來自 DDS 的兩個幅度之一。
- Full Range : 針對需要二進制補碼表示內的最大幅度的通信應用,但由于期望自動增益控制,幅度值不太重要。對于非泰勒模式,全范圍模式的目標幅度為 1–2–(輸出寬度–2),而對于泰勒模式,幅度在該值和 1 之間變化。請注意,此處的幅度被歸一化為輸出寬度,首先是二進制點。 8 位輸出的二進制幅度為 100000000 – 10,給出介于 01111110 和 11111110 之間的值,分別對應于略小于 1 和略大于 –1。、
- Unit Circle : 對于 DDS 輸出幅度的值很重要的應用,例如 FFT 旋轉因子生成。 單位圓時,DDS 輸出幅度為半全范圍(即,值范圍從 01000.. (+0.5). 到 110000.. (-0.5))。 由于幅度在全范圍內降低了 2 倍,SDFR 降低了 6 dB。 增加 SFDR 或輸出寬度以適應此要求。
實現選項
- Memory Type :這控制 SIN/COS LUT 的實現。 對于表可以包含在單層內存中的小型情況,Auto 設置選擇 Distributed ROM ,而對于較大的情況,則選擇 Block ROM 。 (即Phase Width ≤ 5-bits 時選擇 Distributed ROM )。 可以通過明確選擇 Distributed ROM 或 Block ROM 來覆蓋此選擇。
- Optimization Goal : 在某些情況下,可以以增加流水線寄存器為代價來提高電路時鐘速度。 此選擇控制實施決策是針對最高速度還是最低資源。
- DSP48 Use : 這控制相位累加器和后續加法階段(用于相位偏移和/或抖動噪聲加法)的實現。 當設置為 Minimal 時,相位累加器和后續階段在 FPGA 邏輯中實現。 當 Maximal 時,全部使用 DSP Slice 實現。 在單通道的情況下,DSP slice 還可以提供寄存器來存儲可編程相位增量和/或相位偏移,從而進一步節省結構資源。 如果 Phase Increment 或 Phase Offset 是 Streaming 并且僅當優化目標是 Area 時,則不會這樣做。 執行此優化時,PINC 和/或 POFF 寄存器的初始值必須為零。 Vivado IDE 通過將 PINC 和/或 POFF 的初始值設置為零并禁用條目來強制執行此操作。
Detailed Implementation Tab
AXI Channel Options : 可以配置某些 AXI 接口信號的動作。
- DATA Has TLAST : 當有多個 DDS 通道(與 AXI 通道相反)時啟用。 當僅存在 PHASE 通道時,也可以使用有限的選項。 選項有:
- Not Required : 在此模式下,輸入 PHASE 通道或輸出通道上不存在 TLAST 信號。 在多通道配置中,CONFIG 通道上的 TLAST 用于表示要重新配置的最后一個通道,并且始終存在,無論此設置如何。
- Vector Framing : 輸入 PHASE 通道和輸出通道上的 TLAST 脈沖表示通道周期中的最后一個通道(例如,12 個通道中的第 12 個)。 如果沒有在正確的時間應用 TLAST 脈沖以匹配內核的通道狀態,則會在 event_s_phase_tlast_missing 或 event_s_phase_tlast_unexpected 事件輸出上標記一個事件。
- Packet Framing : TLAST 脈沖以與 TDATA 相同的延遲從輸入 PHASE 通道傳送到輸出通道。 此配置中的 TLAST 可用于觸發重新配置。此模式旨在作為一種服務,以簡化系統設計,以應對信號必須伴隨數據流但在 DDS 中沒有應用的情況。
- Config Triggered : 此選項使內核在將新配置應用于內核之前在最后一個 TDM 通道上生成輸出 TLAST。使用新的核心配置生成后續輸出樣本。此模式僅在存在 CONFIG 通道時可用。
- Output TREADY :選擇時,輸出通道具有 TREADY,因此支持具有固有背壓的完整 AXI 握手協議。 如果有輸入 PHASE 通道,它的 TREADY 的存在也是由這個控制決定的,因此從輸入 PHASE 通道到輸出通道的數據通路作為一個整體是否支持背壓。 ° TUSER options :內核支持 TUSER 字段的兩種不同用途; 表示時分復用通道索引或作為將用戶字段(與 TDATA 關聯的輔助數據)從輸入 PHASE 通道傳遞到輸出通道的管道。 這些選擇獨立于輸入 PHASE 通道。 然而,由于用戶字段的選擇意味著希望將 TUSER 字段從輸入傳送到輸出,因此在輸入 PHASE 通道上選擇用戶字段會迫使用戶字段出現在每個輸出通道 TUSER 端口中。 輸入 PHASE 通道的選項如下所示。 每個輸出通道的選項受輸入 PHASE 通道選擇的限制,但在其他方面是獨立的。
- Not required :以上兩種用途都不需要; 有問題的頻道沒有 TUSER 字段。
- Chan ID field :在此模式下,TUSER 字段標識用于傳輸的時分復用通道。 對于輸入 PHASE 通道,這為用戶提供了一種與內部 DDS 通道狀態同步的機制。 如果應用的通道 ID 與內核的內部狀態不匹配,則會在 event_s_phase_chanid_incorrect 輸出上標記一個事件。
- User Field :在此模式下,核心忽略 TUSER 字段的內容,但將其從輸入 PHASE 通道原樣傳遞到輸出通道。
- User and Chan ID field :在此模式下,TUSER 字段同時具有用戶字段和頻道 ID 字段,頻道 ID 字段位于最低有效位。 描述通道所需的最小位數決定了通道 ID 字段的寬度; 例如,七個通道需要三個位。
- User field width :該字段確定從輸入傳送到輸出的位字段的寬度,DDS 不會改變它。 它不包括 Channel ID 字段的寬度(如果存在)。
- Output Form :一般來說,正弦和余弦的輸出都是二進制補碼形式。 但是,當使用象限對稱時,輸出形式可以更改為符號和幅度。 選擇符號和幅度會刪除 SIN/COS LUT 之后的反相器。 這減少了相對于二進制補碼的資源使用。 它旨在與混頻器級一起使用,其中可以通過在復數乘法中更改分量的符號來將符號信息與幅度分開處理。 混頻器(具有輸入 a+jb 和 c+jd 的復數乘法器)可以表示為:
實數 = ac - bd 虛數 = ad + bc
在這種情況下,來自 DDS 的 a 和 b 是有符號的,二進制補碼。 但是,如果 a 和 b 表示為符號和幅度,則 a 和 b 中的每一個的符號可用于修改混頻器方程中每個項的符號。 例如,如果 a 單獨為負,則混頻器方程變為:
real = -ac -bd imaginary = -ad + bc
如果混頻器級使用 DSP slice 實現,則可以通過更改 DSP48 Slice opmode 信號來實現此符號操作。
- Synchronization Mode :當 CONFIG 和 PHASE 通道都存在時,此選擇處理重新配置的時序。 配置通道與通道計數器的相位異步獲取配置數據,并將重配置數據存儲在緩沖區中。 此選擇確定新配置數據何時對數據路徑生效:
- On Vector :在此模式下,當通道計數器翻轉以啟動新的時分復用通道周期時,將應用重配置數據。
- On Packet :在此模式下,當 TLAST 設置為數據包幀時可用,輸入 PHASE 通道上的 TLAST 會觸發重新配置。 此模式針對每組配置數據將與輸入 TLAST 指示符所暗示的數據包相關聯的情況。
- 延遲選項:選擇應由 Vivado IDE 自動配置還是手動配置延遲:
- 流階段增量。
- SIN/COS LUT 內的塊 ROM(可以通過選擇分布式 ROM 來避免)。
- 在二階泰勒級數校正中阻止 ROM(用于 120 dB 以上的 SFDR)。
- Auto :使 DDS 流水線化以獲得最佳性能(考慮到優化目標)。
- Configurable :當最佳性能超出要求時,可以將延遲設置為可配置并選擇較小的延遲值。 這減少了流水線階段的數量,通常可以節省資源。 施加了一個最小延遲值,其中延遲周期來自以下每個來源:
- Optional Pins : 可以禁用某些輸入和輸出以節省資源。
- Has Phase Out : 選中時,內核具有輸出 PHASE 通道。
- ACLKEN : 選中后,內核有一個 aclken(高電平有效時鐘使能)端口。
- ARESETn : 選中時,內核有一個 aresetn(低電平有效同步復位)端口。
Parameter Entry Pages : 當相位增量或相位偏移為固定或可編程時,將出現以下頁面用于輸入參數。 如果可編程,則寄存器的初始值通過參數輸入頁指定。 如果使用 DSP slice 寄存器,如實現選項中所述,相位增量和/或偏移的初始值假定為零。
System Parameters :
- Output Frequencies : 當參數選擇設置為系統參數且相位增量可編程性為固定或可編程時,會出現此頁面。 對于每個通道,可以在表格中輸入一個獨立的頻率 (MHz)。 允許的范圍顯示為 0 到 Fs(其中 Fs 是每個通道的頻率)。 從 Fs/2 到 Fs 的值分別別名為 -Fs/2 到 0,因此可用于輸入負頻率。
- Phase Offset Angles :當參數選擇設置為系統參數并且相位偏移設置為固定或可編程時出現此頁面。 該表允許將每個通道的相位偏移指定為周期的一部分。 對于標準模式,有效范圍是 -1.0 到 1.0。 對于光柵化模式,有效范圍是 0 到 1.0。 例如,為 180° 輸入 0.5(即 π 弧度)。 標準模式的范圍大于單個周期,但允許,因為負值映射到等效的正值。
Hardware Parameters :
- Phase Angle Increment Values :當參數選擇設置為硬件參數且相位增量可編程性為固定或可編程時出現此頁面。 值必須以二進制形式輸入。 范圍是 0 到模值減 1。對于標準模式,模值是 2^PhaseWidth。 對于光柵化模式,模數是之前在 Vivado IDE 中選擇的值。 以弧度為單位的角度是輸入數字除以模數并乘以 2π。 通過向左填充零,將條目擴展到相位寬度位。
- Phase Offset Values : 當參數選擇設置為硬件參數且相位偏移設置為固定或可編程時出現此頁面。 值必須以二進制形式輸入。 標準模式的范圍是0到累加器的重量,即2^Phase Width-1,對應一個周期。 對于光柵化模式,有效范圍是 0 到 1.0 – 1/模數。 可以通過將無符號小數轉換為十進制并乘以 2π 來獲得以弧度為單位的角度。 通過向左填充零,將條目擴展到相位寬度位。
-
FPGA
+關注
關注
1630文章
21796瀏覽量
605225 -
內核
+關注
關注
3文章
1382瀏覽量
40374 -
Xilinx
+關注
關注
71文章
2171瀏覽量
121933 -
DDS
+關注
關注
21文章
636瀏覽量
152850 -
信號發生器
+關注
關注
28文章
1480瀏覽量
108922
發布評論請先 登錄
相關推薦
評論