版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 运算器实验计算机的一个最主要的功能就是处理各种算术和逻辑运算,这个功能要由 CPU 中的运算器来完成,运算器也称作算术逻辑部件 ALU。首先安排基本运算器实验,了解运算器的基本结构。1.1实验目的(1) 了解运算器的组成结构。(2) 掌握运算器的工作原理。1.2实验设备PC机一台,Digilent Nexys 4TM开发板,Xilinx Vivado开发套件。1.3实验原理Digilent Nexys 4TM开发板的通用I/O设备电路图如图1.1所示:图1.1Digilent Nexys 4TM开发板的通用I/O设备电路图如上所示,Nexys4 DDR板 包括2个三色LED,16个滑动
2、开关,6个按钮开关,16个单体LED和1个数字-8的七段显示器。为了防止粗心大意的短路(假如一个FPGA针脚分派到一个按钮开关或者滑动开关被粗心大意的定为输出时将发生短路)损害,按钮开关和滑动开关通过串联电阻连接到FPGA。5个按钮开关分派到1个“+”信号的配置是瞬时开关,在正常情况下,这些瞬时开关不用时产生低信号输出,被压时产生高信号输出。另一方面,“CPU RESET”红色按钮不用时产生高信号输出,被压时产生低信号输出。“CPU RESET”按钮常常在EDK(嵌入式开发套件)设计中用于重置进程,但你也可以把它当为常用按钮开关使用。滑动开关根据他们的位置产生固定的高或低信号输入。16个单体高
3、效LED通过330欧姆的电阻阳极连接到FPGA,所以当其各自I/O针脚应用到逻辑高电压时他们应该是打开的。不被用户访问的额外LED表示电源,FPGA编程状态和USB和以太网端口状态。控制显示模块的七段显示器的原理图如图1.2所示:图1.2七段显示器原理图Nexys4 DDR板包含2个4位同阳极7段LED显示器,配置表现得像1个8位数字显示。8位数字的每一个由分派在一个“数字8”图案中的7段组成,每段嵌入1个LED。如图17所示,每段LED是单独发光,所以128种模式的任何一个可以通过使某些LED段发光和另外的不发光显示在一个数字上。这些128个可能的模式中,有10个对应的十进制数字是最有用的。
4、图1.3显示的是7段显示器共阳极电路节点图,每个数字前的7个LED的阳极一起连接到“共同阳极”电路节点,但阴极是分开的。共同阳极信号用作数字-8显示器的8个“位可用”输入信号。在整体4个显示器上的相似段的阴极连接到7个标有CA到CG的电路节点。比如,来自8位的8个“D”阴极分到一个单独的“CD”电路节点。7个阴极信号作为数字-8显示器的输入信号。此信号连接方案创建了多路复用的显示器,其阴极信号是所有数字共有的但是只有数字的段对应的阳极信号生效时他们才照亮。为了照亮一个段,阳极应该驱动为高电平,阴极驱动为低电平。然而,自从Nexys4 DDR使用电阻去驱动当前足够的电平到共同阳极端,阳极可用被置
5、反。所以当激活时,AN0.7和CA.G/DP信号驱动为低电平。图1.37段显示器共阳极电路节点图在这个显示器上,扫描显示控制器电路常常显示8位数字。这个电路在快于人眼能察觉的更新频率下重复持续的驱动每个数字阳极信号和相应的阴极模式信号。照亮每个数字仅有时间的八分之一,但在那个数字再次照亮前由于人眼不能察觉到那个数字变暗,所以那个数字一直被照亮了。如果更新,或“刷新”频率放缓在45Hz左右,就可以注意到显示器上数字的闪烁了。4个数字的每一个发亮和持续发光,所有的8个数字每1到16ms驱动一次,因为更新频率大约在1KHz到60Hz之间。例如,在62.5Hz的刷新频率下,整个显示器每16ms刷新一下
6、,每个数字在刷新周期的1/8或者2ms将发光。控制器在正确的图案下必须驱动阴极信号为低电平,而驱动对应的阳极信号为高电平。为了说明这个过程,假设AN0有效而CB和CC有效,“1”将显示在数字位置1上。然后,假设AN1有效而CA,CB和CC有效,“7”将显示在数字位置2上。在无尽的自然演替中,假设AN0,CB和CC持续驱动4ms,然后AN1,CA,CB和CC持续驱动4ms,“71”将显示首2个数字上。一个4位数字控制器的时序图例子如图1.4所示。图1.4 4位数字控制器的时序图本次实验的原理图如图1.5所示:1.5运算器实验原理图1)内置一个32位num2作为运算器的一个输入;2)将sw0sw7
7、输入到num1,经过符号扩展到32位后,作为运算器的另一个输入;3)因为运算器支持“加、减、与、或、非”5种运算,需要3位(8个操作)。将sw15sw13输入到op作为运算器的控制信号;4)将计算32位结果s显示到显示器上,显示器由2个4位同阳极7段LED显示器,显示器显示的是十六进制,显示器中有reset信号和clk信号。其中运算器模块的第一个输入变量为8位操作数num1,第二个输入为3位的操作码op,输出变量为32位的运算结果result。设置一个32位变量存储第二个常量操作数num2,该操作数固定为32h00000001;高位补0扩展第一个8位操作数到32位,这个32位数用变量Sign_
8、extend保存;最后根据op的不同进行相应的运算操作,将操作结果赋值到输出变量。具体的运算规则如下表所示:表1.1运算规则操作码op运算结果000result = Sign_extend + num2001result = Sign_extend - num2;010result = Sign_extend &num2;011Sign_extend | num2;100Sign_extend其他32'h00000000;1.4实验步骤1.创建项目,首先打开vivado,在vivado左上侧菜单栏点击File菜单,选择New Project,如下图所示:点击Next,设置项目名
9、称和相应的路径,如下图所示:一直点击Next到Add Source界面,添加display模块的源代码文件,如下图所示:点击Next,直到Default Part界面,参照下图进行选择:点击Next,然后点击Finish完成项目创建。2.将display模块代码封装成ip核。点击Project Settings菜单,弹出对话框如下图,按下图方式设置后点击Apply,然后点击OK。其中Category为IP盒所在的上级目录,当添加IP盒时需要在该目录下找到相应的IP盒。设置成功后,点击Tools,选择Create and Package IP,一直点击next按键,选择IP核保存的路径,最后生成
10、IP核。生成后会弹出该IP核的详细情况页面,点击Review and Package选项,然后点击Package IP,IP核就封装完成。3.创建calculate主模块,新建项目然后按照第1步将calculate模块的两个源文件加入到项目中,如下图所示:创建项目完成后,可以看到display模块的代码缺失,如下图所示:添加display模块的IP核。点击Project Settings然后点击IP,点击Add Repository将生成的display模块的IP核所在的目录添加到其中,默认的情况下,display模块的IP盒在该模块项目的文件夹下,只需要将display模块的项目添加到其中就
11、能找到相应的IP盒,然后点击OK。点击IP Catalog,找到所添加的display模块的IP核,双击该IP核就将其加入到项目中。双击IP盒后会弹出界面如下图,点击OK,会产生生成IP的界面,点击Generate,IP盒就生成成功了,有些调用IP盒的函数名称和IP盒的名字不匹配,需要更改IP盒名称或调用函数名称为相同名称才会添加成功。4.检查IP盒是否添加到了正确位置,如果添加到了正确位置,display模块将被IP盒取代,添加IP盒前后项目Source界面如下图所示:点击Run Synthesis进行对项目源文件进行综合,检查项目是否有语法错误。如下图所示:综合完成后项目右上角会有相应的提
12、示,会显示Synthesis Complete,而且会弹出下一步需要进行操作的界面,如下图所示:选择弹出框的Run Implementation然后点击OK,或者直接点击Cancel,然后选择左侧菜单栏Implementation菜单栏下的Run Implementation选项进行实施项目活动的设计合成网表,完成后会有如下图所示的提示:点击OK,选择Layout菜单下的I/O Planning进行I/O端口的管脚绑定。首先将所有的端口的电压改为3.3V(在IO std下选择LVCMOS33)。其中clk所要绑定的管脚为E3,rst所要绑定的管脚为N17。绑定完成后需要关闭该Implement
13、ed Design界面,关闭时会弹出提示框询问是否保存已绑定的管件生成的约束文件,选择保存,该步骤完成。5.点击Generate Bitstream,生成相应的比特流文件,生成成功后,将开发板连接到电脑USB接口,打开开关,然后点击Open target,选择开发板后,点击Program device,然后将比特流文件下载到开发板,根据不同的输入观察相应显示器显示的内容。实验二 存储器实验2.1实验目的(1)掌握存储器在设计原理,并且自己设计一个大小合适的ROM。(2)掌握存储器的存储和取数的过程,并将存储器的内容通过显示管显示出来。2.2实验设备PC机一台,Digilent Nexys 4T
14、M开发板,Xilinx Vivado开发套件。2.3实验原理本次实验主要是模拟数据在存储器中的存取过程,先初始化ROM存储器中的内容,在通过开关选择相应的地址,将对应的存储器中内容读出来,并通过显示管显示。实验的原理图如下图2.1所示:图2.1存储器原理图这里我们使用到两个IP核,其中一个是ins_ROM核实系统自带的,通过该IP核我们实现数据的存取,通过8位地址开关的选择,将ROM中对应的32位指令取出来并送往display。而display核是我们自己设计的IP核,通过display可以将ROM中取出的32位数据在数码管上显示出来。存储容量是指存储器可以容纳的二进制信息量,用存储器中存储地
15、址数与存储字位数的乘积表示。2.4实验步骤1.按照实验一步骤封装display模块的IP盒。2.新建项目用于实现存储器功能添加设计源文件。3. 按照实验一步骤将display模块IP盒添加到项目中。4. 在IP Catalog > Memories & Storage Elements > RAMs & ROMs> Block Memory Generator目录底下,找到系统自带的rom核并添加。双击之后得到Basic一栏的基本属性:Component Name命名为:Ins_Rom。Native、单端口、ROM不要ECC校验、最小面积算法。接着设置Port
16、 A Option的基本属性数据宽度32位,要256个数据,地址线8根。接着设置option选项属性:若有存储器初始化文件,这里指定文件的位置,文件为prgmip32.coe文件。这里我们会给出创建好的初始文件。点击OK就会得到相应的IP核。现在我们可以看到我们已经成功调用了两个ip核5. 接着我们按照实验一的步骤进行综合与实现以及管脚的约束。其中时钟信号clk和重置信号rst与实验一绑定管脚相同。管脚绑定之后按照实验一的步骤进行比特流的生成并将比特流文件下载到开发板上,观察结果。实验三 控制器实验控制器是计算机的核心部件,计算机的所有硬件都是在控制器的控制下,完成程序规定的操作。控制器的基本
17、功能就是把机器指令转换为按照一定时序控制机器各部件的工作信号,使各部件产生一系列动作,完成指令所规定的任务。3.1 实验目的(1)掌握单周期CPU控制器的工作原理及其设计方法。(2)掌握各个控制信号的作用和生成过程。3.2 实验设备PC机一台,Digilent Nexys 4TM开发板,Xilinx Vivado开发套件。3.3实验原理控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制的硬件逻辑部件工作的命令序列,完成数据传送和各种处理操作。本实验根据MIPS的31种类型的指令以及根据该指令结构所设计出的数据通路模拟其中控制单元生成控制信号的过程。其中MIPS的31条
18、指令类型如表3.1所示:表3.1 MIPS的31种指令助记符指 令 格 式示 例示例含义操作及解释BIT #31.2625.2120.1615.1110.65.0R-类型oprsrtrdshamtfuncadd000000rsrtrd00000100000add $1,$2,$3$1=$2+S3(rd)(rs)+(rt); rs=$2,rt=$3,rd=$1addu000000rsrtrd00000100001addu $1,$2,$3$1=$2+S3(rd)(rs)+(rt); rs=$2,rt=$3,rd=$1,无符号数sub000000rsrtrd00000100010sub $1,$2
19、,$3$1=$2-S3(rd)(rs)-(rt); rs=$2,rt=$3,rd=$1subu000000rsrtrd00000100011subu $1,$2,$3$1=$2-S3(rd)(rs)-(rt); rs=$2,rt=$3,rd=$1,无符号数and000000rsrtrd00000100100and $1,$2,$3$1=$2&S3(rd)(rs)&(rt); rs=$2,rt=$3,rd=$1or000000rsrtrd00000100101or $1,$2,$3$1=$2|S3(rd)(rs) | (rt); rs=$2,rt=$3,rd=$1xor00000
20、0rsrtrd00000100110xor $1,$2,$3$1=$2S3(rd)(rs)(rt); rs=$2,rt=$3,rd=$1nor000000rsrtrd00000100111nor $1,$2,$3$1= ($2 | S3)(rd)(rs) | (rt); rs=$2,rt=$3,rd=$1slt000000rsrtrd00000101010slt $1,$2,$3if($2<$3) $1=1 else $1=0if (rs< rt) rd=1 else rd=0;rs$2,rt=$3, rd=$1sltu000000rsrtrd000001010
21、11sltu $1,$2,$3if($2<$3) $1=1 else $1=0if (rs< rt) rd=1 else rd=0;rs$2,rt=$3, rd=$1, 无符号数sll00000000000rtrdshamt000000sll $1,$2,10$1=$2<<10(rd)(rt)<<shamt,rt=$2,rd=$1,shamt=10srl00000000000rtrdshamt000010srl $1,$2,10$1=$2>>10(rd)(rt)>>shamt, rt=$2, rd=$1, sham
22、t=10, (逻辑右移)sra00000000000rtrdshamt000011sra $1,$2,10$1=$2>>10(rd)(rt)>>shamt, rt=$2, rd=$1, shamt=10, (算术右移,注意符号位保留)sllv000000rsrtrd00000000100sllv $1,$2,$3$1=$2<<$3(rd)(rt)<<(rs), rs=$3,rt=$2,rd=$1srlv000000rsrtrd00000000110srlv $1,$2,$3$1=$2>>$3(rd)(rt)>>(rs),
23、rs=$3,rt=$2,rd=$1, (逻辑右移)srav000000rsrtrd00000000111srav $1,$2,$3$1=$2>>$3(rd)(rt)>>(rs), rs=$3,rt=$2,rd=$1, (算术右移,注意符号位保留)jr000000rs000000000000000001000jr $31goto $31(PC)(rs)I-类型oprsrtimmediateaddi001000rsrtimmediateaddi $1,$2,10$1=$2+10(rt)(rs)+(sign-extend)immediate,rt=$1,rs=$2addiu0
24、01001rsrtimmediateaddiu $1,$2,10$1=$2+10(rt)(rs)+(sign-extend)immediate,rt=$1,rs=$2andi001100rsrtimmediateandi $1,$2,10$1=$2&10(rt)(rs)&(zero-extend)immediate,rt=$1,rs=$2ori001101rsrtimmediateori $1,$2,10$1=$2|10(rt)(rs)|(zero-extend)immediate,rt=$1,rs=$2xori001110rsrtimmediatexori $1,$2,10$
25、1=$210(rt)(rs)(zero-extend)immediate,rt=$1,rs=$2lui00111100000rtimmediatelui $1,10$1=10*65536(rt)immediate<<16 & 0FFFF0000H,将16位立即数放到目的寄存器高16位,目的寄存器的低16位填0lw100011rsrtoffsetlw $1,10($2)$1=Memory$2+10(rt)Memory(rs)+(sign_extend)offset, rt=$1,rs=$2sw101011rsrtoffsetsw $1,10($2)Memory$2+10 =$
26、1Memory(rs)+(sign_extend)offset(rt), rt=$1,rs=$2beq000100rsrtoffsetbeq $1,$2,40if($1=$2) goto PC+4+40if (rt)=(rs) then (PC)(PC)+4+( (Sign-Extend) offset<<2), rs=$1, rt=$2bne000101rsrtoffsetbne $1,$2,40if($1$2) goto PC+4+40if (rt)(rs) then (PC)(PC)+4+(Sign-Extend)
27、offset<<2) , rs=$1, rt=$2slti001010rsrtimmediateslti $1,$2,10if($2<10) $1=1 else $1=0if (rs)<(Sign-Extend)immediate) then (rt)1; else (rt)0, rs=$2, rt=$1sltiu001011rsrtimmediatesltiu $1,$2,10if($2<10) $1=1 else
28、160;$1=0if (rs)<(Zero-Extend)immediate) then (rt)1; else (rt)0, rs=$2, rt=$1J-类型opaddressj000010addressj 10000goto 10000(PC)( (Zero-Extend) address<<2), address=10000/4jal000011addressjal 10000$31=PC+4goto 10000($31)(PC)+4;(PC)( (Zero-Extend) address<<2),address=10000/4由上表可知该指令主要分为三大类
29、,分别为R-类型、I-类型和J-类型。每类指令对应的控制信号也不相同,根据这些指令所设计的数据通路如图3.1所示:图3.1单周期CPU数据通路本次实验是主要模拟指令生成控制信号的过程,由于控制单元生成的控制信号较多,本次实验只取其中的一部分信号组成16位控制信号以供输出,这十六位控制信号的作用如表3.2所示:表3.2控制信号具体表示信号名称ALUSrcRegWriteALUOpI_formatBranchnBranch所在位置012-3456含义需要进行立即数的32位扩展作为第二操作数需要写寄存器的指令是R类型或需要立即数作32位扩展的指令1位为1,beq、bne指令则0位为1是I-类型指令是
30、beq指令是bne指令信号名称SftmdJalJmpSftmALU_ctl所在位置78910-1213-15含义是R-类型的移位指令是jal指令是j指令移位指令所对应的具体移位控制信号R-类型运算指令对应具体的运算,+、-、|、&等命令本次实验根据输入指令从寄存器堆中选取相应的寄存器,然后读取该寄存器获得相应32位指令,取其高5位和低5位送入控制器单元,由控制单元进行译码,输出相应的控制信号。该控制器组成原理图如下图所示:图3.2 控制器组成原理图该控制器的寄存器堆中有16个寄存器,每一个寄存器都预先分配了一条指令信息,根据4位输入读取寄存器堆中相应的一个寄存器。控制器主要实现对输入的
31、10位指令操作码的解析,生成16位控制信号,然后以led灯显示每条指令对应的控制信号。3.4实验步骤1.编写寄存器堆模块。该模块有4位输入和32位输出,首先将16种类型的16条指令写入寄存器堆的寄存器中,然后根据4位输入选择相应的寄存器,将寄存器中数据写入到输出变量中。开关输入数据、寄存器编号与指令的对应规则如下表所示:表3.3寄存器堆模块约束开关输入寄存器编号寄存器数据含义0000000000000001000100001100000100000R-类型add0001100000000001000100001100000100001R-类型addu0010200000000001000100
32、001100000101010R-类型slt0011300000000001000100001100000101011R-类型sltu0100400000000001000000000000000001000R-类型jr0101500100000001000100001100000101010I-类型addi0110600100100001000100001100000101010I-类型addiu0111700111100000000100001100000101010I-类型lui1000810001100001000100001100000101010I-类型lw100191010110
33、0001000100001100000101010I-类型sw10101000010000001000100001100000101010I-类型beq10111100010100001000100001100000101010I-类型bne11001200101000001000100001100000101010I-类型slti11011300101100001000100001100000101010I-类型addi11101400001000001000100001100000101010J-类型j11111500001100001000100001100000101010J-类型jal2.将已经提供的控制器模块文件封装成I
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 土地抵押正规合同范本
- 商业房产买卖合同范本
- 地摊产品代售合同范本
- 外包工程合作合同范本
- 外卖平台劳工合同范本
- 围墙维修协议合同范本
- 土地项目转让合同范本
- 大学宿舍租赁合同范本
- 外包维修用工合同范本
- 地坪防护租赁合同范本
- 2025至2030古建筑行业项目调研及市场前景预测评估报告
- 2025年中级经济师人力资源考试真题附答案
- 光伏测量基础知识培训课件
- 2025秋期版国开电大本科《人文英语4》一平台综合测试形考任务在线形考试题及答案
- 铅丝石笼谷坊单元工程施工质量检验表
- 2025年国企竞聘上岗笔试题干部竞聘上岗笔试题+答案
- 沪教牛津版小学三至六年级英语单词表
- 铁塔基站维护安全培训课件
- 塔吊绿色施工方案
- 腹腔镜下疝修补术后护理
- 小儿回流灌肠操作规范
评论
0/150
提交评论