用Verilog语言设计一个3-8译码器~(要求分别用case语句和if_else语句各写一份~)
module decoder38(
input [2:0]code,
output reg[7:0]result
);
always@(*)
begin
case(code)
3'b000: result = 8'h01;
3'b001: result = 8'h02;
3'b010: result = 8'h04;
3'b011: result = 8'h08;
3'b100: result = 8'h10;
3'b101: result = 8'h20;
3'b110: result = 8'h40;
3'b111: result = 8'h80;
endcase
end
endmodule
module decoder38(
input [2:0]code,
output reg[7:0]result
);
always@(*)
begin
if(code[2])
if(code[1])
if(code[0])
result = 8'h80;
else
result = 8'h40;
else
if(code[0])
result = 8'h20;
else
result = 8'h10;
else
else
if(code[1])
if(code[0])
result = 8'h08;
else
result = 8'h04;
else
if(code[0])
result = 8'h02;
else
result = 8'h01;
else
end
endmodule
工作原理
使用Verilog描述硬件的基本设计单元是模块(module)。构建复杂的电子电路,主要是通过模块的相互连接调用来实现的。模块被包含在关键字module、endmodule之内。实际的电路元件。Verilog中的模块类似C语言中的函数,它能够提供输入、输出端口,可以实例调用其他模块,也可以被其他模块实例调用。模块中可以包括组合逻辑部分、过程时序部分。
以上内容参考:百度百科-Verilog HDL
input [2:0]code,
output reg[7:0]result
);
always@(*)
begin
case(code)
3'b000: result = 8'h01;
3'b001: result = 8'h02;
3'b010: result = 8'h04;
3'b011: result = 8'h08;
3'b100: result = 8'h10;
3'b101: result = 8'h20;
3'b110: result = 8'h40;
3'b111: result = 8'h80;
endcase
end
endmodule
module decoder38(
input [2:0]code,
output reg[7:0]result
);
always@(*)
begin
if(code[2])
if(code[1])
if(code[0])
result = 8'h80;
else
result = 8'h40;
else
if(code[0])
result = 8'h20;
else
result = 8'h10;
else
else
if(code[1])
if(code[0])
result = 8'h08;
else
result = 8'h04;
else
if(code[0])
result = 8'h02;
else
result = 8'h01;
else
end
endmodule