这个式子该怎么表示。

2020-02-04 10:40发布

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]怎么办。谢谢给位来指点。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
xuander
1楼-- · 2020-02-04 11:17
本帖最后由 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;
              }
          }
     }}







魔人布欧
2楼-- · 2020-02-04 14:23
你这里的counter是不是一个RAM啊,是不是需要自己写一个RAM 或者是其他的什么啊 。
谢谢!
xuander
3楼-- · 2020-02-04 16:16

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


魔人布欧
4楼-- · 2020-02-04 20:36
xuander 发表于 2016-4-27 00:58
for循环是不可综合的,不能组合出电路的意思。

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

你这里的counter是不是一个RAM啊,是不是需要自己写一个RAM 或者是其他的什么啊 。
谢谢!
xuander
5楼-- · 2020-02-04 21:44
 精彩回答 2  元偷偷看……
xiamingmin163
6楼-- · 2020-02-04 22:33
首先,FOR循环在verilog里面会被直接展开,编译器一般支持,但两个FOR嵌套的做法不好,起码巨耗资源,不要那样做,用计数器的做法来代替;
其次,对于“pd[k+1][l+1]”可以定义其为memory型的变量,可以理解成C里面的二维数组了;
最后,还是看看书吧,毕竟硬件语言是有限制的。

一周热门 更多>