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

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

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

3天內不再提示

AM信號生成中的注意點

FPGA之家 ? 來源:FPGA之家 ? 2023-01-10 11:02 ? 次閱讀

一、概述

說是概述,但是你還是得必須容我先瞎扯一番的。又是課程的作業,要通過FPGA實現AM信號的產生與解調。我們最開始手上是有硬件的板卡的,型號是叫Nexys Video。(當然現在被老師收走了,所以下面的程序只能講解到仿真的層次)要求是通過VIO控制載波頻率、調制信號頻率、調制深度可調,然后通過ILA觀察AM信號和解調后的信號。我記得載波信號的頻率要求是1M~10M,調制信號的頻率要求是1K~10K,調制深度從0到1、步進0.1。當然他規定了一定的精度。(VIO與ILA只能通過硬件板卡實現,下面的講解中演示不了)。這個程序雖然說不算難吧,但是我確實忙活了一個星期才搞明白,每天都得超過12點睡覺。最讓我崩潰的是:考試驗收的那一天,我竟然忘記把昨天晚上最后改好的程序考到U盤上來,又是各種原因不能回去拿電腦。我的那個心涼的。。。從頭一點點開始寫啊,然后還有各種各樣的波折,害的我都以為這門課是要來年重修的節奏。還好,最后一刻順利完成。好,瞎扯到此為止,下面進入正題。

二、平臺

軟件:Vivado 2016.4

硬件:Nexys Video(這個不重要)

三、要求

為了更好的說明下面一些參數設定的意義,把我們課程的部分要求貼上來

完成AM信號調制和解調功能,具體要求如下:

(1)載波信號頻率范圍:1M-10MHz,分辨率0.01MHz;

(2)調制信號為單頻正弦波信號,頻率范圍:1kHz-10kHz,分辨率0.01kHz;

(3)調制深度0-1.0,步進0.1,精度優于5%;

(4)調制信號和解調信號位寬為8位,AM信號16位,其他信號位寬自定義。

四、原理

雖然這部分簡單,但卻是最最重要的,把這部分看懂,所有的程序也就明白了。

1. AM信號:(A+ma*cos(w0t))*cos(wct)

一步步來嘛,首先肯定要產生兩個頻率不同的余弦波cos(w0t),cos(wct)。立馬想到調用系統自帶的DDS IP核來實現嘛,這是最簡單的方法。我在網上還看到一個自己通過導coe文件來模擬DDS然后來產生余弦波的,這里就不說了。

產生兩個余弦波后,再來兩個乘法器(現在沒有徹底想明白“*”這個符號和乘法器的區別,這里就不說了,我還是乖乖的調系統的乘法器吧)、一個加法器(后面程序直接用的“+”號,沒有用加法器ip 核),運算一把不就搞定了嗎。

2.AM信號生成中的注意點(這個有點繞)

首先看一下調制深度的問題。調制深度通常為已調波的最大振幅與最小振幅之差對載波最大振幅與最小振幅之和的比。就是生成AM波包絡的最大值與最小值之差除以最大值與最小值之和。包絡其實就是(A+ma*cos(w0t))。它的最大值是A+ma,最小值是A-ma。最后可以算出調制深度就是ma/A。A為1時,調制深度就是ma,其實只要A的值和后面的余弦波的最大值是相同的,調制深度就會為ma,為0~1之間。

但是有一個重要的問題不要忘了,就是在硬件描述語言中表示小數并不像C語言那么簡單直接(其實所謂的小數只是我們對每個字節中的0和1的解釋方式不同而已,在硬件描述語言中,我們會很自然的會把0和1兩種狀態直接轉換為十進制,比如8'b0000_0011,我們會很自然的把它看做3,那么這樣的話,硬件描述語言中是沒有小數的)。我們上面生成的余弦信號cos(w0t)并不是在0~1范圍內。假如我們讓DDS的輸出位寬為8位,那么這個余弦信號的幅度大小-128~127。我們就當做是-127~127,那么這里先假設A為127。再來再算一下調制深度。這時包絡最大值為127+ma*127,最小值為127-ma*127。最后調制深度還會是ma,這個ma的范圍還是0~1。ma是從0~1之間變的話,還是有不能直接表示小數這個問題。有兩種解決方法:

1.讓A=1270,也就是包絡最大值為1270+ma*127,最小值1270+ma*127。算出調制深度最后應該為ma/10的。這時便可以設定ma為1~10來改變調制深度了。

2,.下面的程序是用的是以下這種方法。比如說(127*256)>>8(要知道右移一位相等于除2,右移8位的話等于除以256),就相當于127*1。而(127*128)>>8就相當于127*0.5=63。也就是這樣產生我們的小數ma的,通過設定一個8位的變量depth_con乘以127,然后將得到的結果右移8位,那么我們就可以通過depth_con來控制調制深度depth了。他們的關系也就是depth=depth_con/256。當然這些推理是在保持A=127的情況下進行的,也就是AM信號包絡為127+(depth_con*COS)>>8。(COS是DDS產生的8位信號)

前面的127+(depth_con*COS)>>8得到后,再經過乘法器乘以8位的載波就行了,這個乘法器的輸出的就是我們要的AM信號了。這里還有一點就是127+(depth_con*COS)>>8的結果的范圍是0~256。這時可以將乘法器的一個輸入改為8無符號數,正好可以滿足0~256的范圍。乘以8位的載波信號后,得到的AM波正好是我們要求的那樣,輸出16位的AM波。(主要就是因為這才選的這種方法)

3.AM信號的解調

首先來談一下解調方法:

相干解調,就是在AM波的基礎上再乘以載波一次,然后經過低通濾波,隔直便可以得到我們要的解調信號。在頻域分析也就是乘以載波后有了會產生一個w0的頻率分量和幾個高頻分量,將這幾個高頻分量濾除便可以得到原始的調制信號。這個原理簡單。

然而我用的還是下面的這種方法不知道算不算包絡解調(我覺得不算吧),就是將AM波進行全波整流(就是取絕對值)或者半波整流(就是把負半軸的信號不要),然后低通濾波便可以得到我們要的解調信號了。這個原理最開始我是百思不得其解,因為最開始不知聽誰說這種方法算包絡解調,所以我一直在想為什么AM信號直接低通濾波后提取不了包絡,而整流后低通濾波就可以提取包絡了呢?但是其實再回頭看,原理也挺簡單。跟本不算提取包絡吧。下面是AM信號進行全波整流后的頻譜圖(MATLAB)。調制信號頻率為1KHz,載波頻率為100KHz。

放大前

e42880c8-9089-11ed-bfe3-dac502259ad0.png

放大后

e4332ae6-9089-11ed-bfe3-dac502259ad0.png

可以看出全波整流后的AM波在調制信號頻率處有了新的頻率分量,所以再經過低通濾波就可以得到最開始的調制信號。

理論推導的話,這幾天也大概搞明白了。首先(1+cosw0t)coswct全波整流后得到(1+cosw0t)|coswct|(肯定要保證(1+cosw0t)大于0的)

其實你只要得到|coswct|的傅里葉級數就可以明白了。|coswct|的傅里葉級數具體我記不清了,但是我記得展開后有一個常數項2/pi,然后加上后面的一大坨(上網上搜一下就知道了)。主要就是有了這個常數項2/pi,它和前面的(1+cosw0t)相乘后就會得到w0的頻率分量,也就是我們調制信號的頻率。然后濾波一下,你懂得。

至于半波整流一樣分析吧。

再來說一下濾波器在vivado里的實現

直接調用系統自帶的fir IP核,點開后第一個界面。選COE文件,然后導入。

e43f7a9e-9089-11ed-bfe3-dac502259ad0.png

這個COE文件可以通過MATLAB生成(我也只知道這一種方式)。在MATLAB窗口輸入命令:》fdatool

e44e4e48-9089-11ed-bfe3-dac502259ad0.png

有些東西并不一定按照我這么選,比如FIR濾波器的種類(Window,Hamming),選其余的應該沒什么大問題。主要是要保證截止頻率,我設的是20K,因為要求調制信號的頻率是1~10K,我稍微設高了一點。采樣頻率的話最少比載波頻率大2倍(采樣定理)我設的100M

還要進行量化后才能導出COE文件。如下

e45e174c-9089-11ed-bfe3-dac502259ad0.png

選擇Fixed-point后可能要等幾秒鐘。稍微等一會。量化完后就可以導出了,就是點Targets里的選項,就不給圖了

fir IP核第二,第三個設置窗口基本上不用改什么。下面的Input Sampling Frequency最好不要太大。我設成100時,程序運行好久都運行不完,太慢。

e46ac992-9089-11ed-bfe3-dac502259ad0.png

fir IP核設置完后,基本就沒什么說的了。直接給程序吧,對照著前面的原理看,看懂應該不是問題。

五、程序

代碼的話,先直接全部貼上來吧,還是比較簡單的,不像我最開始從網上看到的一個,各種各樣的模塊疊加在一起。一些注意點講解在后面。

e47ab2da-9089-11ed-bfe3-dac502259ad0.png

wire [23:0] modulate_con=1679;//用vio輸入時,將下面的vio代碼激活,并且要這幾個變量不能賦初值(carrier_con,modulate_con,depth)

wire [3:0] depth= 9;

// vio_0 vio_instance_name (

// .clk(sysclk), // input wire clk

// .probe_in0(AM_out), // input wire [22 : 0] AM signal

// .probe_out0(depth), // output wire [3 : 0] shen to control the depth of modulation

// .probe_out1(carrier_con), // output wire [15 : 0] carrier_con to control the frequence of carrier signal

// .probe_out2(modulate_con) // output wire [15 : 0] modulate_con to control the frequence of modulate signal

// );

e48671a6-9089-11ed-bfe3-dac502259ad0.png

e4925c28-9089-11ed-bfe3-dac502259ad0.png

e49fedc0-9089-11ed-bfe3-dac502259ad0.png

e4a9dca4-9089-11ed-bfe3-dac502259ad0.png

還有仿真模塊的頂層文件,就幾行。

e4b9a350-9089-11ed-bfe3-dac502259ad0.png

e4c595fc-9089-11ed-bfe3-dac502259ad0.png

六、注意事項

從最容易出現的錯誤開始說吧

1、fir iP核

在從U盤里往電腦里拷程序時一定會出現錯誤的,首先要把fir IP核的COE文件再導一遍。如果還是報錯的話要把以前的coe文件刪掉。就是下面紅色的文件

e4e97e2c-9089-11ed-bfe3-dac502259ad0.png

2.DDS的設置

前面沒怎么說DDS的事,比較簡單嘛。就是調系統的ip核,改一下頻率控制字的位寬和輸出位寬,其余的基本上不用改。計算輸出信號的頻率:100M/2^24是頻率分辨率,再用它乘以頻率控制字就是輸出信號的頻率了。程序前面的modulate_con,,carrier_con就是這樣算的,分別是10K,1M。

需要注意的是,當DDS的頻率控制字的位寬太小時,輸出的AM信號可能會失真的,這時只要把位寬改大點就好。我最開始調制信號dds的位寬設定16位,出來的就是失真AM信號。改完dds位寬后,不要忘了改前面定義的wire modulate_con的位寬。他們是對應的。

3.截位

由于最后要求輸出的是8位的解調信號,而通過fir IP 核濾波后的輸出信號遠遠大于8位,所以這里就有一個截位的問題。截位其實是通過看仿真圖來覺定截哪幾位的。

e4fa292a-9089-11ed-bfe3-dac502259ad0.png

可以看到39到35位都是0,所以就從第34位開始往下截取8位嘛。要注意的是,我們這樣截的話,連符號位也截去了,但符號位一直是0。所以在觀察最后解調出來的信號的波形時,要設為無符號數來觀察。

最后放一張完整的圖

e5068bca-9089-11ed-bfe3-dac502259ad0.png

最后,這個程序同學也在硬件板子上試過的沒有問題的。把那個VIO,和前面的幾個變量(carrier_con,modulate_con,depth)的初始化去掉。綜合生成bit流,導入板子。完工~

又想了一下,在網上查了一下包絡解調的定義:

包絡解調又稱包絡檢波,適用于普通調幅信號的解調,指產生的輸出信號與已調信號包絡線成正比的幅度解調。

那這樣說的話,這種方法算是包絡解調吧。(原諒我的知識有限)

另外,本人水平一般,如果各位發現錯誤的地方,希望能熱心指正,不勝感激。

審核編輯 :李倩

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

    關注

    1629

    文章

    21748

    瀏覽量

    603846
  • C語言
    +關注

    關注

    180

    文章

    7605

    瀏覽量

    136990
  • 調制信號
    +關注

    關注

    0

    文章

    64

    瀏覽量

    14794

原文標題:六、注意事項

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

收藏 人收藏

    評論

    相關推薦

    什么是調制?為什么進行調制?AM調制是什么?#調制 #解調 #信號 #AM調制 #數字信號處理

    數字信號處理AM調制
    安泰小課堂
    發布于 :2023年08月03日 17:46:58

    大家誰知道有什么現成的器件可以調制生成AM信號

    如題,大家誰知道有什么現成的器件可以調制生成AM信號
    發表于 10-13 10:37

    轉:CW10.6 PETSI_LDD 生成代碼的些許注意

    一,問題描述為什么要講CW10.6 PETSI_LDD 生成代碼的些許注意這個話題,該問題還是要追溯到一個客戶遇到的問題,他的問題是為什么使用平臺TWR-K60N512平臺,CW1
    發表于 06-06 11:49

    請問AM335X nor flash啟動設計應該注意什么?

    啟動的相關要點總結如下,供大家參考。1. 關于nor flash啟動的信息可以參考TRM的26.1.7.2 XIP Memory章節,在這里就不詳述了。2. 設計時注意由于AM335X的管腳有限
    發表于 06-04 07:38

    基于混沌和神經網絡的AM調制信號參數檢測

    數字示波器不能夠直接測量AM 調制信號,更不能測量微弱的AM 調制信號。本文運用混沌和Elman神經網絡作為檢測模型,通過混沌時間序列重構
    發表于 07-10 15:07 ?12次下載

    AM信號的PLL同步解調電路圖

    AM信號的PLL同步解調原理圖 AM信號的PLL同步解調電路圖
    發表于 04-21 11:34 ?2376次閱讀

    AM信號數字化解調算法分析與比較

    數字信號與模擬信號相比有很多優點,因此信號的數字化處理應用越來越普遍。作為常用信號,幅度(AM)調制信號
    發表于 09-27 11:18 ?1w次閱讀
    <b class='flag-5'>AM</b><b class='flag-5'>信號</b>數字化解調算法分析與比較

    簡易AM信號調制的FPGA實現過程簡單講解

    首先,為什么是AM信號的調制過程,是因為在短時間情況下,AM信號的實現相對簡單,而且上述提到的幾個模塊都可以得到使用和驗證。
    發表于 06-06 17:23 ?1733次閱讀
    簡易<b class='flag-5'>AM</b><b class='flag-5'>信號</b>調制的FPGA實現過程簡單講解

    簡易AM信號調制的FPGA實現過程簡單講解

    首先,為什么是AM信號的調制過程,是因為在短時間情況下,AM信號的實現相對簡單,而且上述提到的幾個模塊都可以得到使用和驗證。
    發表于 06-20 14:21 ?1252次閱讀
    簡易<b class='flag-5'>AM</b><b class='flag-5'>信號</b>調制的FPGA實現過程簡單講解

    功率信號源操作注意事項有哪些

    功率信號源是一種用來生成特定頻率、幅度、相位和波形的電信號的設備,通常用于測試電子設備的性能。在使用功率信號源的過程,需要
    的頭像 發表于 07-14 15:24 ?607次閱讀
    功率<b class='flag-5'>信號</b>源操作<b class='flag-5'>注意</b>事項有哪些

    如何自制一個AM信號

    我需要一個低失真AM信號源來饋送放大器的輸入,但我能找到的每個信號發生器的AM輸出失真規格都比放大器本身應滿足的失真要求要差··· 我需要測試UHF線性放大器提供低失真
    的頭像 發表于 10-16 10:56 ?1242次閱讀
    如何自制一個<b class='flag-5'>AM</b><b class='flag-5'>信號</b>源

    關于高速串行信號隔直電容的PCB設計注意

    關于高速串行信號隔直電容的PCB設計注意? 在高速串行信號傳輸,隔直電容是一種常見的解決信號
    的頭像 發表于 10-24 10:26 ?926次閱讀

    multisimam_voltage怎么用

    AM Voltage(Amplitude Modulation Voltage)是在Multisim中用于模擬調制電路的工具。AM電壓是指通過改變調制信號的振幅來改變載波信號的振幅。在
    的頭像 發表于 12-28 15:20 ?3650次閱讀

    AM574x散熱注意事項

    電子發燒友網站提供《AM574x散熱注意事項.pdf》資料免費下載
    發表于 09-19 11:25 ?0次下載
    <b class='flag-5'>AM</b>574x散熱<b class='flag-5'>注意</b>事項

    PLC應用AM335x可靠性注意事項

    電子發燒友網站提供《PLC應用AM335x可靠性注意事項.pdf》資料免費下載
    發表于 10-12 11:33 ?0次下載
    PLC應用<b class='flag-5'>中</b>的<b class='flag-5'>AM</b>335x可靠性<b class='flag-5'>注意</b>事項
    主站蜘蛛池模板: 中国xxx视频| 国产精品爽爽久久久久久蜜桃| 国精产品一区二区三区| 亚洲国产三级在线观看| 狠狠色狠狠色综合日日92| 中国老女人xxhd69| 欧美最新色p图| 国产九色在线| 中文字幕无码亚洲视频| 日本护士喷水| 激情午夜307| 99视频国产热精品视频| 无码日本亚洲一区久久精品| 久久久97丨国产人妻熟女| jyzzjyzzz视频国产在线观看| 无套内射纹身女视频| 久久中文字幕综合不卡一二区| 北条麻妃久久99精品| 亚洲蜜芽在线观看精品一区| 暖暖 免费 高清 日本视频大全| 国产成A人片在线观看| 用快播看黄的网站| 色噜噜狠狠一区二区三区| 学生无码AV一区二区三区 | 在线视频 国产 日韩 欧美| 欧美精品一区二区在线电影| 国产乱辈通伦影片在线播放亚洲| 最近日本字幕免费高清| 我们中文在线观看免费完整版| 老熟女重囗味HDXX| 国产欧美精品国产国产专区| 99久久人妻无码精品系列性欧美| 亚洲AV无码A片在线观看蜜桃| 欧美美女论坛| 久久精品国产亚洲AV妓女不卡| 国产91青青成人a在线| 99国产精品久久人妻| 杨幂视频1分11未删减在线观看| 日韩亚洲欧美中文高清| 麻豆婷婷狠狠色18禁久久| 国产午夜理论片YY8840Y|