Verilog中if..else和case语句分析

本文主要讨论一下Verilog中if...else...与case..语句的比较。


先看几个图:

if...else..

Verilog中if..else和case语句分析

Verilog中if..else和case语句分析

Verilog中if..else和case语句分析

case语句实现与上述一样的功能

Verilog中if..else和case语句分析Verilog中if..else和case语句分析

Verilog中if..else和case语句分析Verilog中if..else和case语句分析


发现RTL视图差别很大,而且从RTL视图也能看出if..else...有明显的优先级,case语句是并行的。但是我们再看看technology map:

Verilog中if..else和case语句分析

Verilog中if..else和case语句分析


两种表达方式的technology map的结果一样,说明映射到FPGA板子上的硬件电路一样。



RTL视图显示的是编译后的结果显示的图形都是调用标准单元的结果。跟工艺库,FPGA类型,都没有关系。
TechnologyMap Viewer显示的是已经编译并映射到对应的FPGA器件中,是fitterplace & route)后的结果。


所以现在的仿真和综合工具已经足够强大,最后综合后的结果if..else...与case...语句其实是一样的,无非是两种不同的实现方式。


下面最后再给出一个case语句表达的优先编码器的例子,大家从technology MAP中看一下最后映射到板子上的具有优先级的电路是什么样的。


Verilog中if..else和case语句分析

Verilog中if..else和case语句分析


Verilog中if..else和case语句分析

Verilog中if..else和case语句分析