计算机组成原理堆栈寄存器实验报告
栈的实验报告结论(3篇)
![栈的实验报告结论(3篇)](https://img.taocdn.com/s3/m/859fb689988fcc22bcd126fff705cc1754275f71.png)
第1篇一、实验目的1. 理解栈的基本概念和操作;2. 掌握栈的顺序存储和链式存储实现方法;3. 熟悉栈在程序设计中的应用。
二、实验内容1. 栈的顺序存储结构实现;2. 栈的链式存储结构实现;3. 栈的基本操作(入栈、出栈、判空、求栈顶元素);4. 栈在程序设计中的应用。
三、实验方法1. 采用C语言进行编程实现;2. 对实验内容进行逐步分析,编写相应的函数和程序代码;3. 通过运行程序验证实验结果。
四、实验步骤1. 实现栈的顺序存储结构;(1)定义栈的结构体;(2)编写初始化栈的函数;(3)编写入栈、出栈、判空、求栈顶元素的函数;(4)编写测试程序,验证顺序存储结构的栈操作。
2. 实现栈的链式存储结构;(1)定义栈的节点结构体;(2)编写初始化栈的函数;(3)编写入栈、出栈、判空、求栈顶元素的函数;(4)编写测试程序,验证链式存储结构的栈操作。
3. 栈在程序设计中的应用;(1)实现一个简单的四则运算器,使用栈进行运算符和操作数的存储;(2)实现一个逆序输出字符串的程序,使用栈进行字符的存储和输出;(3)编写测试程序,验证栈在程序设计中的应用。
五、实验结果与分析1. 顺序存储结构的栈操作实验结果:(1)入栈操作:在栈未满的情况下,入栈操作成功,栈顶元素增加;(2)出栈操作:在栈非空的情况下,出栈操作成功,栈顶元素减少;(3)判空操作:栈为空时,判空操作返回真,栈非空时返回假;(4)求栈顶元素操作:在栈非空的情况下,成功获取栈顶元素。
2. 链式存储结构的栈操作实验结果:(1)入栈操作:在栈未满的情况下,入栈操作成功,链表头指针指向新节点;(2)出栈操作:在栈非空的情况下,出栈操作成功,链表头指针指向下一个节点;(3)判空操作:栈为空时,判空操作返回真,栈非空时返回假;(4)求栈顶元素操作:在栈非空的情况下,成功获取栈顶元素。
3. 栈在程序设计中的应用实验结果:(1)四则运算器:成功实现加、减、乘、除运算,并输出结果;(2)逆序输出字符串:成功将字符串逆序输出;(3)测试程序:验证了栈在程序设计中的应用。
计算机组成原理寄存器堆实验报告
![计算机组成原理寄存器堆实验报告](https://img.taocdn.com/s3/m/6c0714e4998fcc22bcd10d36.png)
实验七-八寄存器堆实验姓名:陈衍席学号:1205110125 网工1202【实验环境】1. Windows 2000 或 Windows XP2. QuartusII9.1 sp2、DE2-115计算机组成原理教学实验系统一台,排线若干。
【实验目的】本次实验要求掌握触发器的基本原理,掌握寄存器和寄存器堆的组成原理。
【实验要求】本次实验只需要设计并实现8位触发器和32位触发器。
【实验原理】寄存器是数字电路中的基本模块,许多复杂的时序逻辑电路都是由它构成的。
在数字系统中,寄存器是一种在某一特定信号的控制下用于存储一组二进制数据的时序逻辑电路。
通常使用触发器构成寄存器,把多个D触发器的时钟连接起来就可以构成一个存储多位二进制的寄存器。
寄存器中二进制数的位可以用两种方式移入或移出寄存器。
第一种方法是以串行的方式将数据每次移动一位,这种方法称之为串行移位(Serial Shifting),线路较少,但耗费时间较多。
第二种方法是以并行的方式将数据同时移动,这种方法称之为并行移位(Parallel Shifting),线路较为复杂,但是数据传送的速度较快。
因此,按照数据进出移位寄存器的方式,可以将移位寄存器分为四种类型:串行输入串行输出移位寄存器(Serial In- Serial Out)、串行输入并行输出移位寄存器(Serial In- Parallel Out)、并行输入串行输出移位寄存器(Parallel In- Serial Out)、并行输入并行输出移位寄存器(Parallel In-ParallelOut)。
在CPU设计中,寄存器堆是一个可以保存指令和数据的必不可少的器件,是RISC微处理器的核心,所有内部、外部数据的读取都直接和它发生关系。
它由一组寄存器组成,只要给出寄存器堆中该寄存器的编号,则其中的内容都可以读或者写。
【实验步骤】1、8位触发器设计8位触发器中包括,输入信号:一个8位数据源D,1位CLRN复位信号,1位EN使能信号,1位CLK时钟信号;输出信号:8位Q。
计算机组成原理--实验报告
![计算机组成原理--实验报告](https://img.taocdn.com/s3/m/33512ab2d1f34693daef3ed2.png)
实验一寄存器实验实验目的:了解模型机中各种寄存器结构、工作原理及其控制方法。
实验要求:利用CPTH 实验仪上的K16..K23 开关做为DBUS 的数据,其它开关做为控制信号,将数据写入寄存器,这些寄存器包括累加器A,工作寄存器W,数据寄存器组R0..R3,地址寄存器MAR,堆栈寄存器ST,输出寄存器OUT。
实验电路:寄存器的作用是用于保存数据的CPTH 用74HC574 来构成寄存器。
74HC574 的功能如下:- 1 -实验1:A,W 寄存器实验原理图寄存器A原理图寄存器W 原理图连接线表:- 2 -系统清零和手动状态设定:K23-K16开关置零,按[RST]钮,按[TV/ME]键三次,进入"Hand......"手动状态。
在后面实验中实验模式为手动的操作方法不再详述.将55H写入A寄存器二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据55H置控制信号为:按住STEP脉冲键,CK由高变低,这时寄存器A的黄色选择指示灯亮,表明选择A寄存器。
放开STEP键,CK由低变高,产生一个上升沿,数据55H被写入A寄存器。
将66H写入W寄存器二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据66H- 3 -置控制信号为:按住STEP脉冲键,CK由高变低,这时寄存器W 的黄色选择指示灯亮,表明选择W寄存器。
放开STEP 键,CK 由低变高,产生一个上升沿,数据66H 被写入W 寄存器。
注意观察:1.数据是在放开STEP键后改变的,也就是CK的上升沿数据被打入。
2.WEN,AEN为高时,即使CK有上升沿,寄存器的数据也不会改变。
实验2:R0,R1,R2,R3 寄存器实验连接线表- 4 -将11H、22H、33H、44H写入R0、R1、R2、R3寄存器将二进制开关K23-K16,置数据分别为11H、22H、33H、44H置控制信号为:K11、K10为10,K1、k0分别为00、01、10、11并分别按住STEP 脉冲键,CK 由高变低,这时寄存器R0、R1\R2\R3 的黄色选择指示灯分别亮,放开STEP键,CK由低变高,产生一个上升沿,数据被写入寄存器。
计算机组成原理实验报告_寄存器的原理及操作
![计算机组成原理实验报告_寄存器的原理及操作](https://img.taocdn.com/s3/m/bd091d7a192e45361066f582.png)
初:未知当前:2016-7-3 主笔:An gel实验报告课程名称:计算机组成原理实验项目:寄存器的原理及操作姓名:专业:计算机科学与技术班级:学号:计算机科学与技术学院实验教学中心20 16 年6 月20 日初:未知 当前:2016-7-3 主笔:An gel 版本:1实验项目名称: 寄存器的原理及操作 ________________一、 实验目的1. 了解模型机中A, W 寄存器结构、工作原理及其控制方法。
2. 了解模型机中寄存器组 R0..R3结构、工作原理及其控制方法。
3. 了解模型机中地址寄存器MAR ,堆栈寄存器ST ,输出寄存器 OUT 寄存器结构、工作原理及其控制方法。
二、 实验内容1、 A 、W 寄存器:利用COP2000实验仪上的K16..K23开关做为DBUS 的数据,其它开关做为控制 信号,将数据写入寄存器 A ,W 。
2、 R0、R1、R2、R3寄存器实验:利用 COP2000实验仪上的 K16..K23开关做为 DBUS 的数据,其 它开关做为控制信号,对数据寄存器组R0..R3进行读写。
3、 MAR 、ST 、OUT 寄存器:利用 COP2000实验仪上的 K16..K23开关做为 DBUS 的数据,其它开 关做为控制信号,将数据写入地址寄存器MAR ,堆栈寄存器ST ,输出寄存器 OUT 。
三、 实验用设备仪器及材料伟福COP2000系列计算机组成原理实验系统四、实验原理及接线实验1: A ,W 寄存器实验;DBUSLD3U50C D3U5 ■ DBUS6 >【賊/DBLS4QQQQQ仪卫吨n Jd —J Jo-■1 -X:LXDgDDDQDiD c I 3 4 4_■ s- Tieft连接 倍号礼援入孔 作用有效电乎] J]厘 J3座^fK23-KJ6*E 入 DBLSrm2AEX K3选遹A低电平有效 ■i. J- WENK.4 选逋w低电权说 4ALLCK匚 LOCK ALU 二昨強冲 上升沿打人实验2: R0, R1, R2, R3寄存器实验愴号孔 接入JL 榨用 有效电京IIJ]坚 J3陛為 K23«l &接 ADEHJ5[7®11 RRD KII 奇存缚纠读歧堤 低电乎有效 R J RWR KID 舒存#盅写便能 仁壬“=\4SB KI 审存器选摊B SSA KO 寄蜩«#A6 RCK CLOCK空存密二冬应2上升沿打入实验3: MAR 地址寄存器,ST 堆栈寄存器,OUT 输出寄存器WEN"4»Ci2■ — 1 1 0UFC1X1* J 、 1<313< 417 S€ , U- > < *15 ) < - TT 5 € 1 13< ?t : \t/FfI 屮加亍DELI 细 DBL 用]>BUM .DBUSJ DBUS2■f DBUST .IJJitJSD VLTW5JW4WJv.-j SWI :wocft^fctc\i CMv.-ffiVSS4VBIQ -:吁垢冷HJ 'CILTfiKEllg ""■Md尋存堆MAR 原理铝MAR 为存储器地址寄存器,其功能是存储操作数在内存中的地址,信号MAREN 的功能是将数据总线DBUS 上数据MAR ,信号MAROE 的功能是将 MAR 的值送到地址总线 ABUS 上tTHl.W<'&BC&S ; S j•、'C DBLS2~kDBISI <.DBLMST 堆栈寄存器的作用,是岀现中断或子程序调用时,保存断点处PC 的值,以便中断或子程序结束时,能继续执行原程序。
计算机寄存器实验报告
![计算机寄存器实验报告](https://img.taocdn.com/s3/m/acfc904915791711cc7931b765ce05087732751c.png)
一、实验目的1. 理解计算机寄存器的概念、作用和分类;2. 掌握寄存器在计算机系统中的基本操作;3. 熟悉寄存器的控制信号及其工作原理;4. 培养实验操作能力和分析问题能力。
二、实验环境1. 实验设备:计算机组成原理实验箱、计算机、Proteus仿真软件;2. 实验软件:Proteus仿真软件、模型机仿真软件;3. 实验环境:实验室。
三、实验内容1. 寄存器基本概念及分类;2. 寄存器操作实验;3. 寄存器控制信号实验;4. 寄存器在计算机系统中的应用实验。
四、实验步骤1. 寄存器基本概念及分类实验(1)打开Proteus仿真软件,创建一个新的项目;(2)在项目中选择计算机组成原理实验箱中的寄存器模块;(3)观察寄存器的结构,了解寄存器的分类(如累加器、寄存器组、地址寄存器等);(4)总结寄存器的作用,如暂存数据、控制指令等。
2. 寄存器操作实验(1)在Proteus仿真软件中,搭建一个简单的寄存器操作电路;(2)设置输入数据,观察寄存器的输出;(3)通过改变输入数据,验证寄存器的存储功能;(4)总结寄存器操作的基本步骤。
3. 寄存器控制信号实验(1)在Proteus仿真软件中,搭建一个包含控制信号的寄存器电路;(2)观察控制信号对寄存器操作的影响;(3)通过改变控制信号,验证寄存器的读写功能;(4)总结寄存器控制信号的作用和意义。
4. 寄存器在计算机系统中的应用实验(1)在Proteus仿真软件中,搭建一个简单的计算机系统电路;(2)观察寄存器在计算机系统中的操作过程;(3)分析寄存器在计算机系统中的作用,如数据暂存、指令控制等;(4)总结寄存器在计算机系统中的应用。
五、实验结果与分析1. 通过实验,掌握了寄存器的基本概念、作用和分类;2. 熟悉了寄存器的操作过程,包括输入、输出、读写等;3. 了解寄存器控制信号的作用,以及它们对寄存器操作的影响;4. 分析了寄存器在计算机系统中的应用,如数据暂存、指令控制等。
计算机组成原理堆栈寄存器实验报告
![计算机组成原理堆栈寄存器实验报告](https://img.taocdn.com/s3/m/69e96b49fe4733687e21aaf8.png)
计算机组成原理实验三堆栈寄存器实验一、实验目的:1、熟悉堆栈概念。
2、熟悉堆栈寄存器的组成和硬件电路。
二、实验要求:完成3个堆栈寄存器的数据写入与读出。
三、实验原理:实验中所用的堆栈寄存器数据通路由三片8位字长的LS374组成R0、R1、R2寄存器堆。
三个寄存器的输入/输出已连至BUS总线R0-B、R1-B、R2-B经CBA二进制控制开关译码产生数据输出选通信号(详见下表),LDR0、LDR1、LDR2为数据写入允许信号,由二进制控制开关来模拟,均为高电平有效;T4信号为寄存器数据写入脉冲,上升沿有效。
在手动实验状态(即“H”装态)每按动一次“单步”命令键,产生一个T4信号。
下表为寄存器单元选通真值表:四、实验连接:1.连接实验线路,把位于实验装置左上方的CTR-OUT UNIT (LDR0、LDR1、LDR2、/SW-B)与实验装置右中央的CTR-OUT unit (LDR0、LDR1、LDR2)及实验装置左下方INPUT-UNIT(/SW-B)中的控制信号作对应连接。
2.具体连接信号:/SW-B,/R0-B,/R1-B ,/R2-B ,LDR0,LDR1,LDR2五、实验仪器状态设定:在闪动的“P.”状态下按动“增址”命令键,使LED显示器自左向右第一位显示提示符“H”,表示本装置已进入手动单元实验状态。
五、实验项目:(一)堆栈寄存器的写入拨动二进制数据开关(INPUT-UNIT)向R0和R1寄存器置数(置数灯亮表示它所对应的数据位为“1”、反之为“0”)。
具体操作步骤图示如下:[CBA=001] [LDR0=1] [LDR=1][LDR1=0] [LDR1=1][LDR2=0] [LDR2=0][按“STEP”] [按“STEP”] (二)堆栈寄存器的读出关闭数据输入三态门(CBA=000),分别打开通用寄存器R0、R1、R2输出控制位,当CBA=100时,总线指示灯(BUS-DISP UNIT)显示R0中的数据01H;当CBA=101时,总线指示灯显示R1中的数据80H;当CBA=110时,总线指示灯显示R2中等的数据(随机),可以观察到,显示的随机数为11111111.(六)实验总结通过本次实验的数据和理论分析进行比较、验证,我们熟悉了堆栈概念,熟悉了堆栈寄存器的组成和硬件电路等。
计算机组成原理实验报告-寄存器实验
![计算机组成原理实验报告-寄存器实验](https://img.taocdn.com/s3/m/64c6a98588eb172ded630b1c59eef8c75ebf957e.png)
千里之行,始于足下。
计算机组成原理实验报告-寄存器实验计算机组成原理实验报告-寄存器实验》一、实验目的本次实验旨在通过设计和实现一个基本的寄存器,加深对计算机组成原理中寄存器的理解,并掌握寄存器在计算机中的应用。
二、实验设备及软件1. 实验设备:计算机2. 实验软件:模拟器软件Mars3. 实验材料:电路图、线缆、元器件三、实验原理寄存器是计算机的一种重要组成部分,用于存储数据和指令。
一个基本的寄存器通常由一组触发器组成,可以存储多个位的信息。
本实验中,我们需要设计一个16位的寄存器。
四、实验步骤1. 确定寄存器的结构和位数:根据实验要求,我们需要设计一个16位的寄存器。
根据设计要求,选择合适的触发器和其他元器件。
2. 组装寄存器电路:根据电路图,将选择好的元器件按照电路图连接起来。
3. 连接电路与计算机:使用线缆将寄存器电路连接到计算机的相应接口上。
4. 编写程序:打开Mars模拟器软件,编写程序来测试寄存器的功能。
可以编写一段简单的程序,将数据写入寄存器并读取出来,以验证寄存器的正确性。
5. 运行程序并测试:将编写好的程序加载到Mars模拟器中,并运行程序,观察寄存器的输出和模拟器的运行结果。
第1页/共3页锲而不舍,金石可镂。
五、实验结果在本次实验中,我们成功设计和实现了一个16位的寄存器,并进行了相关测试。
经过多次测试,寄存器的功能和性能良好,能够准确地存储和读取数据。
六、实验心得通过本次实验,我对寄存器的结构和工作原理有了更深入的了解。
寄存器作为计算机的一种重要组成部分,起着存储和传输数据的作用。
通过实际操作和测试,我更加清楚了寄存器在计算机中的应用和重要性。
在实验过程中,我遇到了一些问题,如电路连接不稳定、程序错误等,但通过仔细检查和调试,最终解决了这些问题。
这次实验也让我深刻体会到了学习计算机组成原理的重要性,只有深入理解原理并通过实践运用,才能真正掌握计算机的工作原理和能力。
通过这个实验,我有了更深入的认识和理解,对计算机组成原理的学习也更加系统和完整。
寄存器实验实验报告
![寄存器实验实验报告](https://img.taocdn.com/s3/m/a4c5639f4128915f804d2b160b4e767f5bcf800c.png)
寄存器实验实验报告在学习计算机组成原理的过程中,寄存器可是个至关重要的概念。
为了更深入地理解它,咱进行了一场有趣的寄存器实验。
实验开始前,看着那一堆实验设备和线路,心里还真有点小紧张。
毕竟这可不是闹着玩的,一个不小心接错线,可能整个实验就泡汤了。
不过,咱还是鼓起勇气,准备大干一场!实验中用到的主要设备有数字逻辑实验箱、导线、示波器等等。
我们的任务是通过连接线路,实现对寄存器的读写操作,并观察数据的变化。
先来说说寄存器的基本原理吧。
寄存器就像是计算机里的一个个小抽屉,专门用来存放数据。
它具有快速存储和读取数据的能力,是计算机运行的重要组成部分。
开始动手连接线路啦!这可真是个细致活儿。
我小心翼翼地拿着导线,眼睛紧紧盯着实验箱上的插孔,生怕插错了地方。
每插一根线,都感觉像是在完成一项艰巨的任务。
好不容易把线路连接好了,接下来就是输入数据进行测试。
当我按下第一个数据输入按钮时,心里别提多期待了。
眼睛一直盯着示波器的屏幕,盼着能看到正确的数据显示。
哎呀!没想到第一次居然出错了。
数据显示得乱七八糟,完全不是我想要的结果。
这可把我急坏了,赶紧检查线路,看是不是哪里接错了。
经过一番仔细的排查,终于发现原来是有一根导线接触不良。
重新接好后,再次输入数据,这次终于成功啦!看着示波器上显示出正确的数据,那种成就感简直爆棚。
在实验过程中,我还发现了一个有趣的现象。
当连续输入多个数据时,寄存器会按照先后顺序依次存储,就像排队一样,整整齐齐。
而且读取数据的时候,也是按照存储的顺序一个一个来,可听话了。
通过这次实验,我对寄存器有了更直观、更深刻的理解。
以前在书本上看到的那些抽象的概念,现在都变得清晰起来。
我明白了寄存器的工作原理,知道了它是如何存储和读取数据的,也更加体会到了计算机内部运行的神奇之处。
回想起刚开始面对实验设备时的紧张和迷茫,再看看现在成功完成实验后的喜悦和满足,真的是感慨万千。
这次实验不仅让我学到了知识,还锻炼了我的动手能力和解决问题的能力。
计算机组成原理实验报告
![计算机组成原理实验报告](https://img.taocdn.com/s3/m/4581aef2f8c75fbfc77db2bf.png)
实验一报告内容实验题目:运算器实验实验目的: 1、掌握简单运算器的数据传输方式 2、验证运算功能发生器( 74LS181)及进位控制的组合功能。
实验要求:完成不带进位及带进位算术运算实验、逻辑运算实验,了解算术逻辑运算单元的运用。
实验器材:电子试验箱运算器组成框图:ALU的功能图实验原理:实验中所用的运算器原理如图1-1所示。
其中运算器山两片74LS181以并/串形式构8位字长的ALU。
运算器的输出经过一个三态门(74LS245)和数据总线相连’运算器的两个数据输入端分别由-个锁存器(74LS273)锁存,锁存器的输入已连至数据总线,数据丌关(INPUT UNIT)用来给出参与运算的数据,经一三态门(74LS245)和数据总线相连,数据显示灯(BUS UNIT)已和数据总线相连,用来显示数据总线内容。
本实验装置的控制线(CTR-IN UNIT)应与(CTR-OUT UNIT)相连,数据总线、时序电路( TIME UNIT)产生的脉冲信号(T1-T4)、P(1)、P(2)、P(3)本实验装置已作连接, ( CLK UNIT)必须选择一档合适的时钟,其余均为电平控制信号(HC-UNIT)。
进行实验时,首先按动位于本实验装置右中则的复位按钮使系统进入初始待令状态,在LED显示器闪动出现“P.”的环境下,按动增址命令键使LED显示器自左向右第一位显示提示符H”,表示本装置已进入手动单元实验状态,在该状态下按动单步命令键,即可获得实验所需的单脉冲信号,而各电平控制信号用位于LED显示器左方的K25~KO二进制数据开关来模拟。
在进行手动实验时,必须先预置开关电平:,Load=l, /CE- 1,其余开关控制信号电平均置为0,这在以后手动实验时不再说明,敬请注意。
实验连接:按上图实验线路作以下连接:1、八付运算器控制信号连接:位于实验装置左上方的控制信号(CrR_OLff UNIT)中的(S3、S2. S1. SO.M、/CN. LDDRl. LDDR2. LDCZY. C、B.A)与位于实验装置右中方的(CTR-IN UNIT)、位于实验装置左中方的(UPC UNIT)、位于右J二方的(艮UNIT)作对应连接。
计算机组成原理实验报告实验2.3.2 通用寄存器实验
![计算机组成原理实验报告实验2.3.2 通用寄存器实验](https://img.taocdn.com/s3/m/612df0c5844769eae109edcd.png)
实验一通用寄存器实验一、实验目的1.熟悉通用寄存器的数据通路。
2.掌握通用寄存器的构成和运用。
二、实验要求在掌握了AX、BX运算寄存器的读写操作后,继续完成CX、DX通用寄存器的数据写入与读出。
三、实验原理实验中所用的通用寄存器数据通路如下图所示。
由四片8位字长的74LS574组成CX(R1 R0)、DX(R3 R2)通用寄存器组。
图中X2 X1 X0定义输出选通使能,SI、XP控制位为源选通选择。
RXW为寄存器数据写入使能,OP、DI为目的寄存器选择。
DRCK信号为寄存器写脉冲,下降沿有效。
准双向I/O输入输出端口用于置数操作,经2片74LS245三态门与数据总线相连。
图2-3-3通用寄存器数据通路四、实验内容2.寄存器的读写操作1)目的通路当RXW=0时,由DI、OP编码产生目的寄存器地址,详见下表。
表2.3.5通用寄存器“手动/搭接”目的编码2)CX、DX寄存器的写入通过“I/O输入输出单元”向CX、DX分别置数1122h、3344h,操作步骤如下:K10~K6=10000 K18~K16=000 K18~K16=0103)源通路当X2 X1 X0=0 0 1时,由SI、XP编码产生源寄存器,详见下表。
表2.3.6通用寄存器“手动/搭接”源编码1 0 0 DX 字读 1 0 1 DL(R2)偶字节读 11XDH(R2)奇字节读4) CX 、DX 寄存器的读出读CX 数据来源 REG数据总线 显示CX 值读DX 数据总线 显示DX 值五、实验心得本次试验中我对实验设备Dais-CMX16+有了初步的认识。
由于第一次使用这个试验箱,对界面和操作还不是很熟悉,按照指导书上的步骤和要求完成了实验。
但对实验的内部原理的各部件的操作和设置还不是很理解。
实验二准双向I/O口实验一、实验目的熟悉与了解准双向I/O口的构成原理。
二、实验要求掌握准双向I/O口的输入/输出特性的运用。
三、实验原理Dais-CMX16+向用户提供的是按准双向原理设计的十六位输入/输出I/O口,当该位为“1”时才能用作输入源,上电或复位(手动态按【返回】键),该十六位I/O口被置位(即为“0FFFFh”)。
堆栈的实验报告
![堆栈的实验报告](https://img.taocdn.com/s3/m/f29722a7aff8941ea76e58fafab069dc502247be.png)
一、实验目的1. 理解堆栈的基本概念和原理;2. 掌握堆栈的顺序存储和链式存储方法;3. 熟悉堆栈的基本操作,如入栈、出栈、判断栈空、求栈顶元素等;4. 能够运用堆栈解决实际问题。
二、实验内容1. 堆栈的基本概念和原理;2. 堆栈的顺序存储和链式存储方法;3. 堆栈的基本操作实现;4. 堆栈的应用实例。
三、实验原理1. 堆栈的基本概念和原理:堆栈是一种特殊的线性表,它按照“后进先出”(LIFO)的原则组织数据。
即最后进入堆栈的数据元素最先出栈。
2. 堆栈的顺序存储方法:使用一维数组实现堆栈,栈顶指针top指向栈顶元素。
3. 堆栈的链式存储方法:使用链表实现堆栈,每个节点包含数据域和指针域。
4. 堆栈的基本操作实现:(1)入栈:将元素插入到栈顶,如果栈未满,则top指针加1,并将元素值赋给top指向的元素。
(2)出栈:删除栈顶元素,如果栈不为空,则将top指向的元素值赋给变量,并将top指针减1。
(3)判断栈空:如果top指针为-1,则表示栈为空。
(4)求栈顶元素:如果栈不为空,则将top指向的元素值赋给变量。
四、实验步骤1. 使用顺序存储方法实现堆栈的基本操作;2. 使用链式存储方法实现堆栈的基本操作;3. 编写程序,测试堆栈的基本操作是否正确;4. 分析实验结果,总结实验经验。
五、实验结果与分析1. 使用顺序存储方法实现堆栈的基本操作:(1)入栈操作:当栈未满时,将元素插入到栈顶。
(2)出栈操作:当栈不为空时,删除栈顶元素。
(3)判断栈空:当top指针为-1时,表示栈为空。
(4)求栈顶元素:当栈不为空时,返回top指向的元素值。
2. 使用链式存储方法实现堆栈的基本操作:(1)入栈操作:创建新节点,将其作为栈顶元素,并修改top指针。
(2)出栈操作:删除栈顶元素,并修改top指针。
(3)判断栈空:当top指针为NULL时,表示栈为空。
(4)求栈顶元素:返回top指针指向的节点数据。
3. 实验结果分析:通过实验,验证了顺序存储和链式存储方法实现的堆栈基本操作的正确性。
堆栈实验报告
![堆栈实验报告](https://img.taocdn.com/s3/m/f15a4c4a773231126edb6f1aff00bed5b9f37387.png)
堆栈实验报告堆栈实验报告引言:堆栈是一种常见的数据结构,它具有先进后出(Last In First Out)的特点,类似于我们日常生活中的堆叠书籍或者盘子的方式。
本次实验旨在通过实际操作和观察,深入了解堆栈的原理和应用。
实验目的:1. 理解堆栈的基本概念和特点;2. 学会使用堆栈进行数据的存储和检索;3. 掌握堆栈的应用场景和实际意义。
实验材料:1. 一台计算机;2. 编程语言环境(如C++、Java等);3. 实验所需的数据集。
实验步骤:1. 确定实验所需的数据集,并将其准备好;2. 创建一个堆栈数据结构的类或者使用现有的堆栈库;3. 将数据集中的元素依次压入堆栈;4. 检索堆栈顶部的元素,并将其输出;5. 从堆栈中弹出一个元素,并将其输出;6. 重复步骤4和步骤5,直到堆栈为空。
实验结果与分析:通过实验操作,我们观察到以下现象和结果:1. 压入堆栈的元素按照先后顺序被存储,并且最后一个压入的元素位于堆栈的顶部;2. 检索堆栈顶部的元素时,我们可以获取到最后一个压入的元素;3. 弹出堆栈顶部的元素后,我们可以获取到倒数第二个压入的元素;4. 当堆栈为空时,无法再进行弹出操作。
根据实验结果,我们可以得出以下结论:1. 堆栈适用于需要按照先后顺序存储和检索数据的场景;2. 堆栈可以有效地实现数据的后进先出的处理方式;3. 堆栈的应用范围广泛,如函数调用、表达式求值等。
实验总结:通过本次实验,我们深入了解了堆栈的原理和应用。
堆栈作为一种重要的数据结构,在计算机科学领域中具有广泛的应用。
它不仅可以用于数据的存储和检索,还可以用于解决实际问题中的一些复杂计算和操作。
通过实际操作和观察,我们更加清晰地认识到堆栈的特点和优势。
然而,本次实验只是对堆栈的初步认识和应用,还有许多深入的研究和探索可以展开。
例如,我们可以进一步研究堆栈的实现原理和性能优化,探索堆栈在不同领域的应用案例,以及与其他数据结构的比较和结合等。
寄存器堆实验报告
![寄存器堆实验报告](https://img.taocdn.com/s3/m/50c31737376baf1ffc4fad1a.png)
if(Write_Reg)
begin
case(Sel)
2'b00: W_Data= 32'h1234_5678;
2'b01: W_Data= 32'h89AB_CDEF;
2'b10: W_Data= 32'h7FFF_FFFF;
2'b11: W_Data= 32'hFFFF_FFFF;
if(Reset)
begin
REG_Files[0]<=32'h0000_0000;
for(n=1;n<=31;n=n+1)
REG_Files[n]<=32'h0000_0000;
end
else
begin
if(Write_Reg&~W_Addr)
REG_Files[W_Addr]<=W_data;
end
REG RU1(Clk,Reset,Reg_Addr,Reg_Addr,Reg_Addr,W_Data,Write_Reg,R_Data_A,R_Data_B);
assign LED_Data=AB?R_Data_A : R_Data_B;
always @(*)
begin
W_Data=32'h0000_0000;
input Reset,
input [4:0] R_Addr_A,
input [4:0] R_Addr_B,
input [4:0] W_Addr,
input [31:0] W_data,
input Write_Reg,
output [31:0] R_Data_A,
4 堆栈寄存器实验
![4 堆栈寄存器实验](https://img.taocdn.com/s3/m/e93e3415964bcf84b9d57b84.png)
堆栈寄存器实验一、实验目的1、熟悉堆栈概念2、熟悉堆栈寄存器的组成和硬件电路二、实验要求按照实验步骤完成实验项目,对4个堆栈寄存器进行读出、写入数据操作。
三、实验原理1、堆栈寄存器组实验构成(图2-5-1)本系统内有4个寄存器R0~R3,寄存器组由4个74LS374组成,由1片74LS139(2-4译码器)来选择4个74LS374,并且由2片74LS32来组成控制线。
8芯插座R-IN、R-OUT作为数据输入、输出端,可通过短8芯扁平电缆把数据输入、输出端连接到数据总线上。
图2-5-12、堆栈寄存器组原理由SA、SB两根控制线通过74LS139译码来选择4个寄存器(74LS374)。
当WR=0时,表示数据总线向寄存器写入数据,RCK为寄存器的工作脉冲,在有上升沿时把总线上数据打入74LS139选择的那个寄存器。
当RR=0时,74LS139所选择的寄存器上的数据输出至数据总线。
在本系统内使用了WR=0作为写入允许,RCK信号为上升沿时打入数据、RR=0时数据输出。
3、控制信号说明四、实验步骤实验1 对4个寄存器进行写入操作将R-IN(8芯盒形插座)与CPT-B板上的二进制开关单元中J03插座相连(对应二进制开关H0~H7),R-OUT可通过短8芯扁平电缆与数据总线上DJ4相连。
把RR、WR、SA、SB接入二进制拨动开关(SA,SB借用X0,X1的H12,1、把数据写入寄存器R0)按启停单元中的运行按钮,置实验平台为运行状态。
置WR=0、RR=1按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把11H 打入R0寄存器。
2、把数据写入寄存器R1置二进制开关H0~H7(D0~D7)为22H,各控制信号对应开关如下表。
按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把22H 打入R1寄存器。
3、把数据写入寄存器R2按脉冲单元中的PLS1脉冲按键,在RCK上产生一个上升沿的脉冲,把33H 打入R2寄存器。
计算机组成原理实验报告寄存器
![计算机组成原理实验报告寄存器](https://img.taocdn.com/s3/m/95304c06844769eae009edeb.png)
计算机硬件实验室实验报告课程名称: 姓 名徐骁学 号33班 级0920542成 绩设备名称及软件环境 计算机、Proteus 仿真软件、模型机仿真软件实验名称 寄存器实验实验日期一.实验内容使用八位寄存器验证寄存器的存储功能。
二.理论分析或算法分析 SRAM 6264的功能6264的工作过程写入数据的过程工作方式 C S 1* C S 2 W E * O E * D 7~D 0未选中 未选中 读操作 写操作1 × 0 0× 0 1 1× × 1 0× × 0 1高阻 高阻 输出 输入将单元地址送到芯片的地址线A0-A12 写入的数据送数据线#CS1和CS2有效,#WE有效数据写到指定单元6264的工作过程读入数据的过程将单元的地址送到芯片的地址线A0-A12 #CS1和CS2同时有效,#WE=1 #OE=0 选中单元内容从数据线读出三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等)实验电路按照电路图连接电路。
发光二极管显示数据发光为1高电频不发光为0低电频单刀双掷开关控制数据的输入输出为控制运算器将内总线上输出运算结果,在其输出端连接了一个三态门(用74LS245实现)。
若要将运算结果输出到总线上,则要经过三态门74LS245的控制端ALU-B置低电平,否则输出高阻态。
数据输入单元用以给出参与运算的数据,其中输入开关经过一个三态门(74LS245)和内总线相连,该三态门的控制信号CE取低电平时,开关上的数据就通过三态门而送入内总线中。
四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)通过以上的步骤我们已经在通用寄存器组的三个寄存器中分别存入了一下数据,同时也读出了三个寄存器中存放的数据,具体数据如下表所示:R0R1R2写入01H80H40H读出01H80H40H五.结论按照实验要求进行连接和操作,对通用寄存器组进行了数据的写入和读出,两组数据完全对照,得到了预期效果,说明了存入数据的正确性,在整个过程中也对寄存器组的构成和硬件电路有了更深层次的理解。
实验周堆栈实验报告
![实验周堆栈实验报告](https://img.taocdn.com/s3/m/9ef7475277c66137ee06eff9aef8941ea76e4b30.png)
一、实验目的1. 理解堆栈的基本概念和原理。
2. 掌握堆栈的存储结构和操作方法。
3. 熟悉堆栈在程序设计中的应用。
二、实验原理堆栈(Stack)是一种先进后出(FILO)的数据结构,其基本原理是:在堆栈中插入或删除元素时,总是从栈顶开始操作。
堆栈的存储结构可以是数组、链表等。
三、实验环境1. 操作系统:Windows 102. 编程语言:C语言3. 开发环境:Visual Studio 2019四、实验内容与步骤1. 堆栈的定义与初始化首先,我们需要定义一个堆栈的数据结构,包括堆栈的存储空间、最大容量、栈顶指针等。
以下是用C语言定义堆栈的示例代码:```c#define MAX_SIZE 100typedef struct {int data[MAX_SIZE]; // 存储空间int top; // 栈顶指针} Stack;```然后,初始化堆栈,将栈顶指针置为-1,表示堆栈为空。
```cvoid InitStack(Stack s) {s->top = -1;}```2. 堆栈的入栈操作入栈操作是指在堆栈的栈顶插入一个新元素。
以下是实现入栈操作的代码:```cint IsFull(Stack s) {return s->top == MAX_SIZE - 1;}int Push(Stack s, int element) {if (IsFull(s)) {return 0; // 栈满}s->data[++s->top] = element;return 1;}```3. 堆栈的出栈操作出栈操作是指从堆栈中删除栈顶元素。
以下是实现出栈操作的代码:```cint IsEmpty(Stack s) {return s->top == -1;}int Pop(Stack s, int element) {if (IsEmpty(s)) {return 0; // 栈空}element = s->data[s->top--];return 1;}```4. 堆栈的遍历操作遍历操作是指依次访问堆栈中的所有元素。
实验二堆栈实验报告
![实验二堆栈实验报告](https://img.taocdn.com/s3/m/9d279636e2bd960590c677e2.png)
}
void Push (SeqStack *s,int x){ //入栈
if(s->top<maxlen-1 &&s->top>=-1){
s->top++;s->data[s->top]=x;
}else printf("effor");
}
void Pop (SeqStack *s){ //出栈
SeqStack s;
int i,len;
InitStack(&s);
len = strlen(s1);
for(i=0;i<len/2;i++){
s->top=-1;
return s;
}
int StackEmpty(SeqStack *s){ //判断栈是否为空
if(s->top>=0) return 0;
else return 1;
}
int GetTop(SeqStack *s){ //取栈顶元素
if(s->top<=maxlen-1 &&s->top>=0 ) return (s->data[s->top]);
else
return 1;
}
void Push(SeqStack *s,char x){//入栈
if(StackFull(*s))
printf("error");
else
{s->top++;s->data[s->top]=x;}
《计算机组成原理》实验报告——寄存器堆
![《计算机组成原理》实验报告——寄存器堆](https://img.taocdn.com/s3/m/fa2fe008aeaad1f347933fe7.png)
南通大学信息科学技术学院《计算机组成实验》实验报告实验寄存器堆的设计与实现一、实验目的1.熟悉Vivado软件的使用方法。
2.熟悉寄存器堆的功能。
3.掌握自顶而下的硬件模块设计方法。
4.掌握电路仿真测试方法,掌握仿真激励文件的编写,掌握仿真输出的分析方法。
二、实验任务设计一个寄存器堆,满足两路输出一路输入的功能,并完成仿真测试。
三、实验预习(1)实验电路原理及信号说明寄存器堆(REGFILE)是CPU组成的重要存储部件,也是数据通路中的重要部件,其主要功能是对数据进行存储。
在本实验中将为REGFILE构建32×32的寄存器组,即共有32个寄存器,每个寄存器的位宽都是32位。
32×32的REGFILE逻辑结构如图所示:具体设计如下:通过带有32个带使能端的D触发器实现数据的存储,5-32译码器实现地址与存储单元的连接选择,32位32选1选择器来实现输出。
(2)实验电路设计顶层文件:module REGFILE(Ra,Rb,D,Wr,We,Clk,Clrn,Qa,Qb);input [4:0]Ra,Rb,Wr;input [31:0]D;input We,Clk,Clrn;output [31:0]Qa,Qb;wire [31:0]Y;wire[31:0]Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q11,Q 10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0;DEC5T32E dec(Wr,We,Y);REG32reg32(D,Y,Clk,Clrn,Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q 13,Q12,Q11,Q10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0);MUX32X32select1(Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q11 ,Q10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0,Ra,Qa);MUX32X32select2(Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q11 ,Q10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0,Rb,Qb);Endmodule5-32地址译码器:module DEC5T32E(I,En,Y);input [4:0] I;input En;output [31:0] Y;reg [31:0] Y;always@(En or I)beginif(En)begincase(I)5'b00000:Y=32'b00000000000000000000000000000001;5'b00001:Y=32'b00000000000000000000000000000010;5'b00010:Y=32'b00000000000000000000000000000100;5'b00011:Y=32'b00000000000000000000000000001000;5'b00100:Y=32'b00000000000000000000000000010000;5'b00101:Y=32'b00000000000000000000000000100000;5'b00110:Y=32'b00000000000000000000000001000000;5'b00111:Y=32'b00000000000000000000000010000000;5'b01000:Y=32'b00000000000000000000000100000000;5'b01001:Y=32'b00000000000000000000001000000000;5'b01010:Y=32'b00000000000000000000010000000000;5'b01011:Y=32'b00000000000000000000100000000000;5'b01100:Y=32'b00000000000000000001000000000000;5'b01101:Y=32'b00000000000000000010000000000000;5'b01110:Y=32'b00000000000000000100000000000000;5'b01111:Y=32'b00000000000000001000000000000000;5'b10000:Y=32'b00000000000000010000000000000000;5'b10001:Y=32'b00000000000000100000000000000000;5'b10010:Y=32'b00000000000001000000000000000000;5'b10011:Y=32'b00000000000010000000000000000000;5'b10100:Y=32'b00000000000100000000000000000000;5'b10101:Y=32'b00000000001000000000000000000000;5'b10110:Y=32'b00000000010000000000000000000000;5'b10111:Y=32'b00000000100000000000000000000000;5'b11000:Y=32'b00000001000000000000000000000000;5'b11001:Y=32'b00000010000000000000000000000000;5'b11010:Y=32'b00000100000000000000000000000000;5'b11011:Y=32'b00001000000000000000000000000000;5'b11100:Y=32'b00010000000000000000000000000000;5'b11101:Y=32'b00100000000000000000000000000000;5'b11110:Y=32'b01000000000000000000000000000000;5'b11111:Y=32'b10000000000000000000000000000000;endcaseendelseY=32'b00000000000000000000000000000000;endendmodule32位寄存器moduleREG32(D,En,Clk,Clrn,Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q1 3,Q12,Q11,Q10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0);input[31:0]D,En;input Clk,Clrn;output[31:0]Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q11 ,Q10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0;wire[31:0]Qn31,Qn30,Qn29,Qn28,Qn27,Qn26,Qn25,Qn24,Qn23,Qn22,Qn21,Qn20,Qn19,Qn18,Qn17,Qn16,Qn15,Qn 14,Qn13,Qn12,Qn11,Qn10,Qn9,Qn8,Qn7,Qn6,Qn5,Qn4,Qn3,Qn2,Qn1,Qn0;D_FFEC32 q31(D,Clk,En[31],Clrn,Q31,Qn31);D_FFEC32 q30(D,Clk,En[30],Clrn,Q30,Qn30);D_FFEC32 q29(D,Clk,En[29],Clrn,Q29,Qn29);D_FFEC32 q28(D,Clk,En[28],Clrn,Q28,Qn28);D_FFEC32 q27(D,Clk,En[27],Clrn,Q27,Qn27);D_FFEC32 q26(D,Clk,En[26],Clrn,Q26,Qn26);D_FFEC32 q25(D,Clk,En[25],Clrn,Q25,Qn25);D_FFEC32 q24(D,Clk,En[24],Clrn,Q24,Qn24);D_FFEC32 q23(D,Clk,En[23],Clrn,Q23,Qn23);D_FFEC32 q22(D,Clk,En[22],Clrn,Q22,Qn22);D_FFEC32 q21(D,Clk,En[21],Clrn,Q21,Qn21);D_FFEC32 q20(D,Clk,En[20],Clrn,Q20,Qn20);D_FFEC32 q19(D,Clk,En[19],Clrn,Q19,Qn19);D_FFEC32 q18(D,Clk,En[18],Clrn,Q18,Qn18);D_FFEC32 q17(D,Clk,En[17],Clrn,Q17,Qn17);D_FFEC32 q16(D,Clk,En[16],Clrn,Q16,Qn16);D_FFEC32 q15(D,Clk,En[15],Clrn,Q15,Qn15);D_FFEC32 q14(D,Clk,En[14],Clrn,Q14,Qn14);D_FFEC32 q13(D,Clk,En[13],Clrn,Q13,Qn13);D_FFEC32 q12(D,Clk,En[12],Clrn,Q12,Qn12);D_FFEC32 q11(D,Clk,En[11],Clrn,Q11,Qn11);D_FFEC32 q10(D,Clk,En[10],Clrn,Q10,Qn10);D_FFEC32 q9(D,Clk,En[9],Clrn,Q9,Qn9);D_FFEC32 q8(D,Clk,En[8],Clrn,Q8,Qn8);D_FFEC32 q7(D,Clk,En[7],Clrn,Q7,Qn7);D_FFEC32 q6(D,Clk,En[6],Clrn,Q6,Qn6);D_FFEC32 q5(D,Clk,En[5],Clrn,Q5,Qn5);D_FFEC32 q4(D,Clk,En[4],Clrn,Q4,Qn4);D_FFEC32 q3(D,Clk,En[3],Clrn,Q3,Qn3);D_FFEC32 q2(D,Clk,En[2],Clrn,Q2,Qn2);D_FFEC32 q1(D,Clk,En[1],Clrn,Q1,Qn1);assign Q0=0;assign Qn0=0;endmodule32位32选1选择器moduleMUX32X32(Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q1 1,Q10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0,S,Y);input[31:0]Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q11,Q10, Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0;input [4:0]S;output [31:0]Y;function [31:0]select;input[31:0]Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q11,Q10, Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0;input [4:0]S;case(S)5'b00000:select=Q0;5'b00001:select=Q1;5'b00010:select=Q2;5'b00011:select=Q3;5'b00100:select=Q4;5'b00101:select=Q5;5'b00110:select=Q6;5'b00111:select=Q7;5'b01000:select=Q8;5'b01001:select=Q9;5'b01010:select=Q10;5'b01011:select=Q11;5'b01100:select=Q12;5'b01101:select=Q13;5'b01110:select=Q14;5'b01111:select=Q15;5'b10000:select=Q16;5'b10001:select=Q17;5'b10010:select=Q18;5'b10011:select=Q19;5'b10100:select=Q20;5'b10101:select=Q21;5'b10110:select=Q22;5'b10111:select=Q23;5'b11000:select=Q24;5'b11001:select=Q25;5'b11010:select=Q26;5'b11011:select=Q27;5'b11100:select=Q28;5'b11101:select=Q29;5'b11110:select=Q30;5'b11111:select=Q31;endcaseendfunctionassign Y =select(Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q11,Q10, Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0,S);endmoduleRTL视图如下:四、实验过程、数据记录与结果分析1.仿真测试文件:module REGFILE_Sim( );// REGFILE Inputsreg [4:0] Ra = 0 ;reg [4:0] Rb = 0 ;reg [4:0] Wr = 0 ;reg [31:0] D = 0 ;reg We = 0 ;reg Clk = 0 ;reg Clrn = 0 ;// REGFILE Outputswire [31:0] Qa ;wire [31:0] Qb ;REGFILE u_REGFILE (.Ra ( Ra [4:0] ),.Rb ( Rb [4:0] ),.Wr ( Wr [4:0] ),.D ( D [31:0] ),.We ( We ),.Clk ( Clk ),.Clrn ( Clrn ),.Qa ( Qa [31:0] ),.Qb ( Qb [31:0] ));initialbeginClk=0;We=0; D=0; Ra=0; Rb=0; Wr=1; Clrn=0;#10;endalways #10 Clk=~Clk;always #20 Ra=Ra+1;always #20 Rb=Rb+1;always #20 Wr=Wr+1;always #20 D=D+1;always #20 We=~We;always #100 Clrn=1;endmodule2.仿真测试结果:3.仿真测试结果分析开始时100ns内,Clrn=0,寄存器堆初始化清零,此期间内写入操作均无效,读出数据均为零。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机组成原理实验三
堆栈寄存器实验
一、实验目的:
1、熟悉堆栈概念。
2、熟悉堆栈寄存器的组成和硬件电路。
二、实验要求:
完成3个堆栈寄存器的数据写入与读出。
三、实验原理:
实验中所用的堆栈寄存器数据通路由三片8位字长的LS374组成R0、R1、R2寄存器堆。
三个寄存器的输入/输出已连至BUS总线R0-B、R1-B、R2-B经CBA二进制控制开关译码产生数据输出选通信号(详见下表),LDR0、LDR1、LDR2为数据写入允许信号,由
二进制控制开关来模拟,均为高电平有效;T4信号为寄存器数据写入脉冲,上升沿有效。
在手动实验状态(即“H”装态)每按动一次“单步”命令键,产生一个T4信号。
下表为寄存器单元选通真值表:
四、实验连接:
1.连接实验线路,把位于实验装置左上方的CTR-OUT UNIT (LDR0、LDR1、LDR2、/SW-B)与实验装置右中央的CTR-OUT unit (LDR0、LDR1、LDR2)及实验装置左下方INPUT-UNIT(/SW-B)中的控制信号作对应连接。
2.具体连接信号:/SW-B,/R0-B,/R1-B ,/R2-B ,LDR0,LDR1,LDR2
五、实验仪器状态设定:
在闪动的“P.”状态下按动“增址”命令键,使LED显示器自左向右第一位显示提示符“H”,表示本装置已进入手动单元实验状态。
五、实验项目:
(一)堆栈寄存器的写入
拨动二进制数据开关(INPUT-UNIT)向R0和R1寄存器置数(置数灯亮表示它所对应的数据位为“1”、反之为“0”)。
具体操作步骤图示如下:
[CBA=001] [LDR0=1] [LDR=1]
[LDR1=0] [LDR1=1]
[LDR2=0] [LDR2=0]
[按“STEP”] [按“STEP”] (二)堆栈寄存器的读出
关闭数据输入三态门(CBA=000),分别打开通用寄存器R0、R1、
R2输出控制位,当CBA=100时,总线指示灯(BUS-DISP UNIT)
显示R0中的数据01H;当CBA=101时,总线指示灯显示R1中
的数据80H;当CBA=110时,总线指示灯显示R2中等的数据(随机),可以观察到,显示的随机数为11111111.
(六)实验总结
通过本次实验的数据和理论分析进行比较、验证,我们熟悉了堆栈概念,熟悉了堆栈寄存器的组成和硬件电路等。