[Quartus] quartus RTL仿真和门极仿真结果不一样怎么处理

[复制链接]
2693|4
 楼主| jetlin1992 发表于 2017-7-4 10:00 | 显示全部楼层 |阅读模式
用quartus写了一个pwm(用增减计数方式调制)程序,编译综合都通过了,RTL仿真也是对的,但是门极仿真出来的结果不对,想问一下为什么?麻烦大家帮忙看看
RTL仿真结果,注意红圈的地方没有毛刺

门极仿真结果,注意红圈的地方有毛刺

  1. module   CPLD6(CLK_150M,pwm1,pwm2)/*synthesis noprune*/;
  2.                        
  3.         input CLK_150M;
  4.         output pwm1,pwm2;               
  5.         wire[10:0] C0,C1/*synthesis keep*/;

  6.         UD_Cnt UD0(CLK_150M,C0);
  7.         assign
  8.                 pwm1 = (100 > C0) ? 1'b1:1'b0;
  9.                
  10. endmodule

  11. module UD_Cnt(CLK_udcnt,UD_counter)/*synthesis noprune*/;
  12. parameter CNT_ini = 11'D167,Dir_ini = 1'B0;
  13.         input CLK_udcnt;
  14.         output reg[10:0] UD_counter/*synthesis noprune*/;
  15.         reg Dir;
  16.        
  17.         initial
  18.         begin
  19.                 UD_counter = CNT_ini;
  20.                 Dir = Dir_ini;
  21.         end
  22.         always[url=home.php?mod=space&uid=72445]@[/url] (posedge CLK_udcnt)
  23.    begin
  24.                 if(Dir == 0)
  25.                         UD_counter = UD_counter + 10'D1;
  26.                 else
  27.                         UD_counter = UD_counter - 10'D1;
  28.    end
  29.        
  30.         always@ (posedge CLK_udcnt)
  31.         begin
  32.                 if((UD_counter == 1001)&(Dir == 0))
  33.                         Dir = 1;
  34.                 else if((UD_counter == 1)&(Dir == 1))
  35.                         Dir = 0;
  36.         end
  37. endmodule






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
xiachong 发表于 2017-7-4 15:12 | 显示全部楼层
pwm1用时序电路处理
 楼主| jetlin1992 发表于 2017-7-4 15:45 | 显示全部楼层
xiachong 发表于 2017-7-4 15:12
pwm1用时序电路处理

好像用时序电路是好了,但是想问一下,为什么呢?
xiachong 发表于 2017-7-4 16:05 | 显示全部楼层
本帖最后由 xiachong 于 2017-7-4 16:07 编辑

组合逻辑  涉及到 计数器进位
littbi 发表于 2017-12-17 11:30 | 显示全部楼层
门级仿真会考虑门的延时,最好用时序电路,逻辑电路容易出现毛刺,让仿真结果不正确
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部