二选一逻辑
模块fn_sw功能:
当sel为0时y是a和b的与;当sel为1时y是a和b的异或。
Verilog代码:
使用assign语句块实现二选一功能
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21module fn_sw( a, b, sel, y ); //定义端口属性 input a; input b; input sel; output y; //输入输出的关系 assign y=sel?(a^b):(a&b); //这里的问号冒号语句,含义是:如果sel为1,则y等于(a^b),否则等于(a&b) //问号冒号语句实现二选一 endmodule
使用always语句块实现二选一功能:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27module fn_sw( a, b, sel, y ); //定义端口属性 input a; input b; input sel; output y; reg y; //always语句块里赋值的变量需要是reg型 //always语句块 always@(a or b or sel) //@后面的(a or b or sel)是敏感变量,组合逻辑输入,里面的输入变量要写全 begin if(sel==1)begin //if else语句 实现二选一 y<=a^b; //reg型变量赋值用带箭头的等号 end else begin y<=a&b; //reg型变量赋值用带箭头的等号 end end endmodule
测试代码testbench
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24//testbench of fn_sw module fn_sw_tb; reg a,b,sel; wire y; fn_sw fn_sw( .a(a), .b(b), .sel(sel), .y(y) );//异名例化,前面加. //改变输入 initial begin a<=0;b<=0;sel<=0; #10 a<=0;b<=0;sel<=1; #10 a<=0;b<=1;sel<=0; #10 a<=0;b<=1;sel<=1; #10 a<=1;b<=0;sel<=0; #10 a<=1;b<=0;sel<=1; #10 a<=1;b<=1;sel<=0; #10 a<=1;b<=1;sel<=1; #10 $stop; end endmodule
多路选择逻辑
模块fn_sw功能:
当sel为00时y是a和b的与;
当sel为01时Y是a和b的或;
当sel为10时y是a和b的异或;
当sel为11时y是a和b的同或;
Verilog代码:
使用case语句实现多路选择功能
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27`timescale 1ns/10ps module fn_sw( a, b, sel, y ); //定义端口属性 input a; input b; input sel; output y; reg y; //always语句块里赋值的变量需要是reg型 //always语句块 always@(a or b or sel) begin case(sel) //case语句块 2'b00:begin y<=a&b;end //2'b指的是2bit变量 2'b01:begin y<=a|b;end 2'b10:begin y<=a^b;end 2'b11:begin y<=~(a^b);end endcase end endmodule
测试代码testbench
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20//-----testbench of fn_sw_4 module fn_sw_4_tb; reg[3:0] absel; wire y; fn_sw_4 fn_sw_4( .a(absel[0]), .b(absel[1]), .sel(absel[3:2]), .y(y) ); intial begin absel<=0;//absel赋初值 #200 $stop;//过200ns结束Verilog系统任务,仿真结束 end always #10 absel<=absel+1;//每过10ns对absel进行加一 //always #遍历逻辑值 endmodule
最后
以上就是激动铃铛最近收集整理的关于Verilog——多路选择器逻辑设计的全部内容,更多相关Verilog——多路选择器逻辑设计内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复