数据选择器mux2的verilog实现和$random的介绍

mux2的verilog实现

功能描述:选择信号sel = 0时输出 out = a,sel = 1时out = b,主要有以下三种方式实现。

1.门互联: 使用verilog保留字and、or、not

`timescale 1ns / 1ps
//端口定义
module practice3_(
	input a,
	input b,
	input sl,
	output out
    );
//定义门级输入输出
not u1(nsl,sl);
and #1 u2(sela,nsl,a);    //门输入到输出延迟 1ns
and #1 u3(selb,sl,b);
or  #1 u4(out,sela,selb);
endmodule

2.布尔表达式:使用&、|、~操作符表示

//端口定义
module practice3_(
	input a,
	input b,
	input sl,
	output out
    );
    
wire sela,selb,nsl; //定义内部互连线
assign nsl = ~sl;	//按位取反
assign sela = a & nsl;	//按位与
assign selb = b & sl;
assign out = sela | selb;	//按位或

endmodule

3.逻辑功能描述

//端口定义
module mux2(
	input a,
	input b,
	input sel,
	output reg c
);
//
always @(*) begin

	if(!sel) c = a; //sel = 0 时输出为a
	else c = b;      //sel = 1 时输出为b

end

endmodule

综合结果均为查找表电路:

4.测试

testbench:

`timescale 1ns / 1ps

module tb_pra();
reg a;
reg b;
reg sel;
reg clk;
wire c;

//initialize
initial begin
	a = 0;
	b = 0;
	sel = 0;
	clk = 0;
end

//f = 10MHz
always #50 clk = ~clk;

//random a&b
always @(posedge clk) begin
	#1 a <= {$random}%2;
	#3 b <= {$random}%2;
end

//change sel
always #10000 sel = !sel;

//inst
mux2 u_mux2(
	.a(a),
	.b(b),
	.sel(sel),
	.c(c)
);
endmodule

仿真

系统函数 $random 

1.随机整数

num = $random%b

其中,b为十进制整数;则num为范围在 -(b-1):(b-1) 中的随机数

2.随机正整数

num = {$random}%b

其中,b为十进制整数;则num为范围在 0:(b-1) 中的随机数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bluebub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值