Verilog 模块的基本概念

例子1:

二选一多路选择器的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
标题

 结合多路选择器的电路结构我们来分析一下代码。输出out是a还是b取决于sl是高电平还是低电平当控制信号的sl为非(低电平0)时out输出为a否则为b,always@(sl or a or b)表示只要信号sl,a,b只要其中之一发生变化就执行后面的if语句。

例2:用带有与非门的二选一多路选择器的Verilog HDL程序描述。

 现在我们用verilog语言来描述这个电路:

module muxtwo(out,sl,a,b)
    input a,b,sl;                //输入信号名
    output out;                  //输出信号名
   
    wire nsl,sela,selb;            //定义内部连线
        assign nsl =~ sl ;         //求反
        assign sela = a&nsl ;       //按位与运算
        assign selb = b&nsl;
        assign out  = sela | selb;
endmodule         

 非常容易理解代码就是按照逻辑运算描述了电路结构。

例3

 我们用代码来描述这个电路。

module muxtwo(out,sl,a,b);
    input sl,a,b;
    output out;
        not        u1(nsl,sl);
        
        and  #1 u2(sela,a,nsl);

        and  #1 u3(selb,sl,b);

        or  #1 u4(out,sela,selb);
endmodule

 对程序解释说明

#1,#2表示门输入到门输出的延迟时间为1或2各单位。

例4,通过连续赋值语句描述一个3位加法器的Veriog程序。

 

 通过连续赋值语句描述了一个名为adder的三位加法器。它可以根据两个二比特数a,b 和进位(cin)计算出和(sum)以及上进位(cout).

能完成一个功能的模块封装在module和endmodule之间。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值