0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何写一个简易AM信号的FPGA实现?

FPGA之家 来源:bug记录 作者:bug记录 2021-03-29 11:40 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前几天,临危受命,帮几个初学者的学生写一个简易AM信号FPGA实现,以帮助他们搭建一个相对完整的系统,测试他们的低速ADC,高速DAC,AGC控制等等模块。本文的FPGA代码已经经过上板测试,由于时间紧急没有保存图片,所以文章只有仿真图片。

首先,为什么是AM信号的调制过程,是因为在短时间情况下,AM信号的实现相对简单,而且上述提到的几个模块都可以得到使用和验证。因为FPGA的价格因素,做课设/比赛使用最多的还是Altera的Cyclone系列板。所以,本文使用Quartus II 13.1 作为Verilog代码综合实现工具。AM信号调制过程就不做过多介绍了,简单来说,就是基带信号和一个直流信号相加,然后与载波相乘。那么,在实现过程中,做了些许改变,先让基带信号与载波相乘,然后将截位后的信号与载波相加。如果想要实现更精细的AM信号调制(变更调制深度等参数),可以修改这个地方的先后顺序。AM公式表达如下:

为直流信号,是基带信号,是载波信号。

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

实现过程如上图,顶层文件使用BSF文件,更为直观。由上图可以看出,基带信号和载波信号是由NCO(DDS)产生,在上板验证中,低频部分的NCO被删去,由低速ADC采样外部信号替换这部分的低频信号。所以在刚开始搭建模块时,低速NCO输出信号位宽就兼容了低速ADC的16位位宽。根据资料1可得,Altera提供的NCO是根据32位输入信号phi_inc_i而输出对应的频率的正弦波。公式为:

是NCO预设输出正弦波频率,是输入时钟频率,是NCO的相位精度。这里的设置是32位。NCO(DDS)的本质是ROM表,ROM表存储着正弦波的波形数据,相位精度代表波形数据的多少。根据phi_inc_i累加地址,ROM根据地址输出波形数据,最后数据计算如下。

基带载波

频率(MHz)0.110

phi_inc_i8589935858993459

然后让基带和载波信号相乘,使用LPM_MULT IP核,设置好位宽,数据类型设为“signed”,设置流水线(增加clock),延迟设为1,便于后续通过时序检查。相乘输出信号位宽为32位,保险起见我们只截取最高位的符号位,再截取低位的数据。但是经过上板测试和仿真,符号位实际上有很多位。当然,这部分可以将符号位进行优化,或者设置一个模块,根据输入的参数输出不一样的截位信号,相当于在调整调制深度。同时,将载波信号延迟一个周期,与乘法器延迟一周期的信号做好时序对齐,然后经过LPM_ADD_SUB IP核的加法运算;同样,LPM_ADD_SUB IP核设置好输入信号位宽,数据类型设为“signed”,设置流水线,延迟设为1。最后输出的信号就可以经过高速DAC输出。整个调制过程就结束了。仿真结果:

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

最后思考,可以在加法器和乘法器增加一个enable端口,IP核可以增加这个输入信号;如果先加再乘,由于直流信号一般不会变动,使能信号可以等待每次低速ADC或低速NCO数值更新再拉高一次;乘法器也可以使用使能信号控制,这样的话性能可能没有变化,功耗或许可降低些。此外,使用VCS仿真NCO的nco.vo文件时,一直遇到一个问题,报错如下:

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

大概是说NCO生成的4个hex文件有问题,但是使用modelsim就没这个问题了。

原文标题:简易AM信号调制的FPGA实现过程简单讲解

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1663

    文章

    22494

    浏览量

    638984
  • 加速器
    +关注

    关注

    2

    文章

    841

    浏览量

    40232

原文标题:简易AM信号调制的FPGA实现过程简单讲解

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA 入门必看:Verilog 与 VHDL 编程基础解析!

    很多开发者第次接触FPGA,都会有同样的疑问:FPGA是硬件,不是软件,怎么程序?答案就是用硬件描述语言(HDL),最常用的就是Verilog和VHDL。今天,我们就带你入门,搞清
    的头像 发表于 01-19 09:05 698次阅读
    <b class='flag-5'>FPGA</b> 入门必看:Verilog 与 VHDL 编程基础解析!

    FPGA实现DDR控制模块介绍

    命令操作,其中命令(app_cmd)的值等于0,读操作app_cmd的值等于1。如下图所示命令时序,在命令的过程中,需要首先检查app_rdy信号的状态,当app_rdy为高电平
    发表于 10-21 08:43

    AM6546 Sitara™处理器技术文档总结

    AM654x 和 AM652x 器件将四或两 Arm Cortex-A53 内核与双 Arm Cortex-R5F MCU 子系统相结合,该子系统包括旨在帮助客户
    的头像 发表于 10-10 10:57 2466次阅读
    <b class='flag-5'>AM</b>6546 Sitara™处理器技术文档总结

    AM6411技术文档总结

    组合。AM64x 将 Sitara 器件的千兆位 TSN PRU-ICSSG 的两实例与多达两 Arm® Cortex-A53® 内核、多达四 Cortex-R5F MCU 和
    的头像 发表于 10-10 09:25 2346次阅读
    <b class='flag-5'>AM</b>6411技术文档总结

    AM2431技术文档总结

    通过多达四 Cortex-R5F MCU、 Cortex-M4F 和两支持 Sitara 的千兆位 TSN PRU_ICSSG实例提供可扩展的性能。
    的头像 发表于 09-30 18:04 4067次阅读
    <b class='flag-5'>AM</b>2431技术文档总结

    基于FPGA和LTC2308模数转换芯片的数字电压表设计

    通过FPGA对模数转换芯片(LTC2308)的采样控制,实现简易的数字电压表。
    的头像 发表于 08-16 08:58 5730次阅读
    基于<b class='flag-5'>FPGA</b>和LTC2308模数转换芯片的数字电压表设计

    Texas Instruments AM263Px/AM263Px-Q1基于Arm®的MCU数据手册

    Texas Instruments AM263Px/AM263Px-Q1基于Arm®的微控制器(MCU)旨在满足下代工业和汽车嵌入式产品的复杂实时处理需求。AM263Px/
    的头像 发表于 07-29 14:37 1364次阅读
    Texas Instruments <b class='flag-5'>AM</b>263Px/<b class='flag-5'>AM</b>263Px-Q1基于Arm®的MCU数据手册

    Texas Instruments 适用于AM64x Sitalog ™处理器的SK-AM64B入门套件数据手册

    Texas Instruments适用于AM64x Sitara™处理器的SK-AM64B入门套件是独立的测试和开发平台,是加速设计原型阶段的理想选择。
    的头像 发表于 07-28 10:20 946次阅读
    Texas Instruments 适用于<b class='flag-5'>AM</b>64x Sitalog ™处理器的SK-<b class='flag-5'>AM</b>64B入门套件数据手册

    如何写入eMMC中的正确区域?

    我正在使用定制的 FX3S 设备,该设备有连接到 S0 端口的 eMMC。在我的固件项目中,我使用 FATFS 作为嵌入式文件系统,并且它运行成功。 为了安装新固件,我将 PM
    发表于 07-17 07:21

    基于FPGA的压缩算法加速实现

    本设计中,计划实现对文件的压缩及解压,同时优化压缩中所涉及的信号处理和计算密集型功能,实现对其的加速处理。本设计的最终目标是证明在充分并行化的硬件体系结构 FPGA
    的头像 发表于 07-10 11:09 2574次阅读
    基于<b class='flag-5'>FPGA</b>的压缩算法加速<b class='flag-5'>实现</b>

    Altera FPGA 的PIO IP当中bidir和inout选项的区别

      PIO IP是FPGA 设计中比较简单常用的IP, 当设置PIO IP的Direction的时候,可以看到有如下4选项: Input代表这组IO是输入引脚,Output代表这组IO是输出引脚
    的头像 发表于 07-07 11:55 2823次阅读
    Altera <b class='flag-5'>FPGA</b> 的PIO IP当中bidir和inout选项的区别

    怎么结合嵌入式,Linux,和FPGA方向达到均衡发展?

    在嵌入式领域,不少人都怀揣着让嵌入式、Linux 和 FPGA方向实现均衡发展的梦想,然而实践中却面临诸多挑战。就像备受瞩目的全栈工程师稚晖君,他从大学玩单片机起步,凭借将智能算法融入嵌入式而
    的头像 发表于 06-25 10:08 1010次阅读
    怎么结合嵌入式,Linux,和<b class='flag-5'>FPGA</b>三<b class='flag-5'>个</b>方向达到<b class='flag-5'>一</b><b class='flag-5'>个</b>均衡发展?

    FPGA远程烧bit文件和调试ILA指南

    FPGA 开发过程中,烧bit文件和使用ILA进行调试是再常见不过的操作。但如果 FPGA 板卡被放在机房,或者通过PCIe插在服务器上,那么每次调试时我们都不得不带着笔记本电脑跑去机房或服务器旁,接上 JTAG 线后才能
    的头像 发表于 06-05 16:41 2775次阅读
    <b class='flag-5'>FPGA</b>远程烧<b class='flag-5'>写</b>bit文件和调试ILA指南

    基于FPGAAM调制系统设计方案

    本系统由FPGA、串口屏、DAC模块和AD831组成。FPGA通过调用宏功能模块NCO,按照输入时钟50MHz,产生相应频率正弦信号输出,共产生两路,路为调制
    的头像 发表于 05-23 09:45 1871次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>AM</b>调制系统设计方案

    请问如何在同一个FX3上实现GPIF接口?

    我们按照 AN75779 应用说明在 FX3 上成功实现了自定义图像传感器接口。 现在我们想添加另一个 GPIF 接口,这将允许同一个 FX3 设备从 FPGA 接收数据并发送到 US
    发表于 05-13 06:35