经过数字逻辑电路课程的学习,大家已对多路选择器(数据选择器)有了一定的认识。本节将通过建模2选1的数据选择器,简单介绍Verilog的各级建模语言。
一、行为级建模
使用always块来对数据选择器进行描述,其后面的小括号为该always块的敏感列表(sensitive list),只要sl或a或b其中有一个变化时,就执行其后的语句。需要注意的是,always块内的输出out,必须定义为reg型变量,因为该值在同一块内可能多次变化。
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
RTL级语言为一种行为描述语言,只关心电路功能。
二、RTL建模
需要用到2选1数据选择器的门级电路图。
数据流建模,其标志多为并行的多个assign连续赋值语句,将对输入输出结点以及内部的各个结点的信号进行赋值定义操作。代码如下:
module muxtwo(out,a,b,sl);
input a,b,sl;
output out;
wire nsl,sela,selb;//定义内部结点
assign nsl= ~sl;
assign sela= a & nsl;
assign selb= b & sl;
assign out= sela | selb;
endmodule
三、门级