基于FPGA的软件无线电调制解调器设计概述

213 篇文章 51 订阅

目录

1.调制解调原理

2.数字滤波器

3.编码和码元映射 

4.载波同步与校正 


       软件无线电(Software Defined Radio, SDR)是一种灵活的无线通信系统设计方法,其核心理念在于将传统的硬件无线电功能通过软件实现,从而使得系统能够通过软件升级来支持多种通信标准和信号处理技术。基于现场可编程门阵列(Field Programmable Gate Array, FPGA)的SDR调制解调器设计,利用FPGA的高度灵活性和并行处理能力,实现高效、可重构的无线通信系统。SDR系统通常包括射频前端(RF Front End)、模数转换(ADC)、数字信号处理(DSP)以及数模转换(DAC)等模块。在FPGA中,主要关注的是DSP部分,它负责信号的数字化处理,包括调制、解调、滤波、同步等关键功能。

1.调制解调原理

      调制是将基带信号转换为适合在无线信道中传输的频带信号的过程,常见的调制方式有幅移键控(ASK)、频移键控(FSK)、相移键控(PSK)等。以二进制相移键控(BPSK)为例,调制信号可以表示为:

s(t)=Acos(2πfc​t+ϕ)

其中,A是信号幅度,fc​是载波频率,ϕ根据基带数据(0或1)取值为0或π。

       解调则是调制的逆过程,从接收到的信号中恢复出原始基带信号。对于BPSK,解调通常涉及对接收信号进行相位检测,根据相位差异判断发送的比特。

        以16QAM为例子,16-QAM调制器包括RF发射数据泵的关键功能模块(见图1)。20-Mbps串行数据分为4比特码元组(symbol)后,以每秒5兆码元的速率并行送至一个差分编码器和码元映射器(symbol mapper)。该映射器产生3比特的正交分量对。然后这些分量对由一对平方根升余弦滤波器进行脉冲整形,经过插值达到每秒20兆码元,再由5MHz载波进行调制,将各输出相加后进行数模转换。设计的关键是采用一对插值脉冲整形滤波器。

2.数字滤波器

       数字滤波器是SDR中不可或缺的组件,用于信号的预处理和后处理,如带通滤波、匹配滤波等。FIR(有限冲击响应)和IIR(无限冲击响应)滤波器是最常用的两种类型。FIR滤波器的输出可由输入信号与滤波器系数的卷积给出:

其中,y[n]是输出样本,x[n]是输入样本,h[k]是滤波器系数,N是滤波器阶数。

       平方根升余弦滤波器的数据通道由已可转换为CLB的标准功能模块定义。每隔200ns将映射器输出的3比特I、Q信号传至并串转换移位寄存器(PSR)。RAM移位寄存器(SR)链中存储了七个先前的码元。前三个滤波器响应Y b , Y c , Y d与移位寄存器中的循环数据一起运算。PSR还需要一个反馈通道,但RAM SR在只读时循环受到模块寻址的影响。这里的模块有六个,前三次移位用于Y b,紧接着的三次用于Y c,最后三次则是用于Y d。在计算Y e时,数据沿SR链下移。这种模块寻址模式随着前级传输(写)的数据不断重复。所有十二次移位和相应的PSR加载、RAMSR寻址及写控制都来源于60MHz系统时钟。 
       由于相同的系数组要用于两个采样周期,一个用于I通道数据计算,另一个用于Q通道数据计算,用一组DALUT和2/1复用器将串行数据流导向相应的地址端口。这些端口可以表示DALUT的结构。h 3端口的逻辑高电平选择部分乘积和包含h 3的所有内存地址。与此类似,h 7端口的逻辑高电平选择所有包含h 7的所有地址,h 3和h 7端口的逻辑高电平选择所有包含h 3和h 7的地址。剩余的六个系数仍采用这种模式。事实上,八个系数将需要2 8或256个字存储。对于12比特系数的情况,将需要 (每个CLB为256/32 字) x 12 = 96 个CLB。另一个诀窍是使用两个DALUT,每个需要四个系数并增加它们的输出。这样CLB的数目则减少到(2 x 24)/32 x 12 + 13/2 (并行加法器) = 18.5 个CLB. 
       同样的简化也可用到以h 1开始的第二套滤波器系数中。采用2/1复用器可分时共享并行加法器。该加法器扩展为13个比特后,输入到前述执行移位和加法运算的标量累加器。当输入变量的符号位传输给DALUT时,就进行减运算。此过程可通过在DALUT输出增加EXOR门并向累加器第一级进位的标准方法来完成。对于负响应Y d和Y e,数据采样可不管符号位,而对所有的DALUT输出数据取反来求补。 
       对于分数二进制补码格式的I、Q数据,滤波器系数要进行调整以防在最后输出中溢出。十个最高有效位可加载到D/A转换驱动寄存器中。 
      滤波器数据通道的CLB总数为71.5个,FPGA输出端口带有触发器,可作为D/A转换的驱动寄存器。算上编码器(31个CLB)及定时和控制功能(估计要少于50个CLB)在内,总数大约为159个CLB,正好可置于Xilinx XC4000系列中较小(稍大于最小)的芯片中,即XC4005 (196个CLB)。如果采用Xilinx Virtex等更高级的FPGA器件,则可减少CLB的数量并提高性能。 
        整个设计可确保60MHz系统时钟条件下的性能。数据流采取统一形式且单向传输。可以插入管道寄存器(不增加CLB)以缩短组合路径。通过标量累加器的十四级的进位链是最长的组合路径。然而,通过内置预进位电路可确保足够的速度余量。

3.编码和码元映射 

       在确定编码器和信号映射器的逻辑数目时,我们可以借鉴过去标准调制解调器的设计。如V.32中的编码器包括一个提供180度双相保护的差分编码器和一个能加入冗余以减小接收器的位误差率(BER)的卷积编码器。编码器和映射器都是有限状态机实现的,所有状态由五个寄存器(2.5个 CLB)实现,连接逻辑由八个二输入异或门(4个CLB)及三个二输入与门(1.5 CLB)构成。在这个16-QAM发送器中,一个串并转换寄存器(2个CLB)捕获到四个20-Mbps的串行比特后形成一个4比特码元,这样编码器就可以处理降低到每秒5兆码元的数据流,而这种速率CLB很容易处理。数据通道控制需要沿着数据通道的寄存器进行时钟控制,所需CLB的数量少于15个。接着,一个经编码的5比特输出码元对应映射器的地址线,很简单,该映射器是一对3比特输出的LUT。 
       这些输出作为正交分量(I和Q) 映射一个二维平面(星座)内的码元位置。64个交叉点(星)中仅有16个代表有效的码元位置。映射器的大小为32字 x 3比特 x 2 即6个CLB。这些功能模块的CLB总数是31个。 

4.载波同步与校正 

      在SDR系统中,精确的时钟同步和相位校正是确保信号正确解调的关键。这通常涉及载波恢复、符号定时恢复和帧同步等技术。例如,载波恢复可以通过锁相环(PLL)或成本较低的数字相位锁定环(DPLL)实现。
      载波调制的简单方程为:Y(k) = yI(k)cos(wC*t) + yQ(k)sin(wC*t),其中wC为载波频率= 2p(5 MHz), I和Q表示同相和正交的码元分量。 
      此方程每50 ns执行一次。一个码元周期内(200 ns)仅有四个载波值。这些值可以方便地定义为:cos(wC*t) = 1, 0, -1, 0和sin(wC*t)= 0, 1, 0, -1 ,1。 
      调制输出既不需要任何乘法或加法,也不需要每隔50ns计算一次I、Q滤波器响应。50 ns计算一个I响应接着在下一个50 ns计算一个Q响应,然后再计算I响应、Q响应,周而复始。 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值