设计抽象层次
本课属于 Coddy Verilog 学习旅程的“基础知识”单元。第 5 课,共 90 课。
在数字设计中,我们可以用不同的细节层次来描述同一个电路。Verilog 是一种可以在这些抽象层次中的任意层次描述电路的语言。这正是它强大的原因!
这些是各个级别:
级别 1:行为级
这个级别描述电路做什么,而不是它如何实现。它关注功能或行为,例如“向上计数”或“将两个数字相加”。
计数或相加的内部细节不会显示出来。这个层次最接近人类的思维方式,也更容易编写。
第 2 级:RTL
本级将展示数据如何在寄存器之间移动,以及这些数据会进行哪些操作。你可以看到数据路径:数据从寄存器进入加法器,然后再返回寄存器。
这是大多数数字设计人员工作的层次,因为它在易于理解和足够详细以创建硬件之间取得了很好的平衡。
第 3 级:门级
这个级别使用 AND、OR 和 XOR 等基本逻辑门来描述电路。每个连接都会明确显示。
这一层级非常详细,手动编写很困难。它通常由工具根据更高级别的描述生成,而不是手动编写。
为什么这很重要
- **更高层次** = 更容易编写,控制力更弱
- **更低层次** = 更难编写,控制力更强
- **RTL** 是大多数设计工作的理想选择
挑战
要做什么:
- 运行这段代码,看看同一操作如何在三个不同层次上进行描述:
亲手试试
module abstraction_demo;
initial begin
$display("=== Design Abstraction Levels ===");
$display("");
$display("Level 1 (Behavioral):");
$display(" 'Add a and b' - no details how");
$display("");
$display("Level 2 (RTL):");
$display(" 'On clock edge, result <= a + b' - shows data flow");
$display("");
$display("Level 3 (Gate Level):");
$display(" 'XOR gates for sum, AND gates for carry' - actual gates");
$display("");
$finish;
end
endmodule这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Verilog 在线编译器