计算机组成实验报告_LAB5
计算机组成实验报告
![计算机组成实验报告](https://img.taocdn.com/s3/m/15adb12eed630b1c59eeb54f.png)
计算机组成实验报告
一、实验名称:计算机组成实验
二、实验人员:报告撰写人:
三、实验地点:
四、实验日期:
五、实验器材:10台废旧机(各种板卡齐全)1台新式机,几台故障机,螺丝刀等工具。
六、实验注意事项:
1.一定要断电后,再打开机箱拔插板卡。
2.不能强拔强插板卡。
3.实验完成后,将设备整理放好。
4.实验中如何有疑问举手示意不能自作主张,以免造成伤害。
七、实验目的:
1. 熟悉计算机硬件组成,了解各种板卡的功能作用。
2. 熟悉计算机外部组成,能够连接主机、显示器等硬件。
3. 能认出各种板卡会拔插板卡。
4.了解各种硬件故障及解决方法。
八、实验步骤:
1.复习回顾所学的有关计算机硬件的相关知识。
2.通过投影方式,展示计算机主机箱上的各种插孔的作用,连接显示器、键盘、鼠标等常用设备。
3.开机看效果。
然后关机断电打开机箱,先简单给学生们展示机箱内部的各种硬件(电源、显卡、声卡、CPU、内存、主板、网卡、光驱、硬盘等。
),在展示如何拔插各种板卡(注意不要强拆电源等部件)。
分成10组后指导学生实验。
实验后先让学生们组内讨论提出问题、再让有问题的学生提问,然后老师总结。
4.选取几台有故障的机子,由老师演示故障解决方法。
然后找动手能力强对计算机硬件熟悉的学生指导他完成故障的排除。
5.然后打开一台新式机,用投影让学生们找出各种板卡。
九、实验结论:
十、实验思考:
教师评语:。
计算机组成实验报告
![计算机组成实验报告](https://img.taocdn.com/s3/m/95af4f2d590216fc700abb68a98271fe910eaf17.png)
计算机组成实验报告计算机组成实验报告(共3篇)篇一:《计算机组成与结构》实验报告11 .实验目的:1).学习和了解TEC-2000 十六位机监控命令的用法;2).学习和了解TEC-2000 十六位机的指令系统;3).学习简单的TEC-2000 十六位机汇编程序设计;2.实验内容:1).使用监控程序的R 命令显示/修改寄存器内容、D 命令显示存储器内容、E 命令修改存储器内容;2).使用 A 命令写一小段汇编程序,U 命令反汇编刚输入的程序,用G 命令连续运行该程序,用T、P 命令单步运行并观察程序单步执行情况;3、实验步骤1).关闭电源,将大板上的COM1 口与PC 机的串口相连;2).接通电源,在PC 机上运行PCEC.EXE 文件,设置所用PC 机的串口为“1”或“2”, 其它的设置一般不用改动,直接回车即可;3).置控制开关为00101(连续、内存读指令、组合逻辑、16 位、联机),开关拨向上方表示“1”,拨向下方表示“0”,“X”表示任意。
其它实验相同;4).按一下“RESET”按键,再按一下“START”按键,主机上显示:TEC-2000 CRT MONITOR Version 1.0 April 2001Computer Architectur Lab.,Tsinghua University Programmed by He Jia >5).用R 命令查看寄存器内容或修改寄存器的内容a.在命令行提示符状态下输入:R↙;显示寄存器的内容图片已关闭显示,点此查看图片已关闭显示,点此查看b.在命令行提示符状态下输入:R R0↙;修改寄存器R0 的内容,被修改的寄存器与所赋值之间可以无空格,也可有一个或数个空格主机显示:寄存器原值:_在该提示符下输入新的值,再用R 命令显示寄存器内容,则R0 的内容变为0036。
图片已关闭显示,点此查看6).用D 命令显示存储器内容在命令行提示符状态下输入:D 2000↙会显示从2000H 地址开始的连续128 个字的内容;连续使用不带参数的 D 命令,起始地址会自动加128(即80H)。
计算机组成原理实验报告
![计算机组成原理实验报告](https://img.taocdn.com/s3/m/20c1f049bb1aa8114431b90d6c85ec3a87c28b0b.png)
计算机组成原理实验报告实验目的,通过本次实验,深入了解计算机组成原理的相关知识,掌握计算机硬件的基本组成和工作原理。
实验一,逻辑门电路实验。
在本次实验中,我们学习了逻辑门电路的基本原理和实现方法。
逻辑门电路是计算机中最基本的组成部分,通过逻辑门电路可以实现各种逻辑运算,如与门、或门、非门等。
在实验中,我们通过搭建逻辑门电路并进行实际操作,深入理解了逻辑门的工作原理和逻辑运算的实现过程。
实验二,寄存器和计数器实验。
在本次实验中,我们学习了寄存器和计数器的原理和应用。
寄存器是计算机中用于存储数据的重要部件,而计数器则用于实现计数功能。
通过实验操作,我们深入了解了寄存器和计数器的内部结构和工作原理,掌握了它们在计算机中的应用方法。
实验三,存储器实验。
在实验三中,我们学习了存储器的原理和分类,了解了不同类型的存储器在计算机中的作用和应用。
通过实验操作,我们进一步加深了对存储器的认识,掌握了存储器的读写操作和数据传输原理。
实验四,指令系统实验。
在本次实验中,我们学习了计算机的指令系统,了解了指令的格式和执行过程。
通过实验操作,我们掌握了指令的编写和执行方法,加深了对指令系统的理解和应用。
实验五,CPU实验。
在实验五中,我们深入了解了计算机的中央处理器(CPU)的工作原理和结构。
通过实验操作,我们学习了CPU的各个部件的功能和相互之间的协作关系,掌握了CPU的工作过程和运行原理。
实验六,总线实验。
在本次实验中,我们学习了计算机的总线结构和工作原理。
通过实验操作,我们了解了总线的分类和各种总线的功能,掌握了总线的数据传输方式和时序控制方法。
结论:通过本次实验,我们深入了解了计算机组成原理的相关知识,掌握了计算机硬件的基本组成和工作原理。
通过实验操作,我们加深了对逻辑门电路、寄存器、计数器、存储器、指令系统、CPU和总线的理解,为进一步学习和研究计算机组成原理奠定了坚实的基础。
希望通过不断的实践和学习,能够更深入地理解和应用计算机组成原理的知识。
计算机组成结构的实验报告
![计算机组成结构的实验报告](https://img.taocdn.com/s3/m/9489cfd1a32d7375a517808a.png)
计算机组成构造的实验报告(1)中央处理器:既常说的CPU,是一台计算机的运算核心和控制核心。
主要是解释计算机指令以及处理计算机软件中的数据。
CPU最核心的功能单元是存放器.CPU的主要性能指标为字节,时钟频率和缓存.主频也叫时钟频率,单位是MHz,用来表示CPU的运算速度。
CPU的主频与CPU实际的运算才能是没有直接关系。
当然,主频和实际的运算速度是有关的,只能说主频仅仅是CPU性能表现的一个方面,而不代表CPU的整体性能。
外频外频是CPU的基准频率,单位也是MHz。
CPU的外频决定着整块主板的运行速度。
CPU的位和字长位:在数字电路和电脑技术中采用二进制,代码只有“0”和“1”,其中无论是“0”或是“1”在CPU中都是一“位〞。
字长:电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制数的位数叫字长。
所以能处理字长为8位数据的CPU通常就叫8位的CPU。
同理32位的CPU就能在单位时间内处理字长为32位的二进制数据。
字节和字长的区别:由于常用的英文字符用8位二进制就可以表示,所以通常就将8位称为一个字节。
字长的长度是不固定的,对于不同的CPU、字长的长度也不一样。
8位的CPU一次只能处理一个字节,而32位的CPU一次就能处理4个字节,同理字长为64位的CPU一次可以处理8个字节。
缓存大小也是CPU的重要指标之一,而且缓存的构造和大小对CPU速度的影响非常大,CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和硬盘。
实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度提升CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此进步系统性能。
但是由于CPU芯片面积和本钱的因素来考虑,缓存都很小。
(2)存储器:由随机存储器(RAM)和只读存储器(ROM)组成. 内存又叫内部存储器〔RAM〕,有DDR、DDR II、DDR III三大类,容量1-8GB。
计算机组成原理 实验报告
![计算机组成原理 实验报告](https://img.taocdn.com/s3/m/356f8b60bdd126fff705cc1755270722182e5973.png)
计算机组成原理实验报告计算机组成原理实验报告引言:计算机组成原理是计算机科学与技术专业的重要课程,通过学习该课程,我们可以深入了解计算机的工作原理和内部结构。
本次实验旨在通过实际操作,加深对计算机组成原理的理解,并掌握一些基本的计算机硬件知识。
实验目的:1. 理解计算机的基本组成部分,包括中央处理器(CPU)、存储器、输入输出设备等;2. 掌握计算机的运行原理,了解指令的执行过程;3. 学习使用计算机组成原理实验箱,进行实际的硬件连接和操作。
实验过程:1. 实验一:组装计算机本次实验中,我们需要从零开始组装一台计算机。
首先,我们按照实验指导书的要求,选择合适的硬件组件,包括主板、CPU、内存、硬盘等。
然后,我们将这些硬件组件逐一安装到计算机箱中,并连接好电源线、数据线等。
最后,我们将显示器、键盘、鼠标等外设连接到计算机上。
2. 实验二:安装操作系统在计算机组装完成后,我们需要安装操作系统。
本次实验中,我们选择了Windows 10作为操作系统。
首先,我们将Windows 10安装盘插入计算机的光驱中,并重启计算机。
然后,按照安装向导的指引,选择安装语言、时区等相关设置。
最后,我们根据自己的需求选择安装方式,并等待操作系统安装完成。
3. 实验三:编写并执行简单的汇编程序在计算机组装和操作系统安装完成后,我们需要进行一些简单的编程实验。
本次实验中,我们选择了汇编语言作为编程工具。
首先,我们编写了一个简单的汇编程序,实现两个数相加的功能。
然后,我们使用汇编器将程序翻译成机器码,并将其加载到计算机的内存中。
最后,我们通过调试器来执行这个程序,并观察程序的执行结果。
实验结果与分析:通过本次实验,我们成功地组装了一台计算机,并安装了操作系统。
在编写并执行汇编程序的实验中,我们也成功地实现了两个数相加的功能。
通过观察程序的执行结果,我们发现计算机能够按照指令的顺序逐条执行,并得到正确的结果。
这进一步加深了我们对计算机的工作原理的理解。
计算机组成原理实验报告
![计算机组成原理实验报告](https://img.taocdn.com/s3/m/6e3bd286db38376baf1ffc4ffe4733687e21fcf4.png)
计算机组成原理实验报告
实验目的:
本实验的目的是通过进行计算机组成原理实验,深入理解计算机的基本组成和工作原理,掌握计算机硬件与软件之间的协同工作方式。
实验设备:
1. 计算机主机
2. 键盘
3. 鼠标
4. 显示器
实验步骤:
1. 打开计算机主机,并接通电源。
2. 等待计算机启动完毕,进入操作系统界面。
3. 输入用户名和密码,登录系统。
4. 在桌面上打开文本编辑器,并新建一个文档。
5. 在文档中输入一段文字,并保存文件。
6. 打开浏览器,进入互联网页面。
7. 在浏览器中输入搜索词语,并点击搜索按钮。
8. 查看搜索结果,并点击其中一个链接。
9. 在打开的页面上点击按钮或链接,进行相应操作。
10. 关闭浏览器。
11. 关闭文本编辑器,保存文档。
12. 关闭计算机主机。
实验结果:
通过完成以上步骤,我们成功地进行了计算机组成原理实验。
在电脑启动后,我们登录系统并使用了各种软件和外部设备。
计算机可以顺利地接收我们的指令,并作出相应的操作。
我们也能够通过互联网浏览页面,并进行搜索和点击链接操作。
实验总结:
通过本次实验,我们更加深入地理解了计算机的组成和工作原理。
计算机是由硬件和软件组成,硬件包括主机、键盘、鼠标、显示器等,软件包括操作系统、文本编辑器、浏览器等。
计算机的各个组件通过协同工作,实现了我们对计算和信息的处理。
掌握计算机组成原理对于我们更好地使用计算机和理解计算机科学的发展趋势具有重要意义。
计算机组装上机实验5篇
![计算机组装上机实验5篇](https://img.taocdn.com/s3/m/7c68c4b450e79b89680203d8ce2f0066f533641a.png)
计算机组装上机实验5篇第一篇:计算机组装上机实验计算机组装实验/实训内容实验一:认识计算机系统各个硬件及外设实验目的:了解计算机系统各个硬件的外形、特征实验重点:掌握各个部件在机箱内的位置实验难点:各个部件的防接错特征实验步骤:1.用螺丝刀拆卸计算机各个硬件,注意轻拿轻放,保护好螺丝不要丢失2.根据学过的每个硬件的知识观察各个硬件的外形、特征3.观察每个硬件在机箱里的位置4、写出实验心得体会实验二:AMD,Intel CPU编号识别实验目的:了解AMD,Intel CPU外形、接口特征实验重点:AMD,Intel CPU编号的辨别实验难点:AMD,Intel CPU的防接错特征实验步骤:1、根据每个人的电脑内的CPU来分别辨别不同厂商的CPU、型号、接口类型2、观察AMD及Intel CPU 外形、接口特征3、在实验报告上写出自己的CPU 厂商、型号、接口类型实验三:AMD,Intel CPU和风扇的安装实验目的:掌握AMD,Intel CPU的安装方法实验重点:AMD,Intel CPU安装方法实验难点:AMD,Intel CPU的防接错特征实验步骤:1、根据每个人的电脑内的CPU来分别辨别不同厂商的CPU、型号、接口类型2、观察AMD及Intel CPU 外形、接口特征3、安装AMD或Intel CPU到主板的CPU插槽上,同时安装散热风扇实验四:认识主板的结构实验目的:了解AMD,Intel CPU外形、接口特征实验重点:AMD,Intel CPU编号的辨别实验难点:AMD,Intel CPU的防接错特征实验步骤:2、根据每个人的电脑内的CPU来分别辨别不同厂商的CPU、型号、接口类型2、观察AMD及Intel CPU 外形、接口特征3、在实验报告上写出自己的CPU 厂商、型号、接口类型实验四:认识主板的结构实验目的:了解主板的结构和组成原理实验重点:主板上各个元器件的识别实验难点:主板上每个电子元器件的位置及特征实验步骤:1、观察自己的主机内的主板的厂商、型号2、观察主板上的各个电子元器件,能指出其名字3、观察南北桥芯片组及各种外设接口实验六:主板驱动程序的安装实验目的:掌握主板驱动程序的安装过程实验重点:不同主板的驱动安装实验难点:找到对应的主板驱动程序实验步骤:1、通过优化大师查看自己的主板的型号及厂商2、下载驱动程序或把主板光盘自带的驱动程序放入光驱3、安装驱动程序,重启实验七:内存的识别及参数测试实验目的:了解内存的外形、接口特征实验重点:内存的安装实验难点:参数的测试实验步骤:1、根据每个人的电脑内存来分别辨别不同厂商的内存型号、接口方式2、观察不同类型的内存的外形、接口特征3、在实验报告上写出自己的内存厂商、型号、接口类型及容量4.用内存测试工具软件Hwinfo32测试内存,观察内存的参数指标实验八:主流硬盘的编号参数识别实验目的:了解主流硬盘的编号参数和接口类型实验重点:主流硬盘的编号识别实验难点:硬盘的接口连接实验步骤:1、根据每个人的电脑硬盘来分别辨别不同厂商的硬盘型号、容量、接口方式2、观察不同类型的硬盘的外形、接口特征3、在实验报告上写出自己的硬盘的厂商、型号、接口类型及容量实验九:电源各种引线接口的连接实验目的:了解电源中各种引线的接口及连接设备实验重点:电源的引线连接到设备中实验难点:电源的安装实验步骤:1、根据每个人的电脑电源来分别辨别不同厂商的电源型号、引线的接口2、观察不同类型的电源的外形、接口特征3、在实验报告上写出自己的电源的厂商及接口的阵脚数实验十:键盘和鼠标的安装实验目的:掌握键盘和鼠标的安装方式实验重点:键盘鼠标的安装实验难点:接口的识别实验步骤:1、根据每个人的电脑键盘和鼠标来分别辨别不同厂商的键盘和鼠标的类型和厂商2、观察键盘和鼠标的外形、接口特征3、在实验报告上写出自己的键盘和鼠标的生产厂商及接口方式实验十一:显示器的相关设置实验目的:掌握显示器的菜单设置实验重点:对于分辨率、语言、对比度、亮度的设置实验难点:显示器的水纹、消磁功能的设置实验步骤:1、根据每个人的显示器的类型来辨别不同厂商的显示器的类型2、观察显示期的种类、接口特征、及厂商3、在实验报告上写出自己的显示器的生产厂商及类型4、运用显示器上的主菜单设置语言、对比度、亮度、尺寸、消磁、水纹等功能实验十二:计算机组装实训实验目的:掌握计算机中各种硬件的组装和连线实验重点:计算机中各种硬件的组装实验难点:各种硬件的数据及电源线连接实验步骤:1、把各种硬件按照组装的步骤把每个硬件按照到主板上固定好主板到机箱上2、注意螺丝不要拧死,硬件安装到位3、连接各种数据线和电源线4、连接外设5、通电检测6、排除故障实验十三:OFFICE 2003的安装与删除实验目的:掌握office2003的安装与删除的方法实验重点:office2003安装的步骤及目录实验难点:安装时有选择的安装软件实验步骤:1、把准备好的OFFICE 2003安装程序通过开始菜单----控制面板—添加删除程序2、如果是.EXE程序直接安装到制定的目录3、打开各个程序看看程序安装是否正确4、删除OFFICE 2003软件实验十四:OFFICE 2003的安装与删除实验目的:掌握office2003的安装与删除的方法实验重点:office2003安装的步骤及目录实验难点:安装时有选择的安装软件实验步骤:4、把准备好的OFFICE 2003安装程序通过开始菜单----控制面板—添加删除程序5、如果是.EXE程序直接安装到制定的目录6、打开各个程序看看程序安装是否正确4、删除OFFICE 2003软件第二篇:计算机组装上机实验报告西安邮电大学计算机装配调试上机实习报告书系部名称:学生姓名:专业班级:学号:指导教师:计算机学院网络实习时间: 2014年12月22日至2014年12月26 日上机实习报告一、实习任务目标帮助我们了解计算机的组成以及性能,还有能对计算机进行基本的操作。
计算机组成原理实验报告
![计算机组成原理实验报告](https://img.taocdn.com/s3/m/841046d6ba4cf7ec4afe04a1b0717fd5360cb267.png)
计算机组成原理实验报告计算机组成原理实验报告姓名:专业:计算机科学与技术学号:计算机组成原理实验(⼀)实验题⽬:时标系统的设置和组合成绩:⼀、实验⽬的1、了解时标系统的作⽤2、会设计、组装简单的时标发⽣器⼆、实验内容参照时标系统的设计⽅法,⽤组合逻辑⽅法设计⼀个简单的节拍脉冲发⽣器,产⽣图1-6所⽰的节拍脉冲,并⽤单脉冲验证设计的正确性。
在实验报告中画出完整电路,写出1W 、0W 和1N 的表达式。
图1-6 简单的节拍脉冲发⽣器⼀周期的波形设计提⽰:1、由波形图求出节拍脉冲1W 和0W 的表达式,进⽽组合成1N 的表达式。
2、注意节拍电平1T 和0T 的翻转时刻应在0M 下降沿与M 的上升沿同时出现的时刻。
3、注意D 触发器的触发翻转要求。
三、实验仪器及器材1、计算机组成原理实验台和+5V 直流稳压电源2、集成电路由附录A “集成电路清单”内选⽤四、实验电路原理(实验电路原理图)时标系统主要由时钟脉冲发⽣器、启停电路和节拍脉冲发⽣器三部分组成成,结构如图1-1所⽰。
图1-1 时标系统组成1、时钟脉冲发⽣器主要由振荡电路、分频电路组成,其作⽤是产⽣⼀定频率的时钟脉冲,作为计算机中基准时钟信号。
如图1-2所⽰。
图1-2 时钟脉冲发⽣器组成2、启停电路计算机是靠⾮常严格的节拍脉冲,按时间的先后次序⼀步⼀步地控制各部件⼯作的,所以,机器启停的标志是有⽆节拍脉冲,⽽控制节拍脉冲按⼀定的时序发⽣和停⽌,不能简单地⽤电源开关来实现。
如图1-3所⽰。
图1-3 简单的启停电路为了使机器可靠地⼯作,要求启停电路在机器启动或停机时,保证每次从规定的第⼀个脉冲开始启动,到最后⼀个脉冲结束才停机,并且必须保证第⼀个和最后⼀个脉冲的波形完整。
如图1-4所⽰。
图1-4 利⽤维持阻塞原理的启停电路3、节拍脉冲发⽣器节拍脉冲发⽣器的作⽤是产⽣⼀序列的节拍电平和⼯作脉冲。
节拍电平是保证计算机微操作的时序性,⼯作脉冲是各寄存器数据的打⼊脉冲。
计算机组成原理实验报告
![计算机组成原理实验报告](https://img.taocdn.com/s3/m/82da893b30b765ce0508763231126edb6e1a765c.png)
计算机组成原理实验报告计算机组成原理实验报告引言:计算机组成原理是计算机科学与技术专业的重要课程之一,通过实验可以更好地理解和掌握计算机的组成原理。
本篇实验报告将介绍我们在计算机组成原理实验中所进行的实验内容和实验结果。
实验一:逻辑门电路设计在这个实验中,我们学习了逻辑门电路的设计和实现。
通过使用门电路,我们可以实现与门、或门、非门等基本逻辑运算。
我们首先学习了逻辑门电路的真值表和逻辑代数的基本运算规则,然后根据实验要求,使用逻辑门电路设计了一个简单的加法器电路,并通过仿真软件进行了验证。
实验结果表明,我们设计的加法器电路能够正确地进行二进制数的加法运算。
实验二:数字逻辑电路实现在这个实验中,我们进一步学习了数字逻辑电路的实现。
通过使用多路选择器、触发器等数字逻辑元件,我们可以实现更复杂的逻辑功能。
我们首先学习了多路选择器的原理和使用方法,然后根据实验要求,设计了一个4位二进制加法器电路,并通过数字逻辑实验板进行了搭建和测试。
实验结果表明,我们设计的4位二进制加法器能够正确地进行二进制数的加法运算。
实验三:存储器设计与实现在这个实验中,我们学习了存储器的设计和实现。
存储器是计算机中用于存储和读取数据的重要组成部分。
我们首先学习了存储器的基本原理和组成结构,然后根据实验要求,设计了一个简单的8位存储器电路,并通过实验板进行了搭建和测试。
实验结果表明,我们设计的8位存储器能够正确地存储和读取数据。
实验四:计算机硬件系统设计与实现在这个实验中,我们学习了计算机硬件系统的设计和实现。
计算机硬件系统是计算机的核心部分,包括中央处理器、存储器、输入输出设备等。
我们首先学习了计算机硬件系统的基本原理和组成结构,然后根据实验要求,设计了一个简单的计算机硬件系统,并通过实验板进行了搭建和测试。
实验结果表明,我们设计的计算机硬件系统能够正确地进行指令的执行和数据的处理。
结论:通过这些实验,我们深入学习了计算机组成原理的相关知识,并通过实践掌握了计算机组成原理的基本原理和实现方法。
计算机组成原理实验报告
![计算机组成原理实验报告](https://img.taocdn.com/s3/m/925b627aef06eff9aef8941ea76e58fafab045bb.png)
计算机组成原理实验报告实验目的:本次实验旨在通过构建一个简单的计算机系统,了解和掌握计算机组成原理的基本知识和相关操作技能。
实验仪器和材料:1.计算机硬件:CPU、内存、硬盘、主板等。
2. 操作系统:Windows。
3. 实验软件:C++ 编程语言、IDE(如Visual Studio)。
4.实验文档:笔记本电脑。
实验原理:1.CPU:中央处理器,是计算机系统的核心组成部分,负责所有数据的处理和执行。
2.内存:主要用于存储计算机程序和数据,是计算机系统的临时存储器。
3.硬盘:主要用于长期存储计算机程序、数据和操作系统等。
4.主板:是计算机系统的主要组成部分,承载了CPU、内存、硬盘等主要硬件,并提供各种接口和插槽。
5.操作系统:是计算机系统的核心软件,负责管理和协调各种硬件和软件资源,为用户提供友好的界面和功能。
实验步骤:1.准备实验材料和工具,搭建计算机系统。
将CPU、内存、硬盘等硬件安装到主板上,连接好相应的电源线和数据线,确保硬件正常工作。
2. 启动计算机,在操作系统中打开C++编程语言的IDE(如Visual Studio)。
3. 编写一个简单的程序,例如输出"Hello, world!"。
4.进行编译和链接,生成可执行文件。
5.运行程序,观察计算机系统的运行情况。
6.分析程序的运行结果,查看计算机系统的资源占用情况。
7.修改程序,并再次进行编译、链接和运行,观察结果。
实验结果和分析:通过以上实验步骤,我们成功搭建了一个计算机系统,并在操作系统中编写、编译和运行了一个简单的程序。
从实验结果可以看出,计算机系统能够正常工作,在屏幕上正确地输出了"Hello, world!"。
根据程序的运行情况,我们可以观察到计算机系统的CPU占用率、内存占用率和硬盘读写速度等性能指标。
在修改程序并重新运行后,我们可以观察到不同的运行结果,进一步分析计算机系统的性能和资源占用情况。
计算机组成原理的实验报告
![计算机组成原理的实验报告](https://img.taocdn.com/s3/m/9fcbc62b00f69e3143323968011ca300a7c3f677.png)
计算机组成原理的实验报告一、实验目的本次实验的主要目的是深入理解计算机组成原理中的关键概念和组件,通过实际操作和观察,增强对计算机硬件系统的认识和掌握能力。
具体包括:1、了解计算机内部各部件的工作原理和相互关系。
2、熟悉计算机指令的执行流程和数据的传输方式。
3、掌握计算机存储系统的组织和管理方法。
4、培养分析和解决计算机硬件相关问题的能力。
二、实验设备本次实验使用的设备包括计算机、逻辑分析仪、示波器以及相关的实验软件和工具。
三、实验内容1、运算器实验进行了简单的算术运算和逻辑运算,如加法、减法、与、或等操作。
观察运算结果在寄存器中的存储和变化情况。
2、控制器实验模拟了指令的取指、译码和执行过程。
分析不同指令对计算机状态的影响。
3、存储系统实验研究了内存的读写操作和地址映射方式。
考察了缓存的工作原理和命中率的计算。
4、总线实验观察数据在总线上的传输过程和时序。
分析总线竞争和仲裁的机制。
四、实验步骤1、运算器实验步骤连接实验设备,将运算器模块与计算机主机相连。
打开实验软件,设置运算类型和操作数。
启动运算,通过逻辑分析仪观察运算过程中的信号变化。
记录运算结果,并与预期结果进行比较。
2、控制器实验步骤连接控制器模块到计算机。
输入指令序列,使用示波器监测控制信号的产生和变化。
分析指令执行过程中各个阶段的状态转换。
3、存储系统实验步骤搭建存储系统实验电路。
进行内存读写操作,改变地址和数据,观察存储单元的内容变化。
分析缓存的替换策略和命中率的影响因素。
4、总线实验步骤连接总线模块,配置总线参数。
多个设备同时发送数据,观察总线的仲裁过程。
测量数据传输的时序和带宽。
五、实验结果与分析1、运算器实验结果加法、减法等运算结果准确,符合预期。
逻辑运算的结果也正确无误。
观察到在运算过程中,寄存器的值按照预定的规则进行更新。
分析:运算器的功能正常,能够准确执行各种运算操作,其内部的电路和逻辑设计合理。
2、控制器实验结果指令能够正确取指、译码和执行,控制信号的产生和时序符合指令的要求。
计算机组成原理实训报告
![计算机组成原理实训报告](https://img.taocdn.com/s3/m/8efce027f08583d049649b6648d7c1c709a10b50.png)
计算机组成原理实训报告一、实训目的:通过组装一台计算机的过程,了解计算机硬件的基本组成和工作原理,同时掌握基本的电路板安装、处理器安装、内存安装等技能,为后续深入学习计算机组成原理打下坚实的基础。
二、实训内容:1、了解计算机硬件的基本组成计算机硬件主要包括:中央处理器、主板、内存、硬盘、显卡、显示器、键盘、鼠标等几大部分。
其中,中央处理器是计算机的核心,主板则是所有硬件的“聚集地”。
2、组装主板将主板放在静电袋或木质地板上,然后拆开盒子,将主板细心取出。
接着,将主板放在工作台上,按照说明书的指引,将主板上的电缆连接好。
这里需要格外注意的是,在连接电缆时,一定要仔细看清楚颜色、形状等等,确保每个接口都连接正确,否则可能会损坏主板或部件。
连接好电缆后,就可以固定主板,这里需要用到万能螺丝批或螺丝刀,注意固定螺丝时,不要太紧或太松。
3、安装处理器取出处理器和CPU插座,注意处理器的芯片不要被碰到,如果碰到了,要通过等候其余部件放置的时间让其自然降温。
在插入处理器时,需要轻轻捏住其两侧,然后慢慢放到插座上,最后放平并按固定处理器的夹子。
4、安装内存取出内存条和内存插槽,然后根据内存条的数量和插槽的预置情况,将内存条慢慢推进内存插槽里。
插好后,要注意内存条后面的小夹子是否已经弹起并插好,这样确定内存条被稳定插好。
5、安装显卡取出显卡和插卡槽,然后根据显卡的长度,将插卡槽拿开卡扣并打开来,将显卡轻轻插入卡槽,确保卡槽和卡片的连接扎实无比,随后按照说明书的指引连接电缆。
6、安装硬盘将硬盘取出,注意不要碰到硬盘的金属部分。
然后在主板上将硬盘电缆插好,将硬盘安装到电脑箱中,注意定位好挂载控制卡的瞪口,连好硬盘电源线,将硬盘固定在盘架上即可。
三、实训感悟通过这次实训,我可以更加具体深入地了解到计算机硬件之间的连接、组合,以及电路板、处理器等元器件的基本安装方法和使用技巧,让我对计算机硬件的工作原理有了更加深刻的理解,并对后续的计算机组成原理的学习打下了坚实的基础,同时也在实践中掌握了实际动手操作的技能,即将理论知识转换成实践动作的能力,这对我未来的职业道路将会大有裨益。
计算机组成原理实验报告
![计算机组成原理实验报告](https://img.taocdn.com/s3/m/8e68394d0029bd64793e2cac.png)
1. 寄存器五、实验总结按照实验要求进行连接和操作,对通用寄存器组进行了数据的写入和读出,两组数据完全对照,得到了预期效果,说明了存入数据的正确性,在整个过程中也对寄存器组的构成和硬件电路有了更深层次的理解。
2. 运算器五、实验总结基本熟悉了整个实验系统的基本结构,了解了该实验装置按功能分成几大区,学会何时操作各种开关、按键。
最重要的是通过实验掌握了运算器工作原理,熟悉了算术/逻辑运算的运算过程以及控制这种运算的方法,了解了进位对算术与逻辑运算结果的影响,对时序是如何起作用的没太弄清楚,相信随着后续实验的进行一定会搞清楚的3。
存储器五、实验总结按照实验要求连接器材设备元件,按照给定步骤进行实验操作.通过向静态RAM中写入数据并读出数据,在INPUT单元输入数并存入地址寄存器,再向相应的地址单元存入数,验证读出数据时,只需再INPUT单元输入想要读出单元的地址,再通过片选端CE读出存储单元内的数据,其中We=0是控制写端,WE=1控制读,CE低电平有效。
实验过程遇到一些问题,对实验内容不是很熟,有待提高。
4. CPU与简单模型机设计实验一、实验目的(1) 掌握一个简单CPU的组成原理.(2)在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机。
(3)为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念.二、实验设备PC机一台,TD—CMA实验系统一套。
三、实验原理本实验要实现一个简单的CPU,并且在此CPU的基础上,继续构建一个简单的模型计算机。
CPU 由运算器(ALU)、微程序控制器(MC)、通用寄存器(R0),指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图5-1—1 所示。
这个CPU 在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU 必须和主存挂接后,才有实际的意义,所以还需要在该CPU的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。
计算机组成原理实验报告
![计算机组成原理实验报告](https://img.taocdn.com/s3/m/da53fc24001ca300a6c30c22590102020740f2ff.png)
计算机组成原理实验报告一、实验目的通过本次实验,我们旨在深入了解计算机组成原理的相关知识,并通过实际操作,加深对计算机组成原理的理解。
具体目的如下:1.了解计算机的基本组成部件,包括CPU、内存、输入/输出设备等;2.学习计算机的基本工作原理,包括数据的输入、存储、处理和输出;3.熟悉计算机指令的执行过程,包括指令的取址、译码和执行;4.通过实验,巩固对计算机硬件及其工作方式的理解。
二、实验内容本次实验主要包括以下几个部分的内容:1.CPU的组成和工作原理2.存储器的组成和工作原理3.输入/输出设备的组成和工作原理4.计算机指令的执行过程三、实验装置和材料1.计算机主机2.显示器3.键盘4.鼠标5.实验板6.逻辑门集成电路7.示波器8.万用表四、实验步骤1.将计算机主机、显示器、键盘和鼠标连接好,并确保正常运行;2.连接实验板和逻辑门集成电路,搭建一个简单的逻辑电路;3.使用示波器和万用表测量逻辑电路的信号波形和电压;4.编写一个简单的汇编程序,包括输入、存储、处理和输出过程;5.使用计算机主机执行编写的汇编程序,并观察程序的执行过程。
五、实验结果与分析在本次实验中,我们成功地搭建了一个简单的逻辑电路,并使用示波器和万用表对其进行了测量。
通过测量,我们发现信号的电压和波形符合预期。
这说明逻辑电路的组成是正确的,能够正常工作。
在编写的汇编程序的执行过程中,我们观察到输入的数据被存储到内存中,并经过CPU的处理后,最终输出到显示器上。
这验证了计算机的基本工作原理,即数据的输入、存储、处理和输出。
六、实验总结通过本次实验,我们深入了解了计算机组成原理的相关知识,对计算机的基本组成部件、工作原理和指令执行过程有了更深入的理解。
通过实际操作,我们学会了如何搭建一个简单的逻辑电路,并对其进行测量和观察。
总体而言,本次实验对于我们进一步学习和掌握计算机组成原理非常有帮助。
通过实际操作和实验结果的观察,我们对计算机的工作方式有了更加清晰的认识。
计算机组成原理课程设计的实验报告
![计算机组成原理课程设计的实验报告](https://img.taocdn.com/s3/m/f37b0aebc0c708a1284ac850ad02de80d4d80608.png)
计算机组成原理课程设计的实验报告实验报告:计算机组成原理课程设计摘要:本实验报告旨在介绍计算机组成原理课程设计的实验过程和结果。
该实验旨在深入理解计算机的组成和工作原理,并通过设计和实现一个简单的计算机系统来加深对计算机组成原理的理解。
本实验报告将包括实验的目的、实验环境、实验步骤、实验结果以及实验的分析和讨论。
1. 实验目的:本实验的目的是通过设计和实现一个简单的计算机系统,加深对计算机组成原理的理解。
具体目标包括:- 理解计算机的基本组成和工作原理;- 掌握计算机硬件的设计和实现方法;- 学习使用计算机组成原理相关的软件工具。
2. 实验环境:本实验所需的硬件和软件环境如下:- 硬件环境:一台支持计算机组成原理课程设计的计算机;- 软件环境:计算机组成原理相关的软件工具,如Xilinx ISE、ModelSim等。
3. 实验步骤:本实验的步骤主要包括以下几个部分:3.1 系统需求分析在设计计算机系统之前,首先需要明确系统的需求和功能。
根据实验要求,我们需要设计一个简单的计算机系统,包括指令集、寄存器、运算单元等。
3.2 系统设计根据系统需求分析的结果,进行系统设计。
设计包括指令集的设计、寄存器的设计、运算单元的设计等。
3.3 系统实现在系统设计完成后,需要进行系统的实现。
具体步骤包括使用硬件描述语言(如VHDL)进行电路设计,使用Xilinx ISE进行逻辑综合和布局布线,最终生成bit文件。
3.4 系统测试在系统实现完成后,需要进行系统的测试。
测试包括功能测试和性能测试。
功能测试主要是验证系统是否按照设计要求正常工作;性能测试主要是测试系统的性能指标,如运行速度、吞吐量等。
4. 实验结果:经过实验,我们成功设计和实现了一个简单的计算机系统。
该系统具有以下特点:- 指令集:支持基本的算术运算和逻辑运算;- 寄存器:包括通用寄存器、程序计数器、指令寄存器等;- 运算单元:包括算术逻辑单元(ALU)和控制单元。
计算机组成实验报告单
![计算机组成实验报告单](https://img.taocdn.com/s3/m/52cf3239f4335a8102d276a20029bd64793e626e.png)
一、实验名称:计算机组成原理实验二、实验目的:1. 理解计算机组成原理的基本概念和组成结构;2. 掌握计算机各个组成部分的功能和工作原理;3. 熟悉计算机各组成部分之间的连接方式和通信机制;4. 提高动手能力和实验操作技能。
三、实验内容:1. 计算机硬件组成结构认识实验;2. 数据总线、地址总线、控制总线实验;3. 存储器实验;4. 运算器实验;5. 输入/输出设备实验;6. 计算机体系结构实验。
四、实验步骤及原理:1. 计算机硬件组成结构认识实验(1)实验步骤:a. 观察计算机主机、显示器、键盘、鼠标等硬件设备;b. 分析各个硬件设备的功能和作用;c. 拆卸主机,观察内部硬件设备;d. 分析内部硬件设备之间的连接方式。
(2)实验原理:计算机硬件组成结构主要包括主机、显示器、键盘、鼠标等外部设备,以及内部各个功能模块,如中央处理器(CPU)、内存、硬盘、显卡等。
各个硬件设备通过数据总线、地址总线、控制总线连接,实现数据传输、指令执行、信息处理等功能。
2. 数据总线、地址总线、控制总线实验(1)实验步骤:a. 使用示波器观察数据总线、地址总线、控制总线上的信号;b. 分析信号的变化规律,判断信号类型;c. 实现信号传输,观察传输效果。
(2)实验原理:数据总线、地址总线、控制总线是计算机系统中重要的传输通道。
数据总线用于传输数据,地址总线用于传输地址,控制总线用于传输控制信号。
实验中,通过示波器观察总线信号,分析信号变化规律,判断信号类型,实现信号传输。
3. 存储器实验(1)实验步骤:a. 使用存储器芯片,搭建存储器模块;b. 编写程序,对存储器进行读写操作;c. 观察读写结果,分析存储器工作原理。
(2)实验原理:存储器是计算机系统中用于存储数据和指令的设备。
实验中,通过搭建存储器模块,实现数据的读写操作,观察读写结果,分析存储器工作原理。
4. 运算器实验(1)实验步骤:a. 使用运算器芯片,搭建运算器模块;b. 编写程序,对运算器进行算术运算和逻辑运算;c. 观察运算结果,分析运算器工作原理。
计算机组成运算器实验报告
![计算机组成运算器实验报告](https://img.taocdn.com/s3/m/bcd683bc900ef12d2af90242a8956bec0975a5c6.png)
计算机组成运算器实验报告《计算机组成运算器实验报告》摘要:本实验旨在通过实验操作,深入理解计算机组成原理中的运算器部分。
通过对运算器的组成结构和工作原理进行研究和实验,加深对计算机内部运算过程的理解。
一、实验目的1. 了解运算器的基本组成结构和工作原理;2. 掌握运算器的逻辑运算和算术运算的实现方法;3. 通过实验操作,加深对计算机组成原理中运算器部分的理解。
二、实验设备1. 计算机组成原理实验箱;2. 逻辑门、加法器、寄存器等实验器件;3. 万用表、示波器等实验仪器。
三、实验内容1. 运算器的基本组成结构及功能分析;2. 运算器的逻辑运算和算术运算实验操作;3. 运算器的工作原理分析及实验验证。
四、实验结果与分析通过实验操作,成功实现了运算器的逻辑运算和算术运算,并对其工作原理进行了深入分析。
实验结果表明,运算器的逻辑运算和算术运算均能够按照设计要求进行,符合计算机组成原理中的相关理论知识。
五、实验结论通过本实验,加深了对计算机组成原理中运算器部分的理解,掌握了运算器的基本组成结构和工作原理,并成功实现了相关实验操作。
这对于进一步深入学习计算机组成原理和计算机系统结构具有重要意义。
六、实验感想本实验让我对计算机组成原理中的运算器部分有了更深入的理解,也增强了我对计算机内部运算过程的认识。
通过实际操作,我对计算机组成原理的相关知识有了更加直观的认识,对于今后深入学习计算机相关课程和进行科研工作具有积极的促进作用。
通过本次实验,我对计算机组成原理中的运算器部分有了更深入的理解,也增强了我对计算机内部运算过程的认识。
通过实际操作,我对计算机组成原理的相关知识有了更加直观的认识,对于今后深入学习计算机相关课程和进行科研工作具有积极的促进作用。
电脑组成实验报告
![电脑组成实验报告](https://img.taocdn.com/s3/m/731845a8bb0d4a7302768e9951e79b8969026807.png)
一、实验目的1. 了解电脑的基本组成和各部件的功能。
2. 掌握电脑各部件的安装和连接方法。
3. 熟悉电脑组装的基本流程和注意事项。
二、实验器材1. 电脑主机箱2. CPU3. 主板4. 内存条5. 硬盘6. 光驱7. 显卡8. 电源9. 机箱电源线10. 数据线11. 键盘12. 鼠标13. 显示器14. 工具(如螺丝刀、扳手等)三、实验步骤1. 组装主机箱(1)打开主机箱,取出主板、CPU、内存条、硬盘、光驱、显卡等部件。
(2)将主板固定在主机箱内,确保主板与机箱之间的距离合适。
(3)安装CPU,将CPU插入主板上的CPU插槽,并固定好。
(4)安装内存条,将内存条插入主板上的内存插槽,并固定好。
(5)安装硬盘和光驱,将硬盘和光驱插入主机箱内的相应插槽,并固定好。
(6)安装显卡,将显卡插入主板上的PCI-E插槽,并固定好。
2. 连接电源和线缆(1)将机箱电源线插入主板上的电源接口。
(2)将电源线连接到电源,确保电源已经打开。
(3)将数据线连接到硬盘和光驱。
(4)将显卡的电源线连接到电源。
3. 连接外部设备(1)将键盘、鼠标和显示器连接到主机箱。
(2)将显示器连接到显卡。
4. 组装电源(1)将电源安装在主机箱内,确保电源的散热孔朝外。
(2)将电源线连接到各部件。
5. 组装显示器(1)将显示器放置在合适的位置。
(2)将显示器连接到显卡。
四、实验结果与分析1. 实验结果经过组装,一台电脑的基本组成部件已经安装完毕,包括CPU、主板、内存条、硬盘、光驱、显卡、电源、键盘、鼠标和显示器。
2. 实验分析(1)组装电脑需要熟悉各部件的安装方法和注意事项,以确保电脑的稳定运行。
(2)在组装过程中,需要注意电源的连接顺序,以免造成电源损坏。
(3)组装电脑时,应保持主机箱内的散热良好,避免因过热导致电脑故障。
(4)组装完成后,应对电脑进行测试,确保各部件正常运行。
五、实验总结本次电脑组成实验使我对电脑的基本组成和各部件的功能有了更深入的了解。
计算机基本组成实验报告
![计算机基本组成实验报告](https://img.taocdn.com/s3/m/0f56e529905f804d2b160b4e767f5acfa1c783c7.png)
计算机基本组成实验报告
电
子
科
技
大
学
实验报告
学生姓名:
学
号:
一、
实验室名称:
计算机学院硬件实验室
二、
实验工程名称:计算机根本组成实验
三、
实验原理
在计算机中,CPU是运算中心和控制中心,系统中的所有设备都是通过三条总线〔DB数据总线、AB地址总线、CB控制总线〕以及相应的输入/输
出接口与CPU相连的,本实验就是在熟悉计算机根本工作原理和内部结构的根底上进行的。
四、实验目的1.熟悉计算机的根本组成结构
2.掌握计算机的根本工作原理3.掌握计算机核心部件的安装、调试方法以及相关考前须知五、实验内容1.计算机的拆卸;2.CPU的安装和调试方法;3.主板的安装和调试方法;4.存储器的安装和调试方法;5.显卡和显示器的安装和调试方法;6.电源的安装和调试方法;六、实验器材〔设备、元器件〕:1.可以用的废旧计算机一台;2.螺丝刀一把七、实验步骤及操作八、实验数据及结果分析九、实验结论十、总结及心得体
会十一、对本实验过程及方法、手段的改良建议:报告评
分:
指导教师签字:。
Lab5实验报告
![Lab5实验报告](https://img.taocdn.com/s3/m/184452f0941ea76e58fa04c3.png)
assign MUX_RES2=JUMP?JUMP_ADDRESS:MUX_RES;
4
4.1
请编写自己的测试汇编。下面提供一个简易汇编器供参考。
一些相关的基本知识:
指令格式:
Mips基本指令格式
汇编格式:注意汇编中寄存器的顺序跟指令格式中的不一样
1.严格按照模块定义的端口顺序来连接,不用表明原模块定义时规定的端口名:
模块模块名(连接端口1信号名,连接端口信号名2…)
2.在连接时用“.”符号,表明原模块是定义时规定的端口名:
模块模块名(.端口1名(信号1),.端口2名(信号2) )
推荐用第2种实例化方法。
以主控制模块为例,以下代码实例化一个Ctr:mainCtr。并连接其端口。INST是定义好的指令存储器输出的连接信号,其他信号线我们在3.1.3中已定义。
9.将此前两次实验中的模块文件(*.v)拷贝到lab5工程目录下
10.添加源文件:新建文件命令:菜单栏-- Project – Add Source…
或:Sources窗口中,设备名(xc3s500e-4fg320或类似)上右键鼠标,弹出菜单中点击Add Source…
11. Adding Source Files…中,选中全部要添加的文件,保持默认项,点OK。
2.选择File > New Project…出现New Project Wizard。
3.Project Name填写lab5,选择工程Project Location,Top-level Source Type选择HDL。点击Next。
4. Device Properties中各属性填写如下:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机组成实验五——简单的类MIPS单周期处理器实现生命科学技术学院5110809XXX大豆比目录1OVERVIEW (1)1.1实验名称 (1)1.2实验目的 (1)1.3实验范围 (1)1.4注意事项 (1)2实验描述 (2)2.1新建工程 (2)2.2顶层模块Top (5)2.2.1模块描述 (5)2.2.2新建模块源文件Top.v (5)2.2.3定义信号线 (5)2.2.4程序计数器PC (6)2.2.5RESET (6)2.2.6模块实例化,连接模块 (7)2.2.7连接其他信号线 (8)3仿真测试 (10)3.1编写二进制测试程序 (10)3.2初始化存储器 (10)3.3编辑testbench文件 (11)3.4仿真测试,观察波形 (11)4下载验证 (12)4.1修改Top.v中Top模块的输入输出端口 (12)4.2编辑管脚约束文件top.ucf (12)4.3时钟分频 (12)4.4指定输入输出端口的意义 (13)5实验感想与建议 (14)5.1实验感想 (14)5.2一些建议 (14)6实验程序源代码 (15)6.1Top.v (15)6.2Ctr.v (18)6.3Alu.v (21)6.4AluCtr.v (22)6.5data_memory.v (23)6.6register.v (25)6.7signext.v (27)6.8inst_memory.v (27)6.9timeDivider.v (28)1.OVERVIEW11.1实验名称简单的类MIPS单周期处理器实现-整体调试1.2实验目的完成单周期的类MIPS处理器1.3实验范围本次实验将覆盖以下范围1、ISE的使用2、Xilinx Spartan3E实验板的使用3、使用VerilogHDL进行逻辑设计4、仿真测试、下载验证1.4注意事项本实验的逻辑设计工具为Xilinx ISE13.4。
2.1新建工程1、启动ISE13.4;2、新建工程lab5;3、选择FPGA型号、综合和仿真工具、描述语言等配置;4、右键点击Hierarchy窗口,添加已有模块。
有:Ctr.v、Alu.v、AluCtr.v、data_memory.v、register.v、signext.v六个文件(之前两个实验完成)。
5、Adding Source Files...中,选中全部要添加的文件,保持默认项,点OK。
2.2顶层模块Top2.2.1模块描述MIPS单周期处理器原理图2.2.2新建模块源文件Top.v下图的例子是已经下载至板子验证过的,故输入和输出有1个时钟(mainClock)、4个开关([3:0]SWITCH)和8个LED灯([7:0]LED)。
2.2.3定义信号线给Top模块内的每一根连接的信号线命名,并在top模块中声明它们。
2.2.4程序计数器PC程序计数器是这个简单CPU能够跑起来的关键。
定义一个32位reg类型PC,在时钟上升沿做PC<=PC+4。
//定义PC//初始化PC为0//在时钟的上升沿根据不同情况对PC赋值2.2.5RESET当RESET为1时,PC置0,各寄存器清零。
要达成上述功能,就需要适当修改之前实验的各个模块,给模块添加reset信号。
以下以data_memory模块为例,演示reset信号的加入和功能实现。
1、在data_memory模块的定义中加入输入信号reset:2、在always模块中添加初始化代码在这一步中需要注意的是,对数据初始化的操作必须在原来数据赋值的always模块中进行,否则上板时会失败(不允许同一个变量在两个模块中赋值)。
2.2.6模块实例化,连接模块实例化前两次实验中编写的模块,实例化的过程中连接模块的端口。
本实验在实例化过程中采用的是如下方法:在连接时用“.”符号,表明原模块是定义时规定的端口名:模块模块名(.端口1(信号1),.端口2(信号2))下面是本工程文件所有实例化对象和端口连接的代码:2.2.7连接其他信号线MUXMux可以用一个三目运算符来实现。
2.实验描述9在Top.v中Mux的实现代码如下:OUT1:OUT2:OUT3:OUT4:OUT5:3.1编写二进制测试程序由于处理器是从指令内存inst_memory中读取指令,依次执行的,所以程序保存在指令内存中。
以下是测试程序的指令:00001000000000000000000000000100//j a00000000000000000000000000000000//nop00000000000000000000000000000000//nop00000000000000000000000000000000//nop10101100000001000000000000000000//sw$40($0)10101100000000110000000000000100//sw$34($0)10001100000000010000000000000100//lw$14($0)10001100000000100000000000000000//lw$20($0)00000000001000100001100000100000//add$3,$1,$200000000001000100010000000100010//sub$4,$1,$200001000000000000000000000000100//j a3.2初始化存储器$readmemb和$readmemh这两个系统任务用来从文件中读取数据到存储器中,代码编写放在存储器的initial初始化块中。
data_memory中:register中:inst_memory中:注意:在仿真测试时,初始化不完全并不会对波形造成影响,但是如果要上板子,则需对变量中的每一位进行赋值,否则会产生一个warning,提示你进行了部分初始化,系统默认会将你的初始化操作忽略从而产生错误。
3.3编辑testbench文件这里添加了时钟激励,200ns为一个时钟周期。
3.4仿真测试,观察波形对照自己的测试程序可知,波形正确,仿真成功。
4.1修改Top.v中Top模块的输入输出端口之前有提到过,上板子时,输入输出要做些变化。
如下图Top模块的输入输出直接被改为一个时钟、四个开关和八个LED灯。
4.2编辑管脚约束文件top.ucf将输入输出端口与物理管脚连接起来,如下:4.3时钟分频由于板子晶振提供的时钟频率速度较高,需要对时钟进行分频,所以自己定义了一个TimeDivider模块来实现,是由实验二中的TimeDivider模块做简单修改而来。
这里将buffer和clockOut做了一个初始化为0,是为了上板子的需要。
另外将clockOut<=&buffer改为clockOut<=buffer[24]可以使得到的时钟周期波形更加理想。
如不改,则clockOut在绝大多数时间为0,只有在1/225的时间才为1,做此修改后,clockOut为0和1的时间各占一半,波形较理想,易于观察。
4.4指定输入输出端口的意义前面4.1对Top模块的定义时,只有1个时钟、4个开关和8个LED灯,而没有指定他们分别表示什么。
所以接下来我们需要定义这4个开关和8个LED灯所对应的信号。
//开关3为reset信号//开关2,开关1,开关0的状态分别是关、关、开的时候即001时,LED灯显示第一个寄存器的后8位数据;//开关2,开关1,开关0的状态分别是关、开、关的时候即010时,LED灯显示第二个寄存器的后8位数据;//开关2,开关1,开关0的状态分别是关、开、开的时候即011时,LED灯显示第三个寄存器的后8位数据;//开关2,开关1,开关0的状态分别是开、关、关的时候即100时,LED灯显示第四个寄存器的后8位数据;//开关2,开关1,开关0的状态分别是关、关、开的时候即001时,LED灯显示指令寄存器的后8位数据;//开关2,开关1,开关0的状态是除上面说明的五种情况以外时,LED灯显示PC寄存器的后8位数据;4.5生成二进制流文件,下载至板子点击Generate Programming File,生成完成后,下载至板子验证。
经实际操作验证,程序有效,上板子成功!5.实验感想与建议145.1实验感想Lab5是对Lab3和Lab4的一个综合,通过新定义的模块Top来实现一个简单的类MIPS 单周期处理器。
在老师所给的实验指导书中,省略了很多细节,有很多细节代码需要自己去编写,需要自己对着原理图思考。
但是所幸前几个实验让我们对Verilog和FPGA有了一个粗浅的认识,使得自己拥有了初步自己思考和编写代码的能力。
窃以为这样一步一步走向深入的方法是非常不错的!比我们本专业的实验设计要合理得多!希望老师能够继续保持,实验课能够越办越好。
不得不提的是在板子上验证这一环节占用了我整个Lab5编写的大半时间,这主要是由于我之前对Verilog的代码编写只是依葫芦画瓢,而不得其要领所致。
花了很多的时间重新编写Lab5的代码部分,主要是因为阻塞赋值和非阻塞赋值的理解不够深刻,导致整个程序翻译成二进制流文件时一直报错。
之后通过百度,知道了对这两种赋值的一般处理方法,才解决了此问题。
总之,上板子遇到的问题要比仿真多得多……最后还是感谢老师让我将板子带回宿舍自行调试,我才最终完成了板子调试这部分的工作,也算了却我一个心结。
5.2一些建议本次实验结束,由于作为一名大四学生琐事缠身也无力进行下一个实验,虽然本人对下一个实验也是充满期待,在此也是表达一下遗憾之情。
以下就是本人关于计算机组成实验的一些建议:1、在实验初期时即说明板子可外借,其实本人Lab5波形仿真早已成功,只是板子验证实验花去过多时间而无法进行Lab6实验,直到老师借本人一个板子,才完成了板子验证实验。
2、实验指导文件中多一些要实现的功能的描述。
在本次实验中,本人就是一直纠结reset 要实现何种功能而耽误许多时间,也许这是本实验高度开放性的体现,但本人还是希望有一个较明确的目标比较容易实现。
在这几个星期的实验中,多谢老师的悉心指导和给予的宽松的实验环境。
谢谢老师!6.1Top.v////////////////////////////////////////////////////////////////////////////////// module Top(input mainClock,input[3:0]SWITCH,output reg[7:0]LED);reg[31:0]PC;wire clk,reset,REG_DST,JUMP,BRANCH,MEM_READ,MEM_TO_REG,MEM_WRITE,ALU_SRC,REG_WRITE,ZERO;wire[1:0]ALU_OP;wire[3:0]ALU_CTR;wire[31:0]INST;wire[31:0]ALU_RES;wire[31:0]DATA;wire[31:0]READ_DATA;wire[31:0]READ_DATA1;wire[31:0]READ_DATA2;wire[4:0]OUT1;wire[31:0]OUT2;wire[31:0]OUT3;wire[31:0]OUT4;wire[31:0]OUT5;wire[7:0]REG1;wire[7:0]REG2;wire[7:0]REG3;wire[7:0]REG4;initialbeginPC=0;endtimeDivider mainTimeDivider(.clockIn(mainClock),.clockOut(clk));Ctr mainCtr(.reset(reset),.opCode(INST[31:26]),.regDst(REG_DST),.jump(JUMP),.branch(BRANCH),.memRead(MEM_READ),.memToReg(MEM_TO_REG),.aluOp(ALU_OP),.memWrite(MEM_WRITE),.aluSrc(ALU_SRC),.regWrite(REG_WRITE));Alu mainAlu(.reset(reset),.input1(READ_DATA1),.input2(OUT2),.aluCtr(ALU_CTR),.zero(ZERO),.aluRes(ALU_RES));AluCtr mainALuCtr(.reset(reset),.aluOp(ALU_OP),.funct(INST[5:0]),.aluCtr(ALU_CTR));data_memory mainDataMemory(.clock_in(clk),.reset(reset),.address(ALU_RES),.writeData(READ_DATA2),.memWrite(MEM_WRITE),.memRead(MEM_READ),.readData(READ_DATA)); register mainRegister(.clock_in(clk),.reset(reset),.readReg1(INST[25:21]),.readReg2(INST[20:16]),.writeReg(OUT1),.writeData(OUT3),.regWrite(REG_WRITE),.readData1(READ_DATA1),.readData2(READ_DATA2),.register1(REG1),//.register2(REG2),//.register3(REG3),//.register4(REG4));//signext mainSignExt(.inst(INST[15:0]),.data(DATA),.reset(reset));inst_memory mainInstMemory(.reset(reset),.readAddress(PC),.inst(INST));assign OUT1=REG_DST?INST[15:11]:INST[20:16];assign OUT2=ALU_SRC?DATA:READ_DATA2;assign OUT3=MEM_TO_REG?READ_DATA:ALU_RES;assign OUT4=(ZERO&&BRANCH)?((DATA<<2)+PC+4):(PC+4);assign OUT5=JUMP?(PC+4)&32'b111100000000000000000000|(INST[25:0]<<2): OUT4;assign reset=SWITCH[3];//assign LED=(SWITCH[2]&&SWITCH[1]&&SWITCH[0])?INST[7:0]:PC[7:0];alwaysbegincase(SWITCH[2:0])3'b001:LED=REG1;3'b010:LED=REG2;3'b011:LED=REG3;3'b100:LED=REG4;3'b111:LED=INST[7:0];default:LED=PC[7:0];endcaseendalways@(posedge clk)beginif(reset)PC<=0;//else if(ZERO&BRANCH)PC<=OUT4;else if(JUMP)PC<=OUT5;elsePC<=PC+4;endendmodule6.2Ctr.v////////////////////////////////////////////////////////////////////////////////// module Ctr(input reset,input[5:0]opCode,output reg regDst,output reg aluSrc,output reg memToReg,output reg regWrite,output reg memRead,output reg memWrite,output reg branch,output reg[1:0]aluOp,output reg jump);always@(opCode or reset)beginif(reset)beginregDst=0;aluSrc=0;memToReg=0;regWrite=0;memRead=0;memWrite=0;branch=0;aluOp=2'b00;jump=0;endelsecase(opCode)6'b000010://jumpbeginregDst=0;aluSrc=0;memToReg=0;regWrite=0;memRead=0;memWrite=0;branch=0;aluOp=2'b00;jump=1;end6'b000000://R typebeginregDst=1;aluSrc=0;memToReg=0;regWrite=1;memRead=0;memWrite=0;branch=0;aluOp=2'b10;jump=0;end6'b100011://lwbeginregDst=0;aluSrc=1;memToReg=1;regWrite=1;memRead=1;memWrite=0;branch=0;aluOp=2'b00;jump=0;end6'b101011://sw beginregDst=1'bx;aluSrc=1;memToReg=1'bx;regWrite=0;memRead=0;memWrite=1;branch=0;aluOp=2'b00;jump=0;end6'b000100://beq beginregDst=1'bx;aluSrc=0;memToReg=1'bx;regWrite=0;memRead=0;memWrite=0;branch=1;aluOp=2'b00;jump=1;enddefault:beginregDst=0;aluSrc=0;memToReg=0;regWrite=0;memRead=0;memWrite=0;branch=0;aluOp=2'b00;jump=0;endendcaseendendmodule6.3Alu.v////////////////////////////////////////////////////////////////////////////////// module Alu(input reset,input[31:0]input1,input[31:0]input2,input[3:0]aluCtr,output reg zero,output reg[31:0]aluRes);always@(input1or input2or aluCtr or reset)////beginif(reset)////begin////zero=0;////aluRes=0;////end////else if(aluCtr==4'b0010)//addaluRes=input1+input2;else if(aluCtr==4'b0110)//subtractbeginaluRes=input1-input2;if(aluRes==0)zero=1;elsezero=0;endelse if(aluCtr==4'b0000)//andaluRes=input1&input2;else if(aluCtr==4'b0001)//oraluRes=input1|input2;else if(aluCtr==4'b0111)//sltbeginif(input1<input2)aluRes=1;elsealuRes=0;endelse if(aluCtr==4'b1100)//noraluRes=~(input1|input2);endendmodule6.4AluCtr.v////////////////////////////////////////////////////////////////////////////////// module AluCtr(input reset,////input[1:0]aluOp,input[5:0]funct,output reg[3:0]aluCtr);always@(aluOp or funct or reset)if(reset)////aluCtr=0;////else////begin////casex({aluOp,funct})8'b00xxxxxx://lw swaluCtr=4'b0010;8'b01xxxxxx://beqaluCtr=4'b0110;8'b10100000://R-type addaluCtr=4'b0010;8'b10100010://R-type subtractaluCtr=4'b0110;8'b10100100://R-type andaluCtr=4'b0000;8'b10100101://R-type oraluCtr=4'b0001;8'b10101010://R-type sltaluCtr=4'b0111;endcaseend////endmodule6.5data_memory.v//////////////////////////////////////////////////////////////////////////////////module data_memory(input clock_in,input reset,input[31:0]address,input[31:0]writeData,input memWrite,input memRead,output reg[31:0]readData);reg[31:0]memFile[15:0];//memory space:16*32bitsinitialbeginmemFile[0]=32'b00000000000000000000000000000000;memFile[1]=32'b00000000000000000000000000000001;memFile[2]=32'b00000000000000000000000000000010;memFile[3]=32'b00000000000000000000000000000011;memFile[4]=32'b00000000000000000000000000000100;memFile[5]=32'b00000000000000000000000000000101;memFile[6]=32'b00000000000000000000000000000110;memFile[7]=32'b00000000000000000000000000000111;memFile[8]=32'b00000000000000000000000000001000;memFile[9]=32'b00000000000000000000000000001001;memFile[10]=32'b00000000000000000000000000001010;memFile[11]=32'b00000000000000000000000000001011;memFile[12]=32'b00000000000000000000000000001100;memFile[13]=32'b00000000000000000000000000001101;memFile[14]=32'b00000000000000000000000000001110;memFile[15]=32'b00000000000000000000000000001111;//$readmemh("./src/mem_data.txt",memFile,10'h0);endalways@(memRead or address or reset)////beginif(reset)readData=0;else if(memRead)readData=memFile[address>>2];endalways@(negedge clock_in)beginif(reset)////beginmemFile[0]<=32'b00000000000000000000000000000000;memFile[1]<=32'b00000000000000000000000000000001;memFile[2]<=32'b00000000000000000000000000000010;memFile[3]<=32'b00000000000000000000000000000011;memFile[4]<=32'b00000000000000000000000000000100;memFile[5]<=32'b00000000000000000000000000000101;memFile[6]<=32'b00000000000000000000000000000110;memFile[7]<=32'b00000000000000000000000000000111;memFile[8]<=32'b00000000000000000000000000001000;memFile[9]<=32'b00000000000000000000000000001001;memFile[10]<=32'b00000000000000000000000000001010;memFile[11]<=32'b00000000000000000000000000001011;memFile[12]<=32'b00000000000000000000000000001100;memFile[13]<=32'b00000000000000000000000000001101;memFile[14]<=32'b00000000000000000000000000001110;memFile[15]<=32'b00000000000000000000000000001111;//$readmemh("./src/mem_data.txt",memFile,10'h0);endelse if(memWrite)memFile[address>>2]<=writeData;endendmodule6.6register.v//////////////////////////////////////////////////////////////////////////////////module register(input clock_in,input reset,/////////input[25:21]readReg1,input[20:16]readReg2,input[4:0]writeReg,input[31:0]writeData,input regWrite,output reg[31:0]readData1,output reg[31:0]readData2,output[7:0]register1,//output[7:0]register2,//output[7:0]register3,//output[7:0]register4//);reg[31:0]regFile[15:0];//register space:16*32bitsinitialbeginregFile[0]=32'b00000000000000000000000000000000;regFile[1]=32'b00000000000000000000000000000001;regFile[2]=32'b00000000000000000000000000000010;regFile[3]=32'b00000000000000000000000000000011;regFile[4]=32'b00000000000000000000000000000100;regFile[5]=32'b00000000000000000000000000000101;regFile[6]=32'b00000000000000000000000000000110;regFile[7]=32'b00000000000000000000000000000111;regFile[8]=32'b00000000000000000000000000001000;regFile[9]=32'b00000000000000000000000000001001;regFile[10]=32'b00000000000000000000000000001010;regFile[11]=32'b00000000000000000000000000001011;regFile[12]=32'b00000000000000000000000000001100;regFile[13]=32'b00000000000000000000000000001101;regFile[14]=32'b00000000000000000000000000001110;regFile[15]=32'b00000000000000000000000000001111;//$readmemh("./src/reg_file.txt",regFile,8'h0);endassign register1=regFile[1][7:0];///assign register2=regFile[2][7:0];///assign register3=regFile[3][7:0];///assign register4=regFile[4][7:0];///always@(readReg1or readReg2or writeReg or writeData or reset)/// beginif(reset)beginreadData1=0;readData2=0;endelsebeginreadData1=regFile[readReg1];readData2=regFile[readReg2];////endendalways@(negedge clock_in)beginif(reset)beginregFile[0]<=32'b00000000000000000000000000000000;regFile[1]<=32'b00000000000000000000000000000001;regFile[2]<=32'b00000000000000000000000000000010;regFile[3]<=32'b00000000000000000000000000000011;regFile[4]<=32'b00000000000000000000000000000100;regFile[5]<=32'b00000000000000000000000000000101;regFile[6]<=32'b00000000000000000000000000000110;regFile[7]<=32'b00000000000000000000000000000111;regFile[8]<=32'b00000000000000000000000000001000;regFile[9]<=32'b00000000000000000000000000001001;regFile[10]<=32'b00000000000000000000000000001010;regFile[11]<=32'b00000000000000000000000000001011;regFile[12]<=32'b00000000000000000000000000001100;regFile[13]<=32'b00000000000000000000000000001101;regFile[14]<=32'b00000000000000000000000000001110;regFile[15]<=32'b00000000000000000000000000001111;//$readmemh("./src/reg_file.txt",regFile,8'h0);/*readData1=0;readData2=0;*/endelsebeginif(regWrite)regFile[writeReg]<=writeData;endendendmodule6.7signext.v////////////////////////////////////////////////////////////////////////////////// module signext(input[15:0]inst,input reset,////output reg[31:0]data);always@(inst or reset)////beginif(reset)////data=0;////else if(inst[15]==1)////data={16'b1111111111111111,inst};elsedata={16'b0000000000000000,inst};endendmodule6.8inst_memory.v////////////////////////////////////////////////////////////////////////////////// module inst_memory(input reset,input[31:0]readAddress,output reg[31:0]inst);reg[31:0]instMemFile[0:15];//memory space:16*32bitsinitialbegininstMemFile[0]=32'b00001000000000000000000000000100;//j ainstMemFile[1]=32'b00000000000000000000000000000000;//nopinstMemFile[2]=32'b00000000000000000000000000000000;//nopinstMemFile[3]=32'b00000000000000000000000000000000;//nopinstMemFile[4]=32'b10101100000001000000000000000000;//sw$40($0)instMemFile[5]=32'b10101100000000110000000000000100;//sw$34($0)instMemFile[6]=32'b10001100000000010000000000000100;//lw$14($0)instMemFile[7]=32'b10001100000000100000000000000000;//lw$20($0)instMemFile[8]=32'b00000000001000100001100000100000;//add$3,$1,$2instMemFile[9]=32'b00000000001000100010000000100010;//sub$4,$1,$2instMemFile[10]=32'b00001000000000000000000000000100;//j ainstMemFile[11]=32'b00000000000000000000000000000000;//nopinstMemFile[12]=32'b00000000000000000000000000000000;//nopinstMemFile[13]=32'b00000000000000000000000000000000;//nopinstMemFile[14]=32'b00000000000000000000000000000000;//nopinstMemFile[15]=32'b00000000000000000000000000000000;//nop//$readmemb("./src/mem_inst.txt",instMemFile,32'b0);endalways@(readAddress or reset)beginif(reset)inst=0;elseinst=instMemFile[readAddress>>2];////readAddress/4endendmodule6.9timeDivider.v//////////////////////////////////////////////////////////////////////////////////module timeDivider(input clockIn,6.实验程序源代码29output reg clockOut);reg[24:0]buffer;////initial beginbuffer=0;clockOut=0;/////endalways@(posedge clockIn)beginbuffer<=buffer+1;clockOut<=buffer[24];endendmodule。