当前位置: 首页 > article >正文

Hnu电子电路实验4

目录

【说明】

与本次实验相关的代码及报告等文件见以下链接:

一、实验目的

二、实验内容

三、实验过程

1.SM

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B) 源代码

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

D)RTL视图

E)功能仿真波形

F)时序仿真波形

G)结果分析及结论

2.指令寄存器IR

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B)源代码

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

D)RTL视图

E)功能仿真波形

F)时序仿真波形

G)结果分析及结论

3.状态寄存器 PSW

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

 B)源代码

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

D)RTL视图

E)功能仿真波形

F) 时序仿真波形

G)结果分析及结论

4.指令计数器 PC

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B)源代码

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

D)RTL视图

E)功能仿真波形

F)时序仿真波形

G)结果分析及结论

5.通用寄存器组 

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B)源代码

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

D)RTL视图

E)功能仿真波形

F)时序仿真波形

G)时序分析

H)结果分析及结论

四、思考题

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

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

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

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

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

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


【说明】

电子电路每次实验的提交都是会进行查重的,不过后面的三次实验都比电子秤要好通过的多,这个不必太担心,这里给出的代码提交都是100分,可以参考一下。

与本次实验相关的代码及报告等文件见以下链接:

通过网盘分享的文件:电子电路实验二.zip

链接:https://pan.baidu.com/s/1X_pMO6QM6x15twjuMM3JWQ

提取码:9785

一、实验目的

1.了解模型机中 SM 的作用。

2.熟悉指令寄存器、状态寄存器、指令计数器、寄存器的工作原理

3.学会使用 VERILOG 语言设计时序电路。

二、实验内容

1.用 VERILOG 语言设计 SM;

2.用 VERILOG 语言设计一个 8 位的指令寄存器 IR;

3.用 VERILOG 语言设计一个 1 位的状态寄存器 PSW;

4.用 VERILOG 语言设计一个 8 位的指令计数器 PC;

5.用 VERILOG 语言设计 4 个 8 位寄存器组成的寄存器组,实现读写操作;

三、实验过程

1.SM

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B) 源代码

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

图示为警告信息

图示为资源消耗

D)RTL视图

E)功能仿真波形

F)时序仿真波形

G)结果分析及结论

结果分析:对于功能仿真,当 sm_en 使能有效时(高电平有效),输出信号 sm 在时钟下降沿发生翻转,当 sm_en 禁止时,输出信号不发生翻转。对于时序仿真,输出结果与功能与功能仿真基本一致,但存在 7ns多的延迟。

结论:

SM 的结构是一个锁存器,当时钟下降沿来到时,下一状态变成当前状态取反,元件设计符合要求,元件内部存在 7ns多的延迟。

2.指令寄存器IR

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B)源代码

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

图示为警告信息

图示为资源消耗

D)RTL视图

E)功能仿真波形

F)时序仿真波形

G)结果分析及结论

在时钟的下降沿,观察ld_ir 信号(高电平有效),如果 ld_ir 是高电平的话,此时将输入 a 上的指令编码写入指令寄存器,否则不再将 a 进行写入操作。对于时序仿真,基本功能与波形和功能仿真类似,但输出存在 7ns 左右的延迟

ir 的结构是一个指令寄存器,当ld_ir为高电平时,时钟下降沿来到时,将输入 a 上 的指令编码写入指令寄存器x中。观察时序仿真可其输出结果和功能仿真类似,但有7ns左右的延时。

3.状态寄存器 PSW

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

 B)源代码

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

图示为警告信息

图示为资源消耗

D)RTL视图

E)功能仿真波形

F) 时序仿真波形

G)结果分析及结论

PSW 在时钟下降沿时触发输出信号跳变活动,当 gf_en 为高电平有效的时候表示能够进行 gf 的输出,此时 g 的值传送给 gf, 否则不操作。对于时序仿真,基本功能与波形和功能仿真类似,但输出存在 7ns 左右的延迟。

结论:

元件设计符合要求,元件内部存在 7ns 左右的延迟。

4.指令计数器 PC

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B)源代码

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

图示为警告信息

图示为资源消耗

D)RTL视图

E)功能仿真波形

F)时序仿真波形

G)结果分析及结论

结果分析:对于功能仿真,当 in_pc=0,ld_pc=1 时进行写入操作,在时钟信号的下降沿将a 写入 c,当 in_pc=0,ld_pc=1 时进行自加操作,c 中的数自加一。对于时序仿真,基本功能与波形和功能仿真类似,但输出存在 9.6ns 左右的延迟,同时部分变化出现冒险。

结论:

元件设计符合要求,元件内部存在 9.6ns 左右的延迟。

5.通用寄存器组 

A)创建工程(选择的芯片为 family=Cyclone II;name=EP2C5T144C8)

B)源代码

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

图示为警告信息

图示为资源消耗

D)RTL视图

E)功能仿真波形

F)时序仿真波形

G)时序分析

操作方法是:编译后,在 compilation report 中选择【timing analysis】-【summary】

H)结果分析及结论

对于功能仿真,当 we=1 时进行写入操作,在时钟信号的下降沿根据 dr 的值将 i写入寄存器(R0、R2、R1、R0,在波形中未体现),当 dr=00 时将 R0 的值从 d 中输出,dr=01时将 R1 的值从 d 中输出,dr=10 时将 R2 的值从 d 中输出,dr=11 时将 R3 的值从 d 中输出。当 sr=00 时将 R0 的值从 s 中输出,sr=01 时将 R1 的值从 s 中输出,sr=10 时将 R2 的值从 s中输出,sr=11 时将 R3 的值从 s 中输出。对于时序仿真,基本功能与波形和功能仿真类似,但输出存在 10s 左右的延迟,同时其中较多变化出现冒险。

结论:

元件设计符合要求,元件内部存在 10ns 左右的延迟。

四、思考题

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

答:因为我们既要保证取址操作在一个周期内完成,同时又要保证 RAM 为优先级较高,如果同步处理,可能会导致无法及时进行数据处理,导致出错。

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

答:时序部件应该采用非阻塞赋值语句。

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

答:实现通用寄存器组读操作的电路时组合电路。

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

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

(1)需要掌握的理论:基本了解了简易模型机的内部结构和工作原理。同时学会使用 Verilog 语言编写简单电路。

(2)遇到的困难:对于 QuartusII 的使用还不够熟练,特别是进行波形仿真的功能仿真和时序仿真时花费时间过长。

(3)解决方法:通过上网查询相关资料,与同学一起讨论,并请教老师。

(4)经验教训:不懂的地方要多向老师请教,对于电路的搭建要多动手,要学会利用好软件工具,不仅是在实验中,在平时的学习中也要学会利用工具。

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

相比于直接按照逻辑表写实现代码,更加重要的步骤应在前面一步,就是电路中信号怎么走 的要先弄明白才更重要。


http://www.kler.cn/a/518034.html

相关文章:

  • “AI质量评估系统:智能守护,让品质无忧
  • 壁纸设计过程中如何增加氛围感
  • 【ComfyUI专栏】ComfyUI 部署Kolors
  • 二叉搜索树中的众数(力扣501)
  • location的使用规则
  • Spring集成Redis|通用Redis工具类
  • 基于数智立体化V2.0体系构建医疗综合智能体:理论、实践与展望
  • C语言内存管理详解
  • LKT4304新一代算法移植加密芯片,守护 物联网设备和云服务安全
  • leetcode——最大子数组和(java)
  • 15.7k!DISM++一款快捷的系统优化工具
  • 使用RocketMQ 的业务系统怎么处理消息的积压?
  • kafka-保姆级配置说明(broker)
  • 计算机视觉-卷积
  • Qt调用ffmpeg库实现简易视频播放器示例
  • 嵌入式音视频开发——视频篇(三)
  • 如何在Linux中找到MySQL的安装目录
  • python实现http文件服务器访问下载
  • YOLOv11改进,YOLOv11添加ASFF检测头,并添加小目标检测层(四头检测),适合目标检测、分割等任务,全网首发
  • 微信小程序云开发服务端存储API 从云存储空间删除文件
  • DeepSeek R1 模型详解与微调
  • 【NLP基础】Word2Vec 中 CBOW 指什么?
  • 软件工程的概论
  • 【第二天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-五种常见的排序算法(持续更新)
  • 关于回调函数(callback)
  • 一篇博文了解JVM的各个内存区域