2024年3月13日发(作者:)
南通大学信息科学技术学院
《计算机组成实验》
实验报告
实验名称
班级
学生姓名
指导教师
日 期
谢焘
程序计数器的设计与实现
物联网工程192
学号
**********
实验1 程序计数器的设计
一、实验目的
1.熟悉Vivado软件的使用方法。
2.熟悉寄程序计数器的功能。
3.掌握自顶而下的硬件模块设计方法。
4.掌握电路仿真测试方法,掌握仿真激励文件的编写,掌握仿真输出的分析方法。
二、实验任务
设计一个程序计数器,能够给出指令在指令储存器中的地址。
三、实验预习
(1)实验电路原理及信号说明
程序计数器用于给出指令在指令储存器中的地址。
实现思路:
为实现稳定输出,在时钟信号的上升沿更新,而且需要一个控制信号,在控制信号为0的时候
初始化PC寄存器,即全部置零。
引脚及控制信号
Clk:时钟周期,输入信号
Reset:控制信号,输入信号
Result目标地址,可能是跳转地址或者是下一条指令的地址,输入信号
Addr:指令地址,输出信号
(2)实验电路设计
利用
Verilog HDL描述该电路,设计代码如下:
module PC(Clk,Reset,Result,Address);
input Clk;//时钟
input Reset;//是否重置地址。0-初始化PC,否则接受新地址
input[31:0] Result;
output reg[31:0] Address;
initial begin
Address <= 0;
end
always @(posedge Clk or negedge Reset)
begin
if (Reset==0) //如果为0则初始化PC,否则接受新地址
begin
Address <= 0;
end
else
begin
Address = Result;
end
end
endmodule
RTL视图如下:
四、实验过程、数据记录与结果分析
1.仿真测试文件:
module PC_Sim();
// PC Inputs
reg Clk = 0 ;
reg Reset = 0 ;
reg [31:0] Result = 0 ;
// PC Outputs
wire [31:0] Address ;
PC inst_PC (
.Clk (Clk),
.Reset (Reset),
.Result (Result),
.Address (Address)
);
initial
begin
Result=0;
Reset=0;
#50;
end
always
#10 Clk=~Clk;
always
#20 Reset=~Reset;
always #10 Result=Result+4;
endmodule
2.仿真测试波形:
3.仿真测试结果分析
Clk作为时钟信号,每10ns跳变一次。
Reset作为控制信号,只有为1才会根据Result给出指令地址,为0时初始化,输出为0;
Result每次+4,即为指令的长度。
五、实验体会与小结
本次实验设计并实现了程序计数器,本实验所设计的程序计数器是利用Vivado软件进行设计的,
电路经仿真测试,验证通过。通过分析验证结果,可知该实验电路的功能完全满足设计要求。
通过本次实验,使我熟悉了Vivado软件的使用方法,掌握了利用Vivado这样的EDA工具进行硬
件系统设计的基本方法和操作步骤,为今后的学习打下了良好的基础。实验中,用到了理论课上学到
的波形图分析的知识,使我进一步理解了这一理论知识,并在实践过程中得以运用。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1710296071a1732699.html
评论列表(0条)