您的位置:首页 > 其它

Verilog HDL-1

2017-11-26 20:18 162 查看
门级风格的描述

//二选一数据选择器的门级风格描述
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: