
西工大,组成原理实验报告.doc
5页评语:课中检查完成的题号及题数:课后完成的题号与题数:成绩:自评成绩: 95实验报告实验名称:基于Verilog语言的运算器和存储器设计与实现曰期:2015.11.4班级: 10011303 学号: 201302536 姓名: 张林江 一、实验目的:! 了解运算器的组成结构2. 掌握运算器的工作原理3. 掌握静态随机存储器RAM工作特性及数据的读写方法二、实验内容:j 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的*数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种 运算由控制信号S3…S0来决定,任何时候,多路选择开关只选择三部件中一个部件的结 果作为ALU的输出如果是算术运算,还将置进位标志FC,在运算结果输出前,置ALU零 标志ALU中所有模块集成在一片CPLD(MAXII EPM240)中2. 存储器(Memory)是现代信息技术中W于保存信息的记忆设备其概念很广,有很多层 次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个 没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有 实物形式的存储设备也叫存储器,如lAl存条、TF卡等。
计算机中全部信息,包括输入 的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中它根据控 制器指定的位置存入和取出信息有了存储器,计算机方有记忆功能,冰能保证正常 工作计算机中的存储器按用途存储器可分为主存储器(内存)和辅助存储器(外存), 也有分力外部存储器和lAl部存储器的分类方法外存通常是磁性介质或光盘等,能长期 保存信息内存指主板上的存储部件,川来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失3. 静态随机存取存储器它是一种具有静止存取功能的内存,不需要刷新电路即能保存它 内部存储的数据三、项目要求及分析:1. 利用上述运算器能否实现大于8位二进制数的算术运算?如果能,需要采取什么样的措施?答:能够实现,但是要将两个8位寄存器组合成一个16位的寄存器来实现2. 给出一组数据,验证桶形移位器的功能答:桶式移位器是一种组合逻辑电路,通常作为微处理器CPU的一部分它具有n个 数据输入和n个数据输出,以及指定如何移动数据的控制输入,指定移位方向、移位类 型(循环、算术还是逻辑移位)及移动的位数等等3. 随机存储器和只读存储器的区别是什么,能否通过外加电路实现用随机存储器代替只读存储器?答:随机存储器又称RAM,它是一种临吋存放数据的地方,它的存取速度很快,所以在 电脑运行软件的时候就把程序调入闪存(RAM),你对程序所做的更改都是在A存中进行, 当你退出/程序后系统就自己把分它的那部分内存收回,又分给其他的程序,RAM也就 是内存条;只读存储器和随机存储器最大的区别是,Rom中的信息是固化的写入之后不会改变,而 RAM可读可写但掉电后信息丢失。
必要的时候也是付以改变的,这里面一般存的是一些系统信息,和系统没置,电脑的 BIOS芯片就是ROM;4. 动态随机存储器和静态随机存储器的区别是什么,与静态随机存储器相比,动态随机存储 器在电路设计需要考虑什么问题?答:SRAM也称静态随机存储器,其特点是工作速度快,只要电源不撤除,写入SRAM 的信息就不会消失,不需要刷新电路,同时在读出时不破坏原来存放的信息,一经写入 可多次读出,但集成度较低,功耗较大SRAM—般用来作为计算机中的高速缓冲存储 器(Cache) 0DRAM是动态随机存储器(Dynamic Random Access Memory),它是利用场效应管的 栅极对其衬底间的分布电容来保存信息,以存储电荷的多少,即电容端电压的高低来表 示“1”和“0”DRAM每个存储单元所需的场效应管较少,常见的有4管,3管和单管型 DRAM因此它的集成度较高,功耗也较低,但缺点是保存在DRAM中的信息_场效应 管栅极分布电容里的信息随着电容器的漏电而会逐渐消失,一般信息保存时间为2ms& 右为了保存DRAM巾的信息,必须每隔1〜2ms对其刷新一次因此,采用DRAM的计 算机必须配置动态刷新电路,防止信息丢失。
DRAM—般用作计算机中的主存储器表1-1-2运算结果表运算类型ABS3S2S1S0结果逻辑运算65A70 0 0 0F= ( 65 ) FC= ( 0 ) FZ ( 0 )65A70 0 0 1E= ( A7 ) FC= ( 0 ) TZ ( 0 )0 0 10F=( 25 ) FC=(0 ) FZ( 0 )0 0 11F= (E7〉FC二(0 ) FZ ( 0 )0 10 0F=( 25 ) FC=( 0 ) FZ ( 0 )移位运算0 10 1I= ( 9A ) I:C= ( 0 ) FZ ( 0 )0 110F=( CA ) FC= ( 0 ) FZ( 0 )0 111F=( 32 ) FC=( 0 ) FZ( 0 )10 0 0E= ( B2 ) IC= ( 0 ) IZ ( 0)算术运算10 0 1F=( CA ) FC:( 0 ) FZ( 0 )1010 (Cn=0)F=( CA ) FC=( 0 ) FZ( 0 )1010 (Cn=l)F= ( 0C ) FC= ( 1 ) FZ ( 0 )10 11F=( BE ) FC=( 1 ) FZ( 0 )110 0E= ( 64 ) 1:0( 0 ) FZ( 0 )110 1F=( 66 ) FC=( 0 ) FZ( 0 )四、具体实现:应包括:Verilog语言程序等。
module logic_operation^(parameter ISA_WIDTH = 4, DATA_WIDTH = 8)( input sys_clock, input sys_reset,input [ISA_WIDTH -1:0] control, input [DATA_WIDTH -1:0] data_a, input [DATA_WIDTH -1:0] data_b, output reg[DATA_WIDTH -1:0] result);integeralways @(posedge sys_clock or posedge sys_reset) begin if (sys_reset == 1’bO) beginresult <= 4’bO;endelse begincase (control)4bOOOO: beginfor (i = 0; i < DATA_WIDTH; i = i + 1) result[i] = data_a[i];end4bOOOl: beginfor (i = 0; i < DATA_WIDTH; i = i + 1) result[i] = data_b[i];end4b0010: beginfor (i = 0; i < DATA_WIDTH; i = i + 1) result[i] = data_a[i] & data_b[i];end4bOOll: beginfor (i = 0; i < DATA_WIDTH; i = i + 1) result[i] = data_a[i] | data_b[i];end4b0100: beginfor (i = 0; i < DATA_WIDTH; i = i + 1) result[i] = ~data_a[i];enddefault:; endcaseendend endmodule五、调试运行结果:六、所遇问题及解决方法:1. 在上实验课时,因为运算存储器实验每次输入都是相同的,所以就只 输入了一次,结果FC和FK都为0,其实不对,应该每次都要重新 输入。
七、 实验总结:1.通过本次实验让自己能够更深入的理解组成原理这门课,其实上 课的时候有很多都不是很理解,通过实验能让自己理解的更透彻,更能 从实际角度去看待这些问题数据和理论分析进行比较、验证,我们掌 握了简单运算器的数据传输方式,同时也增强了我对计算机组成原理实验的兴趣,提高了我的动手能力, 也学会了使用用逻辑运算器进行简单的算术/逻辑运算,希望接下来的实 验能够继续给我带来提高,将理论课中学到的应用到实践课中来,不是 很清楚的能够在实践课中得到验证与解决,能够对自己的能力有所提升八、 建议:1. 难度能够适当降低一点,难度有点大2. 多多提供一些相关的资料,对于我们有所帮助。












