IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> HDLbits答案6-Multiplexers&Arithmetic Circuits&Karnaugh Map to Circuit -> 正文阅读

[C++知识库]HDLbits答案6-Multiplexers&Arithmetic Circuits&Karnaugh Map to Circuit

目录

8 Multiplexers

8.1 2-to-1 multiplexers

8.2 2-to-1 bus multiplexers

8.3 9-to-1 multiplexer

8.4 256-to-1 multiplexer

8.5 256-to-1 4-bit multiplexer

9 Arithmetic Circuits

9.1 Half adder

9.2 Full adder

9.3 3-bit binary adder

9.4 Adder

9.5 Signed addition overflow

9.6 100-bit binary adder

9.7 4-digit BCD adder

10 Karnaugh Map to Circuit

10.1 3-variable

10.2 4-variable

10.3 4-varible

10.4 4-varible

10.5 Minimum SOP and Pos

10.6 Karnaugh map

10.7?Karnaugh map

10.8 K-map implemented with a multiplexer


8 Multiplexers

8.1 2-to-1 multiplexers

module top_module(a,
                  b,
                  sel,
                  out
					   );
	input a,b;
   output out;
	assign out=sel?b:a;
	
	endmodule 

8.2 2-to-1 bus multiplexers

module top_module(a,
                  b,
						sel,
                  out
					   );
	input [99:0]a,b;
	input sel;
   output[99:0]out;
	assign out=sel?b:a;
	
	endmodule 

8.3 9-to-1 multiplexer

module top_module(a,
                  b,
						c,
						d,
						e,
						f,
						g,
						h,
						i,
						sel,
                  out
					   );
	input [15:0]a,b,c,d,e,f,g,h,i;
	input [3:0]sel;
   output reg[15:0]out;
	always @(*)begin
	  case(sel)
	  4'b0000:out=a;
	  4'b0001:out=b;
	  4'b0010:out=c;
	  4'b0011:out=d;
	  4'b0100:out=e;
	  4'b0101:out=f;
	  4'b0110:out=g;
	  4'b0111:out=h;
	  4'b1000:out=i;
	 default: out = 16'hffff;
	  endcase
	  end
	endmodule  

8.4 256-to-1 multiplexer

module top_module(in,
						sel,
                  out
					   );
	input [255:0]in;
	input [7:0]sel;
	output out;
	
	assign out=in[sel];
	
	
	
	endmodule 
	

8.5 256-to-1 4-bit multiplexer

module top_module(in,
						sel,
                  out
					   );
	input [1023:0]in;
	input [7:0]sel;
	output [4:0]out;
	
	assign out={in[sel*4+3],in[sel*4+2],in[sel*4+1],in[sel*4]};
	
	
	
	endmodule 

9 Arithmetic Circuits

9.1 Half adder

module top_module(a,
                  b,
                  cout,
						sum
					   );
	input a,b;
	output cout,sum;
	
	assign cout=a&b;
	assign sum=a^b;
	
	endmodule 
	
	

9.2 Full adder

module top_module(a,
                  b,
                  cout,
						sum,
						cin
					   );
	input a,b,cin;
	output cout,sum;
	
	assign cout=a&b|(a|b)&cin;
	assign sum=a^b^cin;
	
	endmodule 

9.3 3-bit binary adder

module top_module(a,
                  b,
                  cout,
						sum,
						cin
					   );
	input [2:0]a,b;
	input cin;
	output [2:0]cout,sum;
	
	
	full_adder full_adder0(.a(a[0]),
	                        .b(b[0]),
									.cout(cout[0]),
									.cin(cin),
									.sum(sum[0])
	                        );
	full_adder full_adder1(.a(a[1]),
	                        .b(b[1]),
									.cout(cout[1]),
									.cin(cout[0]),
									.sum(sum[1])
	                        );
	full_adder full_adder2(.a(a[2]),
	                        .b(b[2]),
									.cout(cout[2]),
									.cin(cout[1]),
									.sum(sum[2])
	                        );
	
	endmodule 
	
	module full_adder(a,b,cin,sum,cout);
	  input a,b,cin;
	  output cout,sum;
	  assign sum=a^b^cin;
	  assign cout=a&b|(a|b)&cin;
	
	endmodule

9.4 Adder

module top_module(x,
                  y,
						sum
					   );
	input [3:0]x;
	input [3:0]y;
	output [4:0]sum;
	wire [3:0]cout;
	wire [3:0]sum_1;
	assign sum_1[0]=x[0]^y[0];
	assign sum_1[1]=x[1]^y[1]^cout[0];
	assign sum_1[2]=x[2]^y[2]^cout[1];
	assign sum_1[3]=x[3]^y[3]^cout[2];
	
	assign cout[0]=x[0]&y[0];
	assign cout[1]=x[1]&y[1]|x[1]&cout[0]|y[1]&cout[0];
	assign cout[2]=x[2]&y[2]|x[2]&cout[1]|y[2]&cout[1];
	assign cout[3]=x[3]&y[3]|x[3]&cout[2]|y[3]&cout[2];
	assign sum={cout[3],sum_1};
	endmodule
	

9.5 Signed addition overflow

module top_module
	(
		input [7:0]a,b,
		output [7:0]s,
		output overflow
	);
	
	assign s = a+b;
    assign overflow = (a[7]&&b[7]&&(~s[7]))||((~a[7])&&(~b[7])&&s[7]);
	
endmodule


9.6 100-bit binary adder

module top_module
	(
		input [99:0]a,b,
		output [99:0]sum,
		output cout,
		input cin
	);
	
	assign {cout,sum}=a+b+cin;
endmodule


9.7 4-digit BCD adder

module top_module
	(
		input [15:0]a,b,
		output [15:0]sum,
		output cout,
		input cin
	);
	
	wire cout1,cout2,cout3;
	bcd_fadd u1_bcd_fadd(
		
		.a(a[3:0]),
		.b(b[3:0]),
		.cin(cin),
		.cout(cout1),
		.sum(sum[3:0])
		
		);
		
		bcd_fadd u2_bcd_fadd(
		
		.a(a[7:4]),
		.b(b[7:4]),
		.cin(cout1),
		.cout(cout2),
		.sum(sum[7:4])
		
		);
		
		bcd_fadd u3_bcd_fadd(
		
		.a(a[11:8]),
		.b(b[11:8]),
		.cin(cout2),
		.cout(cout3),
		.sum(sum[11:8])
		
		);
		
		bcd_fadd u4_bcd_fadd(
		
		.a(a[15:12]),
		.b(b[15:12]),
		.cin(cout3),
		.cout(cout),
		.sum(sum[15:12])
		
		);
endmodule


10 Karnaugh Map to Circuit

10.1 3-variable

module top_module
	(
		input a,b,c,
		output out
	);
	
    assign out = ~((~a)&(~b)&(~c));
endmodule


10.2 4-variable

module top_module
	(
		input a,b,c,d,
		output out
	);
	
	assign out = ((~a)&(~c)&(~d)) | ((a)&(c)&(d)) | (a&(~b)&(~c)) | ((~a)&b&c) | ((~a)&(~b)&(~c)&d)|((~a)&(~b)&c&(~d));
endmodule


10.3 4-varible

module top_module
	(
		input a,b,c,d,
		output out
	);
	
    assign out = a | ((~a)&(~b)&(c));
	
endmodule


10.4 4-varible

module top_module
	(
		input a,b,c,d,
		output out
	);
	
	assign out = ((a^b)&(~(c^d))) | (~(a^b) & (c^d));
	
endmodule


10.5 Minimum SOP and Pos

module top_module
	(
		input a,b,c,d,
		output out_sop,
		output out_pos
	);
	
	assign out_pos = ((~a)&(~b)&c) | (c&d); 
    assign out_sop = ((~a)&(~b)|d)&c;
endmodule


10.6 Karnaugh map

module top_module
	(
		input [4:1]x,
		output f
	);
	
	assign f = (x[3] & x[4]) | ((~(x[1])) & x[3] & (~x[4])) | (x[1]&x[2]&(~x[3]));

endmodule


10.7?Karnaugh map

module top_module
	(
		input [4:1]x,
		output f
	);
	
	assign f = ((~x[2])&(~x[4])) | ((~x[1])&x[3]&x[4])|(x[2]&x[3]&x[4])|((~x[1])&x[2]&x[3]); 

endmodule


10.8 K-map implemented with a multiplexer

module top_module
	(
		input c,d,
		output [3:0]mux_in
	);
	
    assign mux_in[0] = (c ? 1'b1 : (d ? 1'b1 : 1'b0));
    assign mux_in[1] = 1'b0;
    assign mux_in[2] = d ? 1'b0 : 1'b1 ;
    assign mux_in[3] = (c ? (d ? 1'b1 : 1'b0) : 1'b0);

endmodule


  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 15:59:31  更:2022-04-06 16:02:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:20:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码