教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

2ASK在FPGA中的实现(3)

来源:网络收集 时间:2026-08-26
导读: endcase end // 下面实现载波产生 always@(posedge clk) begin if(reset) begin cnt assign modata=sig_S endmodule 程序的前面一部分是产生01信号,后面的是产生载波,然后是使01信号和载波相乘,实现了调制。 1.3

endcase end

// 下面实现载波产生

always@(posedge clk) begin

if(reset) begin cnt<=2'b00; carriers<=0; end else if(en) cnt<=cnt+1; carriers<=~cnt[1]; end

assign modata=sig_S&carriers;

endmodule

程序的前面一部分是产生01信号,后面的是产生载波,然后是使01信号和载波相乘,实现了调制。

1.3.3 2ASK解调部分代码设计

module ASK_two(clk,en,reset,Kmode,carriers,pll_carriers,modata,demodata);

input clk,reset,en; input modata,carriers; input [2:0]Kmode;

output demodata,pll_carriers;

reg demodata;

Dpll u1(.fout(pll_carriers), .se(), .clk(clk), .reset(reset), .enable(en),

.Kmode(Kmode), .fin(carriers) );

always@(negedge pll_carriers) begin if(reset)

11

demodata<=0; else begin

if(!modata)

demodata<=0; else demodata<=1; end end endmodule

为了使提高解调采样数据的准确性,这里用数字锁相环Dpll对载波相位锁定后,用pll_carriers下降沿正好是在modata数据比特的中心采样,能够减少解调的误码率。(DPLL的Verilog代码作为附件放在最后面)。

1.3.4功能仿真

1)调制部分代码的功能仿真

图1-9 调制部分功能仿真

如图3-4所示,sig_S为01信号,modata为调制后的信号,观察波形,很容易可以验证仿真结果正确

2)整体的功能仿真

整体的功能仿真是通过顶层模块调用调制模块和解调模块,实现整体的仿真。

顶层模块代码如下:

module

ASK_ding(clk,reset,en,sig_S,Kmode,mo_rdy,carriers,pll_carriers,modata,demodata);

input clk,reset,en; input [2:0]Kmode; output sig_S;

12

output carriers,pll_carriers; output modata; output mo_rdy; output demodata;

two_ASK U_mo ( .clk(clk), .reset(reset), .en(en),

.sig_S(sig_S), .out_rdy(mo_rdy), .carriers(carriers), .modata(modata) );

ASK_two U_demo ( .clk(clk), .en(en),

.Kmode(Kmode), .reset(reset),

.carriers(carriers), .modata(modata),

.pll_carriers(pll_carriers), .demodata(demodata) );

Endmodule

对顶层模块进行仿真,结果如图3-5

图1-10 整体功能仿真

其中cnt为时钟计数器,k为调制信号计数器,sig_S为01信号,modata为已调信号,demodata为解调后信号,观察上图,可知道代码仿真正确,实现了2ASK的调制解调。

13

1.3.5 板上调试

板上调试代码如下:

module

ASK_ding_chipscope(clk,sig_S,mo_rdy,carriers,pll_carriers,modata,demodata

); input clk; output sig_S;

output carriers,pll_carriers; output modata; output mo_rdy; output demodata;

wire reset,en; wire[2:0]Kmode;

//for chipscope

wire [35:0] control0; wire [35:0] control1; wire [4:0] async_out; wire [4:0] mydata;

assign reset=async_out[0]; assign en=async_out[1];

assign Kmode[2:0]=async_out[4:2];

assign mydata[0]=sig_S; assign mydata[1]=carriers; assign mydata[2]=pll_carriers; assign mydata[3]=modata; assign mydata[4]=demodata;

ASK_ding ask(.clk(clk), .reset(reset), .en(en), .sig_S(sig_S), .Kmode(Kmode), .mo_rdy(mo_rdy), .carriers(carriers), .pll_carriers(pll_carriers), .modata(modata), .demodata(demodata) );

14

my_icon icon(.CONTROL0(control0), .CONTROL1(control1) );

my_ila ila(.CONTROL(control0), .CLK(clk), .DATA(mydata), .TRIG0(carriers) );

my_vio vio(.CONTROL(control1),

.ASYNC_OUT(async_out) ); Endmodule

板上调试需要添加三个核,icon,vio和ila,需要添加clk的引脚约束,如图1-11

图1-11 clk引脚约束

添加完约束后可以通过ise进行实现和产生bit流文件,下载到V-2板上便可进行chipscope在线调试。调试结果如下

Vio核波形

图1-12 vio核波形

这里使用vio核主要是想看各个使能端口信号的作用和做开关模拟操作。经检验,结果符合要求。

Ila核波形

图1-13 ila核波形

15

…… 此处隐藏:713字,全部文档内容请下载后查看。喜欢就下载吧 ……
2ASK在FPGA中的实现(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/404665.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)