位置:51电子网 » 技术资料 » EDA/PLD

verilog HDL 结构化建模具体实例

发布时间:2008/5/28 0:00:00 访问次数:652

5.4 结构化建模具体实例
对一个数字系统的设计,我们采用的是自顶向下的设计方式。可把系统划分成几个功能模
块,每个功能模块再划分成下一层的子模块。每个模块的设计对应一个module ,一个module 设计
成一个verilog hdl 程序文件。因此,对一个系统的顶层模块,我们采用结构化的设计,即顶层模
块分别调用了各个功能模块。下面以一个实例(一个频率计数器系统)说明如何用hdl进行系统

设计。
在该系统中,我们划分成如下三个部分:2输入与门模块,led显示模块,4位计数器模块。系
统的层次描述如下:

top cnt_bcd (cnt_bcd.v)

sub and2 cnt_4b hex2led
(and2.v) (cnt_4b.v) (hex2led.v)

图9 系统层次描述

顶层模块cnt_bcd,文件名cnt_bcd.v,该模块调用了低层模块 and2、cnt_4b 和
hex2led 。
系统的电路结构图如下:


图10 系统电路框图

2004-08-16 第31页,共41页
版权所有,侵权必究


绝密
verilog hdl 入门教程请输入文档编号

顶层模块cnt_bcd对应的设计文件 cnt_bcd.v 内容为:

module cnt_bcd (bcd_a,bcd_b,bcd_c,bcd_d,clk,gate,reset) ;
// ------------ port declarations --------- //
input clk;
input gate;
input reset;
output [3:0] bcd_a;
output [3:0] bcd_b;
output [3:0] bcd_c;
output [3:0] bcd_d;

wire clk;
wire gate;
wire reset;
wire [3:0] bcd_a;
wire [3:0] bcd_b;
wire [3:0] bcd_c;
wire [3:0] bcd_d;


// ----------- signal declarations -------- //
wire net104;
wire net116;
wire net124;
wire net132;
wire net80;
wire net92;
// -------- component instantiations -------//
cnt_4b u0(


.clk(clk),
.enable(gate),
.full(net80),
.q(bcd_a),
.reset(reset)


);

cnt_4b u1(
.clk(clk),
.enable(net116),


2004-08-16 第32页,共41页
版权所有,侵权必究


绝密
verilog hdl 入门教程请输入文档编号

.full(net92),
.q(bcd_b),
.reset(reset)

);

cnt_4b u2(
.clk(clk),
.enable(net124),
.full(net104),
.q(bcd_c),
.reset(reset)

);

cnt_4b u3(
.clk(clk),
.enable(net132),
.q(bcd_d),
.reset(reset)

);

and2 u4(
.a0(net80),
.a1(gate),
.y(net116)
);

and2 u5(
.a0(net92),
.a1(net116),
.y(net124)
);

and2 u6(
.a0(net104),
.a1(net124),
.y(net132)
);

endmodule

2004-08-16 第33页,共41页
版权所有,侵权必究


绝密
verilog hdl 入门教程请输入文档编号

注意:这里的and2是为了举例说明,在实际设计中,对门级不要重新设计成一个模块,同时
对涉及保留字的(不管大小写)相类似的标识符最好不用。



5.4 结构化建模具体实例
对一个数字系统的设计,我们采用的是自顶向下的设计方式。可把系统划分成几个功能模
块,每个功能模块再划分成下一层的子模块。每个模块的设计对应一个module ,一个module 设计
成一个verilog hdl 程序文件。因此,对一个系统的顶层模块,我们采用结构化的设计,即顶层模
块分别调用了各个功能模块。下面以一个实例(一个频率计数器系统)说明如何用hdl进行系统

设计。
在该系统中,我们划分成如下三个部分:2输入与门模块,led显示模块,4位计数器模块。系
统的层次描述如下:

top cnt_bcd (cnt_bcd.v)

sub and2 cnt_4b hex2led
(and2.v) (cnt_4b.v) (hex2led.v)

图9 系统层次描述

顶层模块cnt_bcd,文件名cnt_bcd.v,该模块调用了低层模块 and2、cnt_4b 和
hex2led 。
系统的电路结构图如下:


图10 系统电路框图

2004-08-16 第31页,共41页
版权所有,侵权必究


绝密
verilog hdl 入门教程请输入文档编号

顶层模块cnt_bcd对应的设计文件 cnt_bcd.v 内容为:

module cnt_bcd (bcd_a,bcd_b,bcd_c,bcd_d,clk,gate,reset) ;
// ------------ port declarations --------- //
input clk;
input gate;
input reset;
output [3:0] bcd_a;
output [3:0] bcd_b;
output [3:0] bcd_c;
output [3:0] bcd_d;

wire clk;
wire gate;
wire reset;
wire [3:0] bcd_a;
wire [3:0] bcd_b;
wire [3:0] bcd_c;
wire [3:0] bcd_d;


// ----------- signal declarations -------- //
wire net104;
wire net116;
wire net124;
wire net132;
wire net80;
wire net92;
// -------- component instantiations -------//
cnt_4b u0(


.clk(clk),
.enable(gate),
.full(net80),
.q(bcd_a),
.reset(reset)


);

cnt_4b u1(
.clk(clk),
.enable(net116),


2004-08-16 第32页,共41页
版权所有,侵权必究


绝密
verilog hdl 入门教程请输入文档编号

.full(net92),
.q(bcd_b),
.reset(reset)

);

cnt_4b u2(
.clk(clk),
.enable(net124),
.full(net104),
.q(bcd_c),
.reset(reset)

);

cnt_4b u3(
.clk(clk),
.enable(net132),
.q(bcd_d),
.reset(reset)

);

and2 u4(
.a0(net80),
.a1(gate),
.y(net116)
);

and2 u5(
.a0(net92),
.a1(net116),
.y(net124)
);

and2 u6(
.a0(net104),
.a1(net124),
.y(net132)
);

endmodule

2004-08-16 第33页,共41页
版权所有,侵权必究


绝密
verilog hdl 入门教程请输入文档编号

注意:这里的and2是为了举例说明,在实际设计中,对门级不要重新设计成一个模块,同时
对涉及保留字的(不管大小写)相类似的标识符最好不用。



相关IC型号

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!