0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

如何寫一個簡易AM信號的FPGA實現(xiàn)?

FPGA之家 ? 來源:bug記錄 ? 作者:bug記錄 ? 2021-03-29 11:40 ? 次閱讀

前幾天,臨危受命,幫幾個初學(xué)者的學(xué)生寫一個簡易AM信號FPGA實現(xiàn),以幫助他們搭建一個相對完整的系統(tǒng),測試他們的低速ADC,高速DAC,AGC控制等等模塊。本文的FPGA代碼已經(jīng)經(jīng)過上板測試,由于時間緊急沒有保存圖片,所以文章只有仿真圖片。

首先,為什么是AM信號的調(diào)制過程,是因為在短時間情況下,AM信號的實現(xiàn)相對簡單,而且上述提到的幾個模塊都可以得到使用和驗證。因為FPGA的價格因素,做課設(shè)/比賽使用最多的還是Altera的Cyclone系列板。所以,本文使用Quartus II 13.1 作為Verilog代碼綜合實現(xiàn)工具。AM信號調(diào)制過程就不做過多介紹了,簡單來說,就是基帶信號和一個直流信號相加,然后與載波相乘。那么,在實現(xiàn)過程中,做了些許改變,先讓基帶信號與載波相乘,然后將截位后的信號與載波相加。如果想要實現(xiàn)更精細的AM信號調(diào)制(變更調(diào)制深度等參數(shù)),可以修改這個地方的先后順序。AM公式表達如下:

為直流信號,是基帶信號,是載波信號。

9f5cb222-8ecc-11eb-8b86-12bb97331649.png

實現(xiàn)過程如上圖,頂層文件使用BSF文件,更為直觀。由上圖可以看出,基帶信號和載波信號是由NCO(DDS)產(chǎn)生,在上板驗證中,低頻部分的NCO被刪去,由低速ADC采樣外部信號替換這部分的低頻信號。所以在剛開始搭建模塊時,低速NCO輸出信號位寬就兼容了低速ADC的16位位寬。根據(jù)資料1可得,Altera提供的NCO是根據(jù)32位輸入信號phi_inc_i而輸出對應(yīng)的頻率的正弦波。公式為:

是NCO預(yù)設(shè)輸出正弦波頻率,是輸入時鐘頻率,是NCO的相位精度。這里的設(shè)置是32位。NCO(DDS)的本質(zhì)是ROM表,ROM表存儲著正弦波的波形數(shù)據(jù),相位精度代表波形數(shù)據(jù)的多少。根據(jù)phi_inc_i累加地址,ROM根據(jù)地址輸出波形數(shù)據(jù),最后數(shù)據(jù)計算如下。

基帶載波

頻率(MHz)0.110

phi_inc_i8589935858993459

然后讓基帶和載波信號相乘,使用LPM_MULT IP核,設(shè)置好位寬,數(shù)據(jù)類型設(shè)為“signed”,設(shè)置流水線(增加clock),延遲設(shè)為1,便于后續(xù)通過時序檢查。相乘輸出信號位寬為32位,保險起見我們只截取最高位的符號位,再截取低位的數(shù)據(jù)。但是經(jīng)過上板測試和仿真,符號位實際上有很多位。當然,這部分可以將符號位進行優(yōu)化,或者設(shè)置一個模塊,根據(jù)輸入的參數(shù)輸出不一樣的截位信號,相當于在調(diào)整調(diào)制深度。同時,將載波信號延遲一個周期,與乘法器延遲一周期的信號做好時序?qū)R,然后經(jīng)過LPM_ADD_SUB IP核的加法運算;同樣,LPM_ADD_SUB IP核設(shè)置好輸入信號位寬,數(shù)據(jù)類型設(shè)為“signed”,設(shè)置流水線,延遲設(shè)為1。最后輸出的信號就可以經(jīng)過高速DAC輸出。整個調(diào)制過程就結(jié)束了。仿真結(jié)果:

9fc47e16-8ecc-11eb-8b86-12bb97331649.png

最后思考,可以在加法器和乘法器增加一個enable端口,IP核可以增加這個輸入信號;如果先加再乘,由于直流信號一般不會變動,使能信號可以等待每次低速ADC或低速NCO數(shù)值更新再拉高一次;乘法器也可以使用使能信號控制,這樣的話性能可能沒有變化,功耗或許可降低些。此外,使用VCS仿真NCO的nco.vo文件時,一直遇到一個問題,報錯如下:

a01b5a88-8ecc-11eb-8b86-12bb97331649.png

大概是說NCO生成的4個hex文件有問題,但是使用modelsim就沒這個問題了。

原文標題:簡易AM信號調(diào)制的FPGA實現(xiàn)過程簡單講解

文章出處:【微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責任編輯:haq

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

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598921
  • 加速器
    +關(guān)注

    關(guān)注

    2

    文章

    785

    瀏覽量

    37149

原文標題:簡易AM信號調(diào)制的FPGA實現(xiàn)過程簡單講解

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

收藏 人收藏

    評論

    相關(guān)推薦

    如何實現(xiàn)FPGA的IO輸出脈沖信號放大?

    高速的MOS開關(guān)管控制,產(chǎn)生這樣的波形。FPGA輸出的TTL電平不能直接驅(qū)動MOS開關(guān)管,因此前級可以通過三極管驅(qū)動。 請教大家這個方案可行嗎,如果可行,請教器件該如何選取?;蛘哂衅渌姆桨缚梢?/div>
    發(fā)表于 09-13 08:13

    如何用FPGA實現(xiàn)通信系統(tǒng)的發(fā)射端接收機?

    實現(xiàn)通信系統(tǒng)(5GHz 頻段,通信距離約 10km)的發(fā)射端和接收機的大致步驟: 發(fā)射端: 數(shù)字信號生成:使用 FPGA 內(nèi)部的邏輯資
    發(fā)表于 09-10 19:15

    基于FPGA 的DDS正弦信號發(fā)生器的設(shè)計和實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于FPGA 的DDS正弦信號發(fā)生器的設(shè)計和實現(xiàn).pdf》資料免費下載
    發(fā)表于 03-24 09:34 ?8次下載

    fpga仿真文件怎么

    首先,你需要選擇FPGA仿真軟件,如ModelSim、Vivado、Quartus II等。這些軟件都提供了強大的仿真功能,可以幫助你驗證FPGA設(shè)計的正確性。
    的頭像 發(fā)表于 03-15 14:00 ?547次閱讀

    FPGA實現(xiàn)原理

    布局加載到實際的FPGA上。這個過程通常通過向FPGA發(fā)送特定的二進制文件來完成。FPGA
    發(fā)表于 01-26 10:03

    射頻信號源的LF源與AM調(diào)制信號源是如何調(diào)試的呢?

    射頻信號源的LF源與AM調(diào)制信號源是如何調(diào)試的呢? 射頻信號源是用于產(chǎn)生射頻信號的設(shè)備。LF源和AM
    的頭像 發(fā)表于 01-19 15:54 ?819次閱讀

    如何寫內(nèi)存泄漏檢測工具

    如何確定有內(nèi)存泄露問題,如何定位到內(nèi)存泄露位置,如何寫內(nèi)存泄漏檢測工具? 1:概述 內(nèi)存泄露本質(zhì):其實就是申請調(diào)用malloc/new,但是釋放調(diào)用free/delete有遺漏,或者重復(fù)釋放
    的頭像 發(fā)表于 11-11 16:19 ?708次閱讀

    如何實現(xiàn)多讀多的線程安全的無鎖隊列

    加鎖。那么如何實現(xiàn)多讀多的線程安全的無鎖隊列呢? 互斥鎖:mutexqueue(太簡單不介紹了) 互斥鎖+條件變量:blockqueue(太簡單不介紹了) 內(nèi)存屏障:lockfr
    的頭像 發(fā)表于 11-08 15:25 ?866次閱讀
    如何<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>一</b><b class='flag-5'>個</b>多讀多<b class='flag-5'>寫</b>的線程安全的無鎖隊列

    如何寫簡單的裝飾器

    要的是,它讓 Python 中被裝飾器裝飾后的方法長得更像裝飾前的方法。 本篇文章不會過多的向你介紹裝飾器的基本知識,我會默認你知道什么是裝飾器,并且懂得如何寫簡單的裝飾器。 不了解裝飾器的可以先去閱讀我之前
    的頭像 發(fā)表于 11-01 09:54 ?402次閱讀
    <b class='flag-5'>如何寫</b><b class='flag-5'>一</b><b class='flag-5'>個</b>簡單的裝飾器

    請問ESP8266開發(fā)板如何寫程序?

    社區(qū)送的ESP8266開發(fā)板如何寫程序?是像stm32那樣用Keil編程么?
    發(fā)表于 10-31 06:53

    米爾AM62x核心板續(xù)AM335x經(jīng)典 助力新代工業(yè)4.0升級

    續(xù)AM335x經(jīng)典;米爾AM62x核心板176元起 在過去的十幾年中,TI Sitara系列推出了很多優(yōu)秀的處理器,其中在工業(yè)、電力、醫(yī)療等領(lǐng)域有著廣泛應(yīng)用的AM335x系列處理器,
    的頭像 發(fā)表于 10-27 19:52 ?854次閱讀
    米爾<b class='flag-5'>AM</b>62x核心板續(xù)<b class='flag-5'>寫</b><b class='flag-5'>AM</b>335x經(jīng)典 助力新<b class='flag-5'>一</b>代工業(yè)4.0升級

    基于FPGA種SDRAM控制器簡易化設(shè)計方法

    電子發(fā)燒友網(wǎng)站提供《基于FPGA種SDRAM控制器簡易化設(shè)計方法.pdf》資料免費下載
    發(fā)表于 10-26 09:08 ?0次下載
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>一</b>種SDRAM控制器<b class='flag-5'>簡易</b>化設(shè)計方法

    FPGA為什么有時候還需要時鐘配置芯片提供時鐘呢?

    ,時鐘是很重要的因素,而時鐘配置芯片則是為了提供時鐘信號而存在。 時鐘是FPGA中非常重要的因素,因為FPGA必須在時鐘邊沿上完成
    的頭像 發(fā)表于 10-25 15:14 ?1489次閱讀

    FPGA數(shù)字信號處理-FIR濾波器及AM解調(diào)

    AM解調(diào)中般的方式是進行全波整流或者半波整流,然后經(jīng)過低通濾波器即可。
    的頭像 發(fā)表于 10-17 11:43 ?1471次閱讀
    <b class='flag-5'>FPGA</b>數(shù)字<b class='flag-5'>信號</b>處理-FIR濾波器及<b class='flag-5'>AM</b>解調(diào)

    如何自制AM信號

    我需要低失真AM信號源來饋送放大器的輸入,但我能找到的每個信號發(fā)生器的AM輸出失真規(guī)格都比放
    的頭像 發(fā)表于 10-16 10:56 ?985次閱讀
    如何自制<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>AM</b><b class='flag-5'>信號</b>源