自我的认定———立即数

介绍

在前面的介绍中,我们只能重cpu的外界引脚读取非0数据,在现实使用中我们经常要使用常数来进行运算,如果还是从外界读取娜美就会变得非常麻烦,所以我们需要一个功能帮我们从rom中直接读取数据,这个功能就是立即数模块。

因为当指令集中使用立即数功能时需要用第七位与第六位,所以只有第五位到第零位来表示立即数,所以立即数的范围只有6位

引脚介绍

.count_in 立即数数据输入 六位
.count_sel 立即数功能使能位
.count_out 立即数输出 (输出到总线) 八位 第七位与第六位总为0

功能介绍

从引脚定义中我们能发现,其实立即数功能模块就是简单的把前两位置为0后输出到总线上。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

module immediate(
input reg [5:0] count_in,
input reg count_sel,

output [7:0] count_out
);

reg [7:0] count_out_r=8'b 00000000;
assign count_out = count_out_r;

always @(count_in or count_sel) begin
if(count_sel==1'b1)
count_out_r = {2'b00,count_in};
else
count_out_r = 8'bzzzzzzzz; //不启用时为高阻态
end
endmodule

测试代码

因为功能过于简单本次不提供测试代码

结语

本章介绍了立即数模块,并提供了简单代码实现,下一章我们要介绍最难的模块 判决器模块

整点二次元

img3