概述
所谓抽象级别,实际上是指同一个物理电路,可以在不同的层次上用 Verilog 语言来描述它。Verilog 硬件描述语言支持以下五种级别:
(1) 系统级;
(2) 算法级;
(3) RTL级;
(4) 门级;
(5) 开关级;
其中,系统级和算法级是属于行为级描述方式的,RTL级又称为数据流描述方式,门级和开关级是属于结构化描述方式的,下面分别对这三种方式进行介绍。
1. 结构化描述方式
结构化描述方式是最原始的描述方式,也是抽象级别最低的描述方式,它是最接近实际的硬件结构的描述方式。下面以三人表决器为例。使用结构化Verilog进行描述:
module Example_Structure(A, B, C, L)
input A;
input B;
input C;
output L;
wire AB, BC, AC; // 内部信号声明
and U1(AB, A, B); // 与门(A,B信号进入,AB表示A与B信号输出)
and U2(BC, B, C);
and U3(AC, A, C);
or U4(L, AB, BC, AC); // 或门
endmodule
2. 数据流描述方式
数据流描述方式要比结构化描述方式的抽象级别高一些,因为它不再需要清晰地刻画具体的数字电路架构,而是可以比较直观地表达底层逻辑的行为。基于数据流的描述方式,形象点来说,每个模块就好比一个容器,大量外部信息从模块的输入端流入,相应的大量的处理后信息也会从模块的输出端口流出。
module Example_Dataflow(A, B, C, L);
input A;
input B;
input C;
output L;
assign L = ((!A)&B&C) | (A&(!B)&C) | (A&B&(!C) | (A&B&C));
endmodule
3. 行为级描述方式
和前面两种描述方式比起来,行为级描述方式的抽象级别最高,概括性也最强,因此规模稍大些的设计,往往都是以行为级描述方式为主。虽然FPGA的设计思路都是并行的,但是Verilog中还是支持大量的串行语句元素。由此可见,行为级描述方式的主要载体就是串行语句,同时辅以并行语句用于描述各个算法之间的连接关系。
module Example_Behavior(A, B, C, L);
input A;
input B;
input C;
output reg L;
always @ (A, B, C) // always在组合逻辑中的用法
begin // 只要A,B,C其中一个信号变化就会执行begin中的case语句
case ({A, B, C}) // 也能写成 always @ (*) 功能相同
3'b000: L = 1'b0;
3'b001: L = 1'b0;
3'b010: L = 1'b0;
3'b011: L = 1'b1;
3'b100: L = 1'b0;
3'b101: L = 1'b1;
3'b110: L = 1'b1;
3'b111: L = 1'b1;
default: L = 1'bx;
endcase
end
endmodule
最后
以上就是谦让豌豆为你收集整理的Verilog的抽象级别的全部内容,希望文章能够帮你解决Verilog的抽象级别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复