francol 发表于 2011-3-22 13:43:20

请教一个VHDL语言的问题

我学的是veirlog。刚看了一段vhdl的代码,看得我很晕。
这段代码:
                                        IF (fifowraddr>=fifowraddr'high) THEN
                                                fifowraddr<=0;
                                        ELSE
                                                fifowraddr<=fifowraddr+1;
                                        END IF;
其中的变量是这样定义的SIGNAL fifowraddr    : NATURAL RANGE 0 TO (FIFOLENTH-1) ;

这个fifowraddr'high是不是就是11111111··啊。如果是这样的话,上面的代码不就多余了么,直接+1就可以了么。

NJ8888 发表于 2011-3-22 14:23:58

我看可以直接+1

ahuang227 发表于 2011-3-22 16:04:19

FIFOLENTH-1这个是1111111吗?

40130064 发表于 2011-3-22 16:15:41

220和255 都是8位,但220不是“11111111”

FIFOLENTH-1不"1111"应该是常量

francol 发表于 2011-3-22 16:47:23

回复【3楼】40130064博德之门IV
-----------------------------------------------------------------------

参量FIFOLENTH=1024。
VHDL中'high是什么意思啊,是该变量的最大值么。

NJ8888 发表于 2011-3-22 17:00:16

回复【4楼】francol
-----------------------------------------------------------------------

从通常看,FIFOLENTH是FIFO深度,如果是2的幂,那我前面说的直接加1可以的,否则按别人意见办

40130064 发表于 2011-3-22 19:39:30

预定义属性函数HIGH
'high返回类型或子类型的上限值,用于数组时N表示数组的行序号
fifowraddr'high 因为你这个地址不是数组,所以就是fifowraddr的最大值1023。

FIFOLENTH是常量的话修改方便 大概就是这样写的原因吧
页: [1]
查看完整版本: 请教一个VHDL语言的问题