在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3816|回复: 11

[求助] 综合后电路与前仿波形不一致的情况,请大家进来分析分析!

[复制链接]
发表于 2013-12-23 09:46:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 prototyping 于 2013-12-23 09:48 编辑

小弟最近写一个模块的时序,遇到了综合后电路与前仿波形不一致的情况,大概如下:代码是:



  1. always@(WRITE_Counter[10:7])
  2.         case(WRITE_Counter[10:7])
  3.                 4'b0000: Write_Comm<={Ram0_Data,Ram0_Addr};
  4.                 4'b0001: Write_Comm<={Ram1_Data,Ram1_Addr};
  5.                 4'b0010: Write_Comm<={Ram2_Data,Ram2_Addr};
  6.                 4'b0011: Write_Comm<={Ram3_Data,Ram3_Addr};
  7.                 4'b0100: Write_Comm<={Ram4_Data,Ram4_Addr};
  8.                 4'b0101: Write_Comm<={Ram5_Data,Ram5_Addr};
  9.                 4'b0110: Write_Comm<={Ram6_Data,Ram6_Addr};
  10.                 4'b0111: Write_Comm<={Ram7_Data,Ram7_Addr};
  11. //                4'b1000: Write_Comm<={Status_Data,Status_Addr};
  12.                 default:Write_Comm<=32'h0000_0000;
  13.         endcase               
  14. always@(WRITE_Counter[6:1])
  15.                 case(WRITE_Counter[6:1])
  16.                         6'b000_000:Write_Seri<=Write_Comm[0];
  17.                         6'b000_001:Write_Seri<=Write_Comm[1];
  18.                    6'b000_010:Write_Seri<=Write_Comm[2];
  19.                         6'b000_011:Write_Seri<=Write_Comm[3];
  20.                         6'b000_100:Write_Seri<=Write_Comm[4];
  21.                         6'b000_101:Write_Seri<=Write_Comm[5];
  22.                         6'b000_110:Write_Seri<=Write_Comm[6];
  23.                         6'b000_111:Write_Seri<=Write_Comm[7];
  24.                          6'b001_000:Write_Seri<=Write_Comm[8];
  25.                         6'b001_001:Write_Seri<=Write_Comm[9];
  26.                    6'b001_010:Write_Seri<=Write_Comm[10];
  27.                         6'b001_011:Write_Seri<=Write_Comm[11];
  28.                         6'b001_100:Write_Seri<=Write_Comm[12];
  29.                         6'b001_101:Write_Seri<=Write_Comm[13];
  30.                         6'b001_110:Write_Seri<=Write_Comm[14];
  31.                         6'b001_111:Write_Seri<=Write_Comm[15];
  32.                         6'b010_000:Write_Seri<=Write_Comm[16];
  33.                         6'b010_001:Write_Seri<=Write_Comm[17];
  34.                    6'b010_010:Write_Seri<=Write_Comm[18];
  35.                         6'b010_011:Write_Seri<=Write_Comm[19];
  36.                         6'b010_100:Write_Seri<=Write_Comm[20];
  37.                         6'b010_101:Write_Seri<=Write_Comm[21];
  38.                         6'b010_110:Write_Seri<=Write_Comm[22];
  39.                         6'b010_111:Write_Seri<=Write_Comm[23];
  40.                         6'b011_000:Write_Seri<=Write_Comm[24];
  41.                         6'b011_001:Write_Seri<=Write_Comm[25];
  42.                    6'b011_010:Write_Seri<=Write_Comm[26];
  43.                         6'b011_011:Write_Seri<=Write_Comm[27];
  44.                         6'b011_100:Write_Seri<=Write_Comm[28];
  45.                         6'b011_101:Write_Seri<=Write_Comm[29];
  46.                         6'b011_110:Write_Seri<=Write_Comm[30];
  47.                         6'b011_111:Write_Seri<=Write_Comm[31];
  48.                 default:Write_Seri<=1'b0;
  49.                 endcase
  50. assign SPI_MOSI =Write_Seri ;


复制代码


仿真波形如下图:


这段代码应该是综合成两个数据选择器,但为什么计数器计到128时(WRITE_Counter[10:7]变为001),Write_Comm数值变化了,Write_Seri却没有做相应变化。求大家帮帮我。如何做到仿真与电路功能完全一致呢?
QQ截图20131223094552.png
发表于 2013-12-23 10:52:55 | 显示全部楼层
在第二个always中 Write_Comm是作为输入,是不是应该放入到always的敏感列表中呢
 楼主| 发表于 2013-12-23 11:30:54 | 显示全部楼层
回复 2# mudu86


   恩  应该都要放进去的
发表于 2013-12-23 13:33:54 | 显示全部楼层
敏感列表没写全。
其实第二个case语句只要一句话assign Write_Seri=rite_comm[WRITE_Counter[6:1]];就行了。
 楼主| 发表于 2013-12-23 22:21:30 | 显示全部楼层
回复 4# orlye


   恩,综合出来的电路一样吗?
发表于 2013-12-24 16:33:11 | 显示全部楼层
敏感列表沒寫全,第一個和第二個always都是。
发表于 2013-12-24 16:55:29 | 显示全部楼层
最好还是加时钟,用时序逻辑吧
 楼主| 发表于 2013-12-24 17:15:44 | 显示全部楼层
回复 7# gygyg


   为什么用时序逻辑?时序逻辑面积大,功耗高,速度慢啊!
发表于 2013-12-24 19:46:22 | 显示全部楼层
回复 5# prototyping

当然一样
发表于 2013-12-25 03:58:31 | 显示全部楼层
回复 1# prototyping
    comn  放到第2个always 敏感变量列表中

2001语法支持 always(*) 更方便
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 05:44 , Processed in 0.039463 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表