色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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
    +關注

    關注

    1629

    文章

    21748

    瀏覽量

    603853
  • 數字信號處理

    關注

    15

    文章

    560

    瀏覽量

    45878
  • 混頻器
    +關注

    關注

    10

    文章

    680

    瀏覽量

    45707

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

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

收藏 人收藏

    評論

    相關推薦

    adc與數字信號處理的關系

    在現代電子系統中,模擬信號數字信號之間的轉換是至關重要的。模數轉換(ADC)和數字信號處理(DSP)是
    的頭像 發表于 10-31 10:50 ?347次閱讀

    射頻混頻器有哪些類型

    射頻混頻器是射頻通信系統中的一種關鍵組件,它扮演著將不同頻率的信號進行混合或轉換的重要角色。本文將詳細探討射頻混頻器的定義、工作原理、類型、性能指標、應用場景以及相關的技術挑戰和未來發展。
    的頭像 發表于 10-14 18:22 ?567次閱讀

    什么是混頻器

    混頻器是一種重要的射頻(RF)元件,廣泛應用于無線通信、信號處理和雷達系統中。它的主要功能是將兩個不同頻率的信號混合,生成新的頻率成分。本文將詳細介紹
    的頭像 發表于 10-05 13:30 ?624次閱讀

    RF混頻器的工作原理和性能參數

    RF混頻器,也稱為射頻混頻器,是無線通信系統中至關重要的一個組件,其核心功能是將兩個或多個信號合并為一個或多個復合輸出信號實現
    的頭像 發表于 08-16 18:09 ?1485次閱讀

    數字信號是什么信號的組合

    離散的信號,它由一系列數字值組成,這些數字值在時間上是離散的。與模擬信號不同,數字信號在時間和幅度上都是離散的。
    的頭像 發表于 08-11 10:47 ?879次閱讀

    數字信號處理與通信原理之間的關系

    數字信號處理(Digital Signal Processing,簡稱DSP)和通信原理是信息科學領域中兩個密切相關的領域。它們在理論和應用層面都有很多相互聯系和相互依賴的地方。 在現代通信系統中
    的頭像 發表于 08-09 09:35 ?928次閱讀

    各類常用混頻器的高層次設計和優缺點

    在RF和微波設計中,混頻信號鏈最關鍵的部分之一。過去,很多應用都受制于混頻器的性能。混頻器的頻率范圍、轉換損耗和線性度,決定了混頻器能否用
    的頭像 發表于 06-04 09:32 ?2303次閱讀
    各類常用<b class='flag-5'>混頻器</b>的高層次設計和優缺點

    數字信號采集的作用是什么 數字信號采集的特點

    介紹數字信號采集的作用、特點以及應用場景。 數字信號采集的作用 信號采集 :數字信號采集
    的頭像 發表于 05-31 14:25 ?1819次閱讀

    matlab與FPGA數字信號處理系列 Verilog 實現并行 FIR 濾波

    FPGA 實現 FIR 濾波時,最常用的是直接型結構,簡單方便,在實現直接型結構時,可以選擇串行結構/并行結構/分布式結構。 并行結構即并行
    發表于 05-24 07:48

    簡述雙平衡混頻器的原理及應用

    雙平衡混頻器是一種常用于無線電接收機中的電子設備,它的作用是將接收到的高頻信號與本地振蕩產生的信號進行混頻,從而將高頻
    的頭像 發表于 05-23 17:14 ?1848次閱讀

    數字信號處理器的特點、作用及種類

    隨著信息技術的飛速發展,數字信號處理器(Digital Signal Processor,簡稱DSP)作為數字信號處理的核心設備,在通信、音視頻、自動控制等領域發揮著越來越重要的作用。
    的頭像 發表于 05-22 18:20 ?2491次閱讀

    雙平衡混頻器帶內平坦度不良的原因

    雙平衡混頻器帶內平坦度不良的原因? 雙平衡混頻器是一種常見的無線通信電路中的關鍵組件,它用于將高頻信號和局部振蕩信號進行混合,以產生中頻信號
    的頭像 發表于 01-18 16:36 ?793次閱讀

    雙平衡混頻器怎么抑制本振噪聲

    雙平衡混頻器怎么抑制本振噪聲? 雙平衡混頻器(或稱雙平衡調制)是一種常用于射頻(RF)系統中的無源混頻器。它通過將輸入信號和本振
    的頭像 發表于 01-18 16:36 ?894次閱讀

    數字信號處理信號與系統區別

    數字信號處理信號與系統是兩個很重要的概念。雖然它們都涉及到信號處理和分析,但在很多方面有著不同的特點和應用。本文將詳細探討
    的頭像 發表于 01-18 09:30 ?3689次閱讀

    雙/三平衡混頻器,如果LO不做諧波濾波處理,對混頻后輸出的IF性能有何影響?

    (square wave),這樣能獲得更好的互調指標。 我的問題是:雙/三平衡混頻器,如果LO不做諧波濾波處理,對混頻后輸出的IF性能有何影響?(IMD失真產物、高頻phase noise?),謝謝
    發表于 01-10 06:22
    主站蜘蛛池模板: 中文字幕偷乱免费视频在线| 纯肉合集(高H)| 国内久经典AAAAA片| 亚洲精品白色在线发布| 寂寞夜晚看免费视频| 3D内射动漫同人资源在线观看| 摸老师丝袜小内内摸出水| 成人高清网站| 亚洲qvod图片区电影| 久久中文字幕人妻AV熟女| MMM日本兽交| 亚洲高清国产拍精品5g| 辣文肉高h粗暴| 二级特黄绝大片免费视频大片| 亚洲精品一区二区在线看片| 亚洲中文字幕日产乱码2020| 用震蛋调教女性下面视频| 无人影院在线播放| 日本黄色www| 暖暖 视频 免费 高清 在线观看 | 亲胸吻胸添奶头GIF动态图免费| 花蝴蝶在线观看免费中文版高清| 丰满少妇69激情啪啪无码| avv天堂| 2019香蕉在线观看直播视频 | 国产看黄网站又黄又爽又色| 吃奶摸下的羞羞漫画| 国产AV天堂一区二区三区| 一道本在线伊人蕉无码| 色偷偷男人的天堂a v| 麻豆久久婷婷五月国产| 国产精品www视频免费看| 99视频国产热精品视频| 野花影院手机在线观看| 无止侵犯高H1V3无止侵犯| 欧美成人无码A区在线观看免费 | 武汉美女洗澡| 无码人妻精品一区二区蜜桃色欲 | 日本不卡一二三| 日本高清免费在线观看| 日本午夜福利无码高清|