杭州电子科技大学计算机学院
实验报告
课程名称:计算机组成原理
实验项目:取指令与指令译码实验
指导教师:
实验位置:
姓 名
班 级
学 号:
日 期:
实验目的
学习指令存储器的设计
掌握CPU取指令与指令译码的方法和过程
实验环境
ISE Design Suite 14.6
Digilent Adept
Nexys3实验板
实验内容(算法、程序、步骤和方法)
本实验的目的,设计一个只读储存器作为指令储存器,用来单独储存程序.包括
指令存储器
程序计数器PC
PC自增加法器
指令译码器
本实验,取指令操作:根据PC内容到指令储存器中取出指令,然后PC自增,必须在下一个周期开始时赋值给PC,指定的一个中间PC_new,除此之外还有个rest重新开始的信号.存储器的设计和实验五的类似的按照方法设计.
顶层模块
module Test_Fetch_Inst(
input rst,
input clk,
input [1:0]C,
output reg [7:0]LED
);
wire [31:0]Inst_code;
Fetch_Inst test(rst,clk,Inst_code);
always@(*)
begin
case(C)
2'b00:LED=Inst_code[7:0];
2'b01:LED=Inst_code[15:8];
2'b10:LED=Inst_code[23:16];
2'b11:LED=Inst_code[31:24];
endcase
end
endmodule
指令的提取模块
module Fetch_Inst(
input rst,
input clk,
output [31:0]Inst_code
);
wire [31:0]PC_new;
reg [31:0]PC;
initial
PC=32'
Inst_addr Inst_mem(
.clka(clk),
.addra(PC[7:2]),
.douta(Inst_code)
);
assign PC_new=PC+4;
always@(posedge rst or negedge clk)
begin
if(rst)
PC=32'
else
PC={24'h000000,PC_new[7:0]};
end
endmodule
(接上)
实验内容(算法、程序、步骤和方法)
管脚配置
NET "C[0]" LOC = V8;
NET "C[1]" LOC = T5;
NET "LED[0]" LOC = U16;
NET "LED[1]" LOC = V16;
NET "LED[2]" LOC = U15;
NET "LED[3]" LOC = V15;
NET "LED[4]" LOC = M11;
NET "LED[5]" LOC = N11;
NET "LED[6]" LOC = R11;
NET "LED[7]" LOC = T11;
NET "clk" LOC = C9;
NET "rst" LOC = B8;
数据记录和计算
实验仿真波形:
结论(结果)
实验的结果正确,,本实验比较之前的实验,增加了一些东西,进行了一些的限制,只能读,指令自动的增加其自身的地址.都能正确的显示在LED灯上显示出来.
试验心得与小结
本实验,对于寄存器的限制,增加了一些功能,基本上和之前的实验差别不大,能够很快的理解.比如Memory IP核的知识都是直接可以利用前面实验类似的操作的,直接使用其创造的模板就好了。这些都是前面的知识。
指导教师
评议
成绩评定: 指导教师签名: