Verilog模块的结构

标题一、Verilog的基本设计单元是模块,模块的基本结构分成三部分:

1.端口说明:

第一种写法:同时说明端口的方向、位宽、数据类型和端口名称

module     模块名

        IO说明        [端口1的信号位宽-1:0]        端口1名称,   /*IO说明为input/output/inout , 位宽为1时                                                                                            省略不写*/ 

        IO说明        [端口2的信号位宽-1:0]        端口2名称,

                                ........

        IO说明        [端口n的信号位宽-1:0]        端口n名称

);

第二种写法:只说明端口名称,端口的方向、位宽在模块内部说明

module     模块名(端口1名称,端口2名称,... ,端口n名称);

/*        此为写在模块内容中的端口IO说明语句

        input        [端口1的信号位宽-1:0]        端口1名称,   (输入口)

        output      [端口2的信号位宽-1:0]        端口2名称,   (输出口)

                                ........

        inout        [端口n的信号位宽-1:0]        端口n名称      (输入输出口)

*/

2.内部信号说明:

在模块内部用到的wire (信号线型)和reg(寄存器型)变量说明。

reg    [信号位宽-1:0]       寄存器变量名

wire   [信号位宽-1:0]       变量名

3.功能定义:

模块中最重要的部分是逻辑功能定义,通常由三种方法来说明逻辑功能。

方法一:

用连续赋值语句assign: 描述组合逻辑最常用的方法

e.g.  assign  a = b & c

方法二:

用实例元件:调用库中的原件或其它模块

e.g.   and   u1(q,a,b)   //and为元件名称,u1为例化标识

方法三:

用过程块“always”、“initial”

e.g. 

always (@posedge   clk)

Begin

        if(clr==1)    r_a <=0;

        else            r_a<=d;

end

标题二、模块的引用:

引用方法1:按照端口顺序建立联系法,在引用时,严格按照模块定义的端口顺序来连接,不用标明原模块定义时规定的端口名。

格式:模块名(连接端口1的信号名,连接端口2的信号名, ......  ,连接端口n的信号名)

e.g.

module  AND2_Test(A,B,F);

        input  A;

        input  B;

        output  F;

        assign  F = A&B;

endmodule

//调用

module T1

input  X,input  Y,output  Z

);

AND2_Test   U1(X,Y,Z);

endmodule

引用方法2:在引用时用 “.” 符号,表明原模块定义时规定的端口名称和连接信号名。这种表示的好处是可以用端口名与被引用的模块相对应,而不必严格按照端口顺序对应,提高程序的可读性和可移植性,减少出错的可能。

格式:模块名(.端口1名(连接信号1名),.端口2名(连接信号2名), ......  ,.端口n名(连接信号n名))

e.g.

module  AND2_Test(

        input  A;

        input  B;

        output  F;

);       

        assign  F = A&B;

endmodule

//调用

module T1

input  X,input  Y,output  Z

);

AND2_Test   U1(.A(X),.B(Y),.F(Z));

endmodule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值