计算机组成原理实验1——寄存器组的设计

实验一  寄存器组的设计

叠甲:本人三本985大二差生,什么都不会,文章都是自己的学习记录,没有任何参考价值,难免有不少错误,请大家轻点喷。

注:实验的quartus实现可联系我提供,实验报告中原理和实现过程已经很清晰,自己实现对学习更有帮助。

一、实验内容

(1)测试D触发器的功能。

(2)设计具有1个读端口、1个写端口的4×8位寄存器组,并验证设计正确性。

二、电路设计与实现

(提示:主要包括需求分析、模块划分、引脚组织,以及器件选择、信号命名及电路组成,注意描述分析与设计的过程)

  1. 第一部分:D触发器功能的测试
  1. 需求分析

触发器功能的测试包括电路实现、电路仿真及结果分析几个步骤,仿真时先采用功能仿真方式得到结果并分析,再采用时序仿真方式模拟时序的仿真结果。

  1. 引脚组织及命名

电路由1个lpm_dff,输入引脚Din[7..0]、Clk、Wr、aclr、aset,输出引脚Dout[7..0]构成。

  1. 器件选择

Lpm_dff一个,input引脚,output引脚。

  1. 电路组成计算机组成原理实验1——寄存器组的设计_第1张图片

 

  1. 第二部分:寄存器组的设计、实现及验证
  1. 需求分析

由于寄存器组包含4个8位寄存器,故操作时的地址引脚为log24=2位、数据引脚为8位。由于要求读/写端口分离,寄存器所存信息的读出无需信号控制,故寄存器组可同时进行读、写操作。

  1. 模块划分

寄存器组大致分为三个模块:写地址、数据的输入、数据的输出。

  1. 引脚组织

读操作相关引脚为地址引脚raddr[1..0]、数据输出引脚q[7..0],写操作相关引脚为地址引脚waddr[1..0]、数据输入引脚data[7..0]、写使能引脚wen、时钟脉冲引脚Clk,清零操作相关引脚为清零引脚Clr。

  1. 器件选择

Input引脚若干,output引脚一个,lpm_decode译码器一个,lpm_dff触发器4个,lpm_mux数据选择器一个。

  1. 分析与设计过程

在写操作中,通过waddr[1..0]译码来选择寄存器,通过wen、Clk实现写入控制。将4个D触发器的数据信号端相连,作为数据输入阶段的输入信号。在读操作通过raddr[1..0]选择目标寄存器。数据输出的选择可使用选择器来实现;清零操作通过Clr来控制。

(6)电路组成

计算机组成原理实验1——寄存器组的设计_第2张图片

 

三、电路正确性验证

1、电路仿真

  1. 第一部分:D触发器功能的测试 

(提示:主要包括测试数据组织[应可枚举所有功能、输出结果]、仿真结果)

计算机组成原理实验1——寄存器组的设计_第3张图片

 

加入10ns的时钟信号,预先设置几个Din的值,当Wr为高电平是并遇到CLK上升时,Dout读出结果

(2)第二部分:寄存器组的设计、实现及验证

计算机组成原理实验1——寄存器组的设计_第4张图片

 

在时钟0~10ns中,wen为低电平,未写入,结果为0;

在时钟10~40ns中,wen为高电平,raddr为0,此时第0个触发器写入的是0,故结果为0;

在时钟40~55ns时,wen为高电平,raddr为1,此时第1个触发器写入的时1,结果为1;

在到了时钟上升沿时,写入数据变为5,第一个寄存器存储结果变为5,结果为5;

2、结果分析

(提示:主要包括测试数据的预期结果计算、与仿真结果的一致性比较,不一致的原因[需真实反映各种错误(如计算错误/数据错误/原理理解错误等)])

  1. 第一部分:D触发器功能的测试

    D触发器功能正常。

  1. 第二部分:寄存器组的设计、实现及验证

成功完成寄存器组的设计、实现及验证。

四、实验小结

(提示:主要包括工作分工、设计总结、有待改进之处、实验体会)

(1)本次实验由一人小组独立完成。

(2)由于第二组实验中数据第一次设置的不合理,在助教姐姐的提醒下,发现赋值不能体现出2,4号寄存器的作用,重新进行了数据赋值,考虑不全面。

(3)本次实验作为第一次实验,内容比较简单,更多的让自己再次熟悉了quartus的操作,以及对于电路图的符号化处理以实现复用环节,实验较为成功。

你可能感兴趣的:(学习方法)