一.组合电路设计
(1)数字加法器
a. 利用连续赋值语句实现
module add(a,b,sum,c_in,c_out);
output sum,c_out;
input a,b,c_in;
assign sum=(a^b)^c_in;
assign c_out=(a&b)|((a^b)&c_in);
endmodule
b.利用行为描述方式实现
module add(sum,a,b,c_in,c_out);
output c_out,sum;
input c_in,a,b;
assign {c_out,sum}=a+b+c_in;
endmodule
c.2输入8 bit加法器(行为描述方式)
module add(sum,a,b,c_in,c_out);
output c_out;
output [7:0]sum;
input [7:0]a,b;
input c_in;
assign {c_out,sum}=a+b+c_in;
endmodule
(2)数据比较器
例1:4位数据比较器
module comp(a,b,c,out);
input [3:0]a,b;
input c;
output [2:0]out;
reg [2:0]out;
always@ (a or b or c)
if(a>b)
out=3'b100;
else if(a<b)
out=3'b001;
else
out=c;
endmodule
(3).数据选择器
例1: 8选1数据选择器。
module select_8to1(sel,out,data_in);
input[7:0]data_in;
output out;
input[2:0]sel;
reg out;
always@(*)
case(sel)
3'b000:out=data_in[0];
3'b001:out=data_in[1];
3'b010:out=data_in[2];
3'b011:out=data_in[3];
3'b100:out=data_in[4];
3'b101:out=data_in[5];
3'b110:out=data_in[6];
3'b111:out=data_in[7];
default:out=1'bx;
endcase
endmodule
(4). 数字编码器
(有几个输入值,输入就为几位)
例1:二进制转化十进制8421BCD编码器,将十进制数0、1、2、3、4、5、6、7