【FPGA】使用Verilog编程通过ModelSim实现2FSK调制解调仿真④(将7位数组转化为单位脉冲输出)

4 篇文章 1 订阅

【FPGA】Verilog编写2FSK第④步将7位数组转化为单位脉冲输出

- 在信号连接的时候经常遇到输入是数组但是输出要求单位脉冲信号,结合前几节信号的调制和产生办法,本节主要处理问题为:将7位数组转化为单位脉冲输出。

-编写转化模块(详解看注释)

module trans(clk,canshu,MC);//定义模块名称
input clk;//clk输入时钟
input [6:0]canshu;//canshu输入的7位数组
output MC;//MC输出的单位脉冲

reg MC=0;//初始化输出脉冲值
reg [10:0]i=11'b0;//初始化时钟计数参数
reg [2:0] m=3'b000;//定义初始数组地址位
always@(posedge clk)//时钟上升沿触发
begin
if(i==11'b11111111111)//设置输出脉冲宽度这里设置的1023个时钟周期
begin i<=0; //将时钟计数参数置0

case(m)//通过数组地址位选择输出顺序,这里选择从高位输出即从左到右
3'b000:MC<=canshu[6];
3'b001:MC<=canshu[5];
3'b010:MC<=canshu[4];
3'b011:MC<=canshu[3];
3'b100:MC<=canshu[2];
3'b101:MC<=canshu[1];
3'b110:MC<=canshu[0];
endcase
if(m==3'b110)m<=3'b000 ;//如果地址位到达上限置0
else m<=m+3'b001; //将地址位加1
end
else i=i+1;//对时钟计数参数加1
end
endmodule
  • 编写测试模块
    注:这里没有编写顶层模块,是因为本节只对数组转化进行讨论,因此只有一个子模块,可将这个子模块设置为顶层,具体设置办法在第节中有讲解。
`timescale  1ms/1ms//1m步进
module trans_tb;//定义tb模块名称
reg clk;//定义时钟
reg [6:0]canshu=7'b1101001;//给数组赋值七位二进制
wire MC;
trans trans
(
.clk(clk),
.canshu(canshu),
.MC(MC)
);
initial clk=1;
always #5 clk=~clk;//产生时钟信号
endmodule
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值