RM9003A寄存器型变量赋值
发布时间:2019/10/14 12:13:10 访问次数:1740
RM9003A组合逻辑电路的行为级建模举例
下面通过两个例子介绍组合电路的行为级建模。
例4,6,7和例4.6,8是数据选择器的行为级描述。前一个例子使用if-else语句描述了2选1数据选择器,后一个例子混合使用if-else和case语句描述了带有使能控制端的4选1数据选择器。行为级描述的标识是always结构,always是一个循环执行语句,在它后面跟着循环执行的条件@(SEL or A OrB)(注意后面没有分号),它表示圆括号内的任一个变量发生变化时,下面的过程赋值语句就会被执行一次,执行完最后一条语句后,执行挂起,always语句再次等待变量发生变化,因此将圆括号内列出的变量称为敏感变量。对组合逻辑电路来说,所有的输人信号都是敏感变量,应该被写在圆括号内。
注意:
敏感变量之间使用关键词or代替了逻辑或运算符(|)。
过程赋值语句只能给寄存器型变量赋值,因此,程序中将输出变量L定义成reg数据类型。
例4.6,7
///∶Behavioral description of 2ˉto~1~1ine multiplexer
module mux2to1~bh(A,B,sEL,L);
input A,B,sEL;
output L;
reg I-`; //define register variable
always@(sEL or A or B)
if(SEL==1)L=B;//也可以写成if(sEL)L=B;
else L=A;
endmodule
例4.6,8
//Behavioral description of 4-to~1-line multiplexcr
module mux4to1~bh(A,SEL,E,L);
input[3:o]A;
input[1:0]SEL;
output L;
reg L;
always@.(A or sEL Or E)
begin
if(E==1) L=0;
else
case(SEL)
21 dO:L=A[0];
21d1:L=A[1];
21d2:L=A[2];
2i d3:L=A[3];
endcase
end
endmodule

RM9003A组合逻辑电路的行为级建模举例
下面通过两个例子介绍组合电路的行为级建模。
例4,6,7和例4.6,8是数据选择器的行为级描述。前一个例子使用if-else语句描述了2选1数据选择器,后一个例子混合使用if-else和case语句描述了带有使能控制端的4选1数据选择器。行为级描述的标识是always结构,always是一个循环执行语句,在它后面跟着循环执行的条件@(SEL or A OrB)(注意后面没有分号),它表示圆括号内的任一个变量发生变化时,下面的过程赋值语句就会被执行一次,执行完最后一条语句后,执行挂起,always语句再次等待变量发生变化,因此将圆括号内列出的变量称为敏感变量。对组合逻辑电路来说,所有的输人信号都是敏感变量,应该被写在圆括号内。
注意:
敏感变量之间使用关键词or代替了逻辑或运算符(|)。
过程赋值语句只能给寄存器型变量赋值,因此,程序中将输出变量L定义成reg数据类型。
例4.6,7
///∶Behavioral description of 2ˉto~1~1ine multiplexer
module mux2to1~bh(A,B,sEL,L);
input A,B,sEL;
output L;
reg I-`; //define register variable
always@(sEL or A or B)
if(SEL==1)L=B;//也可以写成if(sEL)L=B;
else L=A;
endmodule
例4.6,8
//Behavioral description of 4-to~1-line multiplexcr
module mux4to1~bh(A,SEL,E,L);
input[3:o]A;
input[1:0]SEL;
output L;
reg L;
always@.(A or sEL Or E)
begin
if(E==1) L=0;
else
case(SEL)
21 dO:L=A[0];
21d1:L=A[1];
21d2:L=A[2];
2i d3:L=A[3];
endcase
end
endmodule
