HNU-电路与电子学-实验3-2022级

一、实验目的

1.了解简易模型机的内部结构和工作原理。

2.分析模型机的功能,设计 8 重 3-1 多路复用器。

3.分析模型机的功能,设计 8 重 2-1 多路复用器。

4.分析模型机的工作原理,设计模型机控制信号产生逻辑。

二、实验内容

1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器

多路复用器是一个组合电路,它可以从多个输入中选择一个输入,将其数据 传输到输出。选择哪一路数据输入由一组选择输入变量控制。通常, 2 n 条数据输 入要 n 个选择输入,选择输入的位组合决定选择哪个数据输入。 8 重 3-1 多路复用器有 3 个数据输入、2 位选择输入、1 个输出,每个数据输 入和输出都是 8 位,所以称之为 8 重,S 选择将哪个数据输入传至输出,8 重 3- 1 多路复用器的引脚如图所示:

image-20241018193514959

引脚之间的相互关系如下表所示:

image-20241018193530150

2、用 VERILOG 语言设计模型机的 8 重 2-1 多路复用器

8 重 2-1 多路复用器有 2 个数据输入、1 个选择输入、1 个输出,每个数据输 入和输出都是 8 位,S 选择将哪个数据输入传至输出,8 重 2-1 多路复用器的引 脚如图所示:

image-20241018193542527

引脚之间的相互关系如下表所示:

image-20241018193611241

3.用 VERILOG 语言设计模型机的控制信号产生逻辑。

控制信号产生逻辑接收指令译码器的输出,在 SM、IR[7…0]以及状态位 G 的配合下产生每个模块所需要的控制信号。 控制信号产生逻辑的输入输出引脚如下图所示:

image-20241018193650742

三、实验过程

1、8重3-1多路复用器

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

image-20241018193810308

B) 编写源代码

image-20241018193838183

首先定义模块名,与项目名称相同。 声明输入变量和输出变量如图。包括三个 8 位的输入 a、b、c,由于三个数我们选择最少也要两位选择输入位,因此设置选 择输入信号 s 是两位二进制数,而输出就是 a 或 b 或 c 之一,因此是一个 8 位二进制数。 利用条件语句 if – else 语句,当然也可以使用 switch – case 语句进行条件判断。 激活选择器逻辑变化的条件是 s 选择信号发生改变。依照 次序,00 表示选择 a 信号,01 表示选择 b 信号,10 表示选择 c 信号,11 表 示选择 a 信号。事实上不应该出现 11 的 s 输入

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

警告信息:

image-20241018193921449

资源消耗:

image-20241018193940972

D) RTL 视图

image-20241018194004561

视图分析及结论:

我们可以从 RTL 视图中看到,我们的三选一多路开关,其实是由 3 个二选一多路复用器并行接入,串行执行进行信号选择。

当我们输入 00 时,MUX1 选择低电平输出,并且接入 MUX2,此时 MUX2 又会选择低电平,MUX3 最终选择 a 数据进行输出得到我们要的数据。

当我们输入 01 时,MUX1 选择 8’h0,也就是低电平输出,并接入MUX2,此时 MUX2 选择 b 数据的输入进行输出,并且把它接入MUX3,此时 MUX3 选择输入的 b 数据,而不选择 c 数据,因此最终输出 b 数据。

当我们输入 10 时,MUX1选择 c 数据,接下来的两个选择器依次都是选择输入的 c 数据,最终输出 c 的数据。

E) 功能仿真波

image-20241018194045790

结果分析及结论:

如图所示,当我们输入s信号为 00 时,输出的数据为 10000000 这与 a 信号相同,当我们输入的s信号为 01 时,输出的数据为01000000,这与输入的 b 的数据相同,当我们输入的s信号为 10 时,输出的数据为 00100000,这与输入的 c 信号相同,当我们输入s信号为 11(即其他) 时,输出的数据为 10000000 这与 a 信号相同。

综上验证,该逻辑能够完成信号的选择。

F) 时序仿真波

image-20241018194123847

结果分析及结论:

观察上图我们可以看到输出波形,总体和功能仿真大无二致,但还是有一点小区别,就是在不同的输出之间有一小段短暂的失真,这是由于传输延迟造成。由于我们每一段验证信号的时间较短,都在 ns 级别,但是电路的传输延迟也在 ns 级别,因此这种延迟造成的误差看起来就显得不可以忽略了

G) 时序分析

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

image-20241018194208838

image-20241018194224533

结果分析及结论:

由图可得,Timing Analyzer Summmary 总结所有经典定时分析的结果,并报告每个定时特性的最坏情况定时。比如从 c[4]到 y[4]的最坏定时情况的 tpd 为 14.036ns。下面的tpd 报告表则给出了源节点和目标节点之间的 tpd 延迟间,比如第二行中 s[1]到 y[5] 的tpd 为 13.907ns。

2、8重2-1多路复用器

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

image-20241018194406792

B) 编写源代码

image-20241018194432115

首先定义模块名,与项目名称相同。 声明输入变量和输出变量如图。包括两个 8 位的输入 a、b,由于只有两个数,我们设置选择输入信号s是一位二进制数,而输出就是 a 或 b 之一,因此是一个 8 位二进制数。 利用条件语句 if – else 语句,当然也可以使用 switch – case 语句进行条件判断。 激活选择器逻辑变化的条件是s选择信号发生改变。依照次序,0表示选择 a 信号,1 表示选择 b 信号。

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

警告信息:

image-20241018194507749

资源消耗:

image-20241018194523942

D) RTL 视图

image-20241018194543829

结果分析及结论:

我们可以从 RTL 视图中看到,该电路为一个单独的二选一多路复用器并行

当我们输入 0时,MUX1 输出a数据;当我们输入 1时,MUX1输出 b 的数据。

E) 功能仿真波形

image-20241018194618890

结果分析及结论:

如图所示,当我们输入s信号为 0 时,输出的数据为 10000000 这与 a 信号相同,当我们输入的s信号为 1 时,输出的数据为00000011,这与输入的 b 的数据相同。

综上验证,该逻辑能够完成信号的选择。

F) 时序仿真波形

image-20241018194655546

结果分析及结论:

1、观察上图我们可以看到输出波形,总体和功能仿真大无二致,但还是有一点小区别,就是在不同的输出之间有一小段短暂的失真,这是由于传输延迟造成。由于我们每一段验证信号的时间较短,都在 ns 级别,但是电路的传输延迟也在 ns 级别,因此这种延迟造成的误差看起来就显得不可以忽略了

2、时序仿真可以用来验证程序在目标器件中的时序关系。同时考虑了器件的延迟后,其输出结果跟接近实际情况,但是考虑的情况过多,不容易操作,容易产生错误。时序仿真不仅反应出输出和输入的逻辑关系,同时还计算了时间的延时信息,是与实际系统更接近的一种仿真结果。

G) 时序分析

image-20241018194729054

image-20241018194744851

结果分析及结论:

由图可得,Timing Analyzer Summmary 总结所有经典定时分析的结果,并报告每个定时特性的最坏情况定时。比如从s到 y[6]的最坏定时情况的 tpd 为 15.022ns。下面的tpd 报告表则给出了源节点和目标节点之间的 tpd 延迟间,比如第二行中 s到 y[3] 的tpd 为14.88ns。

3、控制信号产生逻辑

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

image-20241018194852350

B) 编写源代码

在这里插入图片描述

首先要声明输入和输出变量,包括几种输入指令以及 ir。

但是由于不同的指令需要的提供的信号较为复杂,为了避免错误。我们可以先列一个真值表。

image-20241018194953315

当我们书写所需信号的真值的时候。我们按行书写。依照信号传递以及需要的信号,我们把需要的信号是 1 还是 0 写上。

但是判断输出信号的值时候,我们纵向查看表。例如这里的we信号是执行区间的信号。它为 1 的情况只有在 mova=1 或者 movc = 1 或者 movd= 1 或者 movi=1或者add=1或者sub=1或者in=1成功执行的时候才为一。这么读下来,就能够发现。需要将这几种情况“或”起来,最终就是我们要的表达式。

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

警告消息:

image-20241018195040561

资源消耗:

image-20241018195056426

D) RTL 视图

image-20241018195119632

结果分析及结论:

由视图可得,视图左边为输入,右边为输出。其中连接有一系列的元器件。比如比较器:当输入相等时输出 1,不相等时输出 0;还有大部分的与或门。图中输入信号为 sm 等15个,输出信号包括 reg_sr 等16种情况。各个输出端口之间通过导线相连。

经过检验,RTL 电路逻辑与逻辑表达式含义一致。

E) 功能仿真波形

image-20241018195155125

结果分析及结论:

我们可以一一验证,经过检验发现与我所写的真值表输出结果一致。image-20241018195218113

F) 时序仿真波形

image-20241018195246863

结果分析及结论:

1、观察上图我们可以看到输出波形,总体和功能仿真大无二致,但还是有一点小区别,就是在不同的输出之间有一小段短暂的失真,这是由于传输延迟造成。由于我们每一段验证信号的时间较短,都在 ns 级别,但是电路的传输延迟也在 ns 级别,因此这种延迟造成的误差 看起来就显得不可以忽略了。

2、时序仿真可以用来验证程序在目标器件中的时序关系。同时考虑了器件的延迟后,其输出结果跟接近实际情况,但是考虑的情况过多,不容易操作,容易产生错误。时序仿真不仅反应出输出和输入的逻辑关系,同时还计算了时间的延时信息,是与实际系统更接近的一种仿真结果。

G) 时序分析

image-20241018195321250

image-20241018195338702

结果分析及结论:

由图可得,Timing Analyzer Summmary 总结所有经典定时分析的结果,并报告每个定时特性的最坏情况定时。比如从mova 到 reg_sr[1] 的最坏定时情况的 tpd 为 17.984ns。下面 的 tpd 报告表则给出了源节点和目标节点之间的 tpd 延迟时间,比如第二行中 add 到reg_sr[1] 的 tpd 为17.861ns。

四、思考题

1、任选一条指令,介绍指令的过程、信息流动的情况以及执行时控制信号的值。

mova指令:

要求完成的操作:源寄存器 Rs 中的数据写入目的寄存器 Rd,即(Rs)→Rd。

执行过程:根据控制信号 SR1、SR0 选择源寄存器 Rs 的数据从通用寄存器 S 口输出, 在 AC3~AC0 和 AU_EN 的控制下,经 AU 送入总线 BUS;S0 为 1,BUS 上的数据传送至 通用寄存器的输入端;在 WE 和 DR1、DR0 的控制下,时钟下降沿将输入端的数据写入目 的寄存器 Rd。

image-20241018195444895

首先此时是执行指令,因此 LDPC 以及 INPC 都是 0;该过程不涉及 RAM 的读写操作,因此 RE 和 WR 都是 0;然后不是取指令周期,所以 SM_EN为1;SM 是 1,表示执行指令。 然后涉及到的部分,也就是示意图的右半部分。首先我们根据控制单元输出的信号 SR 和 DR 信号可以对应到通用寄存器组中具体的两个寄存器,一个作为源寄存器,另一个是目的寄存器。这里我们假设 A 是源寄存器,B 是目的寄存器。 他们分别从 D 通道和 S 通道读出去。进入算术单元;经总线运输后经过2_1选择器进入目的寄存器,完成执行指令周期。

2、如何产生正确的控制信号以及具体的编程实现?

首先要声明输入和输出变量,包括几种输入指令以及 ir。 但是由于不同的指令需要的提供的信号较为复杂,为了避免错误。我们可以先列一个真值表。image-20241018195527284

当我们书写所需信号的真值的时候。我们按行书写。依照信号传递以及需要的信纵向查看表。将信号为1的指令情况“或”起来,最终就是我们要的表达式

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

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

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

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

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

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

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

编写程序前列写的真值表非常重要,一定要理解通透。

内容概要:《2025年器身份安全现状报告》揭示了器身份安全在全球企业中的重要性和面临的挑战。随着云计算、AI和微服务的发展,器身份数量已远超人类身份,成为现代网络安全的核心。然而,管理这些身份变得越来越复杂,许多组织缺乏统一的管理策略。77%的安全领导者认为每个未发现的器身份都是潜在的风险点,50%的组织在过去一年中经历了器身份相关的安全事件,导致应用发布延迟、客户体验受损和数据泄露等问题。AI的兴起进一步加剧了这一问题,81%的安全领导者认为器身份将是保护AI未来的关键。此外,证书相关故障频发,自动化管理仍不足,量子计算的威胁也逐渐显现。面对这些挑战,组织需要建立全面的器身份安全计划,重点加强自动化、可见性和加密灵活性。 适合人群:从事信息安全、IT管理和技术架构规划的专业人士,尤其是关注器身份管理和云原生环境安全的从业者。 使用场景及目标:①理解器身份在现代企业安全架构中的关键作用;②识别当前器身份管理中存在的主要风险和挑战;③探讨如何通过自动化、可见性和加密灵活性来提升器身份安全管理的有效性;④为制定或优化企业器身份安全策略提供参考。 其他说明:此报告基于对全球1,200名安全领导者的调查,强调了器身份安全的重要性及其在未来几年内可能面临的复杂变化。报告呼吁各组织应重视并积极应对这些挑战,以确保业务连续性和数据安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值