2ASK在FPGA中的实现(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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [综合文档]应答器设备技术规范(征求意见稿)A1
- [综合文档]教师 2012年高考政治试题按考点分类汇
- [综合文档]保险公司的总经理助理竞职演说
- [综合文档]卫生应急大练兵大比武活动考试--题库(
- [综合文档]徐州经济技术开发区总体规划环境影响报
- [综合文档]汉语拼音表(带声调)
- [综合文档]二年级 上 思维训练( 1~18)
- [综合文档]特色学校五年发展规划
- [综合文档]机床经常出现报警“X1轴定位监控”
- [综合文档]《电子技术基础》21.§5—2、3、4 习题
- [综合文档]浙江省深化普通高中课程改革
- [综合文档]CRISP原理 - 图文
- [综合文档]2017年电大社会调查研究与方法形考答案
- [综合文档]浅析建筑施工安全毕业论文
- [综合文档]《回忆我的母亲》名师教案
- [综合文档]装饰装修工程监理规划
- [综合文档]三下乡心得体会-文艺
- [综合文档]柱计算长度系数 - 图文
- [综合文档]全流程思考,提高燃电系统热电转换率--
- [综合文档]2018年嘉定区中考物理一模含答案
- 433M车库门滚动码遥控器
- 8、架空线路施工规范
- 大学四年声乐学习的体会
- 新北师大版五年级数学上册《轴对称再认
- 部编版五年级上册语文第六单元小结复习
- 小学六年级英语形容词用法
- 第2课 抗美援朝保家卫国 课件01(岳麓版
- 2015年天津大学运筹学基础考研真题,考
- 微机计算机控制技术课后于海生(第2版)
- 安全教育实践活动
- Delphi程序设计教程_第1章_Delphi概述
- 第八讲 工业革命与启蒙运动
- 《中华人民共和国药典》2005年版二部勘
- 科粤版九年级化学2.3构成物质的微粒(1)
- 西师大版数学三年级下册《长方形、正方
- ch6_冒泡排序演示
- 第4章 冲裁模具设计
- 浙江中小民营企业员工流失论文[终稿]
- 再议有线数字电视市场营运模式
- 昆明供水工程监理大纲




