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

洛阳理工学院实验报告系别 计算机与信息工程学院班级学号姓名课程名称计算机组成与系统结构实验日期实验名称 实验八 模型计算机设计 成绩实验条件: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为一个机器周期)方式逐步运行微程序。
计算机组成原理-实验报告四-基本模型机设计与实现

计算机组成原理实验报告
学院:计算机科学与信息专业:班级:
指令划分为操作码和地址码字段,由二进制数构成,为了执行任何给定的指令,必须对操作码进行测试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、掌握4条移位指令使用和编程。
3、学习设计与调试计算机的基本步骤及方法。
二、实验方案1、本实验是在基本模型机的基础上搭接移位控制电路,实现移位控制运算。
2、试验新增4条单字长(8位)一位运算指令,其格式如下:助记符机器指令码说明RR 将R0寄存器的数据循环右移一位。
RRC 将R0寄存器的数据带进位循环右移一位,即R0寄存器中数据右边第一位移入进位,而进位位移至R0的最左边。
RL 将R0寄存器的数据循环左移。
RLC 将R0寄存器的数据带进位循环左移一位,即R0寄存器中数据左边第一位移入进位,而进位位移至R0的最右边。
3、微指令格式其中A8、A9是2:4译码器(74LS139)的输入端,Y0、Y1、Y2、Y3是译码器输出端,其电路结构如下:其中Y0为SW-B ,Y1为CE ,Y2为LED-B ,Y3为空。
注意事项:(1) 详细的联机操作请参看附录1联机软件使用说明。
(2) 把串行通讯电缆分别插在实验仪及PC 微机的串口,即可实现实验仪与PC 的联机操作。
(3) 本实验用的程序文件名为EX2。
(4) 运行程序时,要把编程开关MJ20置为RUN(运行)状态,SWA 、SWB 、CLR 开关一定要处于为1、1、1状态。
实验仪上“STATE UNIT ”中的STEP 开关置为“STEP ”状态,STOP 开关置为“RUN ”状态。
(5) 每次运行前,都要拨动CLR 开关清零(1-0-1)。
清零后,微地址显示灯(实验仪上UA5-UA0)应为。
(6) 实验仪的微程序控制器单元中的微地址显示灯(UA5-UA0)显示的是后继微地址的二进制控制信息。
(7) 在屏幕下部显示相关微指令的详细表中,第三行第一列显示的是微地址,程序运行时默认显示为下一条微地址(八进制),括号里用N 表示,这时表中24~1各字段所显示的是下一条微指令的控制信息的二进制代码,最后一列显示微指令执行中主要的有效控制信号。
《计算机组成原理》实验报告
《计算机组成原理》实验报告
一、实验目的
1.搭建并操作一个最基本的模型计算机。
2.建立对计算机组成及其原理的基本认识。
二、实验设备
1.TDN-CM+教学实验系统一套。
2.排线31条:8芯8条,6芯3条,4芯3条,2芯17条。
3.PC 机一台。
三、实验内容
1.一台简单模型计算机的结构
我们将算术逻辑运算器、控制器、寄存器、内部总线等部件搭接起来构
成一个CPU,然后再加上存储器、输入设备、输出设备即构成一台完
整的模型计算机。
其逻辑框图如下。
2.构造一台模型计算机
将组成一台计算机的基本模块组合起来。
在TDN-CM+实验系统中使用
连接导线(排线)将模型计算机的各个部件连接在一起,构成一台完整
的模型计算机。
连线图如下。
四、模型计算机的运行操作
1.打开实验系统的电源开关,点击图标CMP运行软件。
2.联机正常后,可测试连线是否正确。
先选择“【运行】--【通路图】”,再
选“【测试】--【开始】”(否则该菜单呈灰色显示),即弹出“系统测试
对话框”。
计算机组成原理实验最新完整版
河南农业大学计算机组成原理实验报告题目简单机模型实验学院信息与管理科学学院专业班级计算机科学与技术级1班学生姓名张子坡( )指导教师郭玉峰撰写日期: 二○一二年六月五日一、实验目的:1.在掌握各部件的功能基础上, 组成一个简单的计算机系统模型机;2.了解微程序控制器是如何控制模型机运行的, 掌握整机动态工作过程;3定义五条机器指令, 编写相应微程序并具体上机调试。
二、实验要求:1.复习计算机组成的基本原理;2.预习本实验的相关知识和内容三、实验设备:EL-JY-II型计算机组成原理试验系统一套, 排线若干。
四、模型机结构及工作原理:模型机结构框图见实验书56页图6-1.输出设备由底板上上的四个LED数码管及其译码、驱动电路构成, 当D-G和W/R均为低电平时将数据结构的数据送入数据管显示注: 本系统的数据总线为16位, 指令、地址和程序计数器均为8位。
当数据总线上的数据打入指令寄存器、地址寄存器和程序寄存器时, 只有低8位有效。
在本实验我们学习读、写机器指令和运行机器指令的完整过程。
在机器指令的执行过程中, CPU从内存中取出一条机器指令到执行结束为一个指令周期, 指令由微指令组成的序列来完成, 一条机器指令对应一段微程序。
另外, 读、写机器指令分别由相应的微程序段来完成。
为了向RAM中装入程序和数据, 检查写入是否正确, 并能启动程序执行, 必须设计三个控制操作微程序。
存储器读操作( MRD) : 拨动清零开关CLR对地址、指令寄存器清零后, 指令译码器输入CA1、 CA2为”00”时, 按”单步”键, 可对RAM连续读操作。
存储器写操作( MWE) : 拨动清零开关CLR对地址、指令寄存器清零后, 指令译码器输入CA1、 CA2为”10”时, 按”单步”键, 可对RAM连续写操作。
启动程序( RUN) : 拨动开关CLR对地址、指令寄存器清零后, 指令译码器输入CA1、 CA2为”11”时, 按”单步”键, 即可转入第01号”取指”微指令, 启动程序运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六计算机系统综合设计与实现一、实验目的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;。