实验 1:多路复用器 4选1

在这个项目中,将使用两个不同的 Verilog HDL 抽象级别(门级和行为级)来实现 4 对 1 多路复用器设计。需要注意的是,这里只采用逻辑综合,没有映射和拟合到 FPGA 中。一个人应该只修改模块内部来改变抽象级别;两种实现都将使用相同的测试平台。 4 对 1 多路复用器的门级实现如下所示。人们不应该认为原理图和 Verilog HDL 描述之间存在一对一的对应关系。

图1 4 对 1 多路复用器原理图

4 对 1 多路复用器的 Verilog 门级描述:

module four_to_one_mux(out,i0,i1,i2,i3)
			output out;
			input i0,i1,i2,i3,s1,s0;
//internal wires(nets)
				wire s1n,s0n;
				wire y0,y1,y2,y3;
//gate instantiation
				not(s1n,s1);
				not(s0n,s0);
				and(y0,i0,s1n,s0n);
				and(y1,i1,s1n,s0);
				and(y2,i2,s1,s0n);
				and(y3,i3,s1,s0);
				or(out,y0,y1,y2,y3);
endmodule

4 对 1 多路复用器的 Verilog 数据流级别描述:***

module four_to_one_mux(out,i0,i1,i2,i3,s1,s0);
output out;
input i0,i1,i2,i3,s1,s0;
		assign out = (~s1 & ~s0 & i0) | ( ~s1& ~s0 &i1) | (s1& ~s0& i3);
endmodule

4 对 1 多路复用器的 Verilog 测试平台:

module four_to_mux_TB;
// Inputs
		reg i0; reg i1;
		reg i2; reg i3;
		reg s0; reg s1;
//Output
		wire out;
// Instantiate the Unit Under Test(UUT)
		four_to_one_mux uut(.out(out),.i0(i0),.i1(i1),.i2(i2),.i3(i3),.s1(s1),.s0(s0));
initial
begin
		//	Initialize Inputs
		i0 = 0; i1 = 0; i2 = 0; i3 = 0; s1 = 0; s0 = 0;
		//Wait 100ns for global reset to finish
		#100;
//Add stimulus here
		i0=1;i1=0;i2=1;i3=0;
		#100 $display("i0=%b,i1=%b,i2=%b,i3=%b,",i0,i1,i2,i3);
		s1=0;s0=0;
		#100 $display("s1=%b,s0=%b,out=%b",s1,s0,out);
		s1=0;s0=1;
		#100 $display("s1=%b,s0=%b,out=%b",s1,s0,out);
		s1=1;s0=0;
		#100 $display("s1=%b,s0=%b,out=%b",s1,s0,out);
		s1=1;s0=1;
		#100 $display("s1=%b,s0=%b,out=%b",s1,s0,out);
end
endmodule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值