首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >verilog if语句硬件翻译

verilog if语句硬件翻译
EN

Stack Overflow用户
提问于 2015-03-15 12:51:01
回答 2查看 365关注 0票数 1

我正在尝试减少我的关键路径,并发现以下内容令人困惑

代码语言:javascript
运行
复制
          if(counter > 14) begin
             state <= ROUND1;
          end if(offset > message_size) begin
             state <= READ2;
          end

在Quartus中执行TimeQuest之后,我得到了

左侧的4个蓝色块是offset > message_size的小于比较运算符。我想知道为什么它们有4个,为什么是"LessThanX~Y“而不是大于?偏移量和message_size都是32位的,它们都在case语句的always@(posedge )内。

有没有更好的方式来写这个if语句来减少我的关键路径?

EN

回答 2

Stack Overflow用户

发布于 2015-03-15 14:42:32

使用always @*确保所有信号都在敏感度list.When中敏感度列表不包含代码中使用的信号,该代码将生成锁存器。

请再次使用else而不是if语句。

票数 1
EN

Stack Overflow用户

发布于 2015-03-17 01:55:47

32位比较将需要几个6输入LUT才能实现,所以逻辑的数量并不让我感到惊讶。您的示意图中似乎确实缺少了许多信号,但这可能只是因为您只显示了关键路径。小于块与大于块相同,只是输入颠倒了。我同意之前的评论,即你的"end if“应该被"else if”取代。

现在,减少关键路径只是一个流水线问题。我要尝试的第一件事是在状态机代码中使用这两个大于比较的结果之前注册它们。您还可以将较大的比较分成两个阶段--在周期1期间并行比较高16位和低16位,并在第二个周期中使用结果来完成32位比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29057349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档