Verilog模型的不同抽象级别:
系统级,算法级,RTL级,门级,开关级
门级描述
一种最直观的电路结构;也是最底层的电路描述。包括:
and 与门; nand 与非门; nor 与或门; or 或门; xor 异或门; xnor 异或非门;
buf 缓冲器; not 非门;
门级声明语句:
<门的类型>[<驱动能力><延时>]<门实例>(端口信号)
例:nand #5 (可选择的)nd1(out,in0,in1,in2);
举例:二选一选择器
module MUX2x1(z,d0,d1,s);
output z;
input d0,d1,s;
and u0(t0,d0,sbar),
u1(t1,d1,s);
not u2(sbar,s);
or u3(z,t0,t1);
endmodule
门级描述——由已有模块构成更高层次的模块
举例:四选一多路选择器
module MUX4x1(
input d0,
input d1,
input d2,
input d3,
input s0,
input s1,
output z);
wire z0;
wire z1;
MUX2x1 mux2x1_0(
.z(z0),
.d0(d0),
.d1(d1),
.s0(s0)
);
MUX2x1 mux2x1_1(
.z(z1),
.d0(d2),
.d1(d3),
.s0(s1)
);
MUX2x1 mux2x1_2(
.z(z),
.d0(z0),
.d1(z1),
.s0(s1)
);
endmodule
行为级描述
其抽象程度远高于结构描述,相当于高级编程语言;
描述设计实体时,无需知道电路结构,只需知道输入和输出行为;
module sample_ff(clk,rstn,din,dout);
input clk ,rstn;
input [3:0] din;
output [3:0] dout;
reg [3:0] data;
assign dout=data;
always@(posedge clk or negedge rstn)
begin
if(!rstn)
data <=4'b0;
else
data <= din;
end
endmodule
混合层次描述
以上各种层次描述方式可以任意混合使用;
一个复杂电路的完整Verilog HDL模型是由其模块构成的,每一个模块又可以由若干个子模块构成,这些模块可以分别用不同抽象级别的Verilog HDL描述,在一个模块中也可以有多种级别的描述。