综合课程设计报告CDMA部分 含FPGAverilog代码.docx

上传人:b****5 文档编号:7467361 上传时间:2023-01-24 格式:DOCX 页数:19 大小:399.78KB
下载 相关 举报
综合课程设计报告CDMA部分 含FPGAverilog代码.docx_第1页
第1页 / 共19页
综合课程设计报告CDMA部分 含FPGAverilog代码.docx_第2页
第2页 / 共19页
综合课程设计报告CDMA部分 含FPGAverilog代码.docx_第3页
第3页 / 共19页
综合课程设计报告CDMA部分 含FPGAverilog代码.docx_第4页
第4页 / 共19页
综合课程设计报告CDMA部分 含FPGAverilog代码.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

综合课程设计报告CDMA部分 含FPGAverilog代码.docx

《综合课程设计报告CDMA部分 含FPGAverilog代码.docx》由会员分享,可在线阅读,更多相关《综合课程设计报告CDMA部分 含FPGAverilog代码.docx(19页珍藏版)》请在冰豆网上搜索。

综合课程设计报告CDMA部分 含FPGAverilog代码.docx

综合课程设计报告CDMA部分含FPGAverilog代码

第一章项目背景

1.1CDMA原理及背景简介

CDMA是码分多址的英文缩写(CodeDivisionMultipleAccess),它是在数字技术的分支——扩频通信技术上发展起来的一种崭新的无线通信技术。

CDMA技术的原理是扩频技术,即将需传送的具有一定信号带宽信息数据,用一个带宽远大于信号带宽的高速伪随机码(GOLD码)进行调制,使原数据信号的带宽被扩展,再经载波调制并发送出去。

接收端使用完全相同的伪随机码,与接收的带宽信号作相关处理,把宽带信号换成原信息数据的窄带信号即解扩,以实现信息通信。

码分多址(CDMA)技术是扩频通信技术在多用户通信系统中的应用,其利用了扩频序列的编码正交可分性,使得多个用户信号可以在同一媒介、同一频率、同一时间内传输。

每一路码分信号,都是经过扩频调制的信号,每一路码分信道都分配了独特的扩频序列。

扩频通信的主要特征是它们的频带宽度B比信息速率Rb大得多,通过扩频得到扩频增益,用于抵抗各种干扰。

因此就CDMA本身的优势而言,CDMA拥有无与伦比的巨大潜力。

扩频通信技术、码分多址技术和同步技术是CDMA的关键技术,通过CDMA数字基带发射系统的研究更进一步了解CDMA数字基带系统的过程,加深对CDMA的扩频通信技术和码分多址技术的理解,加深对CDMA系统的理解。

同时,我们可以知道CDMA技术为什么得以快速发展。

本项目的重点集中于应用FPGA来实现CDMA数字基带系统发射系统,并在此基础上实现接收系统,具体讲就是将信号进行扩频、GOLD码调制、基带求和、再进行并/串转换,在接收端进行解扩和解调,还原出初始发送的数据,其中利用的载波调制技术室2PSK技术,解调利用相干解调。

1.2FPGA在通信领域的巨大作用

21世纪是一个数字化的世纪,数字信号处理在新的世纪中有着广泛的应用,信息高速公路、移动通信、自动化系统都采用了数字信号处理技术。

单片机系统,虽然在一定程度上满足了部分需要,但是由于它的速度和数据处理能力非常有限,不能满足现代数字系统数据的高速率的要求。

近几年发展起来的FPGA技术,满足了这种需求,FPGA功能上比早期的PLD更加强大,主要有编程方式方便先进,并且拥有较高的工作频率,像Altera的Cyclone的EP1C3系列,其工作频率就有40MHZ。

此外,硬件描述语言VerilogHDL在编写风格上与C语言十分的接近,所以FPGA技术不仅可以完成单片机所不能完成的指标,而且更具有灵活性。

这种基于EDA技术的芯片正在成为电子系统设计的主流。

此外,FPGA还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改。

因此,FPGA技术的应用前景非常广阔。

FPGA的发展不断满足当今电子工业的快速发展,随着集成电路的设计规模日益增大,复杂程度日益增高,FPGA的出现和发展大大改变了传统的系统设计方法,这种方法使得电子系统设计变得更加简单方便、灵活快速。

 

第二章CDMA系统简介

CDMA技术的基础是扩频通信。

扩频:

用来传输信息的信号带宽远远大于信息本身带宽的一种传输方式,频带的扩展由独立于信息的扩频码来实现,与所传信息数据无关,在接收端用同步接收实现解扩和数据恢复。

如下图,我们可以知道CDMA系统的基本原理和TDMA、FDMA的区别。

CDMA、TDMA、FDMA比较

扩频通信的理论基础就是著名的香农定理:

…………………………………………

(1)

这个公式表明,在高斯信道中当传输系统的信号噪声功率比S/N下降时,可用增加系统传输带宽W的办法来保持信道容量C不变。

对于任意给定的信号噪声功率比,可以用增大传输带宽来获得较低的信息差错率。

正因为这个原因,扩频通信具有比较强的抗噪声干扰的能力。

CDMA技术是以扩频通信为基础的载波调制和多址接入技术,所以如何实现扩频部分对于整个CDMA系统的实现有着重要的影响。

2.1CDMA系统的关键技术

扩频技术是CDMA系统的基础,在扩频系统中,常使用伪随机码来扩展频谱,伪随机码的特性,如编码类型、长度、速度等在很大程度上决定了扩频系统的性能,如抗干扰能力、多址能力、码捕获时间。

因此要实现扩频部分,关键就是如何选择一个比较好的方法来实现PN码产生器。

而实现PN码产生器的难点就是实现其同步,即在接收端进行解扩所用的PN码和接收到的信号在发送时所用的PN码是同步的,这是扩频技术中的难点。

CDMA系统要求接收机的本地伪随机码与接收到的PN码在结构、频率和相位上完全一致,否则就不能正常接收所发送的信息,接收到的只是一片噪声。

若实现了收发同步但不能保持同步,也无法准确可靠地获取所发送的信息数据。

因此,PN码序列的同步是CDMA通信扩频模块的关键技术。

但是要真正成为一种商业应用的通信系统,还有很多技术问题需要解决,本文暂不做考虑。

2.2CDMA系统的基本结构

CDMA技术是以扩频通信为基础的载波调制和多址接入技术,所以如何实现扩频部分对于整个CDMA系统的实现有着重要的影响。

下图是标准的CDMA系统的基本原理图:

信号经信源编码后成为数字信号,经过纠错编码、卷积编码和交织等相关处理后送入调制器中,利用PN码发生器产生的高速PN码将数字信号变成码片,使得信号的传输带宽远大于信号本身的带宽以实现扩频通信,同时,为了使信号的传输与信道特性相匹配,必须用载波发生器产生的载波去调制扩频信号。

使其频率变为适合信道传愉的射频频段,将数字信号调制成模拟信号后通过放大器发射出去。

在接收端,利用下变频器将射频信号还原成中频信号,采用与发射端相同的信号处理技术再将信号还原成原始信号,从而达到数据通信传输的目的。

下面是我们根据标准的CDMA通信系统设计的我们系统中的发射机框图:

下面是我们系统的接收机框图:

整体的FPGA设计的CDMA通信系统如下:

第三章基于FPGA的CDMA系统设计及仿真分析

FPGA是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机的发明和使用。

可以毫不夸张的讲,FPGA能完成任何数字器件的功能。

在PCB完成以后,还可以利用FPGA的在线修改能力,随时修改设计而不必改动硬件电路。

使用FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。

FPGA的这些优点使得FPGA技术在90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言的进步。

本设计主要利用了FPGA及VerilogHDL语言来设计CDMA数字基带发送接收系统。

4.1FPGA通信系统设计的注意点

对于通信系统的建模,除了外围的模拟电路的设计是整个大系统需要考虑外,更重要的是针对纯数字部分的输入、输出接口信号的要求,进行细致的研究。

对于数字通信系统,对于不同的VerilogHDL来建模有着不同的效果。

一般对于选择什么方法来进行数字通信的建模,从以下几个方面讨论研究[27]:

·可行性的影响

对于以FPGA通用芯片为目标器件的建模和设计,受到输入信号性质的限制,对于一些速度要求较高的通信系统,由于现行的FPGA目标器件的限制,无法使用。

因此对于通信系统的VerilogHDL建模的可行性应在设计系统方案做充分考虑。

·可靠性分析

对于通信系统来说,实现系统的可靠性指标是VerilogHDL建模的难点,这一点与实现硬件电路是相似的,用硬件描述语言,实现系统功能,有许多方法,实现建模的方法也可以不同,有时不同的建模风格和方式,可以得到相同的设计结果和相近的可靠性能,同时,对于组合逻辑电路来说,设计的可靠性,还要考虑组合逻辑电路的竞争和冒险现象和硬件延时问题。

·效率的影响

系统效率的因素包括芯片资源的优化,软件程序运行的速度等。

从软件设计方面考虑,采用并行方式比串行运行方式运行速率高。

在FPGA设计,合理的引脚定义也是很重要的。

一个好的引脚定义可以充分利用芯片资源,而一个不好的引脚定义可能造成芯片资源的巨大浪费,甚至布线失败。

总的来讲,通信系统的性能可以根据公式来计算,采用波形级的仿真或通过硬件构成样机及进行测量来评估。

对于数字通信系统的VerilogHDL建模,其建模效果最终要经过一定方式的检验和评估,而检验的结果反过来促进其建模或程序设计的改进与完善。

4.2CDMA系统分模块简介、代码及仿真

发射机

分频器模块:

moduleclk_div

(clk_in,rst_n,clk_out);

parametercnt_top=10;

clk_in/clk_out=cnt_top

parameterwidth=4;

parameterduty=50;

inputclk_in;

inputrst_n;

outputclk_out;

regclk_out;

reg[width-1:

0]cnt;

always@(posedgeclk_inornegedgerst_n)

begin

if(!

rst_n)

cnt<=0;

elseif(cnt==(cnt_top-1))

cnt<=0;

else

cnt<=cnt+1'b1;

end

always@(posedgeclk_inornegedgerst_n)

begin

if(!

rst_n)

clk_out<=0;

elseif(cnt<(cnt_top*duty)/100)clk_out<=1;

else

clk_out<=0;

end

endmodule

(系统用的各路时钟)

(PLL模块产生2倍频信号,ROM的读取时钟)

仿真以输入的20M时钟分频得到10K数据信道串行传输时钟为例,可见设计完全正确:

四路用户GOLD序列产生模块(通过ROM寻址):

MATLAB代码:

clc;clearall;

hgld=comm.GoldSequence('FirstPolynomial',[730],...

'SecondPolynomial',[73210],...

'FirstInitialConditions',[0000001],...

'SecondInitialConditions',[0000001],...

'Index',1,'SamplesPerFrame',127);

gold1=step(hgld);

hgld=comm.GoldSequence('FirstPolynomial',[730],...

'SecondPolynomial',[73210],...

'FirstInitialConditions',[0000001],...

'SecondInitialConditions',[0000001],...

'Index',2,'SamplesPerFrame',127);

gold2=step(hgld);

hgld=comm.GoldSequence('FirstPolynomial',[730],...

'SecondPolynomial',[73210],...

'FirstInitialConditions',[0000001],...

'SecondInitialConditions',[0000001],...

'Index',3,'SamplesPerFrame',127);

gold3=step(hgld);

hgld=comm.GoldSequence('FirstPolynomial',[730],...

'SecondPolynomial',[73210],...

'FirstInitialConditions',[0000001],...

'SecondInitialConditions',[0000001],...

'Index',4,'SamplesPerFrame',127);

gold4=step(hgld);

其设计参数如下:

利用quartus的ROM表存储MATLAB生成的周期为127的gold序列,如下:

最终四路gold序列如下所示:

以一路仿真得到的gold码为例,如下图所示:

并串转换模块:

modulepar2ser2(clk,rst,in,out,stat,num,flags,bug);//paralleltoserial

inputclk,rst;

input[3:

0]in;

outputout,stat,num,flags,bug;

regout,stat,num,flags,bug;

reg[1:

0]cnt;

always@(posedgeclkornegedgerst)

begin

if(!

rst)out=0;

else

begin

case(cnt)

2'b00:

out=in[0];

2'b01:

out=in[1];

2'b10:

out=in[2];

2'b11:

out=in[3];

default:

out=in[0];

endcase

end

end

always@(posedgeclk)

begin

cnt=cnt+1;

end

always@(posedgeclk)

begin

begin

stat=in[0];

num=in[1];

flags=in[2];

bug=in[3];

end

end

endmodule

固定一路用户数据为8’b00100110,仿真波形图如下,最下面一列为并串转换数据,倒数第二列为串行时钟,可见串行传输数据为00100110,因此串并转换设计通过。

GOLD序列与并串转换数据过异或门:

载波设置模块:

频率设置小模块:

modulefreq_set(clk,rst,fset);

inputclk,rst;

output[9:

0]fset;

reg[9:

0]fset;

reg[9:

0]temp;

always@(posedgeclkornegedgerst)

begin

if(!

rst)

fset=64;

else

begin

temp=fset;

fset=temp+temp;

end

end

endmodule

正弦波选址(DDS)小模块:

modulecos_adr(clk,rst,adr,fset);//cosfrequencyanditsset

inputclk,rst;

input[9:

0]fset;

output[9:

0]adr;

reg[9:

0]adr;

always@(posedgeclkornegedgerst)

begin

if(!

rst)

begin

adr=0;

end

else

begin

adr=adr+fset;

end

end

endmodule

正弦波幅度步进小模块:

moduleamp_set(clk,sysclk,rst,in,out);

inputsysclk,clk,rst;

input[7:

0]in;

output[7:

0]out;

reg[7:

0]out;

reg[3:

0]cnt;

always@(posedgesysclkornegedgerst)

begin

if(!

rst)out=in;

else

begin

if(in>127)out=127+(in-127)/cnt;//positive

elseout=127-(127-in)/cnt;//negetive

end

end

always@(posedgeclkornegedgerst)

begin

if(!

rst)cnt=1;

elsecnt=cnt+1;

end

endmodule

PSK调制模块:

modulepskmod(clk,rst,seq,in,out);

inputclk,rst,seq;

input[7:

0]in;

output[7:

0]out;

reg[7:

0]out;

always@(posedgeclkornegedgerst)

begin

if(!

rst)

out=0;

else

begin

if(seq)

out=in;

else

out=~in;

end

end

endmodule

仿真得到的2PSK调制波形如下:

可以看出在数据零一跳变点处波形相位发生180度突变,2PSK设计正确。

AWGN信道模拟10dB噪声数据:

MATLAB代码:

clc;

clearall;

y=round(wgn(1,1024,20));

fori=1:

1024

ify(i)<0

y1(i)=-y(i);

else

y1(i)=y(i);

end

end

out=dec2bin(y1,8);

噪声波形如下:

其统计数据如下:

ValueCountPercent

0343.32%

1797.71%

2838.11%

3969.38%

4868.40%

5646.25%

6676.54%

7585.66%

8595.76%

9626.05%

10535.18%

11474.59%

12383.71%

13262.54%

14313.03%

15242.34%

16201.95%

17161.56%

18151.46%

19121.17%

20111.07%

2170.68%

2280.78%

2350.49%

2440.39%

2540.39%

2640.39%

2830.29%

2920.20%

3020.20%

3110.10%

3210.10%

3510.10%

3610.10%

接收机

相干解调模块:

乘法器输出过滤波,然后对输出符号位进行相关判决,得到解调出来的串行零一数据,最终仿真得到的串行接收数据如下:

其中seq_test1为发送端串行数据,seq_test3为发送端gold序列,seq_test2为接收端提取出的相应用户的gold序列,seq_test4为解调出来的串行数据,seq_test4与seq_test1完全一致,说明解调正确。

FIR数字滤波器设计:

FIR滤波器仿真结果如下,结果与理论设计一致:

串并转换:

moduleser2par2(clk,rst,in,out,flag);//serialtoparallel

inputclk,rst;

inputin;

outputflag;

output[3:

0]out;

reg[3:

0]out;

reg[1:

0]cnt;

regflag;

always@(posedgeclkornegedgerst)

begin

if(!

rst)

begin

out=0;

end

else

begin

case(cnt)

2'b00:

out[0]=in;

2'b01:

out[1]=in;

2'b10:

out[2]=in;

2'b11:

out[3]=in;

default:

out[0]=in;

endcase

end

end

always@(posedgeclkornegedgerst)

begin

if(!

rst)flag=0;

else

begin

cnt=cnt+1;

if(cnt==2'b11)flag=1;

elseflag=0;

end

end

endmodule

仿真模拟四个用户数据,每个用户为8位二进制码,结果如下:

经过8*4*=64个串行时钟周期,输出数据稳定为100、84、100、68与输入数据一致,可见解调成功,加上之前的仿真,目前已完整地完成了本项目中关于cdma通信系统的设计,且仿真正确。

经实际烧录结果也与仿真基本一致,接下来便是关于VGA控制doodlejump的设计环节。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1