目录

FPGA/Verilog,Quartus环境下if-else语句和case语句RT视图对比/学习记录

基本概念

  • RTL(Register - Transfer - Level)视图:是一种硬件描述语言的抽象层次,用于描述数字电路中寄存器之间的数据传输和操作。在这个层次上,可以看到电路的基本结构,如寄存器、组合逻辑、多路复用器等。
  • if - else 语句:是一种条件语句,根据给定的条件表达式的值来选择执行不同的语句块。在 Verilog 中,它用于实现具有优先级的条件判断逻辑。
  • case 语句:也是一种条件语句,用于根据表达式的值从多个分支中选择一个执行。它通常用于实现多分支的平等选择逻辑

当使用 if - else 语句时,RTL 视图通常会生成具有优先级的逻辑电路。

if-else语句代码和RTL视图示例如下(梅哥):

基于下列代码进行后续分析:

复制代码
always @(*) begin
    if (condition1) begin
        output_signal = value1;
    end else if (condition2) begin
        output_signal = value2;
    end else begin
        output_signal = value3;
    end
end
  • 在 RTL 视图中,这会生成一个优先级编码器类型的电路 。每次两种条件进行判断,多个二选一选择器逐级连接;首先判断condition1,如果为真,则输出value1;如果condition1为假,则判断condition2,依此类推。这种电路结构可能会导致较长的组合逻辑延迟 ,尤其是当条件较多且复杂时,因为信号需要依次通过多个条件判断逻辑门。
  • 硬件资源利 用角度看,如果条件之间有包含关系或者部分重叠,可能会导致一些逻辑资源的浪费,因为需要为每个可能的优先级情况生成相应的逻辑。

当使用case语句时:

case语句代码和RTL视图如下(梅哥:

基于一下代码进行下列分析:

复制代码
always @(*) begin
    case (input_expression)
        value_a: output_signal = result_a;
        value_b: output_signal = result_b;
        default: output_signal = result_c;
    endcase
end
  • 在 RTL 视图中,它通常会生成一个多路复用器(MUX)电路input_expression的值决定了选择哪一个分支的结果输出。这种电路结构相对简洁,组合逻辑延迟比较固定,不依赖于条件的顺序。因为所有的分支是平等的,在硬件实现上,会根据input_expression的所有可能值构建一个多路复用器,使得每个分支的选择延迟相对一致。
  • 从硬件资源利用角度看,case 语句在实现多分支且各分支平等的情况下,资源利用效率可能更高,因为它直接构建了一个合适的多路复用器,避免了像 if - else 语句那样可能由于优先级产生的额外资源浪费。

对比:

  • 逻辑延迟

if - else 语句的组合逻辑延迟可能因条件的优先级而变化,条件判断是顺序进行的;

case 语句的组合逻辑延迟相对固定,因为它类似于一个多路复用器的并行选择机制。

  • 硬件资源利用
  • if - else 语句在条件有包含或重叠关系时可能浪费资源;
  • case 语句在多分支平等选择时资源利用效率可能更高,直接构建多路复用器结构。
  • 适用场景

if - else 语句适合于具有优先级的条件判断场景,例如根据不同的状态优先级进行状态机的状态转移;

case 语句更适合于多分支且各分支平等的场景,如根据指令操作码选择执行不同的指令操作。

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
uhakadotcom9 小时前
快速开始使用 n8n
后端·面试·github
uhakadotcom9 小时前
React与Next.js:基础知识及应用场景
前端·面试·github
uhakadotcom13 小时前
MQTT入门:轻量级物联网通信协议
后端·面试·github
云上艺旅14 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
CoderIsArt14 小时前
QT中已知4个坐标位置求倾斜平面与倾斜角度
qt·平面
你觉得20514 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
微信1532379424314 小时前
离线语音识别 ( 小语种国家都支持)可定制词组
嵌入式硬件
北京太速科技股份有限公司14 小时前
太速科技-FMC144 -八路 250MSPS 14bit AD FMC子卡
fpga开发
uhakadotcom15 小时前
阿里云STS:安全、灵活的临时访问管理
后端·面试·github
weixin_5088216515 小时前
1ms软延时,不用定时器,stm32
stm32·单片机·嵌入式硬件