77范文网 - 专业文章范例文档资料分享平台

基于FPGA的16QAM调制解调电路设计(6)

来源:网络收集 时间:2019-08-31 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

重庆邮电大学本科毕业设计(论文)

ADD_B <= 0; else

ADD_B <= ADD_B + ADD_A; //ADD_B为累加的结果 end

always @ (posedge clk or posedge reset) begin

if(reset)

cose_DR <= 0; else

cose_DR <= cose_D; end

always @ (posedge clk or posedge reset) begin

if(reset)

sine_DR <= 0; else

sine_DR <= sine_D; end

//调用两个ROM,存储着正余弦波形一个周期的数值。 rom_cose cose1( .addra(ROM_A), .clka(clk),

.douta(cose_D)); rom_sine sine1( .addra(ROM_A), .clka(clk),

.douta(sine_D)); endmodule

module rom_sine( //产生sin信号模块 addra, clka, douta); input clka; input [9:0] addra; output [15:0] douta; reg signed[15:0] douta; always @(posedge clka) begin case(addra)

10'd 1 : douta= 16'd 1 ; 10'd 2 : douta= 16'd 1 ; 10'd 3 : douta= 16'd 2 ; …………………………

- 21 -

重庆邮电大学本科毕业设计(论文)

endcase end

endmodule

module rom_cose( //产生cos信号模块 addra, clka, douta); input clka; input [9:0] addra; output [15:0] douta; reg signed[15:0] douta;

always @(posedge clka) begin case(addra)

10'd 0 : douta=16'd1 ; 10'd 1 : douta=16'd1 ; 10'd 2 : douta=16'd2 ; 10'd 3 : douta=16'd3 ; 10'd 4 : douta=16'd3 ;

………………………… endcase end

endmodule

第四节 差分编码和星座映射模块

在本模块,同样根据调制方式不同,选用不同位的数据来进行处理。由于几乎都采用相干检测的方式进行解调,因此在解调端载波恢复存在着4个相位稳定点,即提取的相干载波可能与接收信号载波有4种相位关系,称作4重相位模糊度旧3。部分差分编码能消除4重相位模糊度对解调的影响。而部分差分编码相对于全差分编码由于减少了差分编码的bit数。因而减少了误码扩散,具有较好的误码性能。由于同样的符号误码率下,采用格雷编码比自然码的比特误码率小,所以多幅度电平的电平逻辑采用格雷编码映射。星座影射模块输入4bit并行数据,输出为I/Q路对应的四幅值之一。4 bit并行信号需要将其影射到信号平面,星座影射实现采用查表法分别输出I/Q对应的幅值.对应的量化表如表3.1:

- 22 -

重庆邮电大学本科毕业设计(论文)

表3.1星座映射

I/Q路输入数据 00 01 11 10 对应的量化值 -2 -1 1 2 模块源代码

//差分模块和星座映射模块

module diff(clk,

data_in, // 输入信号

data_out_i, //I路对应的量化值 data_out_q, //Q路对应的量化值 rst,

data); //输出信号 input clk,rst;

input [3:0] data_in;

output signed [3:0] data_out_i,data_out_q; reg [3:0] data_out_i,data_out_q; output reg [3:0] data; wire a,b,c,d;

reg dataa,datab; reg prea,preb; reg [1:0]regi,regq; assign a=data_in[3]; assign b=data_in[2]; assign c=data_in[1]; assign d=data_in[0];

//assign data={regi,regq};

always @ (posedge clk or posedge rst) begin if (rst) begin

prea<=0; end else

begin

dataa <= (a==0)? prea : ~prea; prea <= dataa; end end

- 23 -

重庆邮电大学本科毕业设计(论文)

always @ (posedge clk or posedge rst) begin if (rst) begin

preb<=0; end else

begin

datab <= (b==0)? preb : ~preb; preb <= datab; end end

always @ (posedge clk or posedge rst) begin if (rst) begin

regi<=0; regq<=0; end else

begin

regi<={dataa,c}; regq<={datab,d}; end end

always @ (posedge clk ) begin

case(regi)

'b00 : data_out_i<=-'d2; 'b01 : data_out_i<=-'d1; 'b11 : data_out_i<='d1; 'b10 : data_out_i<='d2; endcase end

always @(posedge clk) begin

case(regq)

'b00 : data_out_q<=-'d2; 'b01 : data_out_q<=-'d1; 'b11 : data_out_q<='d1; 'b10 : data_out_q<='d2; endcase end

- 24 -

重庆邮电大学本科毕业设计(论文)

always @(posedge clk or posedge rst) begin

if(rst) begin

data<=0; end else

begin

data<={regi,regq}; end end

endmodule

第五节 时钟分频模块

时钟分频模块clk利用N分频器对10MHz系统时钟信号进行N分频,以产生调制器模块所需的工作时钟。N分频器是由模N/2计数器实现的,分频输出信号模N/2可自动取反,以产生占空比为1:1的时钟信号。由于信号源产生的基带信号为1bit串行数据,其速率为100 kbps,经并串转换后的4 bit并行数据速率为400 kbps,所以,本设计还采用了100分频器和400分频器。另外将10Mhz直接送入到DDS模块,使得输出的载波频率为1Mhz。

模块源代码

//时钟分频模块

module clk( clk_sys, //10MHz rst,

clk_dds, //10MHz clk_400, // 25Kbs clk_100); //100Kbs input clk_sys; input rst;

output clk_dds,clk_400,clk_100; reg clk_400,clk_10,clk_100; reg [7:0] count2,count3,count4; assign clk_dds=clk_sys;

always @(posedge clk_sys or posedge rst) begin if (rst) begin

count2<=0;

- 25 -

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库基于FPGA的16QAM调制解调电路设计(6)在线全文阅读。

基于FPGA的16QAM调制解调电路设计(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/718635.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: