计算机组成CPU数据通路verilog实验报告.doc

合集下载

Verilog实验报告(电子)参考模板

Verilog实验报告(电子)参考模板

西安邮电大学Verilog HDL大作业报告书学院名称:电子工程学院学生姓名:专业名称:电子信息工程班级:实验一异或门设计一、实验目的(1)熟悉Modelsim 软件(2)掌握Modelsim 软件的编译、仿真方法(3)熟练运用Modelsim 软件进行HDL 程序设计开发二、实验内容my_or,my_and和my_not门构造一个双输入端的xor门,其功能是计算z=x’y+xy’,其中x和y为输入,z为输出;编写激励模块对x和y的四种输入组合进行测试仿真1、实验要求用Verilog HDL 程序实现一个异或门,Modelism仿真,观察效果。

2、步骤1、建立工程2、添加文件到工程3、编译文件4、查看编译后的设计单元5、将信号加入波形窗口6、运行仿真实验描述如下:module my_and(a_out,a1,a2);output a_out;input a1,a2;wire s1;nand(s1,a1,a2);nand(a_out,s1,1'b1);endmodulemodule my_not(n_out,b);output n_out;input b;nand(n_out,b,1'b1); endmodulemodule my_or(o_out,c1,c2);output o_out;input c1,c2;wire s1,s2;nand(s1,c1,1'b1);nand(s2,c2,1'b1);nand(o_out,s1,s2); endmodulemodule MY_XOR(z,x,y);output z;input x,y;wire a1,a2,n1,n2;my_not STEP01(n1,x);my_not STEP02(n2,y);my_and STEP03(a1,n1,y);my_and STEP04(a2,n2,x);my_or STEP05(z,a1,a2); Endmodulemodule stimulus;reg X,Y;wire OUTPUT;MY_XOR xor01(OUTPUT,X,Y);initialbegin$monitor($time,"X=%b,Y=%b --- OUTPUT=%b\n",X,Y,OUTPUT);endinitialbeginX = 1'b0; Y = 1'b0;#5 X = 1'b1; Y = 1'b0;#5 X = 1'b1; Y = 1'b1;#5 X = 1'b0; Y = 1'b1;endendmodule二、实验结果波形图:三、分析和心得通过这次的实验,我基本熟悉Modelsim 软件,掌握了Modelsim 软件的编译、仿真方法。

计算机组成原理数据通路实验报告

计算机组成原理数据通路实验报告

计算机组成原理数据通路实验报告计算机组成原理实验报告计算机组成原理实验报告实验一基本运算器实验一、实验目的1. 了解运算器的组成结构2. 掌握运算器的工作原理3. 深刻理解运算器的控制信号二、实验设备PC机一台、TD-CMA实验系统一套三、实验原理1. (思考题)运算器的组成包括算数逻辑运算单元ALU(Arithmetic and Logic Unit)、浮点运算单元FPU(Floating Point Unit)、通用寄存器组、专用寄存器组。

①算术逻辑运算单元ALU (Arithmetic and Logic Unit)ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及移位操作。

在某些CPU中还有专门用于处理移位操作的移位器。

通常ALU由两个输入端和一个输出端。

整数单元有时也称为IEU(IntegerExecution Unit)。

我们通常所说的“CPU 是XX位的”就是指ALU所能处理的数据的位数。

②浮点运算单元FPU(Floating Point Unit)FPU主要负责浮点运算和高精度整数运算。

有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。

③通用寄存器组通用寄存器组是一组最快的存储器,用来保存参加运算的操作数和中间结果。

④专用寄存器专用寄存器通常是一些状态寄存器,不能通过程序改变,由CPU自己控制,表明某种状态。

而运算器内部有三个独立运算部件,分别为算术、逻辑和移位运算部件,逻辑运算部件由逻辑门构成,而后面又有专门的算术运算部件设计实验。

下图为运算器内部原理构造图2. 运算器的控制信号实验箱中所有单元的T1、T2、T3、T4都连接至控制总线单元的T1、T2、T3、T4,CLR都连接至CON单元的CLR按钮。

T4由时序单元的TS4提供(脉冲信号),其余控制信号均由CON单元的二进制数据开关模拟给出。

控制信号中除T4为脉冲信号外,其余均为电平信号,其中ALU_B为低有效,其余为高有效。

计算机组成原理运算器实验报告

计算机组成原理运算器实验报告

计算机组成原理运算器实验报告计算机组成原理运算器实验报告1. 简介本报告旨在介绍我们小组进行的计算机组成原理运算器实验,包括实验目的、实验过程、实验结果以及总结。

2. 实验目的•理解运算器在计算机系统中的作用和原理。

•掌握运算器设计和实现的基本方法。

•熟悉计算机寄存器的结构和功能。

•熟练使用Verilog HDL进行电路设计和仿真。

3. 实验过程实验准备•阅读相关教材和文献,了解运算器的基本原理和设计方法。

•确定实验所需的功能和性能要求。

•分析运算器的输入输出信号及其功能。

•设计运算器的数据通路和控制逻辑。

运算器设计与实现1.根据实验要求,设计运算器的数据通路和控制逻辑,并使用Verilog HDL进行电路定义。

2.编写仿真测试程序,验证设计的运算器在不同情况下的正确性和性能。

3.将设计的电路综合为目标器件,并进行逻辑门级的仿真和验证。

4.将综合结果下载到目标芯片上进行验证和测试。

实验结果•实验结果表明,设计的运算器在满足要求的情况下能够正确地完成各种运算操作。

•通过仿真和验证,验证了运算器的正确性和性能。

4. 实验总结•本实验通过设计和实现计算机组成原理运算器,进一步加深了我们对运算器原理和设计的理解。

•验证了运算器的正确性和性能,提高了我们的动手实践能力和团队协作能力。

•在实验过程中,我们遇到了一些问题和挑战,但通过不断学习和尝试,最终解决了这些问题。

•通过本次实验,我们深刻认识到如何将理论知识应用于实际问题的重要性,同时也意识到了自己在计算机组成原理领域的不足之处,将继续努力提高自己的能力。

5. 参考文献•张泽民. 计算机组成原理. 电子工业出版社, 2018. •Patterson, D. A., & Hennessy, J. L. (2017). Computer Organization and Design: The Hardware Software Interface.Morgan Kaufmann.。

机组实验报告四—非常简单CPU数据通路设计

机组实验报告四—非常简单CPU数据通路设计

非常简单CPU数据通路设计实验目的:1.掌握CPU的设计步骤2.学会芯片的运用及其功能即是本次实验的主要内容是利用Quarters2仿真平台设计非常简单的CPU的数据通路,加深对CPU的分析和理解。

实验方法:在Quarter2环境下实现非常简单CPU数据通路的设计实验内容:绘制非常简单CPU的寄存器:一个8位累加器AC,一个6位的地址寄存器AR,一个6位的程序计数器PC,一个8位的数据寄存器DR,一个2位的指令寄存器IR。

其数据通路详见教材P。

注:6位寄存器、6位计数器两个元件的设计文件:reg6.gdf和cou6.gdf已经给出。

1、零件制作6位寄存器reg6.gdf(自行设计)6位计数器cou6.gdf(自行设计)8位寄存器(可选择74系列宏函数74273)8位计数器(由两个74161构成)2位寄存器(由D触发器构成,自行设计)6三态缓冲器(自行设计,可由74244内部逻辑修改而成)8三态缓冲器(选择74系列宏函数74244,或作修改)alu模块(自行设计,限于时间,其内部逻辑不作要求)2、选择器件,加入数据通路顶层图8位累加器AC:选择8位计数器6位地址寄存器AR:reg66位的程序计数器PC:cou68位的数据寄存器DR:选择8位寄存器2位的指令寄存器IR:选择2位寄存器3、为PC、DR加入三态缓冲器。

4、调整版面大小,器件位置。

5、设计地址引脚、数据引脚、8位内部总线,加入数据引脚到内部总线的缓冲器。

6、连接各器件之间以及到内部总线的线路,设计并标注各控制信号。

7、(选做)编译之后,给出微操作AR<-PC 的测试方法及仿真结果。

8、实验报告中应给出各元部件的实现方法、内部逻辑贴图、打包符号说明及顶层的“非常简单CPU”数据通路图。

实验步骤与具体过程分析基于前面非常简单CPU的讲解,我掌握了非常简单CPU的指令集结构及非常简单CPU的指令读取过程和执行过程,本次实验是在上次实验的基础之上完成非常简单CPU数据通路的设计,其步骤如下:(1)、AC累加器原理图如下:打包框图如下:分析: 8位累加器AC是由8位计数器(cou8)组成。

CPU计算机组成原理实验报告

CPU计算机组成原理实验报告

CPU计算机组成原理实验报告实验名称:CPU计算机组成原理实验一、实验目的:1.了解计算机硬件的基本组成原理,特别是CPU的工作原理;2.掌握计算机的组装和调试技能;3.熟悉计算机操作系统的安装和配置方法;4.学习使用计算机进行基本的应用程序开发。

二、实验设备和材料:1.CPU主机:包括主板、CPU、内存、硬盘等;2.显示设备:显示器、键盘、鼠标等;3.软件:操作系统、开发工具等。

三、实验步骤:1.将主板、CPU、内存、硬盘等硬件组件组装到主机箱中,连接电源、显示器、键盘、鼠标等外设;2.打开电源,按照BIOS界面提示进行主板和硬件设置;3.插入操作系统安装光盘,根据安装界面提示进行操作系统的安装;4.安装完成后,进入操作系统,根据提示进行相应驱动程序的安装和配置;5.打开开发工具,进行编程实践。

四、实验结果与分析:通过以上步骤,成功组装了一台计算机并安装了操作系统。

在操作系统中,能够正常运行各种应用程序,并且能够进行编程开发。

通过实验,可以清楚地了解到计算机硬件的组成原理,特别是CPU的工作原理。

CPU 作为计算机的核心部件,负责指令的执行和数据的处理。

通过对CPU的组装和调试,可以更深入地了解其工作原理和操作方法。

五、实验心得与体会:通过实验,我对计算机硬件的组装和设置有了更深入的理解。

计算机硬件的组成非常复杂,需要我们仔细阅读说明书,按照步骤进行操作。

在实验过程中,我们学会了解决一些常见的硬件问题,如硬件不兼容、连接错误等。

此外,操作系统的安装和配置也是非常重要的一步,只有正确地安装和配置操作系统,才能保证计算机的正常运行。

通过这个实验,我不仅学到了理论知识,还锻炼了实际操作的能力。

计算机的组装和调试需要我们仔细、耐心地进行,一丝不苟地对待每一步操作。

只有掌握了计算机组成原理,才能更好地理解和应用计算机技术。

通过实验,我深刻地认识到计算机是一台高度复杂的机器,它可以帮助我们解决各种问题,提高工作效率。

cpu设计实验报告

cpu设计实验报告

cpu设计实验报告CPU设计实验报告摘要:本实验旨在设计一个基本的中央处理器(CPU),并通过实验验证其性能和功能。

在设计过程中,我们使用了Verilog硬件描述语言和ModelSim仿真工具。

通过对CPU的设计和仿真实验,我们验证了CPU的正确性和性能,并对其进行了性能分析和优化。

1. 引言CPU是计算机系统中最核心的部件之一,它负责执行计算机指令和控制数据流动。

因此,设计一个高效、稳定的CPU对于计算机系统的性能至关重要。

本实验旨在通过Verilog硬件描述语言和ModelSim仿真工具,设计一个基本的CPU,并验证其性能和功能。

2. 设计过程我们首先对CPU的功能和性能进行了分析和规划,确定了CPU的基本架构和指令集。

然后,我们使用Verilog语言编写了CPU的硬件描述,并通过ModelSim进行了仿真验证。

在设计过程中,我们重点关注了CPU的时序逻辑、数据通路和控制逻辑,确保CPU能够正确地执行指令并保持稳定的性能。

3. 实验结果通过对CPU的设计和仿真实验,我们验证了CPU的正确性和性能。

我们使用了一系列的测试用例对CPU进行了功能和性能测试,并对其进行了性能分析和优化。

实验结果表明,我们设计的CPU能够正确地执行各种指令,并在性能上达到了预期的目标。

4. 总结和展望本实验通过Verilog硬件描述语言和ModelSim仿真工具,设计并验证了一个基本的CPU。

通过实验,我们对CPU的设计和性能有了更深入的了解,并对其进行了性能分析和优化。

未来,我们将进一步完善CPU的设计,提高其性能和功能,以满足计算机系统的需求。

综上所述,本实验为我们提供了一个宝贵的机会,通过实际设计和验证,深入了解了CPU的工作原理和性能特点,为我们今后的学习和研究打下了坚实的基础。

希望通过不懈的努力,我们能够设计出更加高效、稳定的CPU,为计算机系统的发展做出更大的贡献。

数据通路组成实验实验报告

数据通路组成实验实验报告

数据通路组成实验实验报告数据通路组成实验实验报告一、引言数据通路是计算机系统中的重要组成部分,它负责处理和传输数据,实现各个功能模块之间的协调和通信。

本实验旨在通过构建一个简单的数据通路,探索数据通路的组成和工作原理。

二、实验目的1. 理解数据通路的基本概念和功能;2. 掌握数据通路的组成和工作原理;3. 实践数据通路的设计和实现。

三、实验设备和材料1. 计算机;2. Verilog HDL开发环境;3. 开发板;4. 连接线。

四、实验步骤1. 设计数据通路的功能模块:包括输入模块、输出模块、运算模块等;2. 使用Verilog HDL语言编写各个功能模块的代码;3. 将各个功能模块进行连接,形成完整的数据通路;4. 在开发板上下载并运行数据通路的代码;5. 输入测试数据,观察数据通路的运行情况。

五、实验结果与分析在实验过程中,我们成功地设计并实现了一个简单的数据通路。

通过输入测试数据,我们观察到数据在各个功能模块之间的传输和处理过程。

数据通路能够正确地完成各个功能模块的任务,并将最终结果输出。

六、实验总结通过本次实验,我们深入了解了数据通路的组成和工作原理。

数据通路在计算机系统中起着至关重要的作用,它负责处理和传输数据,保证各个功能模块的正常运行。

通过实践,我们掌握了数据通路的设计和实现方法,提高了我们的计算机系统设计能力。

七、实验心得本次实验让我对数据通路有了更深入的了解。

通过实践,我不仅掌握了数据通路的组成和工作原理,还学会了使用Verilog HDL语言进行代码编写和调试。

这对我的计算机系统设计能力的提升具有重要意义。

八、参考文献[1] 《计算机组成与设计:硬件/软件接口》- David A. Patterson, John L. Hennessy[2] 《数字系统设计与Verilog HDL》- Mark Zwolinski九、附录实验代码和测试数据见附件。

以上为数据通路组成实验实验报告的简要内容。

计算机组成原理CPU设计实验报告

计算机组成原理CPU设计实验报告
取指令的微操作安排如下:
T0: PCBUSMAR, PCBUSA, 1READ
T1: M(MAR)MDRBUSIR, ALU(A+2)Y
T2: YBUSPC, IRID
数据通路如下:(再配合流程图来说明工作流程,说明每一个部件的功能;以下同)
2.算逻指令执行周期数据通路构建
算逻指令执行周期微操作安排如下:
T0: $RBUSMDR
T1: Ad(IR)扩位BUSMAR, 1WRITE
T2:
4.访寄存器组指令执行周期数据通路构建
访寄存器指令执行周期微操作安排如下:
T0: $R2BUS$R1
T1:
跳转指令执行周期的微操作安排如下:
T0: Im(IR)扩位和移位BUSA
T0: $R2BUSA
T1: $R3BUSB
T2: ALU(A,B)YBUS$R1
数据通路如下:
3访存指令执行周期数据通路构建
LDRR指令执行周期的微操作安排如下:
T0: Ad(IR)扩位BUSMAR, 1READ
T1: M(MAR)MDR
T2: MDRBUS$R
STRR指令执行周期的微操作安排如下:
T1: PCBUSB
T2: ALU(A+B)YBUSPC
2.1.5
由于没有中断操作,本机指令的执行步骤可概括如下:(画图描述)
读取指令:地址寄存器<-指令地址,修改PC内容使其指向下一条将要执行的指令;
读内存,指令寄存器<-读出的内容。
分析指令:指令译码。
执行指令:通用寄存器之间的运算或传送,可1步完成;
T2:GENERATE CFLAG RESULT←ADDR+PC
T3:if(CFLAG==0) PC←RESULT else PC←PC_NEXT

华中科技大学Verilog语言实验报告

华中科技大学Verilog语言实验报告

专业:计算机科学与技术班级:CS1409学号:U**********名:***电话:158****5005邮件:*****************完成日期:2016.6.13 2016Verilog 语言·实验报告·计算机科学与技术学院目录1数据通路实验 (1)1.1实验目的 (1)1.2实验内容及要求 (1)1.3实验方案 (2)1.4实验步骤 (2)1.5故障及分析 (2)1.6仿真与结果 (3)1.7心得与体会 (4)2FSM实验 (5)2.1实验目的 (5)2.2实验内容及要求 (5)2.3实验方案 (6)2.4实验步骤 (6)2.5故障及分析 (7)2.6仿真与结果 (7)2.7心得与体会 (8)3意见和建议 (9)4附录 (10)1 数据通路实验1.1 实验目的综合应用掌握的简单组合电路和时序电路的设计方法,完成一个简单的数据通路的设计。

1.2 实验内容及要求1. 根据下图给出的数据通路(图中R0、R1和ACC是寄存器,+是加法器,其它则是多路选择器),完成相应的Verilog程序设计,图中数据线的宽度为8位,要求可以扩充至16位或者是32位;2. 根据下图给出的数据通路(图中SUM和NEXT是寄存器,Memory是存储器,+是加法器,==0是比较器,其它则是多路选择器),完成相应的Verilog程序设计,图中数据线的宽度为8位,要求可以扩充至16位或者是32位。

实验要求:程序必须自己编写,满足数据通路设计要求,综合结果正确。

1.3 实验方案根据要求,先把选择器、加法器、寄存器、比较器和存储器分模块编写,在主模块中根据数据通路调用即可。

题目中要求数据线宽度为8位,并且可以扩充至16位或32位,所以在前面定义WIDTH,利用parameter的参数传递功能来实现。

1.4 实验步骤1.分模块编写代码(见附录)2.运行综合Run Synthesis3.综合成功后检查RTL Analysis中的电路图Schematic1.5 故障及分析刚开始跑出来很多线是断的,后来发现是引脚对应部分的代码没有写完整。

计算机组成原理实验报告心得体会

计算机组成原理实验报告心得体会

计算机组成原理实验报告心得体会一、引言在计算机组成原理实验中,我有幸参与了多次实验,涵盖了CPU的设计与模拟、数据通路与控制器的实现、存储器的设计与测试等多个方面。

通过这些实验,我深刻认识到了计算机组成原理在实际应用中的重要性,同时也收获了许多宝贵的经验和心得体会。

二、CPU的设计与模拟通过这次实验,我深入了解了CPU的组成和原理。

我首先完成了对CPU的整体设计,包括指令集、指令译码、数据通路等方面的设计。

然后,我使用多种模拟软件,如Proteus和Logisim,对我设计的CPU进行模拟验证。

这个过程非常有趣,我能够通过模拟软件来观察CPU的内部执行过程,了解每个时钟周期中各个部件的工作情况。

通过实验,我深刻认识到了CPU对于计算机运行的关键作用,同时也意识到了CPU设计和优化的重要性。

三、数据通路与控制器的实现数据通路和控制器的实现是计算机组成原理中的核心部分之一。

在实验中,我使用Verilog语言进行了数据通路和控制器的设计和实现。

我首先对数据通路进行了拓扑图的设计,并使用Verilog语言将其转换为硬件描述。

接着,我设计了对应的控制器,实现了对数据通路的控制和调度。

通过这个实验,我深刻理解到了数据通路和控制器之间的紧密联系,以及二者的协同工作是如何实现计算功能的。

四、存储器的设计与测试存储器在计算机系统中具有关键的地位。

在实验中,我使用Verilog 语言设计了存储器的模块,并进行了相应的功能测试。

我设计了读取和写入操作,同时进行了多个读写操作的并发测试。

通过实验,我深刻认识到了存储器的重要性和设计原则,也意识到了存储器访问速度和容量的影响对于计算机性能的重要性。

五、其他实验心得在以上的实验之外,我还参与了其他一些实验,如中断、流水线和指令缓存等的设计与实现。

这些实验拓宽了我的视野,让我了解到计算机组成原理在实际应用中的诸多问题和挑战。

在实验过程中,我也遇到了许多困难,但通过团队合作和导师的帮助,我最终找到了解决问题的方法。

计算机组成实验报告

计算机组成实验报告

一、实验目的1. 理解计算机组成原理的基本概念和结构。

2. 掌握计算机各主要部件(如CPU、存储器、总线等)的工作原理。

3. 熟悉计算机指令系统的基本知识。

4. 通过实验加深对计算机组成原理的理解。

二、实验环境1. 实验平台:EL-JY-II型计算机组成原理实验系统2. 实验软件:计算机组成原理实验软件3. 实验设备:计算机组成原理实验箱三、实验内容1. CPU数据通路实验(1)实验目的:了解CPU的数据通路结构,掌握各逻辑部件的功能及数据流动方向。

(2)实验步骤:1. 组装CPU数据通路,包括ALU、程序计数器PC、主存M、主存数据寄存器MDR、主存地址寄存器MAR、指令寄存器IR、通用寄存器R0-R3、暂存器C和D等。

2. 指示数据流动方向,确保各部件正确连接。

3. 验证数据通路功能,观察数据流动过程。

(3)实验结果:成功组装CPU数据通路,实现数据正确流动。

2. 指令周期实验(1)实验目的:掌握典型指令的指令周期,了解指令执行过程。

(2)实验步骤:1. 画出“MOV R0, R1”、“LAD R1, (R2)”、“ADD R1, R2”、“STO R2,(R3)”等指令的指令周期方框图。

2. 分析指令执行过程,理解各阶段功能。

(3)实验结果:成功画出指令周期方框图,并理解指令执行过程。

3. 硬布线控制器与微程序控制器实验(1)实验目的:了解硬布线控制器和微程序控制器的工作原理及区别。

(2)实验步骤:1. 比较硬布线控制器和微程序控制器的结构及工作原理。

2. 分析两种控制器的优缺点。

(3)实验结果:理解硬布线控制器和微程序控制器的工作原理及区别。

4. 流水线CPU实验(1)实验目的:掌握流水线CPU的工作原理,分析流水线各过程段。

(2)实验步骤:1. 分析指令流水线的取值、译码、执行、访存、写回寄存器五个过程段。

2. 画出流水处理的时空图,计算流水线的实际吞吐率和加速比。

(3)实验结果:成功分析指令流水线各过程段,并计算流水线性能指标。

(完整word版)CPU组成与机器指令执行实验

(完整word版)CPU组成与机器指令执行实验

CPU组成与机器指令执行实验一、实验目的(1)将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机;(2)用微程序控制器控制模型机数据通路;(3)通过CPU运行九条机器指令(排除中断指令)组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。

二、实验电路本次实验用到前面四个实验中的所有电路,包括运算器、存储器、通用寄存器堆、程序计数器、指令寄存器、微程序控制器等,将几个模块组合成为一台简单计算机。

因此,在基本实验中,这是最复杂的一个实验,也是最能得到收获的一个实验。

在前面的实验中,实验者本身作为“控制器”,完成数据通路的控制。

而在本次实验中,数据通路的控制将由微程序控制器来完成。

CPU从内存取出一条机器指令到执行指令结束的一个机器指令周期,是由微指令组成的序列来完成的,即一条机器指令对应一个微程序。

三、实验设备(1)TEC-4计算机组成原理实验系统一台(2)双踪示波器一台(3)直流万用表一只(4)逻辑测试笔一支四、实验任务(1)对机器指令系统组成的简单程序进行译码。

将下表的程序按指令格式手工汇编成十六进制机器代码,此项任务应在预习时完成。

(2)按照下面框图,参考前面实验的电路图完成连线,控制器是控制部件,数据通路(包括上面各模块)是执行部件,时序产生器是时序部件。

连线包括控制台、时序部分、数据通路和微程序控制器之间的连接。

其中,为把操作数传送给通用寄存器组RF,数据通路上的RS1、RS0、RD1、RD0应分别与IR3至IR0连接,WR1、WR0也应接到IR1、IR0上。

开关控制控制台时序发生器时序信号开关控制指示灯信号控制信号时序信号控制信号微程序控制器数据通路指令代码、条件信号模型计算机连线示意图(3)将上述任务(1)中的程序机器代码用控制台操作存入内存中,并根据程序的需要,用数码开关SW7—SW0设置通用寄存器R2、R3及内存相关单元的数据。

注意:由于设置通用寄存器时会破坏内存单元的数据,因此一般应先设置寄存器的数据,再设置内存数据。

西电 计算机组成实验报告 1

西电 计算机组成实验报告 1

实验一存储器实验一实验题目存储器实验二实验环境Quartus II三实验要求l、掌握FPGA中lpm_ROM的设置,作为只读存储器ROM的工作特性和配置方法。

2、用文本编辑器编辑 mif文件配置 ROM;3、在初始化存储器编辑窗口编辑mif文件配置ROM;4、验证FPGA中meg_lpm_ROM的功能。

四实验设计1、创建mif文件,并写入ROM信息也可以在文本文件添加ROM信息WIDTH=8;DEPTH=32;ADDRESS_RADIX=UNS;DATA_RADIX=UNS;CONTENT BEGIN0 : 4;1 : 3;2 : 2;3 : 4;4 : 3;5 : 2;6 : 1;7 : 5;8 : 0;9 : 3;10 : 6;[11..14] : 0;15 : 4;16 : 7;17 : 4;[18..26] : 0;[27..28] : 4;29 : 0;30 : 2;31 : 0;END;2、连接电路图五实验仿真与测试六实验结果分析仿真结果从上图可以看出,电路输出了ROM中保存的数据。

七实验小结通过本次试验,我掌握了FPGA中lpm_ROM的设置,以及其作为只读存储器ROM的工作特性和配置方法。

学会了用quartus创建并设置mif文件的方法,以及用文本文档修改mif文件方法。

经过这次实验,我学会了quartus的基本使用方法,以及仿真方法。

实验二运算器组成实验一实验题目运算器组成实验二实验环境Quartus II三实验要求1.掌握简单运算器的数据传输通路。

2.验证运算功能发生器的组合功能。

3.掌握算术逻辑运算加、减、与的工作原理。

4.熟悉简单运算的数据传送通路。

5.验证实验台运算的8位加、减、与、直通功能。

6.按给定数据,完成几种指定的算术和逻辑运算。

四实验设计结合上图74181结构设计电路图如下仿真使用数据如下六实验结果分析符合74181的功能,测试通过七实验小结通过本次实验,我学习了加法器74181的使用方法,简单运算器的数据传输通路。

中山大学计算机组成原理实验单周期CPU设计

中山大学计算机组成原理实验单周期CPU设计

中⼭⼤学计算机组成原理实验单周期CPU设计《计算机组成原理实验》实验报告(实验三)学院名称:数据科学与计算机学院专业(班级):学⽣姓名:学号:时间:2019 年11 ⽉8 ⽇成绩:实验三:单周期CPU设计与实现⼀.实验⽬的(1) 掌握单周期CPU数据通路图的构成、原理及其设计⽅法;(2) 掌握单周期CPU的实现⽅法,代码实现⽅法;(3) 认识和掌握指令与CPU的关系;(4) 掌握测试单周期CPU的⽅法。

⼆.实验内容设计⼀个单周期CPU,该CPU⾄少能实现以下指令功能操作。

指令与格式如下:==> 算术运算指令加“加”运算。

加“加”运算。

==> 逻辑运算指令加“与”运算。

功能:GPR[rt] ←GPR[rs] or zero_extend(immediate)。

==>移位指令==>⽐较指令==> 存储器读/写指令==> 分⽀指令else pc ←pc + 4特别说明:offset是从PC+4地址开始和转移到的指令之间指令条数。

offset符号扩展之后左移2位再相加。

为什么要左移2位?由于跳转到的指令地址肯定是4的倍数(每条指令占4个字节),最低两位是“00”,因此将offset放进指令码中的时候,是右移了2位的,也就是以上说的“指令之间指令条数”。

else pc ←pc + 4(16)bltz rs, offsetelse pc ←pc + 4。

==>跳转指令(17)j addr说明:由于MIPS32的指令代码长度占4个字节,所以指令地址⼆进制数最低2位均为0,将指令地址放进指令代码中时,可省掉!这样,除了最⾼6位操作码外,还有26位可⽤于存放地址,事实上,可存放28位地址,剩下最⾼4位由pc+4最⾼4位拼接上。

==> 停机指令功能:停机;不改变PC的值,PC保持不变。

三.实验原理单周期CPU指的是⼀条指令的执⾏在⼀个时钟周期内完成,然后开始下⼀条指令的执⾏,即⼀条指令⽤⼀个时钟周期完成。

数据通路实验总结

数据通路实验总结

数据通路实验总结
一、实验背景
数据通路是计算机系统中的一个重要组成部分,它负责将指令和数据从存储器中取出并进行操作。

为了更好地理解数据通路的工作原理,我们进行了数据通路实验。

二、实验目的
本次实验的主要目的是通过搭建一个简单的CPU,了解其数据通路和控制器的工作原理,并深入理解指令执行过程中各个部件之间的协调与配合。

三、实验内容
1. 搭建CPU:首先需要搭建一个基本的CPU,包括寄存器、ALU、控制器等模块。

2. 编写指令:在搭建好CPU之后,需要编写一些简单的指令来测试CPU是否正常工作。

例如,ADD指令可以将两个寄存器中的值相加,并将结果存储到另一个寄存器中。

3. 测试CPU:编写完指令后,需要对CPU进行测试。

可以使用仿真软件或者硬件平台进行测试。

在测试过程中,需要检查每个模块是否正常工作,并对出现问题进行排除。

四、实验结果
通过本次实验,我们成功搭建了一个基本的CPU,并编写了多条指令来测试其功能。

在测试过程中,我们发现了一些问题并进行了排除。

最终,我们成功地完成了所有测试,并得到了正确的结果。

五、实验感想
本次实验让我们更深入地了解了计算机系统中的数据通路和控制器的工作原理,同时也提高了我们的编程能力和问题解决能力。

通过不断地调试和测试,我们深刻体会到了“万事开头难”的道理,也更加珍惜每一次成功。

六、实验总结
本次实验不仅让我们掌握了CPU的搭建方法和指令编写技巧,还让我们更好地理解了计算机系统中各个部件之间的协调与配合。

在今后的学习和工作中,这些经验将会对我们有很大的帮助。

单周期CPU实验报告

单周期CPU实验报告

计算机组成实验报告实验名称:单周期CPUVerilog实现实验日期:2011.4.12-2011.4.19实验人员:同组者:一、主要实验内容将已做好的各个模块进行模块合并,实现单周期CPU的各项指令,(注:由于此次设计只是利用verilog硬件编程语言实现具体功能,因此数据寄存器和存储器部件内的内容需由程序设计者自己给出,并不能从计算机中直接读取),下面对各个子模块进行简单的介绍。

二、各个子模块的简单介绍此程序将数据通路(SingleDataLoad)设定为顶层模块,下面的模块包括:算术逻辑运算单元(ALU)、数据存储器(DataStore)、数据寄存器(Registers)、取指令部件(GetCode)、总控制器(Control),通过顶层模块对各个子模块的调用从而实现了整个单周期CPU。

1)数据通路(SingleDataLoad):进行数据的运算、读取以及存储功能,通过总控制器产生的各个控制信号,进而实现对数据的各项操作。

2)算术逻辑运算单元(ALU):数据通路调用此模块,根据得到的控制信号对输入数据进行处理,处理功能有:addu、add、or、subu、sub、sltu、slt等。

3)数据存储器(DataStore):当WrEn控制信号为1时,此时就将输入数据存储到此存储器中,当WrEn为0时,则根据输入的地址,找到地址对应的单元将单元中的数据输出。

4)数据寄存器(Registers):在此程序中功能和实现基本和数据存储器相同,但在实际CPU当中使用的逻辑器件及获取数据的方式还是有所区别的。

5)取指令部件(GetCode):指根据PC所提供的地址从指令寄存器中取出要执行的指令,再根据各控制信号,得出下一次要执行的指令的地址。

(注:指令寄存器中存放的就是一个程序或一段代码所需要执行的指令,这里也是程序设计者自己给出的一些指令的值。

)6)总控制器(Control):总控制器通过从取指令部件获得的指令,进而产生各个控制信号,并将控制信号返回个数据通路,就此实现各项功能。

实验报告---流水线cpu(处理器)的实现

实验报告---流水线cpu(处理器)的实现

本科实验报告实验名称:流水线机制CPU的实现一、实验内容和原理实验内容:1、分析ARM指令集,明确指令功能、指令在CPU中执行各阶段中的行为;2、设计ARM处理器的数据通路和控制通路,画出指令描述表和指令的状态转换图;3、利用Vivado软件,用V erilog硬件描述语言描述处理器中的各个分部件,每个分部件通过功能仿真;4、利用Vivado软件,用V erilog硬件描述语言实现分部件的互连,即实现数据通路和控制通路;5、编写测试用的汇编指令,并将汇编指令转换为二进制的指令编码,并且加载到处理器中的指令存储器中。

6、将ARM处理器编程下载至FPGA实验板,运行测试程序,并通过开发板上的led或数码管显示执行结果。

二、实验步骤与实验结果写出实验操作的总体思路、操作规范和主要注意事项;按顺序记录实验中每一个环节和实验现象。

画出必要的实验装置结构示意图,并配以相应文字说明;(一)说明你所实现的ARM处理器是多周期还是流水线CPU;一共实现了多少条指令?测试通过了多少条指令?我实现的处理器是流水线的,一共实现了10条指令,测试通过了10条指令。

(二)描述你的设计思路,如果你实现了多周期和流水线CPU,请分别描述多周期CPU设计思路:流水线处理器设计思路:由于将多周期的阶段分成五级流水,无法设置统一的控制信号,而是让每一级流水段根据自己输入的指令产生控制信号,即将各个控制信号分属到两级流水之间的寄存器当中。

本想设计一个移位寄存器来将指令分别送入各级寄存器,但是发现不是特别有必要这样做,因为可以将指令一级一级传递下去可以实现同样的功能。

总共分五级流水,取指,译码,执行,存储,写回。

如果指令之间出现相关则设置空指令,如果遇到空指令则所有控制信号为0,不产生任何有影响的操作。

(三)对于实现的多周期处理器,为你所实现的指令画出指令描述表,和指令的状态转换图,一类指令可以画一个表或一个状态转换图(四)画出你设计的处理器(多周期和流水线)的数据通路和控制通路的合成图,要求为viso图或其他可再次修改的图,不能仅用无法修改的图片流水线数据通路(viso图双击用viso打开)(一)如果你设计的是流水线CPU,描述你的设计思路,实现方法,和多周期实现时的异同。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机组成与系统结构实验报告院(系):计算机科学与技术学院专业班级:学号:姓名:同组者:指导教师:实验时间: 2012 年 5 月 23 日实验目的:完成处理器的单周期cpu的设计。

实验仪器:PC机(安装Altebra 公司的开发软件 QuartusII)一台实验原理:控制器分为主控制器和局部ALU控制器两部分。

主控制器的输入为指令操作码op,输出各种控制信号,并根据指令所涉及的ALU运算类型产生ALUop,同时,生成一个R-型指令的控制信号R-type,用它来控制选择将ALUop输出作为ALUctr信号,还是根据R-型指令中的func字段来产生ALUctr信号。

实验过程及实验记录:1.设计过程:第一步:分析每条指令的功能,并用RTL来表示。

第二步:根据指令的功能给出所需的元件,并考虑如何将它们互连。

第三步:确定每个元件所需控制信号的取值。

第四步:汇总各指令涉及的控制信号,生成所反映指令与控制信号之间的关系图。

第五步:根据关系表,得到每个控制信号的逻辑表达式,据此设计控制电路。

2.完成代码的编写,并调试运行。

1)controlmoduleControl(op,func,Branch,Jump,RegDst,ALUSrc,ALUctr,MemtoReg, RegWr,MemWr,ExtOp);input [5:0] op,func;output regBranch,Jump,RegDst,ALUSrc,MemtoReg,RegWr,MemWr,ExtOp; output reg [2:0] ALUctr;always @(op)case(op)6'b000000:beginBranch=0;Jump=0;RegDst=1;ALUSrc=0;MemtoReg=0;RegWr=1;MemWr =0;case(func)6'b100000:ALUctr=3'b001;6'b100010:ALUctr=3'b101;6'b100011:ALUctr=3'b100;6'b101010:ALUctr=3'b111;6'b101011:ALUctr=3'b110;endcaseend6'b001101:beginBranch=0;Jump=0;RegDst=0;ALUSrc=1;MemtoReg=0;RegWr=1;MemWr =0;ExtOp=0;ALUctr=3'b010;end6'b001001:beginBranch=0;Jump=0;RegDst=0;ALUSrc=1;MemtoReg=0;RegWr=1;MemWr =0;ExtOp=1;ALUctr=3'b000;end6'b100011:beginBranch=0;Jump=0;RegDst=0;ALUSrc=1;MemtoReg=1;RegWr=1;MemWr =0;ExtOp=1;ALUctr=3'b000;end6'b101011:beginBranch=0;Jump=0;ALUSrc=1;RegWr=0;MemWr=1;ExtOp=1;ALUctr=3' b000;end6'b000100:beginBranch=1;Jump=0;ALUSrc=0;RegWr=0;MemWr=0;ALUctr=3'b100; end6'b000010:beginBranch=0;Jump=1;RegWr=0;MemWr=0;endendcaseendmodule2)数据通路DataRoadmoduleDataRoad(Run,Clk,RegWr,MemWr,MemtoReg,RegDst,Branch,Jump,E xtOp,ALUctr,ALUSrc,busA,busB,busW,Instruction,Reg0,Reg1,Re g2,Reg3,Reg4,Mem1,Mem2,Mem3,Result,Im);inputRun,Clk,RegWr,MemWr,MemtoReg,RegDst,Branch,Jump,ExtOp,ALUS rc;input [2:0] ALUctr;output [31:0]Instruction,busA,busB,busW,Reg0,Reg1,Reg2,Reg3,Reg4,Mem1,M em2,Mem3,Result,Im;wire [31:0] busC,DataOut;wire [15:0] im;wire [4:0] Rs,Rd,Rt;wire Overflow,Zero;QZL qzl(Clk,Branch,Jump,Zero,Instruction,Run);assign Rs=Instruction[25:21];assign Rt=Instruction[20:16];assign Rd=Instruction[15:11];assign im=Instruction[15:0];Registerregister(Run,RegWr,Overflow,RegDst,Rd,Rs,Rt,busW,busA,busB ,Clk,Reg0,Reg1,Reg2,Reg3,Reg4);ALU alu(busA,busC,ALUctr,Zero,Overflow,Result);DataMem(Run,MemWr,Clk,busB,DataOut,Result,Mem1,Mem2,Mem3); MUX mux1(ALUSrc,busB,Im,busC);MUX mux2(MemtoReg,Result,DataOut,busW);Extender ext(im,Im,ExtOp);endmodule3)取指令module QZL(Clk,Branch,Jump,Zero,Instruction,Run);input Clk,Branch,Jump,Zero,Run;output [31:0] Instruction;wire [4:0] addmem;reg [29:0] PC;wire [29:0] Newpc,pc_1,pc_2,pc_3,pc_12,imm30;wire Branch_Zero;assign addmem={PC[2:0],2'b00};InsMem GetIns(addmem,Instruction);always @(negedge Clk)if(Run==1)beginPC<=Newpc;endelsebeginPC<=0;endassign pc_1=PC+1;assign imm30={{14{Instruction[15]}},Instruction[15:0]}; assign pc_2=pc_1+imm30;assign pc_3={PC[29:26],Instruction[25:0]};assign Branch_Zero=Branch&Zero;MUX m1(Branch_Zero,pc_1,pc_2,pc_12);MUX m2(Jump,pc_12,pc_3,Newpc);endmodulemodule InsMem(addmem,Instruction);input [4:0] addmem;output reg[31:0] Instruction;reg [31:0] Mem[31:0];always @(*)beginMem[0]<={6'b100011,5'b00000,5'b00001,5'b00000,5'b00000,6'b 000001};Mem[4]<={6'b100011,5'b00000,5'b00010,5'b00000,5'b00000,6'b 000010};Mem[8]<={6'b000000,5'b00001,5'b00010,5'b00011,5'b00000,6'b 100000};Mem[12]<={6'b101011,5'b00000,5'b00011,5'b00000,5'b00000,6' b000010};Mem[16]<={6'b001101,5'b00100,5'b00100,5'b11111,5'b11111,6' b111111};Mem[20]<={6'b000000,5'b00011,5'b00010,5'b00010,5'b00000,6' b100010};Mem[24]<={6'b000100,5'b00010,5'b00001,5'b00000,5'b00000,6' b001000};Mem[28]<={6'b000010,5'b00000,5'b00000,5'b00000,5'b00000,6' b000000};endalways @(*)。

相关文档
最新文档