新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的QPSK信号源的设计与实现

基于FPGA的QPSK信号源的设计与实现

作者:中国电波传播研究所 高荣山 李铁成 时间:2008-08-01 来源:中电网 收藏

  相位累加器位数设置为32位,系统时钟120MHz,这样可实现小于0.03Hz的频率分辨率,查找表相位截取低14位。累加器进程如下:

本文引用地址:https://www.eepw.com.cn/article/86523.htm

always@(posedge clk_2x)

begin

if(dds_countT ==1'b0) //dds_countT为脉冲宽度计数器,时钟为clk_2x。

dds_start<=1'b1;

else

dds_start<=1'b0;

if(dds_stop=1'b0 && dds_stop_set=1'b0) //dds_stop是周期起停标志,dds_stop_set是上位机控制起停标志

begin

if(dds_start==1'b1 )

case (psk)

2'b00:dds_acc<=phase1;

2'b01:dds_acc<=phase2;

2'b10:dds_acc<=phase3;

2'b11:dds_acc<=phase4;

endcase;

else

dds_acc<=dds_acc + dds_freq_add;//dds_freq_add对于设置的载波频率。

end;

if(dds_countT<=countF_set && dds_countT>1) // countF_set为设置的脉冲宽度对应的数值。

dds_addr<=dds_acc[31:18] ;

else

dds_addr<=14'b00000000000000;

end;

end;

  信号的控制实现

  上位机通过PCI总线实现信号参数的读写控制。因本系统中只需PCI实现信号参数的控制,数据量不大,故配置PCI9054为PCI的从目标(Slave),C模式。

  在中实现参数寄存器,实时读取PCI总线的数据并更新。本地总线的读写通过三态门控制。实现代码如下:

assign data_inout=(enout)? data_out:32'bzzzzzzzz;

always@(clk)

begin

data_in<=data_inout;

end

  读写实现通过状态机程序实现,读写状态流程图如图3。

 

  上位机程序设计

  上位机安装Windows系统,传统上,PCI的驱动通过微软的DDK实现WDM驱动程序,本设计中采用Windriver软件,可方便地读写主机给PCI9054系统板分配的内存及I/O资源,并可生成inf文件和基于VC等开发环境的程序文件。

结论

  试验表明,以本文所介绍的方法产生的具有很好的性能,5MHz时连续波点频的杂散SFDR达到70dB以上,输出信号的频率覆盖短波波段,可达30MHz以上。在实际应用中,还可以加上线性调频等其他信号形式。若信号频段在超短波以上,可用产生固定中频,经数字上变频和DAC芯片(如AD公司的AD9857)上变频后输出,该方法具有很强的可扩展性。


上一页 1 2 下一页

关键词: FPGA 信号源 ASIC QPSK DDS

评论


相关推荐

技术专区

关闭