OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6965|回复: 3

[ALTERA] 综合后,RTL Viewer和代码不一致

[复制链接]

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
发表于 2019-11-8 09:27:33 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 jshzp 于 2019-11-8 13:22 编辑

用verilog写了句话,做地址译码,片选输出,代码如下:
  1. module Decoder(Addr,CS);
  2. //IO
  3. input[24:0]                Addr;        //系统总线地址
  4. output                        CS;        //片选信号
  5. assign CS = ((Addr & 25'h1E00000) ==25'h1400000||(Addr & 25'h1E00000) ==25'h1500000) ? 1'b0: 1'bz;//先把低21位置零,然后比较地址是否相符

  6. endmodule
复制代码
编译后,打开RTL Viewer得到下图:
无标题.png
红圈中,有两处错误:一、地址A的高四位地址A21、A22、A23、A24接地了,而我的代码Addr & 25'h1E00000应该是低21位即A20~A0置零,保留高4位,去做比较;
二、图中用于比较的输入数据B=25'h5,代码里写的是25'h1400000
问题出在哪里呢?
我用的软件是开发资料里面的QII 13.1.0。同事用的QII 12.0版本,同样的代码,他编译后查看RTL Viewer,结果和我的就不一样。难道是软件的原因吗?

最佳答案

查看完整内容[请看2#楼]

两个版本都没有问题,不同版本的工具做了不同优化而已,13.1优化为只判断高5位,因为低位全部为0,不需要做判断,工具优化显示不一样而已。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

13

帖子

1

精华

超级版主

Rank: 8Rank: 8

积分
221
金钱
221
注册时间
2019-11-11
在线时间
27 小时
发表于 2019-11-8 09:27:34 | 显示全部楼层
两个版本都没有问题,不同版本的工具做了不同优化而已,13.1优化为只判断高5位,因为低位全部为0,不需要做判断,工具优化显示不一样而已。
回复

使用道具 举报

8

主题

13

帖子

1

精华

超级版主

Rank: 8Rank: 8

积分
221
金钱
221
注册时间
2019-11-11
在线时间
27 小时
发表于 2019-11-11 00:25:19 | 显示全部楼层
这个地方是不同版本工具优化不一样导致的,功能都是对的,13.1版本只判断高5位,因为低位全部是0,工具做了优化。
回复

使用道具 举报

6

主题

1127

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1656
金钱
1656
注册时间
2019-8-15
在线时间
102 小时
发表于 2019-11-22 16:51:37 | 显示全部楼层
帮顶         
成功没有捷径
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 09:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表