Verilog学习之路(6)— 组合电路的设计

组合电路的设计

一、前言

组合电路的特点是电路中任意时刻的稳态输出仅仅取决于该时刻的输入,而与电路之前的状态无关,组合电路没有记忆功能。

在使用Verilog设计中组合电路的描述方法主要有四种:真值表、逻辑代数、结构描述、抽线描述。

  • 设计如下电路为例:设计一个3裁判表决电路,当两个或两个以上裁判同意时,判决器输出1,否则输出0

二、真值表

真值表是对电路功能最直接和简单的描述方式,根据要求的功能,将三个输入端记为A、B、C,输出端记为OUT,可以得出真值表如下所示:

ABCOUT
0000
0010
0100
1000
0111
1011
1101
1111

然后我们就可以在Verilog中使用case语句对电路进行设计如下所示:

module design1(OUT, A, B, C);
	output reg OUT;
	input A,B,C;
	
	always@(A or B or C) begin
		case({A, B, C})
			3'b000: OUT <= 1'b0;
			3'b001: OUT <= 1'b0;
			3'b010: OUT <= 1'b0;
			3'b100: OUT <= 1'b0;
			3'b011: OUT <= 1'b1;
			3'b101: OUT <= 1'b1;
			3'b110: OUT <= 1'b1;
			3'b111: OUT <= 1'b1;
		endcase
	end
endmodule

该描述方式为一个解码器,其电路结构如图所示:
在这里插入图片描述

三、逻辑代数

按上述真值表我们可以使用卡诺图进行化简
在这里插入图片描述
可得其逻辑函数表达式为:

OUT = AB + BC + AC

根据该逻辑函数表达式编写Veriolg代码如下

module design2(OUT, A, B, C);
	output OUT;
	input A,B,C;
	assign OUT=(A&B)|(B&C)|(A&C);
endmodule

综合后的电路图如下所示:
在这里插入图片描述

四、结构描述

我们将逻辑表达式直接调用Verilog库中的门电路设计如下

module design3(OUT, A, B, C);
	output OUT;
	input A,B,C;
	wire w1, w2, w3;
	
	and u1(w1, A, B);
	and u2(w2, B, C);
	and u3(w3, A, C);
	or u4(OUT, w1, w2, w3);
	
endmodule

综合后电路如下所示,我们可以看到,这个电路和逻辑代数描述综合出来的电路实际上是一样的
我们k

五、抽象描述

从我们需要的功能我们可以知道,我们可以直接将三个输入的判决相加,当相加之和大于1就可表示投票成功,编写代码如下所示:

module design4(OUT, A, B, C);
	output reg OUT;
	input A,B,C;
	wire [1:0] sum;
	
	assign sum = A + B + C;

	always@(sum) begin
		if(sum > 1) 
			OUT = 1;
		else
			OUT = 0;
	end

endmodule

综合后电路如下所示,
在这里插入图片描述

六、总结

VerilogHDL对同一电路有不同风格的描述,对于简单的电路,其各种描述之间的差异不大。但对于复杂的电路,不同风格的代码综合出的电路将会不同,生成的电路的性能也会不同,因此Verilog HDL是与电路对应的,要求设计者在编写代码时对所设计电路应有清楚的认识,这需要平时大量的积累。

七、附录

上一篇:Verilog学习之路(5)— Verilog HDL的结构化建模
下一篇:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值