一,三-八译码器逻辑真值表
二,用verilog实现三-八译码器是需要用到的代码有两种
(1)if..else语句
module _38(
input wire a,b,c,
output reg [7:0] out
);
always(*)
if({a, b, c}==3'b000)
out=8'b0000_0001;
else if( {a, b, c} ==3'b001)
out=8'b0000_0010;
else if( {a, b, c} ==3'b010)
out=8'b0000_0100;
else if( {a, b, c} ==3'b011)
out=8'b0000_1000;
else if( {a, b, c} ==3'b100)
out=8'b0001_0000;
else if( {a, b, c} ==3'b101)
out=8'b0010_0000;
else if( {a, b, c} ==3'b110)
out=8'b0100_0000;
else if( {a, b, c} ==3'b111)
out=8'b1000_0000;
endmodule
(2)case语句
module _38(
input wire a,b,c,
output reg [7:0] out
);
always(*)
case({a,b,c})
3'b000: out=8'b0000_0001;
3'b001: out=8'b0000_0010;
3'b010: out=8'b0000_0100;
3'b011: out=8'b0000_1000;
3'b100: out=8'b0001_0000;
3'b101: out=8'b0010_0000;
3'b110: out=8'b0100_0000;
3'b111: out=8'b1000_0000;
endcase
endmodule
三,RTL
四,全加器
(1)1位全加器(采用门级风格的代码)
(2)RTL
二,八位全加器
一位全加器模块组合形成八位全加器
module _8add(
input [7:0] a,b,
input cin,
output [7:0] c,
output out
);
wire [7:1] tem;
one_add (a[0],b[0],cin,c[0],tem[1]),
(a[1],b[1],tem[1],c[1],tem[2]),
(a[2],b[2],tem[2],c[2],tem[3]),
(a[3],b[3],tem[3],c[3],tem[4]),
(a[4],b[4],tem[4],c[4],tem[5]),
(a[5],b[5],tem[5],c[5],tem[6]),
(a[6],b[6],tem[6],c[6],tem[7]),
(a[7],b[7],tem[7],c[7],out);
endmodule