Verilog四种描述方式
(2012-10-08 18:31:01)
标签:
verilog描述方式建模方式杂谈 |
分类: 工作札记 |
转载自:http://blog.sina.com.cn/s/blog_4dbde8ed0100uovy.html
(1)行为级或算法级的描述方式(行为级建模)
module cnt_4bit(q,clear,clock);
output [3:0] q;
input clear,clock;
reg [3:0] q;
always@(posedge
begin
if(clear)
q=4'd0;
else
q=(q+1);
end
endmodule
(2)数据流描述方式(数据流级建模)
数据流描述方式,也成RTL(寄存器传输级)描述方式。
第一步
module cnt_4bit_1(q,clear,clock);
output [3:0] q;
input clear,clock;
T_ff tff0(q[0],clear,clock);
T_ff tff1(q[1],clear,q[0]);
T_ff tff2(q[2],clear,q[1]);
T_ff tff3(q[3],clear,q[2]);
endmodule
第二步
module T_ff(q,clear,clock);
output q;
input clear,clock;
edge_dff ff1(q,,~q,clear,clock);
endmodule
第三步
module edge_dff(q,qbar,d,clear,clock);
output q,qbar;
input d,clear,clock;
wire s,sbar,r,rbar,cbar;
assign cbar=~clear;
//输入锁存器;锁存器是电平敏感的。而以个边沿敏感的触发器需要使用3个RS锁存器来实现
assign sbar=~(rbar&s),
s=~(sbar&cbar&~clock),
r=~(rbar&~clock&s),
rbar=~(r&cbar&d);
//输出锁存
assign q=~(s&qbar),
qbar=~(q&r&cbar);
endmodule
(3)门级描述方式(门级建模)
上述描述方式中的第三步的模块edge_dff的设计可以采用门级描述的方式来实现。
module edge_dff_1 (q,qbar,d,clear,clock);
output q,qbar;
input d,clear,clock;
wire cbar,clkbar,sbar,s,r,rbar;
not
nand NA1(sbar,rbar,s),
endmodule
(4)开关级描述方式(开关级建模)
用开关级元件描述方式设计nor门
module my_nor(out,a,b);
output out;
input a,b;
wire c;
supply1 pwr;
supply0 gnd;
pmos(c,pwr,b);
pmos
pmos
pmos
endmodule