verilog的基本语法

设计

二选一选择器三种方法

行为模块

/*端口定义,说明输入输出口,然后对模块功能描述*/
/*不关心电路结构,关心逻辑功能描述*/
module muxtwo(out,a,b,sl);
    input a,b,sl;
    output out;
    reg out;
    always@(sl or a or b)
        if(!sl) out=a;
         else out=b;
endmodule             //除了endmoule语句,每个语句和数据定义后都要加;

用布尔表达式模块

module muxtwo(out,a,b,sel);  //习惯输出写在前
input a,b,sl;
output out;
wire nsl,sela,selb;    //定义内部连线,可以看到这些端口没有在module名括号里说明
    assign nsl=~nsl;
    assign sela=nsl&a;
    assgin selb=sel&b;
    assign out=sela|selb;    //位运算操作符与(&)或(|)非(~)
endmoule

门级结构模块

module muxtwo(out,a,b,sl);
    input a,b,sl;
    output out;
    not u1(nsl,sl);    
    and #1 u2(sela,nsl,a);    //#1表示门输入到输出的延迟为一个单位时间
    and #1 u3(selb,sl,b);
    or #1 u4(out,sela,selb); //u1,u2,u3,u4表示逻辑元件的实例化
endmoule

把代码1通过代码2的中间形式转换为代码3这样的模块就是一个综合过程。

拼接

assign {count,sum}=a+b+cin; //加法器

比较

assign equal=(a==b)?1:0; //a==b,输出为1,否则为0;

实例化

mytri tri__inst(.out(sout),.in(sin),.enable(ena));  //mytri为模块名,tri_inst为实例,实例中,带“.“表示被引用模块的端口,名称必须与被引用模块mytri的端口定义一致,括号内表示在本模块中与之连接的线路

测试

描述测试信号的变化和测试过程的模块也称为测试平台

       测试可以在功能(行为)级上进行,也可以在逻辑网表(逻辑布尔表达式)和门级结构上进行,分别称为前(RTL)仿真、逻辑网表仿真和门级仿真。

        如果门级结构模块与具体的工艺技术对应起来,并加上布局布线引入的延迟模型,此时进行的仿真称为布线后仿真,这种仿真与实际电路情况非常接近。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值