Verilog RTL 新手代码设计 (多路译码器、加法器、乘法器)

本文深入探讨了数字电路设计中的核心组件,包括多路译码器、加法器及乘法器的设计与资源消耗对比。详细介绍了使用Verilog实现3-8译码器、4-16译码器的过程,并对比了不同位宽下加法器和乘法器的延迟与资源消耗,强调了乘法器作为‘奢侈品’的资源密集特性。

6.多路译码器

实现3-8译码器,使用case 语句实现,注意,一定要把case的情况写全,或者要加上default,代码如下:

// module top
module top(
  IN        ,   // input  
  OUT       );  // output 

input [2:0] IN;
output[7:0] OUT;

reg   [7:0] OUT;
// get the OUT
always @ (IN) begin
  case(IN)
    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;
    //  full case 不需要写default,否则一定要有default
  endcase
end
endmodule

RTL视图:
在这里插入图片描述
3-8译码器资源消耗:
在这里插入图片描述
接着实现4-16译码器,代码如下:

module top(
IN,
OUT);

input [3:0] IN;
output [15:0] OUT;

reg [15:0] OUT;
//get the OUT
always @(IN)
begin
  case(IN)
    4'b0000: OUT = 16'b0000_0000_0000_0001;
    4'b0001: OUT = 16'b0000_0000_0000_0010;
	4'b0010: OUT = 16'b0000_0000_0000_0100;
	4'b0011: OUT = 16'b0000_0000_0000_1000;
	4'b0100: OUT = 16'b0000_0000_0001_0000;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值