Verilog HDL-1

来源:互联网 发布:淘宝装修购买 编辑:程序博客网 时间:2024/06/11 13:02

门级风格的描述

//二选一数据选择器的门级风格描述module mux_str(out,a,b,sel);    input a,b,sel;         //输入端口声明    output out;            //输出端口声明    not gate(net1,sel);    //非门gate中,net1是输出,sel是输入    and gate2(net2,a,net1);//与门gate2中,net2是输出,a和net1是输入    and gate3(net3,b,sel); //与门gate3中,net3是输出,b和sel是输入    or gate4(out,net2,net3);endmodule

数据流风格的描述
数据流风格描述方式是最常用的一种风格,用数据流描述方式对一个设计建模的最基本机制就是使用连续赋值语句。在连续赋值语句中,线网类型变量被赋予某个值,右边表达式的操作时无论何时发生变化,表达式都要重新计算,计算结果被赋予左边表达式的线网类型变量。

module mux_flow(out,a,b,sel);    input a,b,sel;    output out;    assign out=(sel)?b:a;      //连续赋值endmodule

行为风格的描述
行为风格使用initial语句(语句只执行一次)和always语句(重复执行),只有变量类型数据能够在这两种语句中被赋值,所有initial语句和always语句在0时刻开始并发执行

module mux_beha(out,a,b,sel);    input a,b,sel;    output out;    reg out;    always @(a,b,sel)   //a,b,sel为敏感事件,一旦发生变化,即触发后面代码的执行        out=(sel)?b:a;endmodule

测试平台的编写

module testMux;    reg pa,pb,psel;    wire pout;    mux_beha tmux(pout,pa,pb,psel);      //调用   initial       begin           pa=0;pb=0;psel=0;//赋初值           #5 pa=1;  //五个单位时间延迟后进行赋值           #5 pb=1;           #5 pa=0;           #5 psel=1;           #5 pa=1;           #5 pb=0;           #5 pa=0;        end initial     $monitor("time=%t,a=%b.b=%b,sel=%b,out=%b",$time,pa,pb,psel,pout);     //调用系统任务$monitor,当pa、pb、psel、pout中任一个发生变化时就输出显示endmodule

更多的查看我的博客:https://beatjerome.github.io

原创粉丝点击