Verilog数字系统设计三
简单组合逻辑实验2
前言
随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,用always块、连续赋值assign和门级原语三种方法完成同一功能
一、4选1多路选择器是什么?
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、编程
1.要求:
分别使用assign 语句和always 语句设计4 选1 多路选择器,并写出测试代码进行测试。要求编制测试模块对实现的逻辑功能进行完整的测试。
2.always块实现:
always代码如下:
module mux4_to_1_2(out,a,b,c,d,s0,s1);
output out;
reg out;
input a,b,c,d;
input s1,s0;
always @(*)
begin
case({s1,s0})
2'b00: out=a;
2'b01: out=b;
2'b10: out=c;
2'b11: out=d;
default: out=0;
endcase
end
endmodule
测试代码如下:
module mux4_to_1_2ts;
wire out_t;
reg a_t,b_t,c_t,d_t;
reg s0_t,s1_t;
mux4_to_1_2 Mux4_to_1_2(
.out(out_t),
.a(a_t),
.b(b_t),
.c(c_t),
.d(d_t),
.s0(s0_t),
.s1(s1_t)
);
initial
begin
a_t=1'b0;
b_t=1'b0;
c_t=1'b0;
d_t=1'b0;
s1_t=1'b0;
s0_t=1'b0;
end
always #10 {s1_t,s0_t} ={s1_t,s0_t}+1'b1;
always #10 {a_t,b_t,c_t,d_t}={a_t,b_t,c_t,d_t}+1'b1;
endmodule
3.assign语句实现:
assign代码如下:
module mux_4to1(out,a,b,c,d,s0,s1);
output out;
input a,b,c,d;
input s1,s0;
assign out = s1?(s0?d:c):(s0? b:a);
endmodule
测试代码如下:
module mux4_to_1ts;
wire out_t;
reg a_t,b_t,c_t,d_t;
reg s0_t,s1_t;
mux_4to1 Mux4_to_1(
.out(out_t),
.a(a_t),
.b(b_t),
.c(c_t),
.d(d_t),
.s0(s0_t),
.s1(s1_t)
);
initial
begin
a_t=1'b0;
b_t=1'b0;
c_t=1'b0;
d_t=1'b0;
s1_t=1'b0;
s0_t=1'b0;
end
always #10 {s1_t,s0_t} ={s1_t,s0_t}+1'b1;
always #10 {a_t,b_t,c_t,d_t}={a_t,b_t,c_t,d_t}+1'b1;
endmodule
5.仿真波形
测试结果如下:
仿真波形:({s1,s0}=10时,out=c)
总结
提示:
以上就是今天要分享的内容,本文仅仅简单介绍了Verilog使用always块、连续赋值assign的方法完成4选1多路选择器功能。