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

Verilog HDL结构化描述形式

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

 在verilog hdl中可使用如下方式描述结构:
  1) 内置门原语(在门级);
  2) 开关级原语(在晶体管级);
  3) 用户定义的原语(在门级);
  4) 模块实例 (创建层次结构)。
  通过使用线网来相互连接。下面的结构描述形式使用内置门原语描述的全加器电路实例。

module fa_str (a, b, cin, sum, cout);
input a, b, cin;
output sum, cout;
wire s1, t1, t2, t3;

xor
x1 (s1, a, b),
x2 (sum, s1, cin);

and
a1 (t3, a, b),
a2 (t2, b, cin),
a3 (t1, a, cin),

or
o1 (cout, t1, t2, t3);
endmodule

  在这一实例中,模块包含门的实例语句,也就是说包含内置门xor、and和or 的实例语句。门实例由线网类型变量s1、t1、t2和t3互连。由于没有指定的顺序, 门实例语句可以以任何顺序出现;图中显示了纯结构;xor、and和or是内置门原语;x1、x2、a1等是实例名称。紧跟在每个门后的信号列表是它的互连;列表中的第一个是门输出,余下的是输入。例如,s1与xor 门实例x1的输出连接,而a和b与实例x1的输入连接。
4位全加器可以使用4个1位全加器模块描述。下面是4位全加器的结构描述形式。

module fourbitfa (fa, fb, fcin, fsum, fcout );
parameter size = 4;
input [size:1] fa, fb;
output [size:1] fsum
input fcin;
input fcout;
wire [ 1: size-1] ftemp;
fa_str
fa1( .a (fa[1]), .b(fb[1]), .cin(fcin),
.sum(fsum[1]), .cout(ftemp[2])),
fa2( .a (fa[2]), .b(fb[2]), .cin(ftemp[1]),
.sum(fsum[2]), .cout(ftemp[2])),
fa3(fa[3], fb[3], ftemp[2], fsum[3], ftemp[3],
fa4(fa[4], fb[4], ftemp[3], fsum[4], fcout);
endmodule

  在这一实例中,模块实例用于建模4位全加器。在模块实例语句中,端口可以与名称或位置关联。前两个实例fa1和fa2使用命名关联方式,也就是说,端口的名称和它连接的线网被显式描述(每一个的形式都为“.port_name (net_name))。最后两个实例语句,实例fa3和fa4使用位置关联方式将端口与线网关联。这里关联的顺序很重要,例如,在实例fa4中,第一个fa[4]与fa_str 的端口a连接,第二个fb[4]与fa_str 的端口b连接,余下的由此类推。


 在verilog hdl中可使用如下方式描述结构:
  1) 内置门原语(在门级);
  2) 开关级原语(在晶体管级);
  3) 用户定义的原语(在门级);
  4) 模块实例 (创建层次结构)。
  通过使用线网来相互连接。下面的结构描述形式使用内置门原语描述的全加器电路实例。

module fa_str (a, b, cin, sum, cout);
input a, b, cin;
output sum, cout;
wire s1, t1, t2, t3;

xor
x1 (s1, a, b),
x2 (sum, s1, cin);

and
a1 (t3, a, b),
a2 (t2, b, cin),
a3 (t1, a, cin),

or
o1 (cout, t1, t2, t3);
endmodule

  在这一实例中,模块包含门的实例语句,也就是说包含内置门xor、and和or 的实例语句。门实例由线网类型变量s1、t1、t2和t3互连。由于没有指定的顺序, 门实例语句可以以任何顺序出现;图中显示了纯结构;xor、and和or是内置门原语;x1、x2、a1等是实例名称。紧跟在每个门后的信号列表是它的互连;列表中的第一个是门输出,余下的是输入。例如,s1与xor 门实例x1的输出连接,而a和b与实例x1的输入连接。
4位全加器可以使用4个1位全加器模块描述。下面是4位全加器的结构描述形式。

module fourbitfa (fa, fb, fcin, fsum, fcout );
parameter size = 4;
input [size:1] fa, fb;
output [size:1] fsum
input fcin;
input fcout;
wire [ 1: size-1] ftemp;
fa_str
fa1( .a (fa[1]), .b(fb[1]), .cin(fcin),
.sum(fsum[1]), .cout(ftemp[2])),
fa2( .a (fa[2]), .b(fb[2]), .cin(ftemp[1]),
.sum(fsum[2]), .cout(ftemp[2])),
fa3(fa[3], fb[3], ftemp[2], fsum[3], ftemp[3],
fa4(fa[4], fb[4], ftemp[3], fsum[4], fcout);
endmodule

  在这一实例中,模块实例用于建模4位全加器。在模块实例语句中,端口可以与名称或位置关联。前两个实例fa1和fa2使用命名关联方式,也就是说,端口的名称和它连接的线网被显式描述(每一个的形式都为“.port_name (net_name))。最后两个实例语句,实例fa3和fa4使用位置关联方式将端口与线网关联。这里关联的顺序很重要,例如,在实例fa4中,第一个fa[4]与fa_str 的端口a连接,第二个fb[4]与fa_str 的端口b连接,余下的由此类推。


相关IC型号

热门点击

 

推荐技术资料

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


 复制成功!