verilog基础知识点

目录

1、模块的基本架构

2、数据类型

2.1、数值

2.2、线网类型 

2.3、变量声明/寄存器类型

3、连接方式

3.1、端口位置连接

3.2、端口命名连接

4、 操作符

5、 数据流建模

连续赋值语句assign

6、行为级建模

6.1、行为级建模常包含语句

6.2、过程块

6.3、语句块

6.4、多路分支语句case

6.5、循环语句for

6.6、function and task

7、测试平台 

7.1、顶层测试模块

7.2、结构化测试模块

以下为灵活运用知识


1、模块的基本架构

module 模块名(端口列表);
    //端口声明可以再端口列表,也可以在模块内,input,output,inout
    //参数定义(常量)
    //内部信号声明,wire或reg
    //模块内部可以包涵function、task,
    //低层次的引用,
    //连续赋值语句assign、过程块initial,always
endmodule

2、数据类型

2.1、数值

0:逻辑低电平
1:逻辑高电平
z:高组态,三态
x:未知逻辑电平

2.2、线网类型 

wire [7:0] x;       //x是8bit的wire型连线;
wire #(2,1) carry;  //带上升、下降延迟的线网;

注意:verilog HDL程序模块中输入输出信号类型默认为wire类型。 

2.3、变量声明/寄存器类型

reg [7:0] a [0:4];   //5个8bit符号变量,或称为5个8bit寄存器,或位宽为8深度为5的寄存器;

注意:变量是数据存储单元的抽象,常包含reg、time、integer类型,其初值是不定态“x”值,可以储存数据赋值给其它变量、线网。

3、连接方式

3.1、端口位置连接

//调用模块
modulenamel(...);
    //端口定义
    //端口描述
    //mux u1(in1,in2,sel,out);
endmodule

//被调用模块
modulenamel(in1,in2,sel,out);
    //端口定义
    //端口描述
    //具体代码
endmodule

3.2、端口命名连接

module same_port(.a(i),.b(j));
   //.a,.b被调用模块端口
   //i,j调用模块的端口名

举例:

module full(p,q,cin,sum,cout);
    input p,q,cin;
    output sum,cout;
    wire s1,c1,c2;

    //两个实例调用语句
        half h1(p,q,s1,c1);                        //端口位置连接,第一个半加器四个端口的连接
        half h2(.b(cin),.s(sum),.a(s1),.c(c2));    //端口命名连接,第二个半加器四个端口的连接
        or   h3(cout,c1,c2);
endmodule

module half(a,b,s,c)   //被调用的半加器模块;
    input a,b;
    output s,c;
        求和描述;
        进位描述;
endmodule

4、 操作符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值