1、计算机组成与系统结构实验报告评语:课中检查完成的题号及题数: 课后完成的题号与题数:成绩:自评成绩:95实验报告实验名称:基于Verilog语言的运算器和存储器设计与实现日期:2015.11.2班级:10011303学号:2013302534:杨添文一、实验目的:1、了解运算器的组成结构。2、掌握运算器的工作原理。3、掌握静态随机存储器RAM 工作特性及数据的读写方法。二、实验内容: 1、基本运算器实验。 2、静态随机存储器实验。 三、项目要求及分析: 1、基本运算器实验:要求:验证和实现运算器的数据运算功能。这些运算除了常规的加、减、乘、除等基本的算术运算之外,还包括能进行“逻辑判断”的逻辑
2、处理能力,即“与”、“或”、“非”这样的基本逻辑运算以及数据的比较、移位等操作。分析:(1)运算器原理图如下图所示运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A 和暂存器B,三个部件同时接受来自A 和B 的数据,各部件对操作数进行何种运算由控制信号S3S0来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU 的输出。如果是算术运算,还将置进位标志FC,在运算结果输出前,置ALU 零标志。(2)ALU 和外围电路的连接如下图所示:(图中的小方框代表排针座) (3)运算器的逻辑功能表如表所示: 运算类型S3S2S1S0功能逻辑运算0 0 0
3、 0F=A (直通)0 0 0 1F=B (直通)0 0 1 0F=AB (FZ)0 0 1 1F=A+B (FZ)0 1 0 0F=/A (FZ)移位运算0 1 0 1F=A逻辑右移B(取低3位)位 (FZ)0 1 1 0F=A逻辑左移B(取低3位)位 (FZ)0 1 1 1F=A算术右移B(取低3位)位 (FZ)1 0 0 0F=A循环右移B(取低3位)位 (FZ)算术运算1 0 0 1F=A加B (FC,FZ)1 0 1 0F=A加B加Cn (FC,FZ)1 0 1 1F=A减B (FC,FZ)1 1 0 0F=A减1 (FC,FZ)1 10 1F=A加1 (FC,FZ)1 1 1 0(
4、保留)1 1 1 1(保留)2、静态随机存储器实验:要求:实现静态随机存储器的读写操作,通过软件中的数据通路图来观测实验结果。分析:(1)实验原理图如下图所示: 存储器数据线接至数据总线,数据总线上接有8个LED 灯显示D7D0 的内容。地址线接至地址总线,地址总线上接有8 个LED 灯显示A7A0 的内容,地址由地址锁存器(74LS273,位于PC&AR 单元)给出。数据开关(位于IN 单元)经一个三态门(74LS245)连至数据总线,分时给出地址和数据。地址寄存器为8 位,接入6116 的地址A7A0,6116 的高三位地址A10A8 接地,所以其实际容量为256 字节。(2)实验中的读写
5、控制逻辑如下图所示:功能1000X100X010不选择读写写IOM 用来选择是对I/O 还是对MEM 进行读写操作,RD=1 时为读,WR=1 时为写。四、具体实现: 1、基本运算器实验:(1) 按下图连接实验电路,并检查无误。图中将用户需要连接的信号用圆圈标明(其它实验相同)。(2) 将时序单元的状态开关置为单步档,MEM 单元的编程开关置为运行档。(3) 打开电源开关,如果听到有嘀报警声,说明有总线竞争现象,应立即关闭电源,重新检查接线,直到错误排除。然后按动CON 单元的CLR 按钮,将运算器的A、B 和FC、FZ清零。(4) 用输入开关向暂存器A 置数。 拨动CON 单元的SD27SD
6、20 数据开关,形成二进制数01100101(或其它数值),数据显示亮为1,灭为0。 置LDA=1,LDB=0,按动时序单元的TS 按钮,产生一个T2 上沿,则将二进制数01100101置入暂存器A 中,暂存器A 的值通过ALU 单元的A7A0 八位LED 灯显示。(5) 用输入开关向暂存器B 置数。 拨动CON 单元的SD27SD20 数据开关,形成二进制数10100111(或其它数值)。 置LDA=0,LDB=1,按动时序单元的TS 按钮,产生一个T2 上沿,则将二进制数10100111置入暂存器B 中,暂存器B 的值通过ALU 单元的B7B0 八位LED 灯显示。(6) 改变运算器的功能
7、设置,观察运算器的输出。置ALU_B=0、LDA=0、LDB=0,然后按表1-1-1 置S3、S2、S1、S0 和Cn 的数值,并观察数据总线LED 显示灯显示的结果。如置S3、S2、S1、S0 为0010,运算器作逻辑与运算,置S3、S2、S1、S0 为1001,运算器作加法运算。如果实验箱和PC 联机操作,则可通过软件中的数据通路图来观测实验结果,方法是:打开软件,选择联机软件的“【实验】【运算器实验】”,打开运算器实验的数据通路图,如下图所示。进行上面的手动操作,每按动一次TS 按钮,数据通路图会有数据的流动,反映当前运算器所做的操作,或在软件中选择“【调试】【单周期】”,其作用相当于将
8、时序单元的状态开关置为单步档后按动了一次TS 按钮,数据通路图也会反映当前运算器所做的操作。2、静态随机存储器实验:(1)关闭实验系统电源,按下图连接实验电路,并检查无误,图中将用户需要连接的信号用圆圈标明。(2) 将时序单元的状态开关置为单步档(时序单元的介绍见附录二),MEM 单元的编程开关置为运行档。(3) 将CON 单元的IOR 开关置为1(使IN 单元无输出),打开电源开关,如果听到有嘀报警声,说明有总线竞争现象,应立即关闭电源,重新检查接线,直到错误排除。(4) 给存储器的00H、01H、02H、03H、04H 地址单元中分别写入数据11H、12H、13H、14H、15H。由前面的
9、存储器实验原理图可以看出,由于数据和地址由同一个数据开关给出,因此数据和地址要分时写入,先写地址,具体操作步骤为:先关掉存储器的读写(WR=0,RD=0),然后利用数据开关设定地址,输出地址到数据总线(IOR=0),最后打开地址寄存器门控信号(LDAR=1),按动TS 产生T2 脉冲,即将地址打入到AR 中。再写数据,具体操作步骤为:先关掉存储器的读写(WR=0,RD=0)和地址寄存器门控信号(LDAR=0),然后利用数据开关给出要写入的数据,输出数据到数据总线(IOR=0),最后使存储器处于写状态(WR=1,RD=0,IOM=0),按动TS 产生T2 脉冲,即将数据打入到存储器中。写存储器的
10、流程如下图所示(以向00 地址单元写入11H 为例):(5) 依次读出第00、01、02、03、04 号单元中的内容,观察上述各单元中的内容是否与前面写入的一致。同写操作类似,也要先给出地址,然后进行读,地址的给出和前面一样,而在进行读操作时,应先关闭IN 单元的输出(IOR=1),然后使存储器处于读状态(WR=0,RD=1, IOM=0),此时数据总线上的数即为从存储器当前地址中读出的数据内容。读存储器的流程如下图所示(以从00 地址单元读出11H 为例):(6)如果实验箱和PC 联机操作,则可通过软件中的数据通路图来观测实验结果,方法是:打开软件,选择联机软件的“【实验】【存储器实验】”,
11、打开存储器实验的数据通路图,如下图所示。进行上面的手动操作,每按动一次TS 按钮,数据通路图会有数据的流动,反映当前存储器所做的操作(即使是对存储器进行读,也应按动一次TS 按钮,数据通路图才会有数据流动),或在软件中选择“【调试】【单周期】”,其作用相当于将时序单元的状态开关置为单步档后按动了一次TS 按钮,数据通路图也会反映当前存储器所做的操作。3、用Verilog语言在Modelsim上实现: 源代码: module logic_operation#(parameter ISA_WIDTH = 4, DATA_WIDTH = 8) ( input sys_clock, input sys
12、_reset, input ISA_WIDTH - 1 : 0 control, input DATA_WIDTH - 1 : 0 data_a, input DATA_WIDTH - 1 : 0 data_b, output regDATA_WIDTH - 1 : 0 result);integer i;always (posedge sys_clock or posedge sys_reset) begin if (sys_reset = 1b0) begin result = 4b0; end else begin case (control) 4b0000: begin for (i
13、= 0; i DATA_WIDTH; i = i + 1) resulti = data_ai; end 4b0001: begin for (i = 0; i DATA_WIDTH; i = i + 1) resulti = data_bi; end 4b0010: begin for (i = 0; i DATA_WIDTH; i = i + 1) resulti = data_ai & data_bi; end 4b0011: begin for (i = 0; i DATA_WIDTH; i = i + 1) resulti = data_ai | data_bi; end 4b010
14、0: begin for (i = 0; i DATA_WIDTH; i = i + 1) resulti = data_ai; end default: ; endcase endendendmodule五、调试运行结果: 实验结果以表格方式呈现: 六、思考题的解答与分析: 1、基本运算器实验: (1)利用上述运算器能否实现大于8位二进制数的算术运算?如果能,需要采取什么样的措施? 答:可以利用上述运算器实现大于8位的二进制算数运算,前提是,将上述两个寄存器连接起来实现一个16位的寄存器,输入与输出都可以利用这个寄存器。 (2)给出一组数据,验证桶形移位器的功能。答:设计了一个8位桶形移位器
15、,能左右进行循环移位,移位的数量可以在07进行变化。 以下是源代码,3位选择移位数,还有一位是方向选择:module shifter1(IN,S,d,out);input 7:0 IN;input 2:0 S;input d;output7:0 out;reg7:0 out;always (IN or S or d)beginif(d)case(S)3b000:beginout=IN;end3b001:beginout7=IN0;out6:0=IN7:1;end3b010:beginout7:6=IN1:0;out5:0=IN7:2;end3b011:beginout7:5=IN2:0;out
16、4:0=IN7:3;end3b100:beginout7:4=IN3:0;out3:0=IN7:4;end3b101:beginout7:3=IN4:0;out2:0=IN7:5;end3b110:beginout7:2=IN5:0;out1:0=IN7:6;end3b111:beginout7:1=IN6:0;out0=IN7;endendcaseelse if(d)case(S)3b000:beginout=IN;end3b001:beginout0=IN7;out7:1=IN6:0;end3b010:beginout1:0=IN7:6;out7:2=IN5:0;end3b011:begi
17、nout2:0=IN7:5;out7:3=IN4:0;end3b100:beginout3:0=IN7:4;out7:4=IN3:0;end3b101:beginout4:0=IN7:3;out7:5=IN2:0;end3b110:beginout5:0=IN7:2;out7:6=IN1:0;end3b111:beginout6:0=IN7:1;out7=IN0;endendcaseendendmodule 2、静态随机存储器:(1) 随机存储器和只读存储器的区别是什么,能否通过外加电路实现用随机存储器代替只读存储器?答:只读存储器就是ROM,而随机存储器就是RAM。只读存储器是只能读出事先所
18、存数据的固态半导体存储器,ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定 ,断电后所存数据也不会改变;其结构较简单,读出较方便,因而常用于存储各种固定程序和数据,就像电脑硬盘一样。随即存储器是以相同速度高速地、随机地写入和读出数据(写入速度和读出速度可以不同)的一种半导体存储器,RAM的优点是存取速度快、读写方便,缺点是数据不能长久保持,断电后自行消失,因此主要用于计算机主存储器等要求快速存储的系统,比如,电脑的内存条就是RAM。(2) 动态随机存储器和静态随机存储器的区别是什么,与静态随机存储器相比,动态随
19、机存储器在电路设计需要考虑什么问题?答:SRAM也称动态随机存储器,其特点是工作速度快,只要电源不撤除,写入SRAM的信息就不会消失,不需要刷新电路,同时在读出时不破坏原来存放的信息,一经写入可多次读出,但集成度较低,功耗较大。SRAM一般用来作为计算机中的高速缓冲存储器(Cache)。DRAM是动态随机存储器(Dynamic Random Access Memory),它是利用场效应管的栅极对其衬底间的分布电容来保存信息,以存储电荷的多少,即电容端电压的高低来表示“1”和“0”。它的集成度较高,功耗也较低,但缺点是保存在DRAM中的信息场效应管栅极分布电容里的信息随着电容器的漏电而会逐渐消失
20、,一般信息保存时间为2ms左右。为了保存DRAM中的信息,必须每隔12ms对其刷新一次。因此,采用 DRAM的计算机必须配置动态刷新电路,防止信息丢失。DRAM一般用作计算机中的主存储器。七、所遇问题及解决方法: 实验中要通过软件观察数据通路,但因为PC没有跟实验箱连接成功,软件中的任务栏操作按钮显示灰色,经过认真排查线路,最终得以解决。八、实验总结:通过了解运算器的组成与工作原理,成功掌握了运算器的运算执行过程,让我对计算机内部的核心构成产生了浓重的兴趣。实验软件对数据通路执行流程的清楚描述,将RAM的读写方式变得抽象,简单易懂。因为之前没有接触过Verilog语言,要用软件实现起来比较麻烦,目前要抓紧时间学习Verilog。九、建议: 实验安排比较紧凑,理论与实践连接不上。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1