加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Verilog四种描述方式

(2012-10-08 18:31:01)
标签:

verilog

描述方式

建模方式

杂谈

分类: 工作札记

转载自:http://blog.sina.com.cn/s/blog_4dbde8ed0100uovy.html

    Verilog是以模块集合的形式来描述数字电路系统。module是verilog语言的基本单元,它用于描述某个设计的功能或结构及其与其他模块通信的外部端口。

    模块的描述方式又称建模方式。模块大致可以按以下四类抽象级别来进行描述。

    拿行波计数器来作个例子。

(1)行为级或算法级的描述方式(行为级建模)

module cnt_4bit(q,clear,clock);

output [3:0] q;

input clear,clock;

reg [3:0] q;

always@(posedge clear or negedge clock)

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  N1(cbar,clear),

     N2(clkbar,clock);

nand NA1(sbar,rbar,s),

     NA2(s,sbar,cbar,clkbar),

     NA3(r,s,clkbar,rbar),

     NA4(rbar,r,cbar,d),

     NA5(q,s,qbar),

     NA6(qbar,q,cbar,r),

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 (out,c,a);

pmos (out,gnd,a);

pmos (out,gnd,b);

endmodule

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有