这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » ASK解调问题请教

共11条 1/2 1 2 跳转至

ASK解调问题请教

高工
2010-06-18 11:25:27     打赏
网络上关于ASK解调的很多代码都与下面这个类似,但是仿真始终不能通过,现有如下疑问: 1、  在第二个always块的敏感信号列表中只有x,所以该过程块完全由x块驱动,也就是当x的上升沿未到达时,该过程块不执行。故当x是一连串低电平时,y并不能被及时的赋值为0,因为它被赋值为0还需要有clk的触发,从而保证cnt等于3'b110时它能得到执行。而这与设计的预期不符合。 2、  曾想过,将m<=m+1放在另一个always块中,但是它引入的问题是在两个不同的always块中对m赋值,虽然在ModelSim中仿真通过,但是是不可综合的。


请网友们帮忙看看,谢谢

module ASK_two(clk,reset,x,y);    input clk;    input reset; input x; //输入的已调ASK信号 output y; //输出的调制信号   reg y;   reg[2:0]cnt; reg[2:0]m;   always@(posedge clk) begin if(!reset) begin           cnt<=3'b000; end else         cnt<=cnt+1; end   always@(posedge x) begin  if(!reset) begin  m<=3'b000; end else  begin           if(cnt==3'b110) begin               if(m<=3'b010)                   y<=1'b0;               else                   y<=1'b1;                m<=3'b000;             end           else              m<=m+1; end end endmodule  



关键词: 解调     问题     请教    

高工
2010-06-18 11:35:15     打赏
2楼

期待强人来给楼主解答


专家
2010-06-18 15:25:54     打赏
3楼
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

专家
2010-06-18 15:29:13     打赏
4楼
always @(posedge clk) begin         //此过程完成2_ASK信号的解调

if(!reset)
    m <= 3'b000;
  else if(x)
     m <= m+1;

if(cnt == 3'b110&&m >= 3'b010)
   begin
       y <= 1'b1;      // 只要m计数器超过2,就判y为1
   m <= 3'b000; // 清空m计数器
end
   else    if(cnt == 3'b110&&m < 3'b010) y <= 1'b0;

end

endmodule

高工
2010-06-18 18:49:56     打赏
5楼

嗯,谢谢。这个解决了上述问题,不过感觉综合出来的电路不够优化,估计是因为if-else语句没有完全匹配。


高工
2010-06-19 10:47:13     打赏
6楼
else if(cnt== 3'b111)
     cnt <= 3'b000;

可以不必用。加过了自然就翻转为0了

高工
2010-06-19 10:53:33     打赏
7楼
else if(x)
     m <= m+1;


这个是有问题的,因为如果X持续好几个Clk周期,m就一直加下去了

高工
2010-06-19 10:54:56     打赏
8楼

不了解ASK解调过程,所以无法帮忙。
楼主能讲得更详细些吗?


高工
2010-06-19 14:52:35     打赏
9楼

呵呵,这段代码的思想是利用包络检波的原理(非相干解调),通过判断输入信号的连续高电平的个数来完成判决。


高工
2010-06-19 15:06:01     打赏
10楼
Jason_Zhang大牛果真名不虚传啊,呵呵,确实设计的预期是仅仅想在x的上升沿时触发m的计数,所以上述语句可能会引入问题。由于我的仿真中激励波形的设置问题,而导致没有影响到功能仿真的结果。而且我个人认为,即便是计数不断增加,也不会影响判决。

共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]