微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 这段代码会综合出latch吗 总感觉怪怪的

这段代码会综合出latch吗 总感觉怪怪的

时间:10-02 整理:3721RD 点击:

  1. localparam N = 4;
  2.          reg [4 -1:0] maxTemp;
  3.          integer i;

  4.          always @ *
  5.                 begin
  6.                         maxTemp = 0;
  7.                         for (i = 0; i<N; i=i+1)
  8.                                 if(maxTemp<Sum[4*i +:4])
  9.                                          maxTemp = Sum[4*i +:4];
  10.              end

复制代码

本来就是组合逻辑,这种写法省事,不过好像这堆组合逻辑有点长。

第7行去掉 怎样


对 问题就在第七行,如果去掉 必然会出现latch。事实是 我综合之后这段代码并未出现latch,但总感觉怪怪的


请问 有更好或者你认为更合理的写法吗 这里要求组合逻辑来取出最大值 谢谢

function的使用,一般单独包装成function,放在模块下方,在某些场合下挺好用的,我最近写了几个function。

这个写法很合理啊,我也喜欢这种写法,省事,只是提醒下这个组合逻辑很长。这种需要综合软件去翻译,可能会影响综合速度或者形式验证速度,我是猜的。累加求和的组合逻辑也是这样啊。比如
always @ (*)
sum =0;
for()
sum=sum+d[i];
所以我没看出你的代码有什么问题,就是不会有锁存,所以我没什么想说的就提醒一下这个组合逻辑很长。如果可以切开来,比如两两并行比较。

至于第七行,可以这么理解,假设你不给初始值,那么他可以是任何值,除非综合仿真工具会有一种default设定如果你不给初始就默认为0,那样也没事,但是万一没有,这种组合逻辑没初值肯定有问题。至于综合出什么就不知道了


明白了 谢谢你的耐心回答 包括楼中其他几位

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top