HNU-电路电子学-实验4(2021级)

百度网盘:实验四
提取码:0928 

实验 模型机时序部件的实现

班级        姓名         学号 

一、实验目的

  1. 了解模型机中 SM 的作用。
  2. 熟悉指令寄存器、状态寄存器、指令计数器、寄存器的工作原理
  3. 学会使用 VERILOG 语言设计时序电路。

二、实验内容

  1. VERILOG 语言设计 SM
  2. VERILOG 语言设计一个 8 位的指令寄存器 IR
  3. VERILOG 语言设计一个 2 位的状态寄存器 PSW
  4. VERILOG 语言设计一个 8 位的指令计数器 PC
  5. VERILOG 语言设计 3 8 位寄存器组成的寄存器组,实现读写操作;
  6. LPM_RAM_IO 定制一个 256*8 RAM,实现对 RAM 的读写操作。

三、实验过程

1.SM

A)创建工程

(选择的芯片为family=Cyclone II;name=EP2C5T144C8)

B) 编写源代码

C) 编译与调试

(包含编译调试过程中的错误、警告信息以及资源消耗)

D) RTL视图

E) 功能仿真波形

F) 时序仿真波形

G)结果分析及结论

(1)功能仿真:

        EN=1时,在时钟下降沿,将SM进行取反,可以看到20ns时z由0变为1,40ns时z由1变为0,60ns时z由0变为1。

        EN=0时,在时钟下降沿,SM不变。可以看到70~140ns过程中z值保持不变。符合该元件对于功能的要求。

(2)时序仿真:

        各种指令判断是否执行后,对其相关的所有参数值进行赋值,经波形图检验,存在延迟。

2指令寄存器IR

A)创建工程

(选择的芯片为family=Cyclone II;name=EP2C5T144C8)

B) 编写源代码

C) 编译与调试

(包含编译调试过程中的错误、警告信息以及资源消耗)

D) RTL视图

E) 功能仿真波形

F) 时序仿真波形

G) 结果分析及结论

(1)功能仿真:

        当控制信号ir_ld为1 时,指令寄存器在时钟信号CLK的下降沿将总线传输的指令写入寄存器。如60ns,80ns,100ns,ir值均变为d。

        而ir_ld为0是,不论时钟信号clk为上升沿还是下降沿,ir值均不变。

(2)时序仿真:

        各种指令判断是否执行后,对其相关的所有参数值进行赋值,经波形图检验,存在延迟。

3状态寄存器PSW

A)创建工程

(选择的芯片为family=Cyclone II;name=EP2C5T144C8)

B) 编写源代码

C) 编译与调试

(包含编译调试过程中的错误、警告信息以及资源消耗)

D) RTL视图

E) 功能仿真波形

F) 时序仿真波形

G)结果分析及结论

(1)功能仿真:

        当控制信号cf_en=1为1 时,状态寄存器PSW在时钟信号clk的下降沿将cf写入c有无借位进位)如40ns,120ns,c值均变为cf。

        当控制信号zf_en=1为1 时,状态寄存器PSW在时钟信号clk的下降沿将zf写入z结果是否为零如40ns,100ns,c值均变为cf。

        而cf_en, zf_en为0时,不论时钟信号clk为上升沿还是下降沿,z,c值均不变。

(2)时序仿真:

        各种指令判断是否执行后,对其相关的所有参数值进行赋值,经波形图检验,存在延迟。

4、指令计数器PC

A)创建工程

(选择的芯片为family=Cyclone II;name=EP2C5T144C8)

B) 编写源代码

C) 编译与调试

(包含编译调试过程中的错误、警告信息以及资源消耗)

D) RTL视图

E) 功能仿真波形

F) 时序仿真波形

G)结果分析及结论

(1)功能仿真:

        50~100ns:此时pc_inc为1,pc_ld为0,在时钟下降沿进行add中数据自加1,可以看到60ns,80ns均为时钟下降沿add中数据加1,数据由00000000到00000001,符合预期功能。

        30~50ns:此时pc_inc为0,pc_ld为1,在时钟下降沿将a中数据向入add,可以看到add中数据由原本的00000000变为00000001,正是a中的数据,符合预期的功能。

(2)时序仿真:

        各种指令判断是否执行后,对其相关的所有参数值进行赋值,经波形图检验,存在延迟。

5通用寄存器组

A)创建工程

(选择的芯片为family=Cyclone II;name=EP2C5T144C8)

B) 编写源代码

C) 编译与调试

(包含编译调试过程中的错误、警告信息以及资源消耗)

D) RTL视图

E) 功能仿真波形

F) 时序仿真波形

G时序分析

H)结果分析及结论

(1) 功能仿真:

        0~60ns:这一段时间对写入功能进行验证,此时we=0,在时钟下降沿根据WA的值对写入哪个寄存器进行选择,00选择A寄存器,01选择B寄存器,10选择C寄存器,分别将00000001写入A,00000010写入B,00000011写入C。

        60~120ns:对读功能进行验证。此时we=1,根据RA的值决定S输出哪个寄存器的值;WA的值决定D输出哪个寄存器的值。看RA和S这两行,RA为00时应输出A寄存器的值为00000001,看S的输出,恰好为00000001;RA为01应输出B寄存器的值为00000010,此时S输出为00000010,符合要求;RA为10应输出C寄存器的值为00000011,此时S输出也为00000011,符合要求。WA和D也同理不再赘述。

        该元件符合要求。

(2)时序仿真:

        各种指令判断是否执行后,对其相关的所有参数值进行赋值,经波形图检验,存在延迟。

3时序分析:

        延迟时间以最长的为准,tpd为9.989ns,为从raa[0]到s[7].

6、RAM的使用

A)创建工程

(选择的芯片为family=Cyclone II;name=EP2C5T144C8

B) 电路图

C) 编译与调试

(包含编译调试过程中的错误、警告信息以及资源消耗)

RAM读写文件:

RAM读写仿真:

D) RTL视图

E) 功能仿真波形

F) 时序仿真波形

G结果分析及结论

        0~30ns:此时XL=1,DL=0,在时钟上升沿将Dio的数据写入address所指定的存储单元,即将10101010存入01010101的位置。

        30~60ns:此时XL=0,DL=1,会在时钟上升沿将address所储存的单元数据输出,此时address所指定的位置为00000011,为了验证读取的正确性,已经提前将MIF文件中的0000011位的数据改为33。观察此时的DATAOUT,恰好为00100001,即为2进制的33,功能正确。

        60~90ns:此时address发生改变,变为01010101,验证之前是否成功写入与读出的正确性,观察此时的DATAOUT,恰好为之前读入的10101010,功能正确。之后XLDL均为0时输出高阻态,整个元件符合功能。

四、思考题

1.时钟周期的上升沿实现对RAM的读写操作,为何PC、SMIRPSW以及寄存器组的操作是下降沿完成?

        因为PC、SM 以及寄存器组的操作一般在RAM 的读写操作后面,为了防止RAM 的读写操作的输出与其他操作的输出冲突,以及方便RAM读写的操作和PC、SM 以及寄存器组的操作在一个周期内完成,节约时间,固一个为上升沿实现操作,一个为下降沿实现操作。

2采用VERILOG语言描述时序部件应该采用阻塞赋值语句还是非阻塞赋值语句?

        非阻塞赋值语句

        时序逻辑中左值至少会维持一个时钟周期。(假设题目要求在时钟上升沿到来时执行赋值操作)。也就是说,右值在这个时钟变化,而(右值变化导致的)左值变化的时间是在下一个时钟的上升沿,因此它满足非阻塞语句的特性:右值先变化,一段时间后(等到时钟上升沿到来时)再赋给左值。而不是右值一变化就赋值(这样不满足 “在时钟上升沿到来时执行赋值操作” 的要求)。

3.通用寄存器组只有WE的控制信号,实现通用寄存器组读操作的电路是组合电路还是时序电路?请大致画出对寄存器组进行读操作的电路部分。

        时序电路。

五、实验总结、必得体会及建议

1、从需要掌握的理论、遇到的困难、解决的办法以及经验教训等方面进行总结。

        通过本次实验四的学习,我学会了时序电路中clk上升沿posedge和下降沿negedge作为敏感信号,进行电路设计,以及相关时序电路的verilog代码的编写。在完成这几个工程后,对于一个电路系统层次化设计思想有进一步体会,从顶到底分解问题,再从底部一步步映射实现。

        在对模型机的构建逐渐完整、认识更加清晰的同时,我也更加熟练地了解和使用Quartus II,以及使用Verilog语言做电路设计。

2.对本实验内容、过程和方法的改进建议(可选项)。

        题目可以给出几个样例与正确结果,用于学生自己验证,功能仿真时的正确性。同时也可作为作业要求提交输入该样例得到的正确结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值