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

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

3天内不再提示

基于FPGA的OFDM调制器设计

CHANBAEK 来源:哈勒昆 作者:小哈 2023-07-23 11:48 次阅读

今天介绍的是使用FPGA做OFDM的调制。

图片

首先是OFDM调制的原理图,输入数据在输入系统后首先会经过扰码环节,在数字通信中数据中长连的“0”或“1”序列会对接收机的位同步产生重要影响,通过对要发送的数据进行扰码操作,可以解决其对接收机同步的影响。扰码器的实质是一个反馈的移位寄存器,输出结果是一个m序列,将输出的m序列域输入的数据进行异或运算,从而将输入的数据搅乱。

扰码模块根据使用的生成多项式完成对输入数据的扰码操作。这里使用的扰码器是通过一个7位的反馈移位寄存器来实现的,使用的扰码器生成多项式为:

image.png

图片

上图为扰码器的硬件实现结构图,该扰码器输出序列的周期为127,首先将扰码器的初始值设置为1011101,每来一个时钟周期将扰码器的值右移一位,同时将第七位和第四位进行异或运算,将异或的结果作为最低位的值。同时也将得到的结果和输入的数据分别进行异或运算,从而实现对输入数据的扰码操作。

扰码器程序如下所示:

图片

图片

s_start为启动信号,s_coder为7位移位寄存器,s_yz为第七位和第四位异或后的结果,当时在程序中因为顺序问题我写的是s_coder[0]和s_coder[3]。s_out为移位寄存器s_coder[0]的输出,data_in为输入数据,data_out为输入数据data_in与移位寄存器输出s_out异或运算的结果,即为扰码后的输出。

这里因为我没做解调所以省去了信道编码部分,在需要添加冗余的部分我才用补零来进行补充。

对于64QAM调制,如下图所示为64QAM调制原理图

图片

这里的2到8电平转换即为星座映射(8电平为-1,-3,-5,-7,1,3,5,7)。

对于64QAM的星座图,星座图中每一个点都由6bit数据表示,所以在程序中每6bit数据映射一次,下图为verilog仿真图。

图片

图片

图片

s_start为起始信号,data_in为扰码之后的输入64QAM调制的信号data_index为存储输入的6bit数据,cnt为计数器,data_index每输入一个数据cnt自加一次;index为计算6bit数据后对应的映射状态,data_i和data_q为根据(index)的映射结果I/Q信号。这里我是根据状态机来写的,index为6bit信号的计算结果,然后根据index的大小来描写状态机进行映射。最后将data_i和data_q的结果存储到fifo中,即图中的data_fifo_in。

在FPGA上已经完成了星座映射后将I、Q信号送入fifo中存储,然后通过RAM地址进行加冗余以及添加导频,从而将一个OFDM符号中星座映射后的48个数据增加至128个数据,数据都写入RAM,然后通过地址读取RAM中的数据送入IFFT变换的输入端口,以及正常输出,在FPGA上实现频域至时域的转换。

下图中data_i和data_q为星座映射后得到I、Q数据,data_fifo_in为写入fifo的数据,由图二可以看出,data_fifo_in的前八位为data_i,data_fifo_in的后八位为data_q。

图片

下图便是将数据写入RAM,并通过地址读写增加冗余以及插入导频。rd_en为读取fifo数据使能,data_fifo_out为读取的fifo数据。ram_en为RAM使能,ram_wea为高电平时向RAM中写入数据,ram_wea为低电平时向RAM中读取数据,ram_addr为写入/读取数据的地址。data_ram_in为写入ram中的数据,增加的冗余为前38个写入的数据为0以及后37个写入数据为0。中间插入四个导频。

在前38个写入数据0后便开始写入fifo中的数据,在地址为37时(0~37)打开fifo的读使能(rd_en),此时将fifo输出端(data_fifo_out)数据赋值给RAM写入端(data_ram_in)。图中的ram_addr为43时写入的数据为导频符号,在这里导频符号我是通过类似于m序列的扰码器来进行产生的。

图片

导频的产生:

需要插入的4个导频符号分别为1,1,1,-1。OFDM数据中插入的导频符号并不都是一样的,需要根据公式对插入的导频符号的极性进行改变,这里我用的改变导频符号极性的公式为s(x)=x7+x4+1。

公式的实质是一个扰码器,首先将扰码器的初始状态设置为1111111,根据扰码器的输出结果对导频符号的极性进行修改,若扰码器的输出结果为0,则导频符号的极性不变,若扰码器的输出结果为1,则对导频符号的极性进行修改,修改规则为1 -> -1,-1 -> 1。

图七为导频产生数据波形图,其中data_m为扰码器序列,初始状态为1111111,每当需要插入导频时m_start便会使能置1,根据m_start可以看出图中一个OFDM符号中共插入四个导频。p寄存器中便是存放的四个原始导频数据,01表示导频1,11表示导频-1。data_m_out便是最终插入OFDM符号的导频数据,即写入ram中的导频数据。

图片

ifft变换:

在数据都在RAM中存好之后便是将ram中的数据送入IFFT变换的输入端口,此时将ram的ena使能端置为高电平ram的wea置为低电平,开始读取ram中的数据。如下图所示,ram的ena为高,ram的wea为低,ram数据输出端为douta开始输出数据。

图片

这里OFDM一次传输128个数据,在星座映射后为48个数据,插入四个导频后为52个数据,这里选择通过补零来添加冗余,如下图所示。

图片

在上图中,ifft_s_data_tdata为ifft变换的输入端口,ifft_s_data_tvalid为输入使能,ifft_s_data_tvalid为高时输入ifft_s_data_tdata的数据才有效。

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

    关注

    1603

    文章

    21326

    浏览量

    593242
  • ofdm
    +关注

    关注

    6

    文章

    346

    浏览量

    56797
  • 接收机
    +关注

    关注

    8

    文章

    1122

    浏览量

    52644
  • 调制器
    +关注

    关注

    3

    文章

    784

    浏览量

    44720
收藏 人收藏

    评论

    相关推荐

    一种基于相位调制器的40 GHz OFDM-ROF系统实验研究

    【作者】:李支兰;曹子峥;董泽;陈林;【来源】:《光电子.激光》2010年03期【摘要】:实验研究了一种基于相位调制器(PM)并级联强度调制器(IM)实现40 GHz毫米波传输正交频分复用(OFDM
    发表于 04-23 11:32

    谁有基于FPGA的数字调制器的程序啊

    谁有基于FPGA的数字调制器的程序啊,急用啊ASK,PSK,.FSK,QPSK等
    发表于 04-14 22:31

    哪位大神用FPGA实现过OFDM调制解调?

    哪位大神用FPGA实现过OFDM调制解调?
    发表于 07-02 22:26

    有没有写过fm调制器fpga实现的代码

    有没有写过fm调制器fpga实现的代码,求大神赐教
    发表于 04-15 21:54

    请问FM调制器FPGA实现

    求助FM调制器FPGA实现,对FPGA这些完全不了解,在网上看可以用DDS技术实现FM的数字调制,就在书上按照步骤先做了产生正弦波分频模块寻址模块数据存储模块,但编译不能通过,也不知
    发表于 03-16 11:43

    有没有写过fm调制器fpga实现的代码?

    看了视频资料只会实现输出正弦波,不会写FM调制,请问写有没有写过fm调制器fpga实现的代码,急求
    发表于 03-17 17:35

    隔离型Σ-Δ调制器的简化框图

    的时钟抖动,并重构时钟信号,以实现Σ-Δ编码的正常功能。图2a:显示了具有相同FPGA板和应用软件的内和外时钟Σ-Δ调制器的测量设置图3:显示了示波器捕获的两类Σ-Δ调制器的MCLK
    发表于 10-21 16:12

    ∑-△调制器的设计原理是什么?怎么实现FPGA

    ∑-△调制频率合成器及其实现∑-△调制器原理设计∑-△调制器FPGA实现
    发表于 04-15 06:47

    FPGA实现OFDM调制器设计

    提出一种 OFDM 高性能数字调制器FPGA实现方案;采用自顶向下的设计思想,将系统分成FIR滤波器、数控振荡器、移相器、乘法电路和加法电路等5大模块,重点论述了FIR滤波器、数控振
    发表于 08-15 11:15 62次下载
    <b class='flag-5'>FPGA</b>实现<b class='flag-5'>OFDM</b><b class='flag-5'>调制器</b>设计

    基于FPGAOFDM系统设计与实现

    本文基于802.16a协议的原理架构,本着小成本、高效率的设计思想,建立了一个基于FPGA的可实现流水化运行的OFDM系统的硬件平台,包括模拟前端及OFDM调制器
    发表于 05-25 09:38 5966次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>OFDM</b>系统设计与实现

    基于FPGA的全数字FQPSK调制器实现_杨峰

    基于FPGA的全数字FQPSK调制器实现_杨峰
    发表于 03-19 11:38 2次下载

    基于ofdm调制解调原理,ofdm调制解调fpga代码

      摘要:OFDM是一种无线环境下的高速传输技术。本文主要总结了基于ofdm调制解调原理以及OFDMFPGA代码实现,下面我们一起来看
    发表于 12-12 14:10 2.3w次阅读
    基于<b class='flag-5'>ofdm</b>的<b class='flag-5'>调制</b>解调原理,<b class='flag-5'>ofdm</b><b class='flag-5'>调制</b>解调<b class='flag-5'>fpga</b>代码

    如何使用FPGA设计和实现OFDM系统和OFDM中的FFT模块设计及其FPGA实现

    建立了一个基于FPGA的可实现流水化运行的OFDM系统的硬件平台,包括模拟前端、基于FPGAOFDM调制器
    发表于 12-13 16:45 22次下载
    如何使用<b class='flag-5'>FPGA</b>设计和实现<b class='flag-5'>OFDM</b>系统和<b class='flag-5'>OFDM</b>中的FFT模块设计及其<b class='flag-5'>FPGA</b>实现

    一种基于FPGA的MSK调制器设计与实现

    一种基于FPGA的MSK调制器设计与实现说明。
    发表于 04-27 14:08 22次下载

    基于FPGAOFDM调制器设计与实现

    电子发烧友网站提供《基于FPGAOFDM调制器设计与实现.pdf》资料免费下载
    发表于 10-26 09:25 0次下载
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>OFDM</b><b class='flag-5'>调制器</b>设计与实现