FPGA学习altera 系列 第二十五篇 赋值时的位宽问题

2020-12-29 17:48:08 浏览数 (1)

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来“FPGA学习系列 altera"系列,持续更新。此学习心得是本人之前所写,所用设计软件为Quartus II 13.1,现Quartus II 新版本已更新到19 ,以下仅供初学者学习参考。后续会更新其他系列,敬请关注。话不多说,上货。

在进行FPGA设计时,我们经常会遇到这样的一条警告:

这句话的意思是:在width_problem.v的第十四行出现了警告(缩短一个32位的值去匹配一个4位的结果)。我们去查看第十四行:

由于po_count为4位的,很容易理解“去匹配一个4位的结果”。但是“缩短一个32位的值”这句话该怎么理解呢?在上述的赋值中,有‘po_count’和‘1’,po_count为4位的,那么32位的只能是没有表明位宽的‘1’了(当不表明位宽的时候,软件默认位宽)。

以上只是其中的一种情况,那么下面我们分析一下各种情况:假设AA的位宽为X,BB的位宽为Y(X>Y)。

1. AA <= BB

赋值过程为:赋值时,BB会自动在前面加上几个‘0’,使位宽和AA的位宽相等,然后进行赋值。

2. BB <= AA

赋值过程为:赋值时,AA自动截取后面的Y位赋值给BB。

在所有的赋值过程中,赋值号右侧的所有数据都会在最前面加‘0’,保证位宽与赋值号左侧和右侧位宽最大的数据的位宽保持一致,然后进行计算,把结果赋值给目标。

经过上述的分析,我们将上述语句改为:

po_count <= po_count 1'b1;

警告就会消失,具体的过程请读者自行分析。

如果设计要求与笔者的设计不同,请自行更改设计,以保证设计的正确性。如果还是有不明白的读者可以发邮件到我邮箱或者加群询问。

END

0 人点赞