FPGA实现ASK(PIE编码)发射模块

文章详细介绍了使用ARM处理器通过AXI总线传输数据到FIFO,然后进行PIE编码。编码后的数据与DDS生成的1MHz正弦信号相乘,实现ASK调制。DDSIP核采用Xilinx的DDSCompiler6.0,输出字节宽度为11,编码过程通过控制读取FIFO的时序来完成。仿真结果显示PIE编码和DDS调制正确执行,输出符合预期。
摘要由CSDN通过智能技术生成

一、发射模块设计思路:

  1. 首先将ARM处理器通过AXI总线传过来的一帧32位宽数据存入FIFO中;(数据类型:位宽32bit,只有最高位和最低位有效,最高位data[31]=0,表示不需要进行PIE编码(比如帧同步和前导);最高位data[31]=1,表示数据信号,需要进行PIE编码后经ASK调制输出。
  2. 从FIFO中读出数据,完成PIE编码。
  3. 将编码后信号与DDS产生的频率为1MHZ的正弦信号相乘,进行ASK数字载波调制,调制后数据经发射模块输出,后续连接D/A转换器或射频芯片发射输出。

二、简单描述PIE编码规则:

数据位data[0]= 0 时,PIE编码为 2 个 0.5tari 的 二进制数10,如果是数据位data[0]= 1 时,编码为 4 个 0.5tari 的 二进制数1110。不需要进行编码的部分直接根据数据位bit数值输出0.5tari,其中tari在实验中设置为0.8us。

三、调用DDS IP核实现ASK调制原理:

xilinx官方提供的DDS Compiler(6.0)IP核,内部集成了相位发生器和SIN/COS查找表(相位到正弦值的转换)组成。编译器核心实现了高性能、优化的相位生成和相位到正弦电路,具有axi4流兼容接口。DDS由这些部件可以单独使用或组合使用。DDS IP核基本原理和具体配置可参考文章DDS信号发生器实现(DDS Compiler 6.0)_蓝色的猫猫的博客-CSDN博客

输出数据通道设置:

在DDS中设置“sine and cosine”输出时,sin和cos会共用数据总线,sin使用高字节,cos使用低字节。选定输出字节宽度后,多余位用符号位扩充。

输出字节宽度设置为11时,格式如下: 

  assign sin_data = {dds_axi_data[26],dds_axi_data[26:16]};

  assign cos_data = {dds_axi_data[10],dds_axi_data[10:0]};

DDS IP核几乎都是采用二进制补码带符号数。输入信号与本地载波混频时,要求输入信号保持带符号二进制补码形式。

输入信号与载波相乘实现方法:利用移位代替除法时,右移时高位补符号位(或者也可以调用乘法IP核实现)代码如下: 

四、代码设计基本思路

模块端口设计:

 接收ARM端传过来的data数据,进行PIE编码和ASK数字调制后输出i路信号dac_i_data。

实现PIE编码主要通过编写div_flag、rd_fifo_en和shift_data信号的时序代码,实现相互配合。通过控制读fifo使能信号,改变shift_data的初始数据( 

1、若此时读出数据rd_fifo_dout[31]=0,shift_data[31]<=rd_fifo_dout[0],其余位填充1;

2、若此时读出数据rd_fifo_dout[31]=1同时d_fifo_dout[0]=1,shift_data[31:28]<={4'b110},其余位填充1;

3、若此时读出数据rd_fifo_dout[31]=1同时d_fifo_dout[0]=0,shift_data[31:30]<={2'b10},其余位填充1)。

然后在rd_fifo_en低电平周期内,对shift_data进行左移位,改变shift_data[31]的取值。shift_data[31]决定载波输出幅值大小。部分代码如下:

 五、仿真结果测试: 

从仿真结果中看出,正确实现了数据的PIE编码,且验证了DDS输出正弦信号为10MHZ(频率控制字为 429496729;系统时钟频率为100MHZ),实验设置的0.5个tari为0.4us,即shift_data[31]的数据持续时间内包含4个正弦信号波形。

文章均是个人日常学习总结,如有理解不正确地方,欢迎指正。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值