国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

FPGA數字信號處理之verilog實現混頻器

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-12-09 10:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

混頻:兩個不同頻率之間的混合,得到第三個頻率。數字信號處理中用來完成頻譜搬移求和,是數字信號處理中的基本元件之一。例如通信中的混頻合路:ea69cb86-7761-11ed-8abf-dac502259ad0.png常見的數字混頻器結構如下,由移頻模塊和求和模塊組成。比如信號A、B是輸入的兩個單音信號,B是上一節講到的NCO信號,使用復乘將A、B信號進行搬移,然后求和。ea7aa906-7761-11ed-8abf-dac502259ad0.png

頻譜搬移的過程如下,輸入信號Data_in,與NCO產生的單音信號進行復乘得到Data_out;

ea99f982-7761-11ed-8abf-dac502259ad0.png

將Data_in與Data_out的頻譜放到一起如下,可以看到頻譜搬移的過程。

eab480e0-7761-11ed-8abf-dac502259ad0.png

頻譜搬移在計算上就是復乘:(i+q*j)*(cos+sin*j)=(cos*i-sin*q)+(sin*i+cos*q)*j,用xilinx片子實現的話我們還是選擇DSP48,其結構如下:

eae2ff42-7761-11ed-8abf-dac502259ad0.png

其中用到了dsp的級聯,可以參考之前dsp48e1詳細講解的文章:FPGA的底層資源之DSP48E1和Xilinx DSP48E1仿真。這里不再詳細描述。

代碼實現如下:

首先的端口聲明:

// ============================================================
// File Name: cm_mix
// VERSION  : V1.0
// DATA     : 2022/11/6
// Author   : FPGA干貨分享
// ============================================================
// 功能:數字混頻器  (i+q*j)*(cos+sin*j) = (cos*i - sin*q) + (sin*i + cos*q)*j
// delay  
// ============================================================


`timescale 1ns/1ps
module cm_mix #(
        parameter           C_DATA_WITH     = 16 ) // 
    (
        input  wire                     I_sys_clk    , // 輸入時鐘
        input  wire                     I_rst_in     , // 輸入復位 高有效
        input  wire [6:0]               I_phase      , // 初始相位
        input  wire [7:0]               I_freq       , // 頻率,步進,1代表1M
        input  wire [C_DATA_WITH-1:0]   I_data_in_i  , // 輸入數據 實部I
        input  wire [C_DATA_WITH-1:0]   I_data_in_q  , // 輸入除數 虛部Q
        output reg  [C_DATA_WITH-1:0]   O_data_out_i , // 輸出數據 實部I
        output reg  [C_DATA_WITH-1:0]   O_data_out_q );// 輸出除數 虛部Q
        
// ============================================================
// 內部參數
// ============================================================


// ============================================================
// 變量
// ============================================================
wire       [10:0]               S_sin_out       ;
wire       [10:0]               S_cos_out       ;
reg        [C_DATA_WITH-1:0]    S_data_in_q     ;
reg        [10:0]               S_sin_out_d     ;
reg        [10:0]               S_cos_out_d     ;


wire       [47:0]               S_pcout_cos_i   ;
wire       [47:0]               S_dsp_out_i     ;
wire       [47:0]               S_pcout_sin_i   ;
wire       [47:0]               S_dsp_out_q     ;

然后調用上一篇文章中的NCO模塊FPGA數字信號處理之verilog實現NCO(代碼及仿真):

cm_nco_100 cm_nco_100 (
    .I_sys_clk      (I_sys_clk     ) , /// 工作時鐘 100M
    .I_rst_n        (!I_rst_in     ) , /// 復位信號,用來清相位
    .I_phase        (I_phase       ) , /// 初始相位
    .I_freq         (I_freq        ) , /// 頻率,步進,1代表1M
    .O_sin_out      (S_sin_out     ) , /// 輸出正弦值
    .O_cos_out      (S_cos_out     )   /// 輸出余弦值
);

接著打拍并調用乘法器:


always @(posedge I_sys_clk )
    if(I_rst_in)
        begin
            S_data_in_q <= 'd0 ;
            S_sin_out_d <= 'd0 ;
            S_cos_out_d <= 'd0 ;
        end
    else
        begin
            S_data_in_q <= I_data_in_q ;
            S_sin_out_d <= S_sin_out   ;
            S_cos_out_d <= S_cos_out   ;
        end
    
// ============================================================
// (cos*i - sin*q)
// ============================================================
//cos*i
cm_dsp48e1 #(
    .C_DATA_WITH_A      (C_DATA_WITH     ),
    .C_DATA_WITH_B      (11              ),
    .C_DATA_WITH_C      (48              ),
    .C_DATA_WITH_D      (25              )
)
U0_cm_dsp48e1(
    .I_CLK              (I_sys_clk      ) , // clk
    .I_RST              (I_rst_in       ) , // RST
    .I_A                (I_data_in_i    ) , // [29:0] 
    .I_B                (S_cos_out      ) , // [17:0] 
    .I_C                (48'd0          ) , // [47:0] 
    .I_D                (25'd0          ) , // [24:0] 
    .I_PCIN             (48'd0          ) , // [47:0] 只能直連PCOUT
    .I_ALUMODE          (4'd0           ) , // [3:0] 
    .I_INMODE           (5'b00101       ) , // [4:0] 
    .I_OPMODE           (7'b0000101     ) , // [6:0] 
    .O_P                (               ) , // [47:0]
    .O_PCOUT            (S_pcout_cos_i  )   // [47:0] 只能直連PCIN
    );


//Pcin - sin*q
cm_dsp48e1 #(
    .C_DATA_WITH_A      (C_DATA_WITH     ),
    .C_DATA_WITH_B      (11              ),
    .C_DATA_WITH_C      (48              ),
    .C_DATA_WITH_D      (25              )
)
U1_cm_dsp48e1(
    .I_CLK              (I_sys_clk      ) , // clk
    .I_RST              (I_rst_in       ) , // RST
    .I_A                (S_data_in_q    ) , // [29:0] 
    .I_B                (S_sin_out_d    ) , // [17:0] 
    .I_C                (48'd0          ) , // [47:0] 
    .I_D                (25'd0          ) , // [24:0] 
    .I_PCIN             (S_pcout_cos_i  ) , // [47:0] 只能直連PCOUT
    .I_ALUMODE          (4'b0011        ) , // [3:0] 
    .I_INMODE           (5'b00101       ) , // [4:0] 
    .I_OPMODE           (7'b0010101     ) , // [6:0] 
    .O_P                (S_dsp_out_i    ) , // [47:0]
    .O_PCOUT            (               )   // [47:0] 只能直連PCIN
    );
    
    
// ============================================================
// (sin*i + cos*q)
// ============================================================
//sin*i
cm_dsp48e1 #(
    .C_DATA_WITH_A      (C_DATA_WITH     ),
    .C_DATA_WITH_B      (11              ),
    .C_DATA_WITH_C      (48              ),
    .C_DATA_WITH_D      (25              )
)
U2_cm_dsp48e1(
    .I_CLK              (I_sys_clk      ) , // clk
    .I_RST              (I_rst_in       ) , // RST
    .I_A                (I_data_in_i    ) , // [29:0] 
    .I_B                (S_sin_out      ) , // [17:0] 
    .I_C                (48'd0          ) , // [47:0] 
    .I_D                (25'd0          ) , // [24:0] 
    .I_PCIN             (48'd0          ) , // [47:0] 只能直連PCOUT
    .I_ALUMODE          (4'd0           ) , // [3:0] 
    .I_INMODE           (5'b00101       ) , // [4:0] 
    .I_OPMODE           (7'b0000101     ) , // [6:0] 
    .O_P                (               ) , // [47:0]
    .O_PCOUT            (S_pcout_sin_i  )   // [47:0] 只能直連PCIN
    );


//Pcin + cos*q
cm_dsp48e1 #(
    .C_DATA_WITH_A      (C_DATA_WITH     ),
    .C_DATA_WITH_B      (11              ),
    .C_DATA_WITH_C      (48              ),
    .C_DATA_WITH_D      (25              )
)
U3_cm_dsp48e1(
    .I_CLK              (I_sys_clk      ) , // clk
    .I_RST              (I_rst_in       ) , // RST
    .I_A                (S_data_in_q    ) , // [29:0] 
    .I_B                (S_cos_out_d    ) , // [17:0] 
    .I_C                (48'd0          ) , // [47:0] 
    .I_D                (25'd0          ) , // [24:0] 
    .I_PCIN             (S_pcout_sin_i  ) , // [47:0] 只能直連PCOUT
    .I_ALUMODE          (4'b0000        ) , // [3:0] 
    .I_INMODE           (5'b00101       ) , // [4:0] 
    .I_OPMODE           (7'b0010101     ) , // [6:0] 
    .O_P                (S_dsp_out_q    ) , // [47:0]
    .O_PCOUT            (               )   // [47:0] 只能直連PCIN
    );

最后四舍五入后輸出:

/// 四合五入輸出
always @(posedge I_sys_clk )
    if(I_rst_in)
        begin
            O_data_out_i <= 'd0;
            O_data_out_q <= 'd0;
        end
    else
        begin
            O_data_out_i <= S_dsp_out_i[10+:C_DATA_WITH] + S_dsp_out_i[9];
            O_data_out_q <= S_dsp_out_q[10+:C_DATA_WITH] + S_dsp_out_q[9];
        end


endmodule

對代碼的詳細講解參考B站視頻:

【FPGA數字信號處理之verilog實現數字混頻器】 https://www.bilibili.com/video/BV1hg411B7Rb/?share_source=copy_web&vd_source=9736f43bc2eebc284f4fbbe5805247a7


審核編輯 :李倩


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

    關注

    1660

    文章

    22412

    瀏覽量

    636374
  • 數字信號處理

    關注

    16

    文章

    571

    瀏覽量

    47800
  • 混頻器
    +關注

    關注

    10

    文章

    863

    瀏覽量

    49906

原文標題:FPGA數字信號處理之verilog實現混頻器

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TMS320VC5402 定點數字信號處理器深度解析

    TMS320VC5402 定點數字信號處理器深度解析 在數字信號處理領域,TMS320VC5402 定點數字信號
    的頭像 發表于 03-06 17:10 ?580次閱讀

    深度解析混頻器群時延

    在聊混頻器群時延之前,我們先聊一聊群時延。
    的頭像 發表于 12-28 17:23 ?4115次閱讀
    深度解析<b class='flag-5'>混頻器</b>群時延

    CMD177C3無源混頻器6–14 GHz

    器的核心部件,提供高精度頻率轉換功能。四、配置靈活性CMD177C3可輕松配置為:鏡像抑制混頻器:通過外部電路設計,抑制鏡像頻率干擾,提高信號接收質量。單邊帶調制:結合外部混合與功
    發表于 10-16 09:17

    IQ混頻器為何能抑制鏡像頻率

    IQ混頻器是一種基于正交架構的混頻器,通過將輸入信號分解為同相(I)和正交(Q)兩路信號,并分別進行混頻運算,
    發表于 09-08 09:43

    表面貼裝混頻器/檢測肖特基二極管 skyworksinc

    電子發燒友網為你提供()表面貼裝混頻器/檢測肖特基二極管相關產品參數、數據手冊,更有表面貼裝混頻器/檢測肖特基二極管的引腳圖、接線圖、封裝手冊、中文資料、英文資料,表面貼裝
    發表于 07-17 18:32
    表面貼裝<b class='flag-5'>混頻器</b>/檢測<b class='flag-5'>器</b>肖特基二極管 skyworksinc

    表面貼裝混頻器和檢測肖特基二極管 skyworksinc

    電子發燒友網為你提供()表面貼裝混頻器和檢測肖特基二極管相關產品參數、數據手冊,更有表面貼裝混頻器和檢測肖特基二極管的引腳圖、接線圖、封裝手冊、中文資料、英文資料,表面貼裝
    發表于 07-17 18:31
    表面貼裝<b class='flag-5'>混頻器</b>和檢測<b class='flag-5'>器</b>肖特基二極管 skyworksinc

    數字信號處理的基本組成及其特點?

    的以數字信號處理器為核心部件的數字信號處理系統框圖,此系統既可處理數字信號,也可
    的頭像 發表于 06-18 09:02 ?1263次閱讀
    <b class='flag-5'>數字信號</b><b class='flag-5'>處理</b>的基本組成及其特點?

    Analog Devices Inc. ADMV1555寬帶I/Q混頻器數據手冊

    Analog Devices ADMV1555寬帶I/Q混頻器采用表面貼裝技術(SMT)和焊盤柵格陣列(LGA)封裝。ADMV1555緊湊型同相/正交(I/Q)混頻器可用作鏡像抑制混頻器或單邊帶上變頻
    的頭像 發表于 05-26 15:59 ?1217次閱讀
    Analog Devices Inc. ADMV1555寬帶I/Q<b class='flag-5'>混頻器</b>數據手冊

    200-5000 MHz 單下變頻混頻器 skyworksinc

    電子發燒友網為你提供()200-5000 MHz 單下變頻混頻器相關產品參數、數據手冊,更有200-5000 MHz 單下變頻混頻器的引腳圖、接線圖、封裝手冊、中文資料、英文資料,200-5000
    發表于 05-21 18:31
    200-5000 MHz 單下變頻<b class='flag-5'>混頻器</b> skyworksinc

    進群免費領FPGA學習資料!數字信號處理、傅里葉變換與FPGA開發等

    ~ 01、數字信號處理FPGA實現 旨在講解前端數字信號處理算法的高效
    發表于 04-07 16:41

    HMC8193 2.5 GHz至8.5 GHz I/Q混頻器技術手冊

    的固有I/Q架構具有出色的鏡像抑制能力,因此無需進行成本高昂的干擾邊帶濾波。 該混頻器還提供出色的LO至RF和LO至IF隔離性能,并降低了LO泄漏的影響以確保信號完整性。
    的頭像 發表于 04-02 14:31 ?1109次閱讀
    HMC8193 2.5 GHz至8.5 GHz I/Q<b class='flag-5'>混頻器</b>技術手冊

    HMC1057次諧波I/Q混頻器,71-86GHz技術手冊

    HMC1057是一款次諧波MMIC混頻器,可用作鏡像抑制混頻器(IRM)或單邊帶上變頻。 此款無源MMIC混頻器采用GaAs Shottky二極管技術制造。 針對下變頻應用,外部正交
    的頭像 發表于 04-01 11:07 ?888次閱讀
    HMC1057次諧波I/Q<b class='flag-5'>混頻器</b>,71-86GHz技術手冊

    HMC-MDB218次諧波I/Q混頻器/IRM芯片技術手冊

    HMC-MDB218是一款次諧波(x2)MMIC混頻器,可用作鏡像抑制混頻器(IRM)或單邊帶上變頻。 此款無源MMIC混頻器采用GaAs異質結雙極性晶體管(HBT)肖特基二極管技術
    的頭像 發表于 04-01 10:43 ?1085次閱讀
    HMC-MDB218次諧波I/Q<b class='flag-5'>混頻器</b>/IRM芯片技術手冊

    MAX2680 400MHz至2.5GHz、低噪聲、SiGe下變頻混頻器技術手冊

    MAX2680/MAX2681/MAX2682微型、低成本、低噪聲下變頻混頻器專為低電壓工作而設計,非常適合便攜式通信設備應用。使用雙平衡混頻器將RF輸入端口的信號與本地振蕩(LO)
    的頭像 發表于 03-31 16:51 ?1128次閱讀
    MAX2680 400MHz至2.5GHz、低噪聲、SiGe下變頻<b class='flag-5'>混頻器</b>技術手冊

    ADRF6658集成IF放大器的寬帶雙通道RX混頻器技術手冊

    ADRF6658是一款高性能、低功耗、寬帶、雙通道無線電頻率(RF)下變頻,集成中頻(IF)數字控制放大器(DGA),適用于寬帶、低失真基站無線電接收機。 雙通道Rx混頻器為雙平衡吉爾伯特
    的頭像 發表于 03-28 11:05 ?1171次閱讀
    ADRF6658集成IF放大器的寬帶雙通道RX<b class='flag-5'>混頻器</b>技術手冊