打印
[verilog]

这个式子该怎么表示。

[复制链接]
915|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
魔人布欧|  楼主 | 2016-4-25 15:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
for(k=-1;k<=1;k++)
      {
           for(l=-1;l<=1;l++)
                {
                     avg=avg+pd[i+k][j+l];
                }
      }
我想知道这些式子在Verilog中该怎么表示,特别是 avg=avg+pd[1+k][1+l];这个式子,对于pd[k+1][l+1]怎么办。谢谢给位来指点。

相关帖子

沙发
xuander| | 2016-4-27 00:58 | 只看该作者
本帖最后由 xuander 于 2016-4-27 01:01 编辑

for循环是不可综合的,不能组合出电路的意思。

两个for太复杂,举个单for的例子,请意会。

always    @clk
{
if    (rst有效)
    {    sum = 0;
    counter=0;
    }
esle
    {
    if     (flag == 1)
         {
         sum = sum  +   a [ counter ];
         counter += 1;
         if    ( counter >= limit )
              {
              sum完成,后续处理;
              flag = 0;
              }
          }
     }}







使用特权

评论回复
板凳
魔人布欧|  楼主 | 2016-4-27 09:33 | 只看该作者
你这里的counter是不是一个RAM啊,是不是需要自己写一个RAM 或者是其他的什么啊 。
谢谢!

使用特权

评论回复
地板
xuander| | 2016-4-27 09:55 | 只看该作者

就是一个普通变量,
位数自己定。


使用特权

评论回复
5
魔人布欧|  楼主 | 2016-4-27 11:07 | 只看该作者
xuander 发表于 2016-4-27 00:58
for循环是不可综合的,不能组合出电路的意思。

两个for太复杂,举个单for的例子,请意会。

你这里的counter是不是一个RAM啊,是不是需要自己写一个RAM 或者是其他的什么啊 。
谢谢!

使用特权

评论回复
6
xuander| | 2016-4-27 11:18 | 只看该作者
魔人布欧 发表于 2016-4-27 11:07
你这里的counter是不是一个RAM啊,是不是需要自己写一个RAM 或者是其他的什么啊 。
谢谢! ...


不是RAM,它肯定要占用逻辑单元里面一个寄存器。


使用特权

评论回复
7
xiamingmin163| | 2016-4-27 14:02 | 只看该作者
首先,FOR循环在verilog里面会被直接展开,编译器一般支持,但两个FOR嵌套的做法不好,起码巨耗资源,不要那样做,用计数器的做法来代替;
其次,对于“pd[k+1][l+1]”可以定义其为memory型的变量,可以理解成C里面的二维数组了;
最后,还是看看书吧,毕竟硬件语言是有限制的。

使用特权

评论回复
8
魔人布欧|  楼主 | 2016-4-27 19:47 | 只看该作者
xuander 发表于 2016-4-27 11:18
不是RAM,它肯定要占用逻辑单元里面一个寄存器。

那估计是要自己去写一个RAM 来存储数据吧。

使用特权

评论回复
9
abcdfff| | 2016-6-12 09:18 | 只看该作者
那个数组要写成一个表吗?用查表法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

43

帖子

1

粉丝