微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 急寻答案 ASK解调的verilog设计

急寻答案 ASK解调的verilog设计

时间:10-02 整理:3721RD 点击:
先把代码弄上
module ASK_two(clk, reset, x, y);
input clk;
input reset;
input x;
output y;
reg y;
reg [2:0] cnt; //计数器
reg [2:0] m;   // 记录x的脉冲数数
always @(posedge clk) begin    //完成cnt的循环计数
  if(!reset) begin
     cnt <= 3'b000;
  end
  else if(cnt == 3'b111)
     cnt <= 3'b000;
  else
     cnt <= cnt +1 ;
end
always @(posedge x) begin    // 此过程完成2_ASK信号的解调
  if(!reset) begin
      m <= 3'b000;
  end
  else begin
        if(cnt == 3'b110) begin
                if (m <= 3'b010)          // 只要m计数器超过3,就判决为1
                        y <= 1'b0;
                else  
                        y <= 1'b1;
                m <= 3'b000;          // 清空m计数器
        end
        else
                m <= m+1;
  end
end
endmodule
这是某本书上的程序
有两个疑问:
1、为什么选择m的阈值为3而不是其他值
2、也是最难理解的问题 if(cnt == 3'b110) begin  这步开始,触发条件是posedge x即x的上升沿,现在的问题是,要是恰好x上升沿的时候不是在cnt=6处,而是在cnt=7处呢?(即在cnt=6时x是个下降沿)那么就无法判断了啊,不是就出现错误了吗?
小弟是刚开始接触verilog,希望大家积极给予意见啊。

搞懂ASK算法的原理,再看这段东西吧

我也是有这个疑问,方针出来根本不对!求解答

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top