首页 > 其他分享 >m基于FPGA的1024QAM调制信号产生模块verilog实现,包含testbench

m基于FPGA的1024QAM调制信号产生模块verilog实现,包含testbench

时间:2023-07-16 22:32:52浏览次数:33  
标签:wire FPGA clk signed verilog testbench 1024QAM 调制

1.算法仿真效果

本系统进行了Vivado2019.2平台的开发,Vivado2019.2仿真结果如下: 1.png

将1024调制信号导入到matlab显示星座图

2.png

2.算法涉及理论知识概要 本文将详细介绍基于FPGA的1024QAM调制信号产生模块。本文将从以下几个方面进行介绍:1024QAM调制信号的基本原理、符号映射方式、并行化处理和FPGA实现等。

2.1. 1024QAM调制信号的基本原理 3.png

  1. 2符号映射方式

    1024QAM调制信号的符号映射方式有多种选择,例如Gray映射、正交映射等。在本文中,我们选择Gray映射方式,其具有较好的错误容忍性和功率效率。

    Gray映射的思想是将相邻的符号在二进制比特上只有一个位不同。例如,当a_n为0000000000时,其对应的符号为QAM调制图中的左下角点;当a_n为0000000001时,其对应的符号为左下角点往上移动一个单位。
    

2.3 并行化处理

   由于1024QAM调制信号需要处理的数据量较大,因此需要采用并行化处理的方法,以提高运算速度和降低硬件资源消耗。

  并行化处理的方法包括时间并行和空间并行。在本文中,我们选择时间并行的方法,即将数据流划分为多个并行处理单元,每个处理单元负责处理一部分数据,以实现并行化处理。如图3所示,将10个二进制比特分为5组,每组包含两个比特,每个比特对应一个并行处理单元。
   在并行处理的过程中,需要考虑数据的同步和处理单元之间的数据传输。一种常用的方法是采用流水线处理,即将数据流分为多个处理阶段,每个阶段包含多个并行处理单元,相邻阶段之间通过寄存器进行数据传输和同步。

2.4. FPGA实现

  FPGA是一种灵活可编程的硬件平台,可以根据具体需求进行定制化设计和实现。在实现基于FPGA的1024QAM调制信号产生模块时,需要根据具体硬件资源和运算速度要求进行设计和实现。通常,FPGA实现的步骤包括硬件描述语言编写、综合、布局布线、生成比特流和下载到FPGA芯片等。其中,硬件描述语言编写是实现的核心,可以采用Verilog或VHDL等语言进行编写。

   基于FPGA的1024QAM调制信号产生模块的实现方法,包括1024QAM调制信号的基本原理、符号映射方式、I并行化处理和FPGA实现等。通过合理的设计和优化,可以实现高效、稳定和可靠的1024QAM调制信号产生模块,适用于通信、雷达、信号处理等领域。

3.Verilog核心程序

 
	reg clk;
	reg rst;
	reg start;
 
    wire  [9:0] parallel_data;
    wire [15:0]sin;
    wire [15:0]cos;
	wire signed[19:0]  I_com;
	wire signed[19:0]  Q_com;
    wire signed[15:0]I_comcos;
    wire signed[15:0]Q_comsin;
	 
 
	// DUT
	tops_1024QAM_mod  top(
	   .clk(clk),
	   .rst(rst),
	   .start(start),
	   .parallel_data(parallel_data),
	   .sin(sin),
	   .cos(cos),
	   .I_com(I_com),
	   .Q_com(Q_com),
	   .I_comcos(I_comcos),
	   .Q_comsin(Q_comsin)
	   );
	   
	   
//wire signed[23:0]I_comcos2;
//wire signed[23:0]Q_comsin2;
//wire signed[7:0]o_Ifir;
//wire signed[7:0]o_Qfir;
//wire signed[7:0]o_sdout;
//tops_256QAM_demod  top2(
//	   .clk(clk),
//	   .rst(rst),
//	   .start(start),
//	   .I_comcos(I_comcos),
//	   .Q_comsin(Q_comsin),
//	   .I_comcos2(I_comcos2),
//	   .Q_comsin2(Q_comsin2),
//	   .o_Ifir(o_Ifir),
//	   .o_Qfir(o_Qfir),
//	   .o_sdout(o_sdout)
//	   );  
	   
 
	initial begin
		clk = 0;
		rst = 0;
		start = 1;
		#10;
		rst = 1;
	end
	
	always #5
	clk <= ~clk;
	
integer fout1;
integer fout2;
initial begin
 fout1 = $fopen("II.txt","w");
 fout2 = $fopen("QQ.txt","w"); 
end
 

标签:wire,FPGA,clk,signed,verilog,testbench,1024QAM,调制
From: https://blog.51cto.com/matworld/6740718

相关文章

  • m基于FPGA的带相位偏差64QAM调制信号相位估计和补偿算法verilog实现,包含testbench
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,其中Vivado2019.2仿真结果如下:将FPGA的仿真结果导入到matlab中,显示星座图,结果如下所示:2.算法涉及理论知识概要在现代通信系统中,调制技术是实现高速数据传输和频谱效率优化的重要手段。其中,64QAM调制技术是一种常见的高......
  • m基于FPGA的1024QAM调制信号产生模块verilog实现,包含testbench
    1.算法仿真效果 本系统进行了Vivado2019.2平台的开发,Vivado2019.2仿真结果如下:   将1024调制信号导入到matlab显示星座图  2.算法涉及理论知识概要       本文将详细介绍基于FPGA的1024QAM调制信号产生模块。本文将从以下几个方面进行介绍:1024QAM调制信......
  • 【Implementation】Vivado增量编译:加速FPGA设计实现
    一、Vivado增量编译概述Vivado增量编译(IncrementalImplementation),是指针对设计中已经完成的部分,仅编译修改的部分,并在这些部分重新生成比特流,以加速设计实现的过程。简单来说,就是只更新那些被修改过的代码,而不是每次都对整个设计进行重新编译。与传统的完全重新编译相比,Vivado......
  • verilog数的表示和定点化
    1.数的表示1.1数制转换十进制整数转换成其他进制数:“除基取余”:十进制整数不断除以转换进制基数,直至商为0。每除一次取一个余数,从低位排向高位。十进制小数转换成其他进制数:乘基取整,直至ε,高位到低位;“乘基取整”:用转换进制的基数乘以小数部分,直至小数为0或达到转换精度要求的......
  • verilog task/function 语句
    task模块任务task在模块中任意位置定义,并在模块内任意位置引用,作用范围也局限于此模块。模块内子程序出现下面任意一个条件时,则必须使用任务而不能使用函数。1)子程序中包含时序控制逻辑,例如延迟,事件控制等2)没有输入变量3)没有输出或输出端的数量大于1//任务task定义:如下......
  • verilog 循环语句
    循环语句在VerilogHDL中存在着四种类型的循环语句,用来控制执行语句的执行次数。1)forever连续的执行语句。2)repeat 连续执行一条语句n次。3)while  执行一条语句直到某个条件不满足。如果一开始条件即不满足(为假),则语句一次也不能被执行。4)for通过以下三个步......
  • m基于FPGA的64QAM调制解调通信系统verilog实现,包含testbench,不包含载波同步
    1.算法仿真效果 本系统进行了两个平台的开发,分别是: Vivado2019.2 Quartusii18.0+ModelSim-Altera6.6d StarterEdition 其中Vivado2019.2仿真结果如下:     仿真结果导入matlab可以看星座图:  Quartusii18.0+ModelSim-Altera6.6d StarterEditi......
  • 高速图像采集卡:基于TI DSP TMS320C6678、Xilinx K7 FPGA XC7K325T的高速数据处理核心
    基于TIDSPTMS320C6678、XilinxK7FPGAXC7K325T的高速数据处理核心板一、板卡概述该DSP+FPGA高速信号采集处理板由北京太速科技自主研发,包含一片TIDSPTMS320C6678和一片XilinxFPGAK7XC72K325T-1ffg900。包含1个千兆网口,1个FMCHPC接口。可搭配使用ADFM......
  • SystemVerilog Dynamic Array Randomization
    https://verificationguide.com/systemverilog/systemverilog-dynamic-array-randomization/DynamicArrayRandomizeForadynamicarray,itispossibletorandomizebotharraysizeandarrayelements.randomizedynamicarraysizeInbelowexample,dynamicarr......
  • 深入浅出玩转FPGA阅读随笔
    笔记4语法学习的经验之谈可综合的语法:可实现硬件电路的语法行为级语法:不能够实现硬件电路却常常可作为仿真验证的高层次语法笔记9复位设计上升沿触发的D触发器内部电路结构前一级的内部电路实际上是实现了一个“保持”的功能,如果复位信号的释放发生在靠近时钟沿很近的时间点......