计算机组织与体系结构实验报告(共18页).doc
精选优质文档-倾情为你奉上计 算 机 组 成 原 理实 验 报 告评 语:成绩 教 师: 年 月 日 班 级: 学 号: 姓 名: 地 点: 时 间: 实验一 存储器实验1FPGA中LPM_ROM定制与读出实验一实验目的1、掌握FPGA中lpm_ROM的设置,作为只读存储器ROM的工作特性和配置方法。2、用文本编辑器编辑mif文件配置ROM,学习将程序代码以mif格式文件加载于lpm_ROM中;3、在初始化存储器编辑窗口编辑mif文件配置ROM;4、验证FPGA中mega_lpm_ROM的功能。二实验原理ALTERA的FPGA中有许多可调用的LPM (Library Parameterized Modules)参数化的模块库,可构成如lpm_rom、lpm_ram_io、lpm_fifo、lpm_ram_dq的存储器结构。CPU中的重要部件,如RAM、ROM可直接调用他们构成,因此在FPGA中利用嵌入式阵列块EAB可以构成各种结构的存储器,lpm_ROM是其中的一种。lpm_ROM有5组信号:地址信号address 、数据信号q 、时钟信号inclock、outclock、允许信号memenable,其参数都是可以设定的。由于ROM是只读存储器,所以它的数据口是单向的输出端口,ROM中的数据是在对FPGA现场配置时,通过配置文件一起写入存储单元的。图3-1-1中的lpm_ROM有3组信号:inclk输入时钟脉冲;q23.0lpm_ROM的24位数据输出端;a5.0lpm_ROM的6位读出地址。实验中主要应掌握以下三方面的内容: lpm_ROM的参数设置; lpm_ROM中数据的写入,即LPM_FILE初始化文件的编写; lpm_ROM的实际应用,在GW48_CP+实验台上的调试方法。三实验步骤(1)用图形编辑,进入mega_lpm元件库,调用lpm_rom元件,设置地址总线宽度address和数据总线宽度q,分别为6位和24位,并添加输入输出引脚,如图3-1-1设置和连接。(2)设置图3-1-1为工程。(3)在设置lpm_rom数据参数选择项lpm_file的对应窗口中(图3-1-2),用键盘输入lpm_ROM配置文件的路径(rom_a.mif),然后设置在系统ROM/RAM读写允许,以便能对FPGA中的ROM在系统读写。(4) 用初始化存储器编辑窗口编辑lpm_ROM配置文件(文件名.mif)。这里预先给出后面将要用到的微程序文件:rom_a.mif 。rom_a.mif中的数据是微指令码(图3-1-3)。(5)全程编译。(6)下载SOF文件至FPGA,改变lpm_ROM的地址a5.0,外加读脉冲,通过实验台上的数码管比较读出的数据是否与初始化数据(rom_a.mif中的数据)一致。(7)打开QuartusII的在系统存储模块读写工具,了解FPGA中ROM中的数据,并对其进行在系统写操作(图3-1-4)。图3-1-1 lpm_ROM的结构图图3-1-2 设置在系统ROM/RAM读写允许图3-1-3 rom_a.mif中的数据图3-1-4 在系统存储模块读写四实验结果仿真波形图如下:图4-1-1图4-1-2图4-1-3五.心得体会实验二 运算器实验1算术逻辑运算实验一实验目的1. 了解简单运算器的数据传输通路。2. 验证运算功能发生器的组合功能。3. 掌握算术逻辑运算加、减、与的工作原理。4. 验证实验台运算的8位加、减、与、直通功能。5. 按给定数据,完成几种指定的算术和逻辑运算。二实验内容1实验原理算术逻辑单元ALU的数据通路如图2-1所示。其中运算器ALU181根据74LS181的功能用VHDL硬件描述语言编辑而成,构成8位字长的ALU。参加运算的两个8位数据分别为A7.0和B7.0,运算模式由S3.0的16种组合决定,而S3.0的值由4位2进制计数器LPM_COUNTER产生,计数时钟是Sclk(图2-1);此外,设M=0,选择算术运算,M=1为逻辑运算,CN为低位的进位位;F7.0为输出结果,CO为运算后的输出进位位。两个8位数据由总线IN7.0分别通过两个电平锁存器74373锁入,ALU功能如表2-1所示。表2-1 ALU181的运算功能选择端高电平作用数据S3 S2 S1 S0M=HM=L 算术操作逻辑功能Cn=L(无进位)Cn=H(有进位)0 0 0 00 0 0 1加10 0 1 0+10 0 1 1减1(2的补码)0 1 0 0加10 1 0 1加加+10 1 1 00 1 1 11 0 0 0加11 0 0 1加11 0 1 0加11 0 1 11 1 0 0*1 1 0 1加11 1 1 0加11 1 1 1注1、* 表示每一位都移至下一更高有效位, “+”是逻辑或,“加”是算术加注2、在借位减法表达上,表2-1与标准的74181的真值表略有不同。三实验步骤(1)设计ALU元件在Quartus II 环境下,用文本输入编辑器Text Editor输入ALU181.VHD算术逻辑单元文件,编译VHDL文件,并将ALU181.VHD文件制作成一个可调用的原理图元件。(2)以原理图方式建立顶层文件工程选择图形方式。根据图2-1输入实验电路图,从Quartus II的基本元件库中将各元件调入图形编辑窗口、连线,添加输入输出引脚。将所设计的图形文件ALU.bdf保存到原先建立的文件夹中,将当前文件设置成工程文件,以后的操作就都是对当前工程文件进行的。(3)器件选择选择Cyclone系列,在Devices中选择器件EP1C6QC240C8。编译,引脚锁定,再编译。引脚锁定后需要再次进行编译,才能将锁定信息确定下来,同时生成芯片编程/配置所需要的各种文件。(4)芯片编程Programming(可以直接选择光盘中的示例已完成的设计进行验证实验)打开编程窗口。将配置文件ALU.sof下载进GW48系列现代计算机组成原理系统中的FPGA中。(5)选择实验系统的电路模式是NO.0,验证ALU的运算器的算术运算和逻辑运算功能根据表2-1,从键盘输入数据A7.0和B7.0,并设置S3.0、M、Cy,验证ALU运算器的算术运算和逻辑运算功能,记录实验数据。图2-1 算术逻辑单元ALU实验原理图四实验过程(1)按图2-1所示,在本验证性示例中用数据选择开关(键3控制)的高/低电平选择总线通道上的8位数据进入对应的74373中;即首先将键3输入高电平,用键2、键1分别向A7.0 置数(55H),这时在数码管4/3(应为2/1)上显示输入的数据(55H);然后用键3输入低电平,再用键2、键1分别向B7.0置数(AAH),这时在数码管2/1(应为4/3)上显示输入的数据(AAH);这时表示在图2-1中的两个74373锁存器中分别被锁入了加数55H和被加数AAH。可双击图2-1的ALU181元件,了解其VHDL描述。(2)设定键8为低电平,即M=0(允许算术操作),键6控制时钟SCLK,可设置表2-1的S3.0=0 F。现连续按动键6,设置操作方式选择S3.0=9(加法操作),使数码管8显示9,以验证ALU的算术运算功能: 当键7设置cn=0(最低位无进位)时,数码管7/6/5=0FF(55H+AAH=0FFH);当键7设置cn=1(最低位有进位)时,数码管7/6/5=100(55H+AAH+1=100H);(3)若设定键8为高电平,即M=1,键KEY6控制时钟SCLK,设置S3.0=0F,KEY7设置cn=0或cn=1,验证ALU的逻辑运算功能,并记录实验数据。表2-2 A7.0,B7.0设置值检查F7.0SW_B寄存器内容S3 S2 S1 S0MBUSA7.0B7.00000101001(4) 验证ALU181的算术运算和逻辑运算功能,ALU181模块功能可参照表2-1。表2-3给定了寄存器DRl=A7.0和DR2=B7.0的数据(十六进制),要求根据此数据对照逻辑功能表所得的理论值(要求课前完成)与实验结果值进行比较(均采用正逻辑0)。(5)表2-4列出了8种常用的算术与逻辑运算要求指定的操作内容,正确选择运算器数据通路、控制参数S3、S2、S1、S0、M,并将实验结果值填入括号内,表中给定原始数据DR1=A7.0和DR2=B7.0,以后的数据取自前面运算的结果。表2-2S3 S2 S1 S0A7.0B7.0算术运算 M=0逻辑运算(M=1)cn=0(无进位)cn=1(有进位)0000AA55F=( AA ) F=( AB ) F=( 55 ) 0001AA55F=( FF ) F=( 00 ) F=( 00 ) 0010AA55F=( AA ) F=( AB ) F=( 55 ) 0011AA55F=( 00 ) F=( FF ) F=( 00 ) 0100FF01F=( FD ) F=( FE ) F=( FE ) 0101FF01F=( FD ) F=( FE ) F=( FE ) 0110FF01F=( FE ) F=( FD ) F=( FE ) 0111FF01F=( FF ) F=( FE ) F=( FE ) 1000FFFFF=( FE ) F=( FF ) F=( 00 ) 1001FFFFF=( FE ) F=( FF ) F=( FF ) 1010FFFFF=( FE) F=( FF ) F=( FF ) 1011FFFFF=( FF ) F=( FE ) F=( FF ) 11005501F=( AA ) F=( AB ) F=( 01 ) 11015501F=( AA ) F=( AB ) F=( FF ) 11105501F=( 54 ) F=( 55 ) F=( 55 ) 11115501F=( 55 ) F=( 54 ) F=( 55 ) 表2-38种常用的算术与逻辑运算操作S3 S2S1S0MCnDR1DR2运算关系及结果显示Cn4逻辑乘10111066FFDR1 DR2DR2( 66 )0传送1111106666DR1 DR2 ( 66 )0按位加0110106666DR1DR2DR2( 00 )0取反0000106600DR2 (99 )0加10000016699DR2 + 1DR2 ( 9A )0求负001001669A+ 1 DR2( 66 )0加法1110106666DR1 + DR2DR2( CC )0减法01100066CCDR1 DR2DR2( -66 )1表2-4五实验结果填写上表2-2,2-3与2-4,并仿真波形图,波形图如下。图5-1-1图5-1-2图5-1-3六心得体会实验四 时序与数据通路实验 一、实验目的(1)掌握节拍脉冲发生器的设计方法和工作原理。 (2)理解节拍脉冲发生器的工作原理。二、实验原理计算机之所以能够按照人们事先规定的顺序进行一系列的操作或运算,就是因为它的控制部分能够按一定的先后顺序正确地发出一系列相应的控制信号。这就要求计算机必须有时序电路。控制信号就是根据时序信号产生的。本实验说明时序电路中节拍脉冲发生器的工作原理。1、连续节拍发生电路设计(图4-1-1):可由4个D触发器组成,可产生4个等间隔的时序信号T1T4,其中CLK1为时钟信号,由实验台右边的方波信号源clock0提供,可产生1Hz12MHz的方波信号频率。实验者可根据实验自行选择信号频率。当RST1为低电平时,T1输出为“1”,而T2、T3、T4输出为“0”;当RST1由低电平变为高电平后,T1T4将在CLK1的输入脉冲作用下,周期性地轮流输出正脉冲,机器进入连续运行状态(EXEC)。图4-1-1节拍脉冲发生器的工作原理 T1T4以及CLK1、RST1的工作波形如图4-1-2所示。示例工程文件是T4.bdf。硬件实验验证方法如图4-1-1所示,下载T4.SOF 文件,选择实验模式1,Clock0接4Hz,键8控制RST1,高电平时可以看到,发光管1、2、3、4分别显示T1、T2、T3、T4的输出电平(实验结果与仿真波形图4-1-2比较!)。图4-1-2 节拍脉冲发生器工作波形图4-1-3单步运行电路工作原理图4-1-4单步运行电路工作波形2、单步节拍发生电路(图4-1-3):将图4-1-1电路稍加改变即可得到图4-1-3所示的单步运行电路。该电路每当RST1出现一个负脉冲后,仅输出一组T1、T2、T3、T4节拍信号,直到RST1出现下一个负脉冲,波形如图4-1-4所示。示例工程文件是T5.bdf。硬件实验验证方法如图4-1-3所示,下载T5.SOF 文件,选择实验模式1,Clock0接4Hz(选择范围是1Hz-50MH),键8控制RST1。每出现一个负脉冲,发光管1、2、3、4分别显示T1、T2、T3、T4的输出电平一次(实验结果与仿真波形图4-1-4比较!)。三、实验结果连续节拍发生电路的仿真波形如下图4-1-5单步节拍发生电路的仿真波形如下图4-1-6.四、心得体会实验三 微控制器实验一、程序计数器PC与地址寄存器AR实验(一)、实验目的1掌握地址单元的工作原理。2掌握的两种工作方式,加1计数和重装计数器初值的实现方法;3掌握地址寄存其从程序计数器获得数据和从内部总线获得数据的实现方法。(二)、实验原理地址单元主要由三部分组成:程序计数器PC,地址寄存器AR和多路开关。程序计数器PC用以指出下一条指令在主存中的存放地址,CPU正是根据PC的内容去存取指令的。因程序中指令是顺序执行的,所以PC有自增功能。程序计数器提供下一条程序指令的地址,如电路图4-2-1所示,在T4时钟脉冲的作用下具有自动加1的功能;在LDPC信号的作用下可以预置计数器的初值(如子程序调用或中断相应等)。当LDPC为高电平时,计数器装入data 端输入的数据。aclr是计数器的清0端,高电平有效(高电平清零);aclr为低电平时,允许计数器正常计数。图4-2-1程序计数器原理图地址寄存器AR(74273)锁存访问内存SRAM的地址。273中的地址来自两个渠道。一是程序计数器PC的输出,通常是下一条指令的地址;二是来自于内部数据总线的数据,通常是被访问操作数的地址。为了实现对两路输入数据的切换,在FPGA的内部通过总线多路开关BUSMUX进行选择。LDAR与多路选择器的sel相连,当LDAR为低电平,选择程序计数器的输出;当LDAR为高电平时,选择内部数据总线的数据。图4-2-2 程序计数器工作波形(三)、实验步骤1按照 图4-2-1程序计数器原理图编辑、输入电路,实验台选择NO.0工作模式。对输入原理图进行编译、引脚锁定、并下载到实验台。示例工程文件是PC_unit.bdf。硬件实验验证(与仿真波形图4-2-2比较!)。实验说明:(1)下载pc_unit.sof ; (2)用模式键选模式“0”,再按一次右侧的复位键;(3) 键2和键1可输入8位总线数据B7.0(此值显示于发光管D1D8和数码管2/1);CLR(键5)按2次(0à1à0),产生一正脉冲,高电平清零;LDAR(键6)=0时,BUSMUX输出程序计数器PC的值;LDAR=1时,BUSMUX输出B7.0总线数据。LDPC(键7):程序计数器PC预置控制端,当LDPC=1时,将B7.0总线数据装入程序计数器PC;当LDPC=0时,程序计数器PC处于计数自动工作状态,对T4进行计数;T4(键8):程序计数器PC的计数时钟CLK,键8按动两次产生一个计数脉冲。2通过B7.0设置程序计数器的预加载数据。当LDPC=0时,观察程序计数器自动加1的功能;当LDPC=1时,观察程序计数器加载输出情况,示例操作:(1)所有键置0,键2/1输入A5;按键5àPC计数器清0(0à1à0);(2)连续按动键8,可以从数码8/7上看到AR的输出,即PC值;(3)按键6à1,选通直接输出总线上的数据A5作为PC值,按键8,产生一个脉冲上升沿,即可看到AR(显示在数码8/7)的输出为A5;(4)使键6=0,仍选通PC计数器输出,这时键2/1输入86,按键7产生一个上升脉冲(0à1à0),即用LDPC将86加载进PC计数器;(5)连续按动键8,可以发现AR的输出在86上累加输出:86、87、88等。(四)、实验结果波形图如下图所示图4-2-3(五)、心得体会 实验5 (一)、实验目的1理解总线的概念及特性。 2掌握总线传输控制特性。(二)、实验原理1总线的基本概念总线是多个系统部件之间进行数据传输的公共通路,是构成计算机系统的骨架。借助总线连接,计算机在系统各部件之间实现传送地址、数据和控制信息的操作。所谓总线就是指能为多个功能部件服务的一组公用信息线。数据输入开关地址寄存器AR存储器RAM数码管LED寄存器R0SW-BLDARCSW/RLED-BW/RR0-BLDR0总线图5-1 总线实验传输框图2实验原理实验所用总线实验传输框图如图4-1所示。它将几种不同的设备挂在总线上,有存储器、输入设备、输出设备、寄存器。这些设备在传统的系统中需要有三态输出控制,然而在FPGA的内部没有三态输出控制结构,因此必须采用总线输出多路开关结构加以控制。按照传输要求恰当有序地控制它们,就可以实现总线信息传输。(三)、实验内容1实验要求根据挂在总线上的几个基本部件,设计一个简单的流程。(1)输入设备将数据打入寄存器R0。 (2)输入设备将另一个数据打入地址寄存器AR。(3)将寄存器R0中的数据写到当前地址的存储器中。(4)将当前地址的存储器中的数用数码管显示。2实验步骤(1)实验电路如图5-3所示。写使能WE=1允许写,=0禁止写,允许读;inclock为数据DATA锁存时钟。具体操作可参考图5-2。图5-2 总线数据传输练习操作步骤图5-3 总线控制实验电路图(2)、工程文件是BUS-4.bdf,下载BUS-4.sof到实验台的FPGA中;(3)、实验内容1,根据图5-2完成实验操作:选择实验模式“0”;再按一次右侧的复位键(用一接线将实验板上键9的输入端插针与适配板上FPGA的第P196针相连,以便能用键9控制OUT锁存器的时钟;):初始状态;1、键4、键3控制设备选择端:sel1.0=00(键4/键3=00,);2、此时由键2/键1输入的数据(26H,显示于数码管2/1)直接进入BUS(数码管8/7显示),键5、6、7为低电平;3、键8=1(允许RAM写入)完成图5-2所示的操作:4、键5发正脉冲(0-1-0),将数据打入寄存器R0;5、键2/键1再输入数据(如37H);6、键6发正脉冲(0-1-0),将数据打入地址寄存器AR;7、键2/键1再输入数据(如48H);8、键7发正脉冲(0-1-0),将数据写入RAM(此时必须键8输出1,注意此时进入RAM的数据48H是放在地址37H单元的);9、键2/键1再输入数据(如59H);10、键9发正脉冲(0-1-0),将数据写入寄存器OUT(数码管6/5将显示此数);11、键4、键3分别选择sel1.0=00、01、10、11,从数码管8/7上观察被写入的各寄存器中的数据。(4)、实验内容2:先将数据28H写入RAM的地址(4AH),再将数据1BH送进R0,最后将刚才写入RAM中地址(4AH)的数据读出送到OUT口。依据总线电路图5-3,操作如下:1、用一接线将实验板上键9的输入端插针与适配板上FPGA的第P196针相连,以便能用键9控制OUT锁存器的时钟;键3、4、5、6、7、8都为低电平,使键4/键3=00,即总线多路选择器sel1.0=00,选择由键2/键1输入的数据4AH(地址),直接进入BUS; 2、按键6两次(0-1-0),产生一个正脉冲,将地址数据4AH(地址)锁入地址寄存器AR,如图5-3所示,此数据直接进入RAM的address端;3、按键2/键1,输入数据28H(数据),此时直接进入总线BUS,并进入RAM的data数据端;按键8=1(RAM写允许);按键7两次,将数28H写入RAM(地址为4AH),最后按键8=0,写禁止,读允许。4、由键2/键1输入的数据1BH,按键5两次(0-1-0),产生一个正脉冲,即此数写入R0寄存器。5、读RAM送到OUT:由键2/键1输入的数据4AH,按键5两次,使4AH进入AR;6、 按键7两次,RAM中4AH单元中的数据28H输出,再使键4/键3=10,即总线多路选择器sel1.0=10,此时RAM数据口的28H进入总线BUS(可从数码管8/7上看到);7、按键9一次(此键是单脉冲),RAM口的28H即被锁如输出口OUT寄存器,由数码管6/5显示。 图5-4 总线控制的时序仿真波形图3、键盘/显示定义详细说明:1)键2、键1输入D7.0,输入的数据同时显示在数码2和数码3上。2)键4、键3输入控制设备选择端sel1.0,如图5-2所示,键4/键3控制总线多路选择器,选择不同设备的数据进入总线:sel1.0= 00:输入设备INPUT数据进入总线BUS;= 01:寄存器R0中的数据进入总线BUS;= 11:地址寄存器AR的数据进入总线BUS;= 10:存储器RAM的数据进入总线BUS;4)总线BUS上的输出数据显示在数码8和数码7上;5)键5控制寄存器R0的输入选通锁存端;6)键6控制地址寄存器AR输入选通锁存端;7)键7控制LPM_RAM数据DATA输入锁存端;8)键8控制LPM_RAM写入允许WE端,=1有效; 9)键9控制输出设备OUTPUT的输入选通端,输出数据显示在数码6和数码5上,要求首先用一接线将实验板上键9的输入端插针与适配板上FPGA的第P196针相连。(四)、实验结果 图5-4-1波形图即为上方给出的波形图,具体实验在FPGA板上进行。(五)、心得体会专心-专注-专业