规则的解释者—- 解码器

介绍

解码器(Decoder)在计算机科学和电子工程中是一种重要的组件,特别是在CPU(中央处理单元)的设计和功能中扮演着关键角色。在CPU中,解码器主要用于指令解码阶段,将从程序存储器中取出的指令(通常为二进制形式)解析成处理器可以理解和执行的操作和操作数。 因为本文中的cpu有四种功能,所以本文的解码器起到了功能调配的作用。

引脚图介绍

img

  • opcode 输入信号为8位,取第一位与第二位作为功能选择位。功能选择表如下:

img

  • immediate 立即数功能使能引脚
  • calculate 计算单元使能引脚
  • copy 复制功能引脚
  • condition 条件判断功能使能引脚

功能介绍

这里的解码器本质来说就是一个2 - 4分线器,现代架构的解码器复杂多了,这里的cpu就只采用最简单的解码器.

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
module decoder_2to4 (
input reg [1:0] in, // 输入信号口
input reg en, // 解码器使能位
output [3:0] out // 输出口
);
reg [3:0] out_r=4'b0000;

assign out = out_r;
always @(in or en) begin
if (!en)
out_r=8'b zzzzzzzz; // 使能位为0时,输出为高阻态
else begin
case(in)
2'b00: out_r = 4'b0001;
2'b01: out_r = 4'b0010;
2'b10: out_r = 4'b0100;
2'b11: out_r = 4'b1000;
endcase
end
end
endmodule

测试代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module  decoder_2to4_tb;


reg [2:0] in=2'b00;
reg en=1'b0;

wire [7:0] out;
initial begin
#50 in=2'b00;
#50 en=1'b1;
in=2'b01;
#50 in=2'b10;
#50 in=2'b11;

end

decoder_2to4 decoder2to4_my(
.in(in),
.en(en),
.out(out)
);
endmodule

结语

本章的内容较为简单,但其与cpu中所需要的部件以及总线结构有着非常重要的联系,但后续的章节中,我将慢慢介绍。

整点二次元

img