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

洛阳理工学院实验报告系别 计算机与信息工程学院班级学号姓名课程名称计算机组成与系统结构实验日期实验名称 实验八 模型计算机设计 成绩实验条件:1、 DJ-CPTH 超强型组成原理实验箱2、 PC 机一台实验要求:设计模型计算机,并利用CPTH 实验仪的上位机软件控制该模型计算机,实现模型机的数据传送功能。
实验目的:1、掌握微程序控制模型计算机的基本工作原理和设计方法。
2、掌握微程序存储器uM 的控制方法和上位机软件的使用方法。
实验步骤:(1)运行CPTH ,新建文件。
(2)录入下表中第3列,保存为EX1.ASM 。
(3)单击菜单“汇编”的“汇编下载”。
(4)按“单步”运行,观察A /R0/ R1的变化,记录变化情况。
(5)按“复位”。
(6)按“单步”运行,打开“跟踪”标签,观察微程序和微地址变化,按下表记录变化情况,并填写每一步的功能。
程序地址 机器码 机器指令 功能00 01 7C 12 mov a,#12h 传送12H 到A 02 80 mov r0,a 传送12到R0 03 81 mov r1,a 传送12到R1 04 057C 1Emov a,#30传送30到AEnd状态PC EM IR 微程序功能T0 01 7C 7C CBFFFF 取出00号单元指令,打入IRT1 01 7C 7C C7FFF7 传送12H到AT0 03 80 80 CBFFFF 取出02号单元指令,打入IRT1 03 80 80 FFFB9F 传送12H到R0T0 04 81 81 CBFFFF 取出03号单元指令,打入IRT1 04 81 81 FFFB9F 传送12H到R1T0 05 7C 7C CBFFFF 取出04号单元指令,打入IRT1 05 7C 7C C7FFF7 传送30到AT0 07 00 00 CBFFFF 取出结束指令,同时结束运行实验过程如图所示:实验总结:通过这次实验我掌握了微程序控制模型计算机的基本工作原理和设计方法也掌握了微程序存储器uM的控制方法和上位机软件的使用方法。
计算机组成原理实验报告 基本模型机和复杂模型机的设计

基本模型机设计一. 设计目的1. 在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台稍微复杂的模型计算机;2. 为其定义5条机器指令,并编写相应的微程序,具体上机调试掌握整机概念二. 设计内容部件实验过程中,各部件单元的控制信号是人为模拟产生的,而本次实验将能在微程序控制下自动产生各部件单元控制信号,实现特定指令的功能,这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
三.概要设计为了向RAM中装入程序和数据,检查写入是否正确,并能启动程序执行,还必须设计三个控制台操作微程序.存储器读操作:拨动总清开关CLR后,控制台开关SWB,SWA 为”0 0”时,按START微动开关,可对RAM连续手动读操作.存储器写操作:拨动总清开关CLR后,控制台开关SWB SWA置为”0 1”时,按START 微动开关可对RAM进行连续手动写入.启动程序:拨动总清开关CLR后,控制台开关SWB SWA置为“1 1”时,按START微动开关,既可转入到第01号“取址”微指令,启动程序运行.上述三条控制台指令用两个开关SWB SWA 的状态来设置,其定义如下表3-1读写变化SWB SWA 控制台指令0 0 1 011读内存(KRD)写内存(KWE)启动程序(RP)根据以上要素设计数据通路框图,如图3-1:表3-2 微代码的定义微程序24 23 22 21 20- 19 18 17 16 15 14 13 控制信号S3S2 S1 S0 M CN RD M17 M16 A12 11 10 9 8 7 6 5 4 3 2 1P4BP uA5 uA4 uA3 uA2 uA1 uA0表3-3 A ,B ,P 字段内容A 字段B 字段 P 字段15 14 13 控制信号12 11 10 控制信号 987控制信号 0 0 0 .0 0 0 0 0 0 0 0 1 LDRI 0 0 1 RS_G 0 0 1 P1 0 1 0 LDDR1 0 1 0 0 1 0 0 1 1 LDDR2 0 1 1 0 1 1 1 0 0 LDIR 1 0 0 1 0 0 P4 1 0 1 LOAD 1 0 1 ALU_G 1 0 1 11LDAR110 PC_G110 LDPC当拟定“取指令”微指令时,该微指令的判别测试字段为P1测试。
计算机组成原理实验报告

计算机组成原理实验报告Computer Organization Lab R eports一.实验目的综合运用所学计算机原理知识,设计并实现较为完整的计算机。
二.实验环境Dais-CMX16+达爱思教仪三.实验原理1.数据格式模型机规定采用定点补码表示数据,且字长为8位,其格式如下:其中第7位为符号位,数值表示范围是:-1≤X<1。
2.指令格式模型机设计四大类指令共16条,其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。
⑴算术逻辑指令设计9条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:其中,OP-CODE Rs Rd其中R0=CL;R1=CH;R2=DL;R3=DH⑵访问指令及转移指令模型机设计2条访问指令,即存数(STA)、取数(LDA),2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC),指令格式为:其中“0 0 M ”为源码段,2OP-CODE为目的码段(LDA、STA指令使用)。
D为十六位地址段(低八在前,高八随后),M为源寻址模式,其定义如下:⑶ I/O指令输入(IN)和输出()指令采用单字节指令,其格式如下:⑷停机指令指令格式如下:HALT3.指令系统本模型机共有16条基本指令,其中算术逻辑指令9条,访问内存指令和程序控制指令4条,输入输出指令2条,其它指令1条。
下表列出了各条指令的格式、汇编符号、指令功能。
表5-1四.实验步骤及结果分析1. 联机运行双击桌面“Dais-CMX 集成开发环境”图标进入联机模式。
在联机状态下,首先应打开mxj4.asm(复杂模型机机器指令及对应微指令代码文件),然后点击工具栏“装载”按钮开始装载,如源程序无语法错误即可完成装载,进入调试状态。
可点击工具栏快捷按钮,详细操作如下:●单节拍:单击菜单“运行→单拍运行微指令”命令或单击工具栏“单拍”按钮,以单节拍方式按T1~T4顺序逐步运行微程序。
●单周期:单击菜单“运行→单步运行微指令”命令或单击工具栏“微单步”按钮,以单周期(T1~T4为一个机器周期)方式逐步运行微程序。
计算机组成原理课程设计报告(基本模型机设计与实现)

本科生课程实习学生姓名学生学号所在专业所在班级指导教师职称时间成绩目录一、课程设计题目 (2)二、课程设计使用的实验设备 (2)三、课程设计内容与步骤 (2)1、所设计模型机的功能与用途 (3)2、数据通路图 (4)3、微代码定义 (4)4、微程序流程图 (5)5、微指令二进制代码 (6)6、本课程设计机器指令 (7)7、模型机的调试与实现 (7)(1)接线图 (7)(2)写程序 (8)(3)运行程序 (8)四、总结 (9)参考文献 (9).一、课程设计题目基本模型机设计与实现二、课程设计使用的实验设备TDN-CM计算机组成原理教学实验系统一台,排线若干三、课程设计内容与步骤不见实验过程中,各部件单元的控制信号是认为模拟产生的,而本次课程实习将能在为程序控制下自动产生各部件单元控制信号,实现特定指令的功能。
这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
本课程设计采用六条机器指令:IN(输入)、AND(与运算)、DEC(自增1)、STA(存数)、OUT(输出)、JMP(无条件跳转),其指令格式如下:其中IN、DEC为单字长,其余为双字长指令,********为addr对应的二进制地址码。
1、所设计模型机的功能与用途本次课程设计设计的模型机包括六条指令,输入、与运算、自增、存数、输出、无条件跳转。
利用此模型机可完成两个数的与运算,一个数从键盘输入,另个数从内存中读取,再将运算结果自增1,把最后结果保存到内存中,并且将运算结果输出2、数据通路图3、微代码定义C字段A字段B字段4、微程序流程图控制程序流程图当拟定“取指”微指令时,该微指令的判别测试字段为P(1)测试;控制台操作为P(4)测试,它以控制台开关SWB、SWA作为测试条件,共三路分支。
5、微程序设计完毕后,将每条微指令代码化,将流程图转化为二进制代码表6、本课程设计机器指令7、模型机的调试与实现(1)接线图(2)写程序A、现将机器指令对应的微代码正确写入2816中。
计算机组成原理-实验报告四-基本模型机设计与实现

计算机组成原理实验报告
学院:计算机科学与信息专业:班级:
指令划分为操作码和地址码字段,由二进制数构成,为了执行任何给定的指令,必须对操作码进行测试P(1),通过节拍脉冲T4的控制以便识别所要求的操作。
“指令译码器”根据指令中的操作码译码,强置微控器单元的微地址,使下一条微指令指向相应的微程序首地址。
本系统有两种外部I/O设备,一种是二进制代码开关,它作为输入设备(INPUTDEVICE);另一种是LED块,它作为输出设备(OUTPUT DEVICE)。
本实验设计机器指令程序如下:
地址(二进制)内容(二进制)助记符号说明
0000 0000 0000 IN R0,SW "INPUT DEVICE"-->R0
0001 0001 0000 ADD R0,09H R0+「09H」-->R0
0010 0000 1001
0011 0010 0000 STA 0BH,R0 R0-->「0BH」
0100 0000 1011
0101 0011 0000 OUT BUS ,0AH 「0AH」-->BUS
0110 0000 1010
0111 0100 0000 JMP 00H 00H-->PC
1000 0000 0000
1001 0101 0101 自定
1010 1010 1010 自定
1011 求和结果。
计算机组成原理实验报告1

实验报告模型机总体设计一.基本模型机系统分析与设计1、简单的模型计算机是由算术逻辑运算单元、微程序单元、堆栈寄存器单元、累加器、启停、时序单元、总线和存储器单元组成。
2、在模型机中,我们将要实现RAM的读写指令,寄存器的读写指令,跳转指令,ALU的加、减指令。
把通用寄存器作为累加器A们进行左、右移等操作指令,整体构成一个单累加器多寄存器的系统。
3、根据设计要求,对实验仪硬件资源进行逻辑组合,便可设计出该模型机的整机逻辑框图。
二.指令微程序设计1. ADD A,Ri;功能:(A)+(Ri)—>A步骤:1)取指PC->AB,AB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR,PC+1;2)取操作数A->DB,DB->DR1,R1->DB,DB->DR2;3)执行DR1->ALU,DR2->ALU,置CY,ALU->DB,DB->累加器A2. SUB A,Ri 功能:(A) - (Ri)->A步骤:1)取指PC->AB,AB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR,PC+1;2)取操作数A->DB,DB->DR1,R1->DB,DB->DR2;3)执行DR1->ALU,DR2->ALU,置CY,ALU->DB,DB->累加器A3. MOV A,Ri;功能:Ri->A步骤:1)取指PC->AB,AB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR,PC+1;2)执行Ri->DB,DB->累加器A,置CY4. MOV Ri,A; 功能:(A)->Ri1)取指PC->AB,AB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR,PC+1;2)执行A->DB,DB->Ri5. JMP addr 跳转到addr1)取指PC->AB,AB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR,PC+1;2)执行IR1->DB,DB->RAM,EMCK=1,RM=1,WM=0,RAM->AB,AB->PC6.RRC A; 功能:带进位向右移1)取指PC->AB,AB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR,PC+1; 2)执行控制信号,置CY7.RLC A;功能:带进位左移1)取指PC->AB,AB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR,PC+1; 3)执行控制信号,置CY8.LDA addr;功能:(addr)->累加器A1)取指PC->AB,AB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR,PC+1; 2)计算地址IR1->DB,DB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR2,IR2->AB3)执行AB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->A9.STA addr; 功能:(A)->addr1)取指PC->AB,AB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR,PC+1;2)计算地址IR1->DB,DB->RAM,EMCK=1,RM=1,WM=0,RAM->DB,DB->IR2,IR 2->AB3) 执行A->RAM,EMCK=1,RM=0,WM=1三.指令格式1.ADD A,RiADD A Ri 2.SUB A,RiSUB A Ri 3.MOV A,RiMOV A Ri 4.MOV Ri,AMOV Ri A 5.RRC ARRC A6.RR ARR A7.JMP ADDRJMP ADDR8.LDA ADDRLDA ADDR9.STA ADDRSTA ADDR四.微程序指令格式设计00 取指微指令010203 减法指令微程序(1)04 减法指令为程序(2)050607 MOV指令微程序(1)08 MOV指令微程序(2)09 MOV指令微程序(3)0A0B0C0D0E0D……微程序入口地址微程序首地址形成MD7 MD6 MD5 MD4 MD3 MD2 MD1 MD00 0 I7 I6 I5 I4 1 1按操作码散转指令操作码微程序首地址MD7、MD6 I7 I6 I5 I4 MD1、MD0 MD7~MD00 0 0 0 0 1 003H0 0 0 0 1 1 007H0 0 0 1 0 1 00BH0 0 0 1 1 1 00FH0 0 1 0 0 1 013H0 0 1 0 1 1 017H0 0 1 1 0 1 01BH0 0 1 1 1 1 01FH0 1 0 0 0 1 023H0 1 0 0 1 1 027H0 1 0 1 0 1 02BH0 1 0 1 1 1 02FH0 1 1 0 0 1 033H0 1 1 0 1 1 037H0 1 1 1 0 1 03BH0 1 1 1 1 1 03FH六.模型机时序设计安排1、由于模型机已经确定了指令系统,微指令采用全水平不编码纯控制场的格式,微程序的入口地址采用操作码散转方式,微地址采用技术增量方式,所以可确定模型机中时序单元中所产生的每一节拍的作用。
计算机组成原理——模型机 完整报告

一、目的及要求目的:(1)融会贯通教材各章的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,加深计算机工作中“时间-空间”概念的理解,从而清晰地建立计算机的整机概念。
(2)学习设计和调试计算机的基本步骤和方法,培养科学研究的独立工作能力,取得工程设计和调试的实践和经验。
要求:1.根据给定的数据格式和指令系统,设计一台微程序控制的模型计算机。
2.根据设计图,在QUARTUS II环境下仿真调试成功。
3.在调试成功的基础上,整理出设计图纸和相关文件,包括:(1)总框图(数据通路图);(2)微程序控制器逻辑图;(3)微程序流程图;(4)微程序代码表;(5)设计说明书及工作小结。
二、环境(软硬件平台)WINDOWS XP、QUARTUS II三、内容及步骤(包括程序流程及说明)1.数据格式数据字规定采用定点整数补码表示法,字长8位,其中最高位为符号位,其格式如下:7 6 5 4 3 22.指令格式本实验设计使用5条机器指令,其格式与功能说明如下:INADDOUTJMPIN指令为单字长(字长为8bits)指令,其功能是将数据开关的8位数据输入到R0寄存器。
ADD指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是将R0寄存器的内容与内存中地址为A的数相加,结果存放在R0寄存器中。
STA指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是将R0寄存器中的内容存储到以第二个字为地址的内存单元中。
OUT指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是将内存中以第二个字为地址的内存单元中的数据读出到数据总线,显示之。
JMP指令为双字长指令,第一个字为操作码,第二个字为操作数地址,其功能是程序无条件转移到第二个字指定的内存单元地址。
数据通路图一旦确定,指令流与数据流的通路也就确定了。
图1中各功能器件上标注的控制点及控制信号,就是微程序控制器设计的依据。
计算机组成原理—模型机设计报告

计算机组成原理--模型机设计报告作者姓名:专业:网络工程学号:指导教师:完成日期:2016年1月6日目录课程设计任务书 (3)1课程设计目的 (3)2课程设计设备 (3)3课程设计内容 (4)3.1课程设计原理 (4)3.2实验步骤 (6)4课程设计结果 (10)5课程设计总结 (14)5.1课程设计的心得、经验教训及注意事项 (14)5.1.1心得体会 (14)5.1.2经验教训 (14)5.1.3注意事项 (14)参考文献 (14)课程设计任务书学生姓名:专业班级: 1320552指导教师:工作单位:题目:基本模型机的设计与实现初始条件1.完成《计算机组成原理》课程教学与实验2.Proteus仿真系统要求完成的主要任务(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.掌握简单指令系统计算机的微控制器功能与结构特点2.熟悉Proteus仿真系统3.在Proteus仿真系统中确认运行结果4.形成简单指令系统计算机的整机概念1课程设计目的设计并实现基本模型机:(1)理解计算机工作原理(2)设计并验证一个定点计算机模型(3)增加一个浮点运算单元2课程设计设备PC机+Win 2003+proteus仿真器3课程设计内容3.1课程设计原理部件实验过程中,各部件单元的控制信号是以人为模拟产生为主,而本次实验将能在微程序控制下手动产生各部件单元的控制信号,实现特定指令的功能。
如运算器实验中对74LS-181芯片的控制,存储器中对存储器芯片的控制信号,以及几个实验中对输出设备的控制通过LED灯来显示结果。
这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。
本实验采用五条机器指令:IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移)。
基本模型机数据通路框图:基本模型机微程序流程图:3.2实验步骤1、该基本模型机主要有运算器和存储器两大功能器件构成,首先设计运算器并对其进行功能验证。
基本模型机系统实验报告

一、实验目的1. 了解计算机的基本组成和原理,熟悉计算机硬件和软件的关系。
2. 掌握基本模型机的搭建方法和调试技巧。
3. 通过实验加深对计算机指令系统、微程序控制器和存储器等概念的理解。
二、实验原理计算机是由硬件和软件两部分组成的,硬件主要包括中央处理器(CPU)、存储器、输入输出设备等,软件则是指挥计算机完成各种任务的程序。
本实验通过搭建一个基本模型机,模拟计算机的基本工作过程,让学生深入了解计算机的组成和原理。
三、实验环境1. 实验设备:基本模型机实验箱、连接线、电源、计算机等。
2. 实验软件:Dais-CMH/CMH计算器组成原理教学实验系统。
四、实验内容1. 搭建基本模型机(1)根据实验箱的说明,将CPU、存储器、输入输出设备等硬件连接好。
(2)连接好电源,确保各部分电路正常工作。
(3)使用Dais-CMH/CMH计算器组成原理教学实验系统,编写控制程序,实现基本模型机的运行。
2. 调试基本模型机(1)检查硬件连接是否正确,确保电路无短路、断路等问题。
(2)编写控制程序,实现基本模型机的指令系统。
(3)通过调试,使基本模型机能够按照预期的工作流程运行。
3. 实验步骤(1)搭建基本模型机1)将CPU、存储器、输入输出设备等硬件连接好。
2)连接好电源,确保各部分电路正常工作。
3)使用Dais-CMH/CMH计算器组成原理教学实验系统,编写控制程序,实现基本模型机的运行。
(2)调试基本模型机1)检查硬件连接是否正确,确保电路无短路、断路等问题。
2)编写控制程序,实现基本模型机的指令系统。
3)通过调试,使基本模型机能够按照预期的工作流程运行。
4. 实验结果与分析(1)实验结果通过搭建和调试基本模型机,成功实现了计算机的基本工作过程,包括取指、译码、执行、存储等步骤。
(2)实验分析1)通过实验,加深了对计算机基本组成和原理的理解,认识到硬件和软件的紧密关系。
2)掌握了基本模型机的搭建方法和调试技巧,为以后的学习奠定了基础。
计算机组成原理实验八简单模型计算机实验

计算机组成原理实验八简单模型计算机实验关键信息项:1、实验目的2、实验设备3、实验原理4、实验步骤5、数据记录与分析6、注意事项7、故障处理8、实验结果评估标准11 实验目的本实验旨在通过构建和操作简单模型计算机,深入理解计算机组成原理中的核心概念,包括数据存储、运算处理、指令执行等,培养学生的实际动手能力和对计算机系统的综合理解能力。
111 具体目标1111 掌握简单模型计算机的基本结构和工作原理。
1112 熟悉各种指令的编码和执行过程。
1113 能够运用所学知识设计和实现简单的计算任务。
12 实验设备121 硬件设备计算机主机、实验箱、连接线等。
122 软件工具特定的模拟软件、编程环境等。
13 实验原理131 模型计算机结构包括运算器、控制器、存储器、输入设备和输出设备等主要部件,以及它们之间的连接和协同工作方式。
132 指令系统定义了各种操作指令的格式、功能和编码方式。
133 数据存储与传输说明数据在存储器中的存储方式和在各部件之间的传输机制。
14 实验步骤141 连接实验设备按照正确的方式将计算机主机与实验箱等设备进行连接,并确保连接稳定可靠。
142 启动软件工具打开相应的模拟软件和编程环境,进行初始化设置。
143 设计指令序列根据实验要求,设计一系列的指令来完成特定的计算任务。
144 输入指令到模型计算机通过编程环境将指令输入到模型计算机的存储器中。
145 启动模型计算机运行设置相关参数,启动模型计算机执行指令序列。
146 观察运行过程和结果密切观察模型计算机在执行指令过程中的各种状态变化,以及最终的输出结果。
15 数据记录与分析151 记录实验过程中的关键数据包括指令的执行时间、存储器的状态变化、运算结果等。
152 对数据进行分析对比预期结果,分析实验数据的准确性和合理性,找出可能存在的偏差和错误原因。
16 注意事项161 设备操作规范严格按照设备的操作说明进行连接和使用,避免因不当操作造成设备损坏。
计算机组成原理课程设计模型机实验报告 精品

实践报告计算机组成原理--模型机设计报告作者姓名:专业:计算机科学与技术学号:指导教师:完成日期:年月号******学院计算机工程系摘要“计算机组成原理”是计算机科学与技术系的一门核心专业基础课程,在计算机专业中起了很重要的作用。
课程中分部分介绍了计算机的各个部件,我们有必要将它们组合起来以对计算机有一个整体的认识。
这次课程设计通过对一个简单模型机的设计与实现,是我们对计算机的基本组成、部件的设计、部件间的连接有更深的理解。
依次设计计算机的几个部件并进行连接使成为一个完整的模型机。
通过运行和调试,使之正常工作。
关键词:运算器;控制器;存储器;输入输出接口;模型机正文:一、课设目的要求:《计算机组成原理》是一门理论性、实践性均较强的专业基础课,要求学生具有一定的电路分析、指令系统编写能力、软件设计能力。
通过计算机组成原理实践周,要突出《计算机组成原理》理论联系实际的特点,培养实践动手能力。
1.培养学生运用理论知识和技能,构建建立问题逻辑结构,锻炼学生分析解决实际问题的能力。
2.培养学生使用PROTEUS软件分析和设计计算机内部器件的方法和技巧。
3.培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
4.通过实践设计,要求学生在指导教师的指导下,独立完成设计课题的全部内容,包括:(1)通过调查研究和上机实习,掌握PROTEUS软件的设计和仿真调试技能。
(2)掌握计算机系统的组成结构及其工作原理。
(3)设计实现一个简单计算机的模型机,并能够使用PROTEUS软件进行电路仿真验证二、课设内容:利用所学的计算机结构和工作原理的知识,要求学生独立完成简单计算机的模型机设计,并用PROTEUS软件进行验证。
在分析设计过程中,要求学生养成良好的习惯,学会分析实际问题,并利用所学的知识建立系统的逻辑结构,学会PROTEUS调试技巧和方法,通过逻辑设计和工程设计培养调试硬件电路的实际动手能力。
要求学生掌握数字逻辑电路中故障的一般规律,以及排除故障的一般原则和方法;锻炼分析问题与解决问题的能力,在出现故障的情况下,独立分析故障现象,并排除故障。
计算机组成原理实验八简单模型计算机实验

计算机组成原理实验八简单模型计算机实验一、实验目的本实验旨在通过构建简单模型计算机,使学生深入理解计算机的组成结构和工作原理,掌握计算机的基本设计和操作方法,提高对计算机系统分析、设计和应用的能力。
二、实验原理简单模型计算机是一种基于基本逻辑运算和算术运算的计算机模型,通过对其硬件组成、指令系统和工作流程的设计与实现,可以帮助学生了解计算机的基本组成和工作原理。
本实验将介绍简单模型计算机的设计思路和实现方法,包括指令系统、存储器、运算器、控制器等组成部分。
三、实验步骤1、确定模型计算机的设计方案,包括指令系统、存储器、运算器、控制器等部分的规格和功能;2、根据设计方案,选择合适的硬件和软件工具进行开发和调试;3、搭建硬件平台,包括中央处理器、内存、输入输出设备等,并连接电源和信号线;4、编写指令系统,根据设计要求,编写一系列基本指令,包括算术运算指令、逻辑运算指令、控制指令等;5、编写程序,根据设计要求,编写一系列程序,包括数据输入程序、数据处理程序、数据输出程序等;6、调试程序,检查程序的正确性和可靠性,并对硬件进行测试和调试;7、运行程序,输入数据并观察输出结果,分析模型的正确性和可靠性。
四、实验结果与分析通过本次实验,学生可以深入了解计算机的基本组成和工作原理,掌握计算机的基本设计和操作方法。
同时,学生还可以通过分析和解决实验中出现的问题,提高对计算机系统分析、设计和应用的能力。
五、实验总结与展望本次实验通过构建简单模型计算机,帮助学生深入理解计算机的组成结构和工作原理。
在实验过程中,学生需要积极思考和探索,发现问题并解决问题。
通过本次实验,学生可以掌握计算机的基本设计和操作方法,提高对计算机系统分析、设计和应用的能力。
本次实验还可以为学生今后的学习和工作提供有益的参考和启示。
展望未来,随着计算机技术的不断发展,对于计算机系统的理解和应用将越来越重要。
本次实验所学的知识和技能将为学生今后的学习和工作奠定坚实的基础。
计算机组成原理课程设计报告(复杂模型机)

计算机组成原理课程设计报告复杂模型机的设计与调试复杂模型机的设计与实现一、课程设计目的本课程设计是《计算机组成原理》课程结束以后开设的大型实践性教学环节。
通过本课程设计,加深对计算机系统各模块的工作原理及相互联系的认识,特别是对微程序控制器的理解,进一步巩固所学的理论知识,并提高运用所学知识分析和解决实际问题的能力;锻炼计算机硬件的设计能力、调试能力;培养严谨的科学实验作风和良好的工程素质,为今后的工作打下基础。
二、实验设备ZY15CompSys12BB计算机组成原理教学实验系统一台,排线若干。
三、设计与调试任务1.按给定的指令格式和指令系统功能要求,用所提供的器件设计一台微程序控制器控制的模型计算机。
2.根据设计图,在通用实验台上进行组装,并调试成功。
四、指令格式模型机设计四大类指令共十六条,其中包括算术逻辑指令、I/O指令、访问存储器及转移指令和停机指令。
(A) 算术逻辑指令设计9条算术逻辑指令并用单字节表示,寻址方式采用寄存器直接寻址,其格式如下:D7 D6 D5 D4 D3 D2D1 D0OP-CODE Rs Rd其中,OP-CODE为操作码,Rs为源寄存器,Rd为目的寄存器,并规定:选中的寄存器(Rs或Rd)R0R1 R2寄存器的编码00 01 10(B) 访存指令及转移指令模型机设计2条访问指令,即存数(STA)、取数(LDA)、2条转移指令,即无条件转移(JMP)、结果为零或有进位转移指令(BZC)。
其格式如下:D7 D6D5 D4 D3 D2D1 D0D7····D0OP-CODE M OP-CODE Rd D其中,OP-CODE为操作码,Rd为目的寄存器,D为位移量(正负均可),M为寻址方式,其定义如下:寻址方式有效地址说明00 E=D 直接寻址01 E=(D)间接寻址10 E=(R I)+D R I变址寻址11 E=(PC)+D 相对寻址本模型机规定变址寄存器R I指定为寄存器R2。
-复杂模型机实验报告2

计算机组成原理实验报告实验题目:一台模型计算机的总体设计之复杂模型机设计实验目的:(1)在掌握部件单元电路实验的基础上, 进一步将其组成系统, 构造一台复杂模型计算机, 建立一台基本完整的整机。
(2)为其定义至少五条机器指令, 并编写相应的微程序, 通过联机调试, 观察计算机执行指令:从取指令、指令译码、执行指令等过程中数据通路内数据的流动情况, 进一步掌握整机概念。
实验设备TDN-CM+教学实验系统一套、微型计算机一台、排线若干。
实验原理:(1)数据格式及指令系统:①数据格式其中, 第7位为符号位, 数值表示范围是-27 ≤X≤27-1②指令格式模型机设计4大类指令共16条, 其中包括算术逻辑指令、I/O指令、访问及转移指令和停机指令。
A. 算术逻辑指令设计九条算术逻辑指令并用单字节表示, 寻址方式采用寄存器直接寻址, 其格式如下:其中, OP-CODE为操作码, RS为源寄存器, RD为目标寄存器, 并规定:九条算术逻辑指令的助记符、功能和具体格式见表5.2-1。
B.访问及转移指令:5 4 3 2 1 0模型机设计两条访问指令,即存数(STA)、取数(LDA),两条转移指令, 即无条件转移(JMP)、本模型机规定变址寄存器RI指定为寄存器R2。
C. I/O指令:其中, addr=01时, 选中“INPUT DEVICE”中的开关组作为输入设备, addr=10时, 选中“OUTPUT DEVICE”中的数码块作为输出设备。
D. 停机指令:HALT指令, 用于实现停机操作。
③指令系统:本模型机共有16条基本指令, 其中算术逻辑指令七条, 移位指令两条, 访问内存指令和程序控制指令四条, 输入/输出指令两条, 其它指令一条。
表5.2-1列出了各条指令的格式、助记符和功能。
实验要求(1)设计的复杂模型机要实现: 加法运算、减法运算、加减混合运算、乘法运算和输出结果、循环的功能。
(2)设计的机器指令程序可参考以下实例:程序助记符$P0044 IN 01, R0$P0146 IN 01, R2$P0298 ADC R2, R0$P0381 MOV R0, R1$P04F5 RLC R1, R1(3)设计总体结构(模型机各部件连接图)及数据通路框图。
计算机组成实验报告四 实验4 基本模型机实验

1、目的与要求1、在掌握部件单元电路实验的基础上,进一步将其组成系统以构造一台基本模型实验计算机。
2、设计五条机器指令,并编写相应的微程序,具体上机调试,掌握整机软硬件组成概念。
参见《计算机组成原理实验指导书》2、实验设备硬件:DVCC-C8JH 实验箱。
计算机DVCC-C8JH联机软件3、实验步骤与源程序线路连接:a、跳线器J1~J12全部拨在右边(自动工作方式);b、跳线器J16、J18、J23、J24全部拨在左边;c、跳线器J13~J15、J19、J25拨在右边;d、跳线器J20~J22、J26、J27连上短路片;e、UJ1连UJ2,JSE1连JSE2,SJ1连SJ2;f、MBUS连BUS2;g、REGBUS连BUS5;h、PCBUS连EXJ2;i、ALUBUS连EXJ3;j、ALUO1连BUS1;k、EXJ1连BUS3;L、将试验箱右侧(侧面)串口与计算机串口连接步骤:⑴连接线路,仔细查线无误后,接通电源。
⑵计算机单击“开始菜单”→程序→DVCC组成原理C8JH,⑶软件界面单击“联接”工具按钮,应保证实验仪与计算机已经建立连接⑷选择实验项目“基本模型机的设计与实现”⑸单击“打开”工具按钮,选择文件C8JHE1,单击打开,屏幕左侧,出现文件内容,即微程序代码⑹单击“调试”工具按钮,下载打开的源程序文件,然后可以单步机器指令,单步执行微指令,屏幕会出现数据的流图。
具体情况如下图示:图1图2 四、实验数据与心得体会实验数据:当全部微程序设计完毕后,应将每条微指令代码化,即按微指令格式将微程序流程图转化成二进制微代码表,如下表所示,再转换成16进制代码文件。
二进制微代码表:设备(LED数码管)进行显示。
然后程序停止(请实验者考虑:如何修改程序,使程序不断从输入设备取出数据,送到输出设备显示。
每次循环过程中,可以使输入设备数据改变,考察输出显示的结果。
)。
设计机器指令程序如下(机器码为十六进制数据)。
计算机组成原理实验报告

计算机组成原理实验报告实验一寄存器实验一、实验目的(1)了解模型机中A, W寄存器结构、工作原理及其控制方法。
(2)了解模型机中寄存器组R0..R3结构、工作原理及其控制方法。
二、实验要求(1)A、W寄存器:利用COP2000实验仪上的K16..K23开关做为DBUS的数据,其它开关做为控制信号,将数据写入寄存器A,W。
(2)R0、R1、R2、R3寄存器实验:利用COP2000实验仪上的K16..K23开关做为DBUS的数据,其它开关做为控制信号,对数据寄存器组R0..R3进行读写。
三、实验说明寄存器的作用是用于保存数据的,因为我们的模型机是8位的,因此在本模型机中大部寄存器是8位的,标志位寄存器(Cy, Z)是二位的。
COP2000用74HC574来构成寄存器。
74HC574的功能如下:注意:1. 在CLK的上升沿将输入端的数据打入到8个触发器中74HC574工作波形图四、实验原理实验1:A,W寄存器实验(1)原理图寄存器A原理图寄存器W原理图(2)工作波形图寄存器A,W写工作波形图(4)实验数据a.)将31H写入A寄存器二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据31H。
置控制信号为:按住CLOCK脉冲键,CLOCK由高变低,这时寄存器A的黄色选择指示灯亮,表明选择A寄存器。
放开CLOCK键,CLOCK由低变高,产生一个上升沿,数据31H被写入A寄存器。
b)将61H写入W寄存器二进制开关K23-K16用于DBUS[7:0]的数据输入,置数据61H。
置控制信号为:按住CLOCK脉冲键,CLOCK由高变低,这时寄存器A的黄色选择指示灯亮,表明选择A寄存器。
放开CLOCK键,CLOCK由低变高,产生一个上升沿,数据61H被写入A寄存器。
实验2:R0,R1,R2,R3寄存器实验(1)原理图寄存器R0,R1,R2,R3原理图寄存器R写工作波形图(4)实验数据注意观察:1. 数据是在放开CLOCK键后改变的,也就是CLOCK的上升沿数据被打入。
计算机组成原理模型机实验报告

实验六计算机系统综合设计与实现一、实验目的1、深入理解计算机系统工作的基本原理,建立整机概念。
2、融会贯通计算机组成原理课程的容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识。
3、培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
二、实验要求1、将已经设计的运算器、存储器和控制器连接,构建完整的计算机系统;2、编写一段可以实现一定功能的指令程序,进行计算机整机系统功能的验证。
3、所有任务要求功能仿真和必要的验证。
实验完成后,一周提交实验报告。
三、实验设备PC机+ QuartusⅡ10.0 + FPGA(DE2-115)+TEC-8实验箱四、计算机系统(TEC-8)综合逻辑框图硬连线控制器控制信号切换电路ALU A端口B端口C Z R0 R1 R2 R3 IR PC AR 双端口RAM DBUS五、实验任务1、将实验二的运算器、实验三的存储器和实验五的控制器连接,构建完整的计算机系统;2、计算机整机系统功能测试,进行功能仿真和时序仿真并在DE2-115上验证。
(1)根据指令系统,编写一段可以实现一定功能的程序,要求:有一个合理的运算功能和逻辑关系;指令数量:不少于8条;指令类型:停机、跳转、RR、读存、写存、算术和逻辑运算;(2)将指令程序手工汇编成二进制代码;(3)理论上设置寄存器的初值,并计算程序执行后的结果;(4)将指令程序的二进制代码存入存储器RAM中;(5)将需要的运算数据初值存入寄存器R0-R3中;(6)进行程序连续运行的功能仿真和时序仿真,将仿真运算结果与理论计算结果进行比较。
六、实验步骤实验电路图子模块(1)tri_74244module tri_74244 (en,Din,Dout );input en ;wire en ;input [7:0] Din;wire [7:0] Din ;output [7:0] Dout ;reg [7:0] Dout ;always (en or Din)beginif (en)Dout<= Din ;elseDout <= 8'bzzzzzzzz;endendmodule`timescale 1 ps/ 1 psmodule tri_74244_vlg_tst();reg eachvec;reg [7:0] Din;reg en;wire [7:0] Dout;tri74244.vt`timescale 1 ps/ 1 psmodule tri_74244_vlg_tst();reg eachvec;reg [7:0] Din;reg en;wire [7:0] Dout;tri_74244 i1 (.Din(Din),.Dout(Dout),.en(en));integer i;initial begin i=0;Din=8'b00000000;en=0;en=1;#40 en=1;endinitialbegin for(i=0;i<10;i=i+1)begin#10 Din=i;endend endmoduletri74244功能仿真(2)ALUALU.bdfmodolue_74181使用quartus库中的74181模块转换为verilog文件即可de2_4de2_4.vmodule de2_4(en,in,out);input [2:1] in ;input en;output [4:1] out ;reg [4:1] out ;always (en or in)if (en)case (in)2'b00:out=4'b0001;2'b01:out=4'b0010;2'b10:out=4'b0100;2'b11:out=4'b1000;default:out=4'b0000;endcaseelse out=4'b0000;endmodulede2_4.vt`timescale 1 ns/ 1 psmodule de2_4_vlg_tst();reg eachvec;reg en;reg [2:1] in; wire [4:1] out;de2_4 i1 (.en(en),.in(in),.out(out));initial begin en=0;endinitial begin # 10 en=1;endinitial begin # 5 in=2'b00;#15 in=2'b01;#15 in=2'b10;#15 in=2'b11;#40 $finish;endinitial$monitor($time,,,"en=%b in=%b out=%b",en,in,out); endmodulereg8reg8.vmodule reg8 ( T3,DOUT ,D );input T3 ;wire T3 ;input [7:0] D ;wire [7:0] D ;output [7:0] DOUT ;reg [7:0] DOUT ;always ( posedge T3 )beginDOUT <= D ;endendmodulereg8.vt`timescale 1 ps/ 1 psmodule reg8_vlg_tst();reg eachvec;reg [7:0] D;reg T3;wire [7:0] DOUT;reg8 i1 (.D(D),.DOUT(DOUT),.T3(T3));integer i;initialbeginT3=0;D=8'd0;endalwaysbegin#5 T3= ~T3;endinitialbegin for(i=0;i<11;i=i+1)begin#10 D=i;endend endmodulemux4_1mux4_1.vmodule mux4_1(d1,d2,d3,d4,se1,se2,dout);input [7:0]d1;input [7:0]d2;input [7:0]d3;input [7:0]d4;input se1;input se2;output dout;reg [7:0]dout;always (d1 or d2 or d3 or d4 or se1 or se2) case({se2,se1})2'b00 : dout=d1;2'b01 : dout=d2;2'b10 : dout=d3;2'b11 : dout=d4;endcaseendmodulemux4_1.vt`timescale 1 ps/ 1 psmodule mux4_1_vlg_tst();reg eachvec;reg [7:0] d1;reg [7:0] d2;reg [7:0] d3;reg [7:0] d4;reg se1;reg se2;wire [7:0] dout;mux4_1 i1 (.d1(d1),.d2(d2),.d3(d3),.d4(d4),.dout(dout),.se1(se1),.se2(se2));integer i,j;initial begin #10 d1=8'b00000001;d2=8'b00000010;d3=8'b00000011;d4=8'b00000100;endinitialbegin#5while(1)for(i=0;i<2;i=i+1)for(j=0;j<2;j=j+1)begin#5 se2=i; se1=j;endend endmoduleALU逻辑电路图逻辑功能表)(当A=55H,B=AAH,S=0000~1111,M=0,CIN=1时仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initialbeginT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b01010101;#10 RD=2'b01; SD=8'b10101010;#10 RD=2'b10; SD=8'b00000011;#10 RD=2'b11; SD=8'b00000100; #10 RD=2'b00;RS=2'b01;SBUS=0;DRW=0;ABUS=1;CIN=1;LDC=1;M=0;endalwaysbegin#5 T3=~T3;endinteger i;initial#40 S=4'b0000;for(i=1;i<16;i=i+1)#10 S=i;endinitial$monitor($time,,,"M=%b S=%b CIN=%b SD=%h DBUS=%h C=%b",M,S,CIN,SD,DBUS,C); endmodule指令ADD R0,R1( R0+R1 → R0)的仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initial forkT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b00000111;#10 RD=2'b01;#10 SD=8'b00000001;#20 RD=2'b00;#20 RS=2'b01;#20 SBUS=0;#20 DRW=0;#20 ABUS=1;#20 CIN=1;#20 LDC=1;#20 M=0;#20 S=4'b1001;#30 RD=2'b00;#30 DRW=1;#40 DRW=0;joinalwaysbegin#5 T3=~T3;endendmodule00ns DBUS=07H T3上升沿到来(5ns时)数据07H被写R010ns DBUS=01H T3上升沿到来(15ns时)数据01H被写R120ns DBUS= R0+R1=07+01=08H30ns T3上升沿到来(35ns)时DBUS数据08H被写R0,因此DBUS=R0+R1=08H+01H=09H (说明实现了R0+R1 → R0)注意:此时M=0, S=1001,CIN=1(相当于C0=0),实现算术运算A+B指令SUB R0,R1( R0-R1 → R0)的仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initial forkT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b00000111;#10 RD=2'b01;#10 SD=8'b00000001;#20 RD=2'b00;#20 RS=2'b01;#20 SBUS=0;#20 DRW=0;#20 ABUS=1;#20 CIN=0;#20 LDC=1;#20 M=0;#20 S=4'b0110;#30 RD=2'b00;#30 DRW=1;#40 DRW=0;joinalwaysbegin#5 T3=~T3;endendmodule00ns DBUS=03H T3上升沿到来(5ns时)数据07H被写R010ns DBUS=01H T3上升沿到来(15ns时)数据01H被写R120ns DBUS= R0-R1=07-01=06H30ns T3上升沿到来(35ns)时DBUS数据06H被写R0,因此DBUS=R0-R1=06H-01H=05H(说明实现了R0-R1 → R0)注意:此时M=0,S=0110,实现算术运算A-B-1,设置CIN=0(相当于C0=1),让进位C0=1,因此实现运算(A-B-1)+1=A-B指令AND R0,R1( R0&R1 → R0)的仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initialforkT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b00000111;#10 RD=2'b01;#10 SD=8'b00001001;#20 RD=2'b00;#20 RS=2'b01;#20 SBUS=0;#20 DRW=0;#20 ABUS=1;#20 CIN=1;#20 LDC=1;#20 M=1;#20 S=4'b1011;#30 RD=2'b00;#30 DRW=1;#38 S=4'b0000;#40 DRW=0;joinalwaysbegin#5 T3=~T3;endendmodule00ns DBUS=00000111 T3上升沿到来(5ns时)数据00000111被写R0 10ns DBUS=00001001 T3上升沿到来(15ns时)数据00001001被写R1 20ns DBUS= R0&R1=0000000130ns DRW=1 T3上升沿到来(35ns)时DBUS数据00000001被写R0,38 ns M=1,S=0000 DBUS=R0&R1==11111110H 实现了求反运算(说明已经实现了R0&R1 → R0)(3)RAM4RAM4.bdfcnt256cnt256.vmodulet256(Q,DATA,LDN,reset,clk);output [7:0] Q;input [7:0] DATA;input LDN,reset,clk;reg [7:0] Q;always (posedge clk or negedge reset) //clk上升沿触发beginif(!reset) //异步清零,低电平有效Q<=8'b0;else if(!LDN) Q<=DATA; //同步置数,低电平有效else Q<=Q+1; //计数endendmodulecnt256.vt`timescale 1 ns/ 1 psmodulet256_vlg_tst();reg [7:0] DATA;reg LDN;reg clk;reg reset;wire [7:0] Q;cnt256 i1 (.DATA(DATA),.LDN(LDN),.Q(Q),.clk(clk),.reset(reset));initial beginDATA=1'hA; clk=0;reset=1;LDN=1;DATA=8'd0*******;#20 reset=0;#40 reset=1;#260 LDN=0;#80 LDN=1;endalwaysbegin#20 clk=~clk;endendmoduleasdf利用宏功能模块先生成单端口存储器,再用两单端口存储器进行连接生成双端口存储器RAM4仿真测试逻辑图双端口逻辑功能表(1)从左端口写存储器(在01H 单元中写入数据11H)(右端口为只读端口)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能x ↑0 110 0 1 0 0 0101H→AR ↑x 1 10 0 0 1 0 0 1111H→(01H)(2)从左端口读存储器(从01H 中读出数据11H)(右端口为只读端口)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能x ↑0 110 0 1 0 0 0101H→AR ↑x 00 0 0 1 1 0 0 xx(01H) →DBUS(3)从右端口读存储器(从01H 中读出数据11H)(右端口为只读端口)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能x ↑0 10 10 1 0 0 0101H→PC ↑x00 0 0 1 1 0 0 xx (01H) →INS(4)AR 自动加 1 读存储器(从左端口连续读存储器)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能↑x00 0 0 1 1 1 0 XX M→DBUS (5 )PC 自动加 1 读存储器(从右端口连续读T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能↑x00 0 0 0 1 0 1 XX M→INS(4)UCU_ir_1UCU_ir_1.bdfram64_40rom64_40.vmodule rom64_40 (addr,q);input [5:0] addr;output [39:0] q;reg [39:0] q;always (addr[5] or addr[4] or addr[3] or addr[2] or addr[1] or addr[0]) begincase({addr[5],addr[4],addr[3],addr[2],addr[1],addr[0]})6'h00 : q <= 40'h0c00000041;6'h01 : q <= 40'h00000410a0;6'h02 : q <= 40'h4010034002;6'h03 : q <= 40'h4010028002;6'h04 : q <= 40'h4020024004;6'h05 : q <= 40'h4010028004;6'h06 : q <= 40'h6c00020000;6'h07 : q <= 40'h4400020006;6'h08 : q <= 40'h501002080a;6'h09 : q <= 40'h4410020808;6'h0a : q <= 40'h641002080c;6'h0b : q <= 40'h4410020815;6'h0c : q <= 40'h7810020800;6'h0d : q <= 40'h401002a01a;6'h0e : q <= 40'h0020000c01;6'h0f : q <= 40'h4410020832;6'h10 : q <= 40'h000e810401;6'h11 : q <= 40'h0180020014;6'h12 : q <= 40'h0000000401;6'h13 : q <= 40'h8000000401;6'h14 : q <= 40'h0010002001;6'h15 : q <= 40'h5010020816;6'h16 : q <= 40'h440a7a0017;6'h17 : q <= 40'h44099a0018;6'h18 : q <= 40'h440eca0019;6'h19 : q <= 40'h440f8a0000;6'h1a : q <= 40'h401003401b;6'h1b : q <= 40'h401003501c;6'h1c : q <= 40'h401003501d;6'h1d : q <= 40'h401002a01f;6'h1e : q <= 40'h0000000000;6'h1f : q <= 40'h4020025030;6'h20 : q <= 40'h0000000000;6'h21 : q <= 40'h000a780c01;6'h22 : q <= 40'h0009980c01;6'h23 : q <= 40'h000ec80c01;6'h24 : q <= 40'h0008180c01;6'h25 : q <= 40'h000e80800e;6'h26 : q <= 40'h000fc08010;6'h27 : q <= 40'h0000000112;6'h28 : q <= 40'h0000000212;6'h29 : q <= 40'h000fc02401;6'h2a : q <= 40'h000e800401;6'h2b : q <= 40'h0040002401;6'h2c : q <= 40'h010*******;6'h2d : q <= 40'h020*******;6'h2e : q <= 40'h0000020401;6'h2f : q <= 40'h0000000000;6'h30 : q <= 40'h4020025031;6'h31 : q <= 40'h4020020000;6'h32 : q <= 40'h5010020833;6'h33 : q <= 40'h64100c0834;6'h34 : q <= 40'h7810020835;6'h35 : q <= 40'h4c1002a036;6'h36 : q <= 40'h400e834037;6'h37 : q <= 40'h440e835038;6'h38 : q <= 40'h480e835039;6'h39 : q <= 40'h4c0e83503a;6'h3a : q <= 40'h4c1002803b;6'h3b : q <= 40'h702002483c;6'h3c : q <= 40'h6c2002483d;6'h3d : q <= 40'h582002483e;6'h3e : q <= 40'h4420024800;6'h3f : q <= 40'h0000000000;default : begin endendcaseendendmodulerom64_40.vt`timescale 1 ns/ 1 psmodule rom64_40_vlg_tst();reg [5:0] addr; wire [39:0] q;rom64_40 i1 (.addr(addr),.q(q));integer i;initialbeginfor(i=0;i<64;i=i+1)begin#50 addr=i;endendendmodulereg6reg6.vmodule reg6 ( CLK,DOUT ,D,CLR_ );input CLK ;wire CLK ;input [5:0] D ;wire [5:0] D ;input CLR_;wire CLR_;output [5:0] DOUT ;reg [5:0] DOUT ;always ( negedge CLK or negedge CLR_ ) beginif(CLR_==0)DOUT <= 6'd0 ;elseDOUT <= D;endendmodulereg6.vt`timescale 1 ps/ 1 psmodule reg6_vlg_tst();reg CLK;reg CLR_;reg [5:0] D;wire [5:0] DOUT;reg6 i1 (.CLK(CLK),.CLR_(CLR_),.D(D),.DOUT(DOUT));integer i;initialbeginCLK=0;D=6'd1;CLR_=1;#10 CLR_=0;#10 CLR_=1;#30 D=6'd2;endalwaysbegin#20 CLK= ~CLK;endinitialbegin#50for(i=3;i<15;i=i+1)begin#40 D=i;endend endmoduleaddrtranaddrtran.bdfaddrtran.vt`timescale 1 ps/ 1 ps module addrtran_vlg_tst(); reg eachvec;reg C;reg INT;reg [7:4] IR;reg [5:0] NuA;reg [4:0] P;reg SWA;reg SWB;reg SWC;reg Z;wire [5:0] uA;addrtran i1 (.C(C),.\INT (INT),.IR(IR),.NuA(NuA),.P(P),.SWA(SWA),.SWB(SWB),.SWC(SWC),.uA(uA),.Z(Z));initialbeginINT=0;C=0;Z=0;P=5'd1;NuA=2'o01;SWC=0;SWB=0;SWA=0;#20 SWA=1;#20 SWA=0;SWB=1;#20 SWA=1;#20 SWA=0;SWB=0;SWC=1;#20 SWC=0;P=5'd2;NuA=6'd010000;endinteger i;initial#80beginfor(i=0;i<16;i=i+1)#20 IR=i; endendmodulemicro_controller.bdfMicro_controller.vt`timescale 1 ns/ 1 psmodule micro_controller_vlg_tst(); reg eachvec;reg C;reg CLR_;reg INT;reg [7:4] IR;reg SWA;reg SWB;reg SWC;reg T3;reg Z;wire ABUS;wire ARINC;wire CIN;wire [39:0] CM;wire DRW;wire IABUS;wire INTDI;wire INTEN;wire LAR;wire LDC;wire LDZ;wire LIAR;wire LIR;wire LPC;wire M;wire MBUS;wire MEMW;wire PCADD;wire PCINC;wire [3:0] S;wire SBUS;wire [3:0] SEL;wire SELCTL;wire STOP;micro_controller i1 ( .ABUS(ABUS),.ARINC(ARINC),.C(C),.CIN(CIN),.CLR_(CLR_),.CM(CM),.DRW(DRW),.IABUS(IABUS),.\INT (INT),.INTDI(INTDI),.INTEN(INTEN),.IR(IR),.LAR(LAR),.LDC(LDC),.LDZ(LDZ),.LIAR(LIAR),.LIR(LIR),.LPC(LPC),.M(M),.MBUS(MBUS),.MEMW(MEMW),.PCADD(PCADD),.PCINC(PCINC),.S(S),.SBUS(SBUS),.SEL(SEL),.SELCTL(SELCTL),.STOP(STOP),.SWA(SWA),.SWB(SWB),.SWC(SWC),.T3(T3),.Z(Z));initialbeginCLR_=0;T3=0;#30 Z=0;C=0;INT=0;CLR_=1;SWC=0;SWB=0;SWA=0; endalwaysbegin#20 T3=~T3;endinteger i;initialbeginfor(i=1;i<16;i=i+1)begin#80 IR=i;endendendmodulereg8同ALU模块中的reg8mux2_1mux2_1.vmodule mux2_1(d0,d1,sel,dout);input [3:0]d0;input [3:0]d1;input sel;output dout;reg [3:0]dout;always (d0 or d1 or sel) case(sel)1'b0 : dout=d0;1'b1 : dout=d1;endcaseendmodulemux2_1.vt`timescale 1 ps/ 1 psmodule mux2_1_vlg_tst();reg eachvec;reg [3:0] d0;reg [3:0] d1;reg sel;wire [3:0] dout;mux2_1 i1 (.d0(d0),.d1(d1),.dout(dout),.sel(sel));initial begin d0=4'b0001;d1=4'b1110;endinteger i;initialwhile(1)beginfor(i=0;i<2;i=i+1)begin#50 sel=i;endend endmoduleUCU_ir_1仿真测试(1)ADD-SUB-AND-INC指令,2个CPU周期Testbench`timescale 1 ns/ 1 ps module ucu_ir_vlg_tst();reg eachvec;reg C;reg CLR_;reg [7:0] INS;reg INT;reg SWA;reg SWB;reg SWC;reg T3;reg Z;wire ABUS;wire ARINC;wire CIN;wire [39:0] CM;wire DRW;wire IABUS;wire INTDI;wire INTEN;wire LAR;wire LDC;wire LDZ;wire LIAR;wire LIR;wire LPC;wire M;wire MBUS;wire MEMW;wire PCADD;wire PCINC;wire [1:0] RD;wire [1:0] RS;wire [3:0] S;wire SBUS;wire STOP;ucu_ir i1 (.ABUS(ABUS),.ARINC(ARINC),.C(C),.CIN(CIN),.CLR_(CLR_),.CM(CM),.DRW(DRW),.IABUS(IABUS),.INS(INS),.\INT (INT),.INTDI(INTDI),.INTEN(INTEN),.LAR(LAR),.LDC(LDC),.LDZ(LDZ),.LIAR(LIAR),.LIR(LIR),.LPC(LPC),.M(M),.MBUS(MBUS),.MEMW(MEMW),.PCADD(PCADD),.PCINC(PCINC),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.STOP(STOP),.SWA(SWA),.SWB(SWB),.SWC(SWC),.T3(T3),.Z(Z));initialbeginCLR_=0;T3=1;#30 CLR_=1;Z=0;C=0;INT=0;SWC=0;SWB=0;SWA=0;endalways begin#10 T3=0;#20 T3=1;endinteger i;initialbegin#40 INS=8'b00010001;for(i=33;i<255;i=i+16)begin#60 INS=i;endend endmodule(2)LD-ST-JC指令,3个CPU周期Testbench`timescale 1 ns/ 1 psmodule ucu_ir_vlg_tst();reg eachvec;reg C;reg CLR_;reg [7:0] INS;reg INT;reg SWA;reg SWB;reg SWC;reg T3;reg Z;wire ABUS;wire ARINC;wire CIN;wire [39:0] CM; wire DRW;wire IABUS;wire INTDI;wire INTEN;wire LAR;wire LDC;wire LDZ;wire LIAR;wire LIR;wire LPC;wire M;wire MBUS;wire MEMW;wire PCADD;wire PCINC;wire [1:0] RD; wire [1:0] RS; wire [3:0] S; wire SBUS;wire STOP;ucu_ir i1 (.ABUS(ABUS),.ARINC(ARINC),.C(C),.CIN(CIN),.CLR_(CLR_),.CM(CM),.DRW(DRW),.IABUS(IABUS),.INS(INS),.\INT (INT),.INTDI(INTDI),.INTEN(INTEN),.LAR(LAR),.LDC(LDC),.LDZ(LDZ),.LIAR(LIAR),.LIR(LIR),.LPC(LPC),.M(M),.MBUS(MBUS),.MEMW(MEMW),.PCADD(PCADD),.PCINC(PCINC),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.STOP(STOP),.SWA(SWA),.SWB(SWB),.SWC(SWC),.T3(T3),.Z(Z));initialbeginCLR_=0;T3=1;Z=0;C=0;INT=0;SWC=0;SWB=0;SWA=0;#30 CLR_=1;endalways begin#10 T3=0;#20 T3=1;endinteger i;initialbegin#40 INS=8'b01011110;for(i=110;i<111;i=i+16)begin#90 INS=i;endfor(i=112;i<225;i=i+16)begin#90 INS=i;endend endmodule(3)JZ-JMP-OUT-STP指令Testbench`timescale 1 ns/ 1 psmodule ucu_ir_vlg_tst();reg eachvec;reg C;reg CLR_;reg [7:0] INS;reg INT;reg SWA;reg SWB;reg SWC;reg T3;reg Z;wire ABUS;wire ARINC;wire CIN;wire [39:0] CM; wire DRW;wire IABUS;wire INTDI;wire INTEN;wire LAR;wire LDC;wire LDZ;wire LIAR;wire LIR;wire LPC;wire M;wire MBUS;wire MEMW;wire PCADD;wire PCINC;wire [1:0] RD; wire [1:0] RS; wire [3:0] S; wire SBUS;wire STOP;ucu_ir i1 (.ABUS(ABUS),.ARINC(ARINC),.C(C),.CIN(CIN),.CLR_(CLR_),.CM(CM),.DRW(DRW),.IABUS(IABUS),.INS(INS),.\INT (INT),.INTDI(INTDI),.INTEN(INTEN),.LAR(LAR),.LDC(LDC),.LDZ(LDZ),.LIAR(LIAR),.LIR(LIR),.LPC(LPC),.M(M),.MBUS(MBUS),.MEMW(MEMW),.PCADD(PCADD),.PCINC(PCINC),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.STOP(STOP),.SWA(SWA),.SWB(SWB),.SWC(SWC),.T3(T3),.Z(Z));initialbeginCLR_=0;T3=1;Z=0;C=0;INT=0;SWC=0;SWB=0;SWA=0;#30 CLR_=1;endalways begin#10 T3=0;#20 T3=1;endinteger i;initialbegin#40 INS=8'b10000000;for(i=144;i<145;i=i+16)begin#90 INS=i;endfor(i=161;i<225;i=i+63)begin#60 INS=i;endend endmodule功能仿真:时序仿真:仿真测试1.读存储器,验证已经写入存储器指定单元的数据(SWC SWB SWA=010) 从00H开始连续读00-05H,从30H开始连续读30-32HTestbench:`timescale 1 ns/ 1 psmodule tatol_vlg_tst();reg CLR_;reg INT;reg [7:0] SD;reg SWA;reg SWB;reg SWC;reg T1;reg T2;reg T3;wire [7:0] DBUS;tatol i1 (.CLR_(CLR_),.DBUS(DBUS),.\INT (INT),.SD(SD),.SWA(SWA),.SWB(SWB),.SWC(SWC),.T1(T1),.T2(T2),.T3(T3));initialbeginINT=0;。
计算机组成原理实验报告基本模型机和复杂模型机的设计

计算机组成原理实验报告基本模型机和复杂模型机的设计1.引言2.设计目标本次实验的设计目标是实现一个满足基本要求的计算机模型,了解计算机的基本组成结构和工作原理。
然后我们将设计一个更复杂的模型,通过增加功能模块和优化设计,实现更高级的计算能力和更好的性能。
3.实验方法基本模型机的设计主要包括五个核心模块:输入模块、中央处理器(CPU)、存储器、控制器和输出模块。
我们将使用VHDL语言来实现这些模块,并使用FPGA来实现整个基本模型机。
复杂模型机的设计在基本模型机的基础上进行扩展和优化。
我们将对CPU进行升级,加入多核处理器和并行计算能力,增加存储器容量和传输速率,优化控制器的运行效率。
通过这些优化,我们可以提高复杂模型机的计算性能和运行效率。
4.实验结果4.1基本模型机的实验结果基本模型机的实验结果显示,我们成功实现了输入输出功能,能够将用户的输入数据送入存储器,并通过CPU进行计算后将结果输出。
虽然这个模型的计算能力和性能较低,但是它对于初学者来说是一个良好的实践项目。
4.2复杂模型机的实验结果复杂模型机的实验结果显示,我们成功实现了多核处理器和并行计算的功能,并大幅提升了计算性能和运行效率。
存储器的容量和传输速率的提升也带来了更高的数据处理能力。
控制器的优化使得整个模型机的运行更加稳定和高效。
5.实验总结通过设计和实现基本模型机和复杂模型机,我们加深了对计算机组成原理的理解,并掌握了相关的设计和实践技巧。
实验结果表明,我们的设计能够满足计算机的基本要求,并具有一定的性能和计算能力。
通过进一步优化和扩展,我们可以设计出更高级的计算机模型,满足更多应用需求。
[1]《计算机组成原理》李文新,清华大学出版社,2024年。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六计算机系统综合设计与实现一、实验目的1、深入理解计算机系统工作的基本原理,建立整机概念。
2、融会贯通计算机组成原理课程的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识。
3、培养科学研究的独立工作能力,取得工程设计与组装调试的实践经验。
二、实验要求1、将已经设计的运算器、存储器和控制器连接,构建完整的计算机系统;2、编写一段可以实现一定功能的指令程序,进行计算机整机系统功能的验证。
3、所有任务要求功能仿真和必要的验证。
实验完成后,一周内提交实验报告。
三、实验设备PC机+ QuartusⅡ + FPGA(DE2-115)+TEC-8实验箱四、计算机系统(TEC-8)综合逻辑框图硬连线控制器控制信号切换电路ALU A端口B端口C Z R0 R1 R2 R3 IR PC AR 双端口RAM DBUS五、实验任务1、将实验二的运算器、实验三的存储器和实验五的控制器连接,构建完整的计算机系统;2、计算机整机系统功能测试,进行功能仿真和时序仿真并在DE2-115上验证。
(1)根据指令系统,编写一段可以实现一定功能的程序,要求:有一个合理的运算功能和逻辑关系;指令数量:不少于8条;指令类型:停机、跳转、RR、读存、写存、算术和逻辑运算;(2)将指令程序手工汇编成二进制代码;(3)理论上设置寄存器的初值,并计算程序执行后的结果;(4)将指令程序的二进制代码存入存储器RAM中;(5)将需要的运算数据初值存入寄存器R0-R3中;(6)进行程序连续运行的功能仿真和时序仿真,将仿真运算结果与理论计算结果进行比较。
六、实验步骤实验电路图子模块(1)tri_74244module tri_74244 (en,Din,Dout ); input en ;wire en ;input [7:0] Din;wire [7:0] Din ;output [7:0] Dout ;reg [7:0] Dout ;always @(en or Din)beginif (en)Dout<= Din ;elseDout <= 8'bzzzzzzzz;endendmodule`timescale 1 ps/ 1 psmodule tri_74244_vlg_tst(); reg eachvec;reg [7:0] Din;reg en;wire [7:0] Dout;`timescale 1 ps/ 1 psmodule tri_74244_vlg_tst();reg eachvec;reg [7:0] Din;reg en;wire [7:0] Dout;tri_74244 i1 (.Din(Din),.Dout(Dout),.en(en));integer i;initial begin i=0;Din=8'b00000000;en=0;en=1;#30 en=0;#40 en=1;endinitialbeginfor(i=0;i<10;i=i+1)begin#10 Din=i;endend endmoduletri74244功能仿真(2)ALUmodolue_74181使用quartus库中的74181模块转换为verilog文件即可de2_4module de2_4(en,in,out);input [2:1] in ;input en;output [4:1] out ;reg [4:1] out ;always @ (en or in)if (en)case (in)2'b00:out=4'b0001;2'b01:out=4'b0010;2'b10:out=4'b0100;2'b11:out=4'b1000;default:out=4'b0000;endcaseelse out=4'b0000; endmodule`timescale 1 ns/ 1 psmodule de2_4_vlg_tst();reg eachvec;reg en;reg [2:1] in; wire [4:1] out;de2_4 i1 (.en(en),.in(in),.out(out));initialbeginen=0;endinitialbegin# 10 en=1;endinitialbegin# 5 in=2'b00;#15 in=2'b01;#15 in=2'b10;#15 in=2'b11;#40 $finish;endinitial$monitor($time,,,"en=%b in=%b out=%b",en,in,out); endmodulereg8module reg8 ( T3,DOUT ,D ); input T3 ;wire T3 ;input [7:0] D ;wire [7:0] D ;output [7:0] DOUT ;reg [7:0] DOUT ;always @ ( posedge T3 ) beginDOUT <= D ;endendmodule`timescale 1 ps/ 1 ps module reg8_vlg_tst(); reg eachvec;reg [7:0] D;reg T3;wire [7:0] DOUT;reg8 i1 (.D(D),.DOUT(DOUT),.T3(T3));integer i;initialbeginT3=0;D=8'd0;endalwaysbegin#5 T3= ~T3;endinitialbegin for(i=0;i<11;i=i+1)begin#10 D=i;endend endmodulemux4_1module mux4_1(d1,d2,d3,d4,se1,se2,dout);input [7:0]d1;input [7:0]d2;input [7:0]d3;input [7:0]d4;input se1;input se2;output dout;reg [7:0]dout;always @ (d1 or d2 or d3 or d4 or se1 or se2) case({se2,se1})2'b00 : dout=d1;2'b01 : dout=d2;2'b10 : dout=d3;2'b11 : dout=d4;endcaseendmodule`timescale 1 ps/ 1 psmodule mux4_1_vlg_tst();reg eachvec;reg [7:0] d1;reg [7:0] d2;reg [7:0] d3;reg [7:0] d4;reg se1;reg se2;wire [7:0] dout;mux4_1 i1 (.d1(d1),.d2(d2),.d3(d3),.d4(d4),.dout(dout),.se1(se1),.se2(se2));integer i,j;initial begin #10 d1=8'b00000001;d2=8'b00000010;d3=8'b00000011;d4=8'b00000100;endinitialbegin#5while(1)for(i=0;i<2;i=i+1)for(j=0;j<2;j=j+1)begin#5 se2=i; se1=j;endend endmoduleALU逻辑电路图逻辑功能表(1)写寄存器(例如:向通用寄存器R0-R3分别写入数据55H/AAH/03H/04H)(2)选择将R0送74181的A端口,R1送B端口,进行算术功能验算(3)选择将R0送74181的A端口,R1送B端口,进行逻辑功能验算当A=55H,B=AAH,S=0000~1111,M=0,CIN=1时仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS; wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initialbeginT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b01010101;#10 RD=2'b01; SD=8'b;#10 RD=2'b10; SD=8'b00000011;#10 RD=2'b11; SD=8'b00000100; #10 RD=2'b00;RS=2'b01;SBUS=0;DRW=0;ABUS=1;CIN=1;LDC=1;M=0;endalwaysbegin#5 T3=~T3;endinteger i;initialbegin#40 S=4'b0000;for(i=1;i<16;i=i+1)#10 S=i;endinitial$monitor($time,,,"M=%b S=%b CIN=%b SD=%h DBUS=%h C=%b",M,S,CIN,SD,DBUS,C); endmodule指令ADD R0,R1( R0+R1 → R0)的仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initial forkT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b00000111;#10 RD=2'b01;#10 SD=8'b00000001;#20 RD=2'b00;#20 RS=2'b01;#20 SBUS=0;#20 DRW=0;#20 ABUS=1;#20 CIN=1;#20 LDC=1; #20 M=0;#20 S=4'b1001;#30 RD=2'b00;#30 DRW=1;#40 DRW=0;joinalwaysbegin#5 T3=~T3;endendmodule00ns DBUS=07H T3上升沿到来(5ns时)数据07H被写R010ns DBUS=01H T3上升沿到来(15ns时)数据01H被写R120ns DBUS= R0+R1=07+01=08H30ns T3上升沿到来(35ns)时DBUS数据08H被写R0,因此DBUS=R0+R1=08H+01H=09H (说明实现了R0+R1 → R0)注意:此时M=0, S=1001,CIN=1(相当于C0=0),实现算术运算A+B指令SUB R0,R1( R0-R1 → R0)的仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initial forkT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b00000111;#10 RD=2'b01;#10 SD=8'b00000001;#20 RD=2'b00;#20 RS=2'b01;#20 SBUS=0;#20 DRW=0;#20 ABUS=1;#20 CIN=0;#20 LDC=1; #20 M=0;#20 S=4'b0110;#30 RD=2'b00;#30 DRW=1;#40 DRW=0;joinalwaysbegin#5 T3=~T3;endendmodule00ns DBUS=03H T3上升沿到来(5ns时)数据07H被写R010ns DBUS=01H T3上升沿到来(15ns时)数据01H被写R120ns DBUS= R0-R1=07-01=06H30ns T3上升沿到来(35ns)时DBUS数据06H被写R0,因此DBUS=R0-R1=06H-01H=05H(说明实现了R0-R1 → R0)注意:此时M=0,S=0110,实现算术运算A-B-1,设置CIN=0(相当于C0=1),让进位C0=1,因此实现运算(A-B-1)+1=A-B指令AND R0,R1( R0&R1 → R0)的仿真测试文件及功能仿真波形`timescale 1 ns/ 1 psmodule alu_vlg_tst();reg T3;reg SBUS;reg DRW;reg ABUS;reg LDC;reg CIN;reg M;reg [1:0] RD;reg [1:0] RS;reg [3:0] S;reg [7:0] SD;wire [7:0] DBUS;wire C;alu i1 (.ABUS(ABUS),.C(C),.CIN(CIN),.DBUS(DBUS),.DRW(DRW),.LDC(LDC),.M(M),.RD(RD),.RS(RS),.S(S),.SBUS(SBUS),.SD(SD),.T3(T3));initial forkT3=0;SBUS=1;DRW=1;ABUS=0;RD=2'b00; SD=8'b00000111;#10 RD=2'b01;#10 SD=8'b00001001;#20 RD=2'b00;#20 RS=2'b01;#20 SBUS=0;#20 DRW=0;#20 ABUS=1;#20 CIN=1;#20 LDC=1;#20 M=1;#20 S=4'b1011;#30 RD=2'b00;#30 DRW=1;#38 S=4'b0000;#40 DRW=0;joinalwaysbegin#5 T3=~T3;endendmodule00ns DBUS=00000111 T3上升沿到来(5ns时)数据00000111被写R0 10ns DBUS=00001001 T3上升沿到来(15ns时)数据00001001被写R1 20ns DBUS= R0&R1=0000000130ns DRW=1 T3上升沿到来(35ns)时DBUS数据00000001被写R0,38 ns M=1,S=0000 DBUS=R0&R1==H 实现了求反运算(说明已经实现了R0&R1 → R0)(3)RAM4cnt256module cnt256(Q,DATA,LDN,reset,clk);output [7:0] Q;input [7:0] DATA;input LDN,reset,clk;reg [7:0] Q;always @(posedge clk or negedge reset) ATA(DATA), .LDN(LDN),.Q(Q),.clk(clk),.reset(reset));initial beginDATA=1'hA; clk=0;reset=1;LDN=1;DATA=8'd0*******;#20 reset=0;#40 reset=1;#260 LDN=0;#80 LDN=1;endalwaysbegin#20 clk=~clk;endendmoduleasdf利用宏功能模块先生成单端口存储器,再用两单端口存储器进行连接生成双端口存储器RAM4仿真测试逻辑图双端口逻辑功能表(1)从左端口写存储器(在01H 单元中写入数据11H)(右端口为只读端口)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能x ↑0 110 0 1 0 0 0101H→AR ↑x 1 10 0 0 1 0 0 1111H→(01H)(地址线和数据线分时复用技术,先送地址,再送数据)用同样方法在02H 中写入22H (2)从左端口读存储器(从01H 中读出数据11H)(右端口为只读端口)T2 T3 MEMW SBUS LAR LPC MBUS CLR_ ARINC PCINC SD[7..0] 功能x ↑0 110 0 1 0 0 0101H→AR ↑x 00 0 0 1 1 0 0 xx(01H) →DBUS (地址线和数据线分时复用技术,先送地址,再送数据)用同样方法读出02H 中的22H (3)从右端口读存储器(从01H 中读出数据11H)(右端口为只读端口)(地址线和数据线分时复用技术,先送地址,再送数据)用同样方法读出02H 中的22H (4)AR 自动加 1 读存储器(从左端口连续读存储器)(5 )PC 自动加 1 读存储器(从右端口连续读存储器)(4)UCU_ir_1ram64_40module rom64_40 (addr,q);input [5:0] addr;output [39:0] q;reg [39:0] q;always @(addr[5] or addr[4] or addr[3] or addr[2] or addr[1] or addr[0]) begincase({addr[5],addr[4],addr[3],addr[2],addr[1],addr[0]})6'h00 : q <= 40'h0c00000041;6'h01 : q <= 40'h00000410a0;6'h02 : q <= 40'h02;6'h03 : q <= 40'h02;6'h04 : q <= 40'h04;6'h05 : q <= 40'h04;6'h06 : q <= 40'h6c00020000;6'h07 : q <= 40'h06;6'h08 : q <= 40'h0a;6'h09 : q <= 40'h08;6'h0a : q <= 40'h0c;6'h0b : q <= 40'h15;6'h0c : q <= 40'h00;6'h0d : q <= 40'h401002a01a;6'h0e : q <= 40'h0020000c01;6'h0f : q <= 40'h32;6'h10 : q <= 40'h000e810401; 6'h11 : q <= 40'h04;6'h12 : q <= 40'h0000000401; 6'h13 : q <= 40'h01;6'h14 : q <= 40'h00;6'h15 : q <= 40'h16;6'h16 : q <= 40'h440a7a0017; 6'h17 : q <= 40'h44099a0018;6'h18 : q <= 40'h440eca0019; 6'h19 : q <= 40'h440f8a0000; 6'h1a : q <= 40'h1b;6'h1b : q <= 40'h1c;6'h1c : q <= 40'h1d;6'h1d : q <= 40'h401002a01f; 6'h1e : q <= 40'h0000000000; 6'h1f : q <= 40'h30;6'h20 : q <= 40'h0000000000; 6'h21 : q <= 40'h000a780c01; 6'h22 : q <= 40'h0009980c01; 6'h23 : q <= 40'h000ec80c01; 6'h24 : q <= 40'h0008180c01; 6'h25 : q <= 40'h000e80800e; 6'h26 : q <= 40'h000fc08010; 6'h27 : q <= 40'h0000000112;6'h28 : q <= 40'h0000000212; 6'h29 : q <= 40'h000fc02401; 6'h2a : q <= 40'h000e800401; 6'h2b : q <= 40'h00;6'h2c : q <= 40'h01;6'h2d : q <= 40'h01;6'h2e : q <= 40'h0000020401; 6'h2f : q <= 40'h0000000000;6'h30 : q <= 40'h31;6'h31 : q <= 40'h00;6'h32 : q <= 40'h33;6'h33 : q <= 40'h64100c0834; 6'h34 : q <= 40'h35;6'h35 : q <= 40'h4c1002a036; 6'h36 : q <= 40'h400e834037; 6'h37 : q <= 40'h440e835038;6'h38 : q <= 40'h480e835039; 6'h39 : q <= 40'h4c0e83503a; 6'h3a : q <= 40'h4c1002803b; 6'h3b : q <= 40'h3c;6'h3c : q <= 40'h6c2002483d; 6'h3d : q <= 40'h3e;6'h3e : q <= 40'h00;6'h3f : q <= 40'h0000000000;default : begin endendcaseendendmodule`timescale 1 ns/ 1 psmodule rom64_40_vlg_tst();reg [5:0] addr; wire [39:0] q;rom64_40 i1 (.addr(addr),.q(q));integer i;initialbeginfor(i=0;i<64;i=i+1)begin#50 addr=i;endendendmodulereg6module reg6 ( CLK,DOUT ,D,CLR_ );input CLK ;wire CLK ;input [5:0] D ;wire [5:0] D ;input CLR_;wire CLR_;output [5:0] DOUT ;reg [5:0] DOUT ;always @ ( negedge CLK or negedge CLR_ ) beginif(CLR_==0)DOUT <= 6'd0 ;elseDOUT <= D;endendmodule`timescale 1 ps/ 1 ps module reg6_vlg_tst();reg CLK;reg CLR_;reg [5:0] D;wire [5:0] DOUT;reg6 i1 (.CLK(CLK),.CLR_(CLR_),.D(D),.DOUT(DOUT));integer i;initialbeginCLK=0;D=6'd1;CLR_=1;#10 CLR_=0;#10 CLR_=1;#30 D=6'd2;endalwaysbegin#20 CLK= ~CLK;endinitialbegin#50for(i=3;i<15;i=i+1)begin#40 D=i;endend endmoduleaddrtran`timescale 1 ps/ 1 ps module addrtran_vlg_tst(); reg eachvec;reg C;reg INT;reg [7:4] IR;reg [5:0] NuA;reg [4:0] P;reg SWA;reg SWB;reg SWC;reg Z;wire [5:0] uA;addrtran i1 (.C(C),.\INT (INT),.IR(IR),.NuA(NuA),.P(P),.SWA(SWA),.SWB(SWB),.SWC(SWC),.uA(uA),.Z(Z));initial begin INT=0;C=0;Z=0;P=5'd1;NuA=2'o01;SWC=0;SWB=0;SWA=0;#20 SWA=1;#20 SWA=0;SWB=1;#20 SWA=1;#20 SWA=0;SWB=0;SWC=1;#20 SWC=0;P=5'd2;NuA=6'd010000;endinteger i;initial#80beginfor(i=0;i<16;i=i+1)#20 IR=i; endendmodule`timescale 1 ns/ 1 psmodule micro_controller_vlg_tst(); reg eachvec;reg C;reg CLR_;reg INT;reg [7:4] IR;reg SWA;reg SWB;reg SWC;reg T3;reg Z;wire ABUS;wire ARINC;wire CIN;wire [39:0] CM;wire DRW;wire IABUS;wire INTDI;wire INTEN;wire LAR;wire LDC;wire LDZ;wire LIAR;wire LIR;。