当前位置:文档之家› 合工大 计算机组成原理

合工大 计算机组成原理

合工大 计算机组成原理
合工大 计算机组成原理

合肥工业大学

计算机与信息学院

课程设计报告

课程:计算机设计与综合实践专业班级:信息安全11-1

学号:20112914

姓名:王佳淼

2014年11月

摘要

本文介绍了一种采用可编程逻辑器件(FPGA(Sparten 6))进行出租车计价器的设计思想以及实现方法。本设计实现了出租车计费器所需的一些基本功能,计价金额包括起步价、里程计费、等待计时计费等。该设计采用模块化设计,在Xilinx 软件平台下,采用Verilog HDL 硬件描述语言描述和模拟仿真了分频模块、计程模块、计时模块、计费模块、LED显示模块,完成了出租车计费器仿真设计。

关键词:FPGA(Spartan6-LX45),出租车计价器,Xilinx,Verilog HDL

目录

一、方案总设计 (3)

1.1 设计要求 (4)

1.2 设计思想 (4)

二、软件功能单元设计和实现 (4)

2.1 分频模块 (4)

2.1.1 计数器分频模块(FrequencyDiv1) (5)

2.1.2 数码管显示分频模块(FrequencyDiv2) (5)

2.2 里程模块(Disatance_Cal模块) (5)

2.3 时间模块(Time_Cal模块) (6)

2.4 计费模块(Money_Cal模块) (7)

2.5 数码管显示模块(LED_Display模块) (7)

2.6 顶层模块(Taximeter模块) (8)

三、问题总结 (9)

四、体会与感想 (10)

附录:单元模块Verilog HDL源代码 (10)

1.计数器的分频模块(Frequency_Div) (10)

2. 数码管的分频模块(Frequency_Div_2) (11)

3. 里程模块(Distance_Cal) (11)

4. 时间模块(Time_Cal) (12)

5. 计费模块(Money_Cal) (14)

6. 数码管显示模块(LEDDisplay_Cal) (16)

7.顶层模块(Taximeter) (18)

8. 引脚约束(Taximeter) ................................................................... 错误!未定义书签。

一、方案总设计

1.1设计要求

设计一个出租车计价器。该计价器的计费系统:行程 3公里内,且等待累计时间2分钟内,起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟以1.5元计费,并能显示行驶公里数、等待累计时间、总费用。设计有分频模块,控制模块,计量模块,译码模块,显示模块。

1.2设计思想

出租车的一般计费分类:

近路途未停车状况:车价=起步价【10元】(3>里程数且10>等待时间)

近路途有停车状况:车价=起步价【10元】+(等待时间 - 等待累积时间【2分钟】)*1.5(3>里程数且10>等待时间)

远路途未停车状况:车价=起步价【10元】+(里程数 - 起步里程数【3公里】)*每公里单价【1.6元】 (3<里程数且10>等待时间)

远路途有停车状况:车价=起步价【14元】+(远程里程标准【10公里】 - 起步里程数【3公里】)*每公里单价【1.6】 + (等待时间 - 等待累积时间【2分钟】)*1.5 (里程数>10 且 10<等待时间)

综上所述,完成出租车计费需要,在乘客上车后,需要启动出租车计价器,所以这样就需要一个控制出租车计价器开始工作的使能信号,使得有乘客上车后就要将计价表上显示出起步价10元;而在计价的过程中又需要分两种情况:一种是按增加的里程来收费,另一种是按照停车的时间来收费,因为在出租车行驶的过程中,有可能会遇到堵车或红绿灯的情况,这样会耽误出租车的时间,所以当超过一定标准时间后,就应当计时收费。

二、软件功能单元设计和实现

本系统采用层次化、模块化的设计方法,设计顺序为自下向上。首先实现系统框图中的各子模块,然后由顶层模块调用各子模块来完成整个系统。为了便于在数码管里显示和演示,这里的路程、时间和费用计数器均用BCD码表示。我主要做的是里程模块,所以2.2里程模块即Disatance_Cal模块详细说明,其余模块只进行大体描述。2.1 分频模块

这里主要是将实验板上提供的时钟信号进行分频,来得到我们想要的时钟脉冲。因为我们所使用的实验板是Spartan6-LX45 ,它可以提供100MHz的时钟信号,而这个信号对于我们来说实在是太快了,所以我们需要对其进行分频。在本次的设计中,我们需要在两个地方用到不同的分频时钟,一个是在LED显示模块,而另外的几个模块

用另一个时钟信号。

2.1.1 计数器分频模块(FrequencyDiv1)

此模块的功能是对总的时钟进行分频,分出的频率是让计数器用的,因为我们使用总的时钟频率是100MHz的,所以我们在设计该模块的时候用了一个32位的计数器,当计数器计到25_000000的时候产生一个时钟信号,提供给里程模块,时间模块,计费模块使用。其实我们是将100MHz分频后变成每一秒计数一次,这也是为了便于实验(在现实生活中不一定是这样)。

2.1.2 数码管显示分频模块(FrequencyDiv2)

此模块产生的脉冲信号是提供给数码管的,因为要显示的数据有六位,所以数码管的扫描频率应该要比计数分频模块更快。我们经过测试后,得到500000这个数值。当计数到500000这个值时,输出一个脉冲信号,扫描一遍数码管,更新数码管上的数据。2.2 里程模块(Disatance_Cal模块)

此模块的功能是计算出租车行驶的路程。在出租车启动并行驶的过程中(即复位/启动信号reset为1,行驶/停止信号start为1),当输出时钟信号clk_final是上升沿的时候,系统就对路程计数器distance的里程计数器进行加计数,而当路程超过三公里时,系统将输出一个里程计费使能信号distance_enable(为高电平),再将该信号传给计费模块,就可以实现每增加一公里,费用增加1.6元的操作了。具体实现如下图所示:

图1

图2

图3

(1)在出租车启动并行驶的过程中(即复位/启动信号reset为1,行驶/停止信号start 为1),系统就对路程计数器distance的里程计数器进行加计数,如图1所示。

(2)出租车启动并行驶的过程中(即复位/启动信号reset为1,行驶/停止信号start 为1),当路程超过三公里时,系统将输出一个里程计费使能信号distance_enable(为高电平)。如图2所示。

(3)复位/启动信号reset为1时,里程计费使能信号distance_enable为低电平,意味着出租车已经到达目的地。如图3所示。

2.3 时间模块(Time_Cal模块)

此模块用于计算停车等待的时间。在出租车行进中,如果车辆停止等待,计数器则在clk_final信号的上升沿进行加计数,每60次产生进位脉冲使分钟计数器位进行加计数,当累计等待时间超过2分钟(即当刚计时到三分钟)时,输出一个时间计费使能脉冲信号time_enable,之后每增加一分种,就会有一个time_enable脉冲信号输出,这样再将信号传到计费模块中,就可以实现每增加一分钟,费用增加1.5元。而在设计中,我们原本是有分的十位和个位,以及秒的十位和个位,但是由于数码管的个数有限,所以在数码管上只显示分的个位和秒的个位。

2.4 计费模块(Money_Cal模块)

费用计数器模块用于出租车启动后,根据行驶路程和等待时间计算费用。当出租车停车时,时钟reset用于将费用计数器复位为起步价10元;当车处于行驶状态时,出现

distans_enable信号,若满3公里后路程每满1公里,费用计数器加1.6元;当出租车处于停止等待状态且时钟满2分钟时,出现 time_enable脉冲信号,时间每满1分钟,费用计数器加

1.5元。

2.5 数码管显示模块(LED_Display模块)

在这个模块中,我们需要将费用,里程,时间给显示出来,就需要用到两个信号,启动/复位信号reset和数码管时钟信号clk_final_1,还需要各种要输出的数据:即money, distance, min, second。在这个模块中,主要的问题就是如何译码。其中我们要用到六个数码管,这六个数码管分别对应着不同的数据。从左到右,依次是费用的十位和个位,里程的十位和个位,分钟的个位,秒的个位。而对于本次设计所用的实验箱,这六个数码管可以用0和1表示是否选中(其中1代表选中该数码管),所以我们定义了一个4位译码选择数组,用于数码管的选择,分别是0,1,2,3,4,5号数码管,具体可以参考显示代码和引脚约束代码。

上图是我们此次实验所用八段数码管的原理图,其中显示的数字对应的二进制表示为如下表:

X A B C D E F G

0 0 1 1 1 1 1 1

1 0 0 0 0 1 1 0

2 1 0 1 1 0 1 1

3 1 0 0 1 1 1 1

4 1 1 0 0 1 1 0

5 1 1 0 1 1 0 1

6 1 1 1 1 1 0 1

7 0 0 0 0 1 1 1

8 1 1 1 1 1 1 1

9 1 1 0 1 1 1 1

因为我们此次只用到了BCD码中的数字,所以其他的如A,B,C,D,E,F都没有在表中写出。

2.6 顶层模块(Taximeter模块)

在顶层模块中,主要是要调用其他各个模块的功能,然后来实现我们最终的目的,出租车计价。

其中需要输入和输出的参数如下表所示:

输入输出端口说明

端口类型功能定义

Clk_100M Input 系统时钟。

reset Input 启动1/复位0键

start Input 选择计费模式

Start=1,计程计费

Start=0,计时计费

min[7:0] Output 分的高四位和低四位

second[7:0] Output 秒的高四位和低四位

distance[7:0] Output 里程高四位和低四位

Money[11:0] Output 总费的十元,元,角位

其仿真结果如下图所示:

上图中当reset和start都为高电平时,开始的是里程计费,超过3公里后,每增加1公里,费用增加1.6元,途中的money显示的三位分别是十元位,元位,和角位;

当start转为低电平时,计费停止,公里计数也停止,开始时间的计数,先是秒针走,分等秒走了60次后才加1;

当计时满两分钟,即刚计到3分钟时,开始时间计费,从图中可看出,money加了1.5元。

三、问题总结

在本次计算机组成原理课程设计的过程中,由于时间只有两周不到,十分紧张。再加上小组成员都是初次接触FPGA开发板和Verilog HDL语言,所以刚刚开始课程设计的几天,进展缓慢。在过程当中,我们遇到了各种问题,例如,如何使各个模块更好

的融合,如何实现1.6元和1.5元的加法计算等问题。

为了更好的解决问题,我们小组参加了实验室老师和同学的答疑讲解会,实验室同学演示了Verilog HDL语言的编写和调试,也讲解了关于课设题目的设计思路。

我遇见的问题主要是与设计分频模块的同学、计时计费模块的同学进行沟通,因为里程模块是一个会被计时计费模块调用的模块,输出的参数传递到计时计费模块。四、体会与感想

经过计算机组成原理的课程设计,在完成过程中使用FPGA(Spartan6-LX45)开发板、Verilog语言以及Xilinx开发环境,对这些全新的硬件开发工程都有了一定的了解。

这次的课程设计让我更好的了解了软件编程和硬件实现的联系。

正因为有硬件设备的约束,所以这个课程设计大大提升了我的动手实践能力,过这次课程设计后,也我在FPGA硬件平台中基本入了门,对我今后的学习是很大的帮助的。

除此之外,计算机组成原理课程设计是分组完成的。与他人一起合作完成项目,是需要沟通以便结局出现的一些大大小小的问题。这给我提供一次良好的机会来检验我的团队合作能力和处理问题的能力,起到了很好锻炼的作用,如果以后我再遇到相同或类似问题的时候,借助本次课设的经验,我一定可以举一反三,独立并迅速的解决遇到的问题。

附录: 单元模块Verilog HDL源代码

1.计数器的分频模块(Frequency_Div)

module Frequency_Div(

input clk_100M, //总的时钟频率

input reset, //复位键

output clk_final //分频输出频率

);

reg clk_final;

reg [31:0] count; //32位计数器

always@(posedge clk_100M or negedge reset) //异步复位

begin

if(!reset) //低电平复位

begin

clk_final<='d0;

count<=32'd0;

end

else if(count == 32'd5*******) //判断计时器是否到50000000

begin

count <= 32'd0; //计时到50000000,计数器清零

clk_final <= ~clk_final; //输出时钟信号取反

end

else

count <= count + 1'd1; //没计到50000000,计数器加1

end

endmodule

2. 数码管的分频模块(Frequency_Div_2)

module Frequency_Div_2(

input clk_100M, //总的时钟频率

input reset, //复位键

output clk_final_1 //分频输出频率

); //定义端口

reg clk_final_1;

reg [31:0] count; //32位计数器

always@(posedge clk_100M or negedge reset) //异步复位

begin

i f(!reset)//低电平复位

b egin

clk_final_1<='d0;

count<=32'd0;

e nd

e lse if(count == 32'd50000) //判断计时器是否到50000

b egin

count <= 32'd0; //计时到50000,计数器清零

clk_final_1 <= ~clk_final_1; //输出时钟信号取反

e nd

e lse

count <= count + 1'd1; //没计到50000,计数器加1 end

endmodule

3. 里程模块(Distance_Cal)

module Distance_Cal(

input clk_final, //输出的时钟信号

input start,

input reset,

output [7:0] distance, //里程

output distance_enable //里程计费使能信号

);

reg [7:0] distance;

reg distance_enable;

always@ (posedge clk_final or negedge reset) //异步信号

begin

if(!reset) //低电平复位

begin

distance <= 8'd0;

end

else if(start) //start为高电平

begin

if(distance[3:0] == 9) //distance的低四位是否计到9

begin

distance[3:0] <= 4'd0; //如果低四位计到9,就清零

if(distance[7:4] == 9) //distance的高四位是否计到9

distance[7:4] <= 4'd0; //如果计到9,就清零

else //高四位数字<9,就继续加1 操作

distance[7:4] <= distance[7:4] + 4'd1;

end

else //低四位数字<9,就继续加1 操作

distance[3:0] <= distance[3:0] + 4'd1;

end //start 结束

end //always结束

always@(posedge clk_final or negedge reset)

begin

if(!reset||start==0)

begin

distance_enable<=1'd0;//复位

end

else

if(distance>3) // 公里大于三的时候,修改

begin

distance_enable<=1'd1;//输出distance_enable信号

end

end

endmodule

4. 时间模块(Time_Cal)

module Time_Cal(

input clk_final, //最终输出的时钟

input reset,

input start,

output [7:0] second, //输出时间的秒钟

output [7:0] min, //输出时间的分钟

output time_enable //输出时间的使能信号

);

reg [7:0] second;

reg [7:0] min;

wire time_enable;

always@ (posedge clk_final or negedge reset) //异步复位

begin //1

if(!reset) //低电平复位

begin

second <= 8'd0;

min <= 8'd0;

end

else if(!start)

begin

if(second[3:0] == 9) //秒的低四位是9时

begin

second[3:0] <= 4'd0; //清零工作

if(second[7:4] == 5)

begin

second[7:4] <= 4'd0; //清零

if(min[3:0] == 9) //分钟的低四位为9时,需清零

begin

min[3:0] <= 4'd0;

if(min[7:4] == 9)

min[7:4] <= 4'd0;

else

min[7:4] <= min[7:4]+1'd1;

end

else

min[3:0] <= min[3:0] + 1'd1;

end

else

second[7:4] <= second[7:4] + 1'd1;

end

else

second[3:0] <= second[3:0] + 1'd1;

end

else

begin

second[7:0] <=0;min[7:0] <= 0;

end

end //end always

//输出time_enable信号,当计时超过两分钟时,之后每一分钟来一个time_enable信号assign time_enable = ((min[7:0]>8'd2)&&(second[7:0]==8'd0))?1'd1:1'd0;//和always并行执行

endmodule

5. 计费模块(Money_Cal)

module Money_Cal(

input clk_final,

input reset,

input distance_enable,

input time_enable,

output [3:0] temp,

output [11:0] money

);

reg [11:0] money;

always@ (posedge clk_final or negedge reset) //异步复位

begin

if(!reset) //低电平复位

begin

money[11:0] = 12'b000100000000; //起步价为10元

end

else if(distance_enable == 1 ) //如果是里程计费信号来了,就按里程计费

begin

if(money[3:0] == 4 || money[3:0] == 6 || money[3:0] == 8) //当低四位(角位)是4,6,8时

begin

money[3:0] = money[3:0] + 4'd6; //出现上述情况,需要显示十进制,就得这么做

money[3:0] = money[3:0] - 10;

money[7:4] = money[7:4] + 4'd1; //费用的"元"位<9,就+ 1

if(money[7:4] >= 9) //费用的"元"位计到9,

begin

money[7:4] =money[7:4] - 10;//修改

if(money[11:8] == 4'd9)

begin

money[11:8] = 4'd0; //清零

end

else

begin

money[11:8] = money[11:8] + 4'd1;

end

end

else

begin

money[7:4] = money[7:4] + 4'd1;

end

end

else //当末位"角位"是0 或2的时候

begin

money[3:0] = money[3:0] + 4'd6; //角位直接先加6,然后判断高位是否能直接相加

if(money[7:4] == 9) //费用的"元"位计到9,就清零

begin

money[7:4] = 4'd0; //清零

if(money[11:8] == 4'd9) //如果费用的"十元"位计到9,就清零

begin

money[11:8] = 4'd0; //清零

end

else

begin

money[11:8] = money[11:8] + 4'd1; //如果费用的"十元"位<9,就加 1

end

end

else

begin

money[7:4] = money[7:4] + 4'd1;

end

end

end

/*********************************时间计费******************************************/

else if(time_enable == 1 ) //如果是里程计费信号来了,就按里程计费

begin

if(money[3:0]==5) //费用的低四位如果计到了5

begin

money[3:0] = 4'd0; //清零****

if(money[7:4] == 9) //费用的"元"位计到9,就清零

begin

money[7:4] = 4'd0; //清零

if(money[11:8] == 4'd9)

begin

money[11:8] = 4'd0; //清零******

end

else

begin

money[11:8] = money[11:8] + 4'd1;

end

end

else //当出现x95的情况时,

begin

money[3:0] = money[3:0] + 4'd5;

if(money[3:0] == 5)

begin

money[3:0] = 0;

money[7:4] = money[7:4] + 4'd1;

end

else

begin

money[7:4] = money[7:4] + 4'd1;

end

end

end

else

money[3:0] = money[3:0] + 4'd5;

begin

if(money[7:4] == 9)

begin

money[7:4] = 4'd0;

money[11:8] = money[11:8] + 4'd1;

end

else

begin

money[7:4] = money[7:4] + 4'd1;

end

end

end

end //end always

endmodule

6. 数码管显示模块(LEDDisplay_Cal)

module LED_Display(

input reset,

input clk_final_1,

input [7:0] distance,

input [11:0] money,

input [7:0] second,

input [7:0] min,

output wire[5:0] dight_select, //数码管选择输出

output wire[7:0] dight_result //数码管上显示的结果(即译码结果)

);

reg [5:0] dight_select_r; //数码管的选择寄存器。用于选择数码管,试验箱只有6个reg [7:0] dight_result_r; // 译码结果输出寄存器用于显示0,1,2,3, (9)

reg [3:0] dight_display_real;//实际中选择输出的数据,即里程两位,时间两位(秒位省略),钱两位

reg [3:0] AN; //主要用作译码选择

assign dight_select = dight_select_r;

assign dight_result = dight_result_r;

always@ (posedge clk_final_1)

begin

if(AN < 4'd5)

AN <= AN + 4'd1;

else

AN <= 4'd0;

end

always@ (posedge clk_final_1)

begin

case(AN)

4'd0: //时间分的"个"位,用第五个数码管

begin

dight_select_r = 6'b000001;

dight_display_real = min[3:0];

end

4'd1: //时间秒的"个"位,用第六个数码管

begin

dight_select_r = 6'b000010;

dight_display_real = second[3:0];

end

4'd2: //里程的"十"位,用第三个数码管

begin

dight_select_r = 6'b000100;

dight_display_real = distance[7:4];

end

4'd3: //里程的"个"位,用第四个数码管

begin

dight_select_r = 6'b001000;

dight_display_real = distance[3:0];

end

4'd4: //费用的"十元"位,用第一个数码管

begin

dight_select_r = 6'b010000;

dight_display_real = money[11:8];

end

4'd5: //费用的"元"位,用第二个数码管

begin

dight_select_r = 6'b100000;

dight_display_real = money[7:4];

end

default:

begin

dight_select_r = 6'b111111;

dight_display_real = 7;

end

endcase

end

// *译码结果*//

always@ (dight_display_real)

begin

case(dight_display_real)

4'h0: dight_result_r = 7'b0111111;

4'h1: dight_result_r = 7'b0000110;

4'h2: dight_result_r = 7'b1011011;

4'h3: dight_result_r = 7'b1001111;

4'h4: dight_result_r = 7'b1100110;

4'h5: dight_result_r = 7'b1101101;

4'h6: dight_result_r = 7'b1111101;

4'h7: dight_result_r = 7'b0000111;

4'h8: dight_result_r = 7'b1111111;

4'h9: dight_result_r = 7'b1101111;

default: dight_result_r = 7'b1000000;

endcase

end

endmodule

7.顶层模块(Taximeter)

module Taximeter(

input clk_100M,

input reset,

input start,

output [7:0] distance,

output [7:0] second,

output [7:0] min,

output [11:0] money,

output [7:0] dight_result,

output [5:0] dight_select

);

wire [7:0] dight_result; //数码管显示的数值

wire [5:0] dight_select; //数码管的选择(共6个)

wire time_enable;

wire distance_enable;

wire clk_final; //输出时钟

wire clk_final_1; //LED 输出时钟

/********************各个模块的调用*******************************/ Frequency_Div FrequencyDiv1(

.clk_100M(clk_100M), //总的时钟频率

.reset(reset), //复位键

.clk_final(clk_final) //分频输出频率

);

Frequency_Div_2 FrequencyDiv2(

.clk_100M(clk_100M), //总的时钟频率

.reset(reset), //复位键

.clk_final_1(clk_final_1) //分频输出频率

);

Distance_Cal DistanceCal(

.clk_final(clk_final), //输出的时钟信号

.start(start),

.reset(reset),

.distance(distance), //里程

.distance_enable(distance_enable) //里程计费使能信号

);

Time_Cal TimeCal(

.clk_final(clk_final), //最终输出的时钟

.reset(reset),

.start(start),

.second(second), //输出时间的秒钟

.min(min), //输出时间的分钟

.time_enable(time_enable) //输出时间的使能信号

);

Money_Cal MoneyCal(

.clk_final(clk_final),

.reset(reset),

.distance_enable(distance_enable),

.time_enable(time_enable),

.money(money)

);

LED_Display LEDDisplay(

.reset,

.clk_final_1(clk_final_1),

.distance(distance),

.money(money),

.second(second),

.min(min),

.dight_select(dight_select), //数码管选择输出

.dight_result(dight_result) //数码管上显示的结果(即译码结果) );

Endmodule

计算机组成原理第六章答案

第6章 计算机的运算方法 2. 已知X=0.a1a2a3a4a5a6(ai 为0或1),讨论下列几种情况时ai 各取何值。 (1)2 1 X > (2)8 1X ≥ (3) 16 1 X 41> ≥ 解: (1)若要2 1 X > ,只要a1=1,a2~a6不全为0即可。 (2)若要8 1 X ≥,只要a1~a3不全为0即可。 (3)若要 16 1X 41>≥,只要a1=0,a2可任取0或1; 当a2=0时,若a3=0,则必须a4=1,且a5、a6不全为0; 若a3=1,则a4~a6可任取0或1; 当a2=1时, a3~a6均取0。 3. 设x 为整数,[x]补=1,x1x2x3x4x5,若要求 x < -16,试问 x1~x5 应取何值? 解:若要x < -16,需 x1=0,x2~x5 任意。(注:负数绝对值大的补码码值反而小。) 4. 设机器数字长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。 -13/64,29/128,100,-87 解:真值与不同机器码对应关系如下: 5. 已知[x]补,求[x]原和x 。 [x1]补=1.1100; [x2]补=1.1001; [x3]补=0.1110; [x4]补=1.0000; [x5]补=1,0101; [x6]补=1,1100; [x7]补=0,0111; [x8]补=1,0000; 解:[x]补与[x]原、x 的对应关系如下: 6. 设机器数字长为8位(含1位符号位在内),分整数和小数两种情况讨论真值x 为何值时,[x]补=[x]原成立。 解:当x 为小数时,若x ≥ 0,则 [x]补=[x]原成立; 若x < 0,当x= -1/2时,[x]补=[x]原=1.100 0000,则 [x]补=[x]原成立。 当x 为整数时,若x ≥0,则 [x]补=[x]原成立; 若x< 0,当x= -64时,[x]补=[x]原=1,100 0000,则 [x]补=[x]原成立。 7. 设x 为真值,x*为绝对值,说明[-x*]补=[-x]补能否成立。 解:当x 为真值,x*为绝对值时,[-x*]补=[-x]补不能成立。原因如下: (1)当x<0时,由于[-x*]补是一个负值,而[-x]补是一个正值,因此此时[-x*]补=[-x]补不成立; (2)当x ≥0时,由于-x*=-x ,因此此时 [-x*]补=[-x]补的结论成立。 8. 讨论若[x]补>[y]补,是否有x>y ?

计算机组成原理第四章作业答案

第四章作业答案 解释概念:主存、辅存,Cache, RAM, SRAM, DRAM, ROM, PROM ,EPROM ,EEPROM CDROM, Flash Memory. 解:1主存:主存又称为内存,直接与CPU交换信息。 2辅存:辅存可作为主存的后备存储器,不直接与CPU交换信息,容量比主存大,速度比主存慢。 3 Cache: Cache缓存是为了解决主存和CPU的速度匹配、提高访存速度的一种存储器。它设在主存和CPU之间,速度比主存快,容量比主存小,存放CPU最近期要用的信息。 4 RAM; RAM是随机存取存储器,在程序的执行过程中既可读出信息又可写入信息。 5 SRAM: 是静态RAM,属于随机存取存储器,在程序的执行过程中既可读出信息又可写入信息。靠触发器原理存储信息,只要不掉电,信息就不会丢失。 6 DRAM 是动态RAM,属于随机存取存储器,在程序的执行过程中既可读出信息又可写入信息。靠电容存储电荷原理存储信息,即使电源不掉电,由于电容要放电,信息就会丢失,故需再生。 7 ROM: 是只读存储器,在程序执行过程中只能读出信息,不能写入信息。 8 PROM: 是可一次性编程的只读存储器。 9 EPROM 是可擦洗的只读存储器,可多次编程。 10 EEPROM: 即电可改写型只读存储器,可多次编程。 11 CDROM 即只读型光盘存储器。 12 Flash Memory 即可擦写、非易失性的存储器。 存储器的层次结构主要体现在什么地方?为什么要分这些层次?计算机如何管理这些层次? 答:存储器的层次结构主要体现在Cache—主存和主存—辅存这两个存储层次上。 Cache—主存层次在存储系统中主要对CPU访存起加速作用,即从整体运行的效果分析,CPU访存速度加快,接近于Cache的速度,而寻址空间和位价却接近于主存。 主存—辅存层次在存储系统中主要起扩容作用,即从程序员的角度看,他所使用的存储器其容量和位价接近于辅存,而速度接近于主存。 综合上述两个存储层次的作用,从整个存储系统来看,就达到了速度快、容量大、位价低的优化效果。 主存与Cache之间的信息调度功能全部由硬件自动完成。而主存—辅存层次的调度目前广泛采用虚拟存储技术实现,即将主存与辅存的一部份通过软硬结合的技术组成虚拟存储器,程序员可使用这个比主存实际空间(物理地址空间)大得多的虚拟地址空间(逻辑地址空间)编程,当程序运行时,再由软、硬件自动配合完成虚拟地址空间与主存实际物理空间的转换。因此,这两个层次上的调度或转换操作对于程序员来说都是透明的。

计算机组成原理第一章题目(含答案)

第一章计算机系统概论第一章单元测验 1、计算机硬件能直接执行的是 A、高级语言 B、机器语言 C、汇编语言 D、任何语言 2、下列说法中,错误的是 A、软件与硬件具有逻辑功能的等价性 B、固件功能类似软件,形态类似硬件 C、计算机系统层次结构中,微程序属于硬件级 D、寄存器的数据位对微程序级用户透明 3、完整的计算机系统通常包括 A、运算器、控制器、存储器 B、主机、外部设备 C、主机和应用软件 D、硬件系统与软件系统 4、计算机的字长与下列哪项指标密切相关 A、运算精确度 B、运算速度 C、内存容量 D、存取速度 5、CPU地址线数量与下列哪项指标密切相关 A、运算精确度 B、运算速度 C、内存容量 D、存储数据位 6、下列属于冯?诺依曼计算机的核心思想是 A、存储器按地址访问 B、存储程序和程序控制 C、采用补码 D、采用总线

7、下列关于计算机系统层次结构的描述中,正确的是 A、不同层次面向不同用户,看到计算机的属性不同 B、低层代码执行效率比高层代码执行效率高 C、低层用户对硬件的透明性比高层用户要低 D、指令集架构层是软、硬件间的接口 8、下列关于硬件与软件关系的描述中,正确的是 A、硬件是软件运行的基础 B、硬件的发展推动了软件的发展 C、软件的发展也推动硬件的发展 D、软件能完成的功能及性能与硬件有关 9、下列关于计算机字长的描述中正确的是 A、字长一般与运算器的数据位相同 B、字长一般与通用寄存器的位数相同 C、字长一般与存储器数据位相同 D、字长一般与存储器的地址位相同 10、下列可用于评价计算机系统性能的指标是 A、MIPS B、CPI C、IPC D、字长 11、下列计算机系统性能评价的描述中正确的是 A、程序MIPS值越高,计算机的性能越高 B、程序的CPI值越低,计算机的性能越高 C、主频高的机器性能不一定高 D、同一程序在不同机器上运行时得到的MIPS值不一定相同 12、访问256KB的存储空间,需要的地址线数最少为( )根?(只需要填阿拉伯数字) 13、程序必须存放在哪里才能被CPU访问并执行 14、某计算机指令集中共有A、B、C、D四类指令,它们占指令系统的比例分别为40% 、20%、20%、20%, 各类指令的CPI分别为2、3、4、5;该机器的主频为600MHZ,则该机的CPI 为(保留到小数点后一位) 15、某计算机指令集中共有A、B、C、D四类指令,它们占指令系统的比例分别为40% 、20%、20%、20%, 各类指令的CPI分别为2、3、4、5;该机器的主频为600MHZ,则该机的MIPS为(保留到小数点后一位) 参考答案如下:

计算机组成原理第八章课后部分答案

计算机组成原理第八章课后部分答案

8.1CPU 有哪些功能?画出其结构框图并简要说明每个部件的作用。 解:CPU的主要功能是执行存放在主存储器中的程序即机器指令.CPU是由 控制器和运算器. ALU:实现算逻运算 寄存器:存放操作数 CU :发出各种操作命令序列的控制部件 中断系统:处理异常情况和特殊请求 8.2什么是指令周期?指令周期是否有一个固定值?为什么?解:指令周 期:指取出并执行完一条指令所需的时间。 由于计算机中各种指令执行所需的时间差异很大,因此为了提高 CPU 运行效率,即使在同步控制的机器中,不同指令的指令周期长 度都是不一致的,也就是说指令周期对于不同的指令来说不是一个 固定值。

8.3画出指令周期的流程图,分别说明图中每个子周期的作用。 解:

指令周期流程图 取指周期:取指令间址周期:取有效地址执行周期:取操作数(当指令为访存指令时)中断周期:保存程序断点 8.4设CPU内有这些部件:PC、IR、SP、AC、MAR、MDR、CU。 (1)画出完成简洁寻址的取数指令“ LDA@”X(将主存某地址单元的内容取至AC中)的数据流(从取指令开始)。 (2)画出中断周期的数据流。解:CPU中的数据通路结构方式有直接连线、单总线、双总线、三总线等形式,目前大多采用总线结构,直接连线方式仅适用于结构特别简单的机器中。 下面采用单总线形式连接各部件,框图如下:

MAR PC Bus CU IR SP AC 线 址 地 MDR 1) 图: MDR→AC 2)中断周期流程图如 下:

SP-1→SP 8.7 什么叫系统的并行性?粗粒度并行和细粒度并行有什么区别?解:并行 性:包含同时性和并发性。同时性指两个或两个以上的事件在同一时刻发生,并发性指两个或多个事件在同一时间段发生。即在同一时刻或同一时间段内完成两个或两个以上性质相同或性质不同的功能,只要在时间上存在 相互重叠,就存在并行性。 粗粒度并行是指多个处理机上分别运行多个进程,由多台处理机合作完成一个程序,一般算法实现。 细粒度并行是指在处理机的指令级和操作级的并行性。 8.8 什么是指令流水?画出指令二级流水和四级流水的示意图,它们中哪一个 更能提高处理器速度,为什么?解:指令流水:指将一条指令的执行过程分为n 个操作时间大致相等的阶段,每个阶段由一个独立的功能部件来完成,这样n 个部件可以同时执行n 条指令的不同阶段,从而大大提高 CPU的吞吐率。 指令二级流水和四级流水示意图如下: (3)CPU 在什么条件、什么时候、以什么方式来响应中断

计算机组成原理第五版 白中英(详细)第4章习题参考答案

第4章习题参考答案 1.ASCII码是7位,如果设计主存单元字长为32位,指令字长为12位,是否合理?为什么? 答:不合理。指令最好半字长或单字长,设16位比较合适。一个字符的ASCII 是7位,如果设计主存单元字长为32位,则一个单元可以放四个字符,这也是可以的,只是在存取单个字符时,要多花些时间而已,不过,一条指令至少占一个单元,但只占一个单元的12位,而另20位就浪费了,这样看来就不合理,因为通常单字长指令很多,浪费也就很大了。 2.假设某计算机指令长度为32位,具有双操作数、单操作数、无操作数三类指令形式,指令系统共有70条指令,请设计满足要求的指令格式。 答:字长32位,指令系统共有70条指令,所以其操作码至少需要7位。 双操作数指令 单操作数指令 无操作数指令 3.指令格式结构如下所示,试分析指令格式及寻址方式特点。 答:该指令格式及寻址方式特点如下: (1) 单字长二地址指令。 (2) 操作码字段OP可以指定26=64种操作。 (3) 源和目标都是通用寄存器(可分指向16个寄存器)所以是RR型指令,即两个操作数均在寄存器中。 (4) 这种指令结构常用于RR之间的数据传送及算术逻辑运算类指令。 4.指令格式结构如下所示,试分析指令格式及寻址方式特点。 15 10 9 8 7 4 3 0 答:该指令格式及寻址方式特点如下: (1)双字长二地址指令,用于访问存储器。 (2)操作码字段OP可以指定26=64种操作。 (3)RS型指令,一个操作数在通用寄存器(选择16个之一),另一个操作数 在主存中。有效地址可通过变址寻址求得,即有效地址等于变址寄存器(选择16个之一)内容加上位移量。

计算机组成原理第四版课后习题答案完整版

第一章 1.比较数字计算机和模拟计算机的特点 解:模拟计算机的特点:数值由连续量来表示,运算过程是连续的; 数字计算机的特点:数值由数字量(离散量)来表示,运算按位进行。 两者主要区别见P1 表1.1。 2.数字计算机如何分类?分类的依据是什么? 解:分类:数字计算机分为专用计算机和通用计算机。通用计算机又分为巨型机、大型机、 中型机、小型机、微型机和单片机六类。 分类依据:专用和通用是根据计算机的效率、速度、价格、运行的经济性和适应性来划分的。 通用机的分类依据主要是体积、简易性、功率损耗、性能指标、数据存储容量、 指令系统规模和机器价格等因素。

3.数字计算机有那些主要应用? (略) 4.冯. 诺依曼型计算机的主要设计思想是什么?它包括哪些主要组成部分? 解:冯. 诺依曼型计算机的主要设计思想是:存储程序和程序控制。 存储程序:将解题的程序(指令序列)存放到存储器中; 程序控制:控制器顺序执行存储的程序,按指令功能控制全机协调地完成运算任务。 主要组成部分有:控制器、运算器、存储器、输入设备、输出设备。 5.什么是存储容量?什么是单元地址?什么是数据字?什么是指令字? 解:存储容量:指存储器可以容纳的二进制信息的数量,通常用单位KB、MB、GB来度量,存储容 量越大,表示计算机所能存储的信息量越多,反映了计算机存储空间的大小。 单元地址:单元地址简称地址,在存储器中每个存储单

元都有唯一的地址编号,称为单元地 址。 数据字:若某计算机字是运算操作的对象即代表要处理的数据,则称数据字。 指令字:若某计算机字代表一条指令或指令的一部分,则称指令字。 6.什么是指令?什么是程序? 解:指令:计算机所执行的每一个基本的操作。 程序:解算某一问题的一串指令序列称为该问题的计算程序,简称程序。 7.指令和数据均存放在内存中,计算机如何区分它们是指令还是数据? 解:一般来讲,在取指周期中从存储器读出的信息即指令信息;而在执行周期中从存储器中读出的 信息即为数据信息。 8.什么是内存?什么是外存?什么是CPU?什么是适配器?简述其功能。

计算机组成原理实验

计算机组成原理 一、8 位算术逻辑运算 8 位算术逻辑运算实验目的 1、掌握简单运算器的数据传送通路组成原理。 2、验证算术逻辑运算功能发生器74LS181的组合功能。 8 位算术逻辑运算实验内容 1、实验原理 实验中所用的运算器数据通路如图3-1所示。其中运算器由两片74LS181以并/串形成8位字长的ALU构成。运算器的输出经过一个三态门74LS245(U33)到ALUO1插座,实验时用8芯排线和内部数据总线BUSD0~D7插座BUS1~6中的任一个相连,内部数据总线通过LZD0~LZD7显示灯显示;运算器的两个数据输入端分别由二个锁存器74LS273(U29、U30)锁存,两个锁存器的输入并联后连至插座ALUBUS,实验时通过8芯排线连至外部数据总线EXD0~D7插座EXJ1~EXJ3中的任一个;参与运算的数据来自于8位数据开并KD0~KD7,并经过一三态门74LS245(U51)直接连至外部数据总线EXD0~EXD7,通过数据开关输入的数据由LD0~LD7显示。 图中算术逻辑运算功能发生器74LS181(U31、U32)的功能控制信号S3、S2、S1、S0、CN、M并行相连后连至SJ2插座,实验时通过6芯排线连至6位功能开关插座UJ2,以手动方式用二进制开关S3、S2、S1、S0、CN、M来模拟74LS181(U31、U32)的功能控制信号S3、S2、S1、S0、CN、M;其它电平控制信号LDDR1、LDDR2、ALUB`、SWB`以手动方式用二进制开关LDDR1、LDDR2、ALUB、SWB来模拟,这几个信号有自动和手动两种方式产生,通过跳线器切换,其中ALUB`、SWB`为低电平有效,LDDR1、LDDR2为高电平有效。 另有信号T4为脉冲信号,在手动方式下进行实验时,只需将跳线器J23上T4与手动脉冲发生开关的输出端SD相连,按动手动脉冲开关,即可获得实验所需的单脉冲。 2、实验接线 本实验用到4个主要模块:⑴低8位运算器模块,⑵数据输入并显示模块,⑶数据总线显示模块,⑷功能开关模块(借用微地址输入模块)。

计算机组成原理第六章答案上课讲义

计算机组成原理第六 章答案

1. 写出下列各数的原码、反码、补码、移码(用8位二进制表示),其中MSB是最高位(符号位),LSB是最低位。如果是小数,则小数点在MSB之后;如果是整数,则小数点在LSB之后。 (1)-59/64 (2)27/128 (3)- 127/128 (4)用小数表示-1 (5)用整数表示-1 (6)- 127 (7)35 (8)-128 2. 设[x]补=x0.x1x2x3x4,其中x i取0或1,若要使x>-0.5,则x0、x1、x2、x3、x4的取值应满足什么条件? 3. 若32位定点小数的最高位为符号位,用补码表示,则所能表示的最大正数为,最小正数为,最大负数为,最小负数为;若32位定点整数的最高位为符号位,用原码表示,则所能表示的最大正数为,最小正数为,最大负数 为,最小负数为。 4. 若机器字长为32位,在浮点数据表示时阶符占1位,阶码值占7位,数符占1位,尾数值占23位,阶码用移码表示,尾数用原码表示,则该浮点数格式所能表示的最大正数为,最小正数为,最大负数 为,最小负数为。 5. 某机浮点数字长为18位,格式如图2.35所示,已知阶码(含阶符)用补码表示,尾数(含数符)用原码表示。 (1)将(-1027)10表示成规格化浮点数; (2)浮点数(0EF43)16是否是规格化浮点数?它所表示的真值是多少? 图2.35 浮点数的表示格式 6. 有一个字长为32位的浮点数,格式如图2.36所示,已知数符占1位;阶码占8位,用移码表示;尾数值占23位,尾数用补码表示。

图2.36 浮点数的表示格式 请写出: (1)所能表示的最大正数; (2)所能表示的最小负数; (3)规格化数所能表示的数的范围。 7. 若浮点数x的IEEE754标准的32位存储格式为(8FEFC000)16,求其浮点数的十进制数值。 8. 将数(-7.28125)10转换成IEEE754标准的32位浮点数的二进制存储格式。 9. 已知x=-0.x1x2…x n,求证:[x]补=+0.00…01。 10. 已知[x]补=1.x1x2x3x4x5x6,求证:[x]原=+0.000001。 11. 已知x和y,用变形补码计算x+y,同时指出运算结果是否发生溢出。 (1)x=0.11011 y=-0.10101 (2)x=-10110 y=-00011 12. 已知x和y,用变形补码计算x-y,同时指出运算结果是否发生溢出。 (1)x=0.10111 y=0.11011 (2)x=11011 y=-10011 13. 已知[x]补=1.1011000,[y]补=1.0100110,用变形补码计算2[x]补 +1/2[y]补=?,同时指出结果是否发生溢出。 14. 已知x和y,用原码运算规则计算x+y,同时指出运算结果是否发生溢出。 (1)x=0.1011,y=-0.1110 (2)x=-1101,y=-1010

计算机组成原理第四章课后题参考答案教程文件

计算机组成原理第四章课后题参考答案

第四章课后题参考答案 3.指令格式结构如下所示,试分析指令格式及寻址方式特点。 解:指令格式及寻址方式特点如下: ① 单字长二地址指令; ② 操作码OP可指定=64条指令; ③ RR型指令,两个操作数均在寄存器中,源和目标都是通用寄存器(可分别指定16个寄存器之一);

④ 这种指令格式常用于算术逻辑类指令。 4.指令格式结构如下所示,试分析指令格式及寻址方式特点。 解:指令格式及寻址方式特点如下: ① 双字长二地址指令; ② 操作码OP可指定=64条指令; ③ RS型指令,两个操作数一个在寄存器中(16个寄存器之一),另一个在存储器中(由变址寄存器和偏移量决定),变址寄存器可有16个。

6.一种单地址指令格式如下所示,其中I为间接特征,X为寻址模式,D为形式地址。I,X,D组成该指令的操作数有效地址E。设R为变址寄存器,R1 为基值寄存器,PC为程序计数器,请在下表中第一列位置填入适当的寻址方式名称。 解:① 直接寻址 ② 相对寻址 ③ 变址寻址 ④ 基址寻址 ⑤ 间接寻址 ⑥ 基址间址寻址 12. 根据操作数所在位置,指出其寻址方式(填空): (1)操作数在寄存器中,为(A)寻址方式。 (2)操作数地址在寄存器,为(B)寻址方式。 (3)操作数在指令中,为(C)寻址方式。 (4)操作数地址(主存)在指令中,为(D)寻址方式 (5)操作数的地址,为某一寄存器内容与位移量之和可以是(E,F,G)寻址方式。 解:A:寄存器直接(或寄存器); B:寄存器间接; C:立即;

D:直接; E:相对; F:基址;G:变址 补充一下,间接寻址可以表述为: 操作数地址(主存)在内存中 或者 操作数地址的地址(主存)在指令中

计算机组成原理实验

实验一基础汇编语言程序设计 一、实验目的: 1、学习和了解TEC-XP16教学实验系统监控命令的用法。 2、学习和了解TEC-XP16教学实验系统的指令系统。 3、学习简单的TEC-XP16教学实验系统汇编程序设计。 二、预习要求: 1、学习TEC-XP16机监控命令的用法。 2、学习TEC-XP16机的指令系统、汇编程序设计及监控程序中子程序调用。 3、学习TEC-XP16机的使用,包括开关、指示灯、按键等。 4、了解实验内容、实验步骤和要求。 三、实验步骤: 在教学计算机硬件系统上建立与调试汇编程序有几种操作办法。 第一种办法,是使用监控程序的A命令,逐行输入并直接汇编单条的汇编语句,之后使用G命令运行这个程序。缺点是不支持汇编伪指令,修改已有程序源代码相对麻烦一些,适用于建立与运行短小的汇编程序。 第二种办法,是使用增强型的监控程序中的W命令建立完整的汇编程序,然后用M命令对建立起来的汇编程序执行汇编操作,接下来用G命令运行这个程序。适用于比较短小的程序。此时可以支持汇编伪指令,修改已经在内存中的汇编程序源代码的操作更方便一些。 第三种办法,是使用交叉汇编程序ASEC,首先在PC机上,用PC机的编辑程序建立完整的汇编程序,然后用ASEC对建立起来的汇编程序执行汇编操作,接下来把汇编操作产生的二进制的机器指令代码文件内容传送到教学机的内存中,就可以运行这个程序了。适用于规模任意大小的程序。

在这里我们只采用第一种方法。 在TEC-XP16机终端上调试汇编程序要经过以下几步: 1、使教学计算机处于正常运行状态(具体步骤见附录联机通讯指南)。 2、使用监控命令输入程序并调试。 ⑴用监控命令A输入汇编程序 >A 或>A 主存地址 如:在命令行提示符状态下输入: A 2000↙;表示该程序从2000H(内存RAM区的起始地址)地址开始 屏幕将显示: 2000: 输入如下形式的程序: 2000: MVRD R0,AAAA ;MVRD 与R0 之间有且只有一个空格,其他指令相同 2002: MVRD R1,5555 2004: ADD R0,R1 2005: AND R0,R1 2006: RET ;程序的最后一个语句,必须为RET 指令 2007:(直接敲回车键,结束A 命令输入程序的操作过程) 若输入有误,系统会给出提示并显示出错地址,用户只需在该地址重新输入正确的指令即可。 ⑵用监控命令U调出输入过的程序并显示在屏幕上 >U 或>U 主存地址

计算机组成原理第六章答案54731培训资料

计算机组成原理第六章答案54731

第6章 计算机的运算方法 2. 已知X=0.a1a2a3a4a5a6(ai 为0或1),讨论下列几种情况时ai 各取何值。 (1)21X > (2)8 1X ≥ (3) 16 1X 41>≥ 解: (1)若要2 1 X > ,只要a1=1,a2~a6不全为0即可。 (2)若要8 1 X ≥,只要a1~a3不全为0即可。 (3)若要 16 1X 41>≥,只要a1=0,a2可任取0或1; 当a2=0时,若a3=0,则必须a4=1,且a5、a6不全为0; 若a3=1,则a4~a6可任取0或1; 当a2=1时, a3~a6均取0。 3. 设x 为整数,[x]补=1,x1x2x3x4x5,若要求 x < -16,试问 x1~x5 应取何值? 解:若要x < -16,需 x1=0,x2~x5 任意。(注:负数绝对值大的补码码值反而小。) 4. 设机器数字长为8位(含1位符号位在内),写出对应下列各真值的原码、补码和反码。 -13/64,29/128,100,-87 解:真值与不同机器码对应关系如下: 5. 已知[x]补,求[x]原和x 。 [x1]补=1.1100; [x2]补=1.1001; [x3]补=0.1110; [x4]补=1.0000; [x5]补=1,0101; [x6]补=1,1100; [x7]补=0,0111; [x8]补=1,0000; 解:[x]补与[x]原、x 的对应关系如下: 6. 设机器数字长为8位(含1位符号位在内),分整数和小数两种情况讨论真值x 为何值时,[x]补=[x]原成立。 解:当x 为小数时,若x ≥ 0,则 [x]补=[x]原成立; 若x < 0,当x= -1/2时,[x]补=[x]原=1.100 0000,则 [x]补=[x]原成立。 当x 为整数时,若x ≥0,则 [x]补=[x]原成立; 若x< 0,当x= -64时,[x]补=[x]原=1,100 0000,则 [x]补=[x]原成立。 7. 设x 为真值,x*为绝对值,说明[-x*]补=[-x]补能否成立。 解:当x 为真值,x*为绝对值时,[-x*]补=[-x]补不能成立。原因如下: (1)当x<0时,由于[-x*]补是一个负值,而[-x]补是一个正值,因此此时[-x*]补=[-x]补不成立; (2)当x ≥0时,由于-x*=-x ,因此此时 [-x*]补=[-x]补的结论成立。 8. 讨论若[x]补>[y]补,是否有x>y ? 解:若[x]补>[y]补,不一定有x>y 。 [x]补 > [y]补时 x > y 的结论只在 x > 0且y > 0,及 x<0且y<0时成立。

计算机组成原理实验七

图16 启停单元布局图 序电路由1片74LS157、2片74LS00、4个LED PLS2、PLS3、PLS4)组成。当LED发光时 图17

图17 时序单元布局图 (二)启停、脉冲单元的原理 1.启停原理:(如图18) 启停电路由1片7474组成,当按下RUN按钮,信号输出RUN=1、STOP=0,表示当前实验机为运行状态。当按下STOP 按钮,信号RUN=0、STOP=1,表示当前实验机为停止状态。当 系统处于停机状态时,微地址、进位寄存器都被清零,并且可 通过监控单元来读写内存和微程序。在停止状态下,当HALT 时有一个高电平,同时HCK有一个上升沿,此时高电平被打入 寄存器中,信号输出RUN=1、STOP=0,使实验机处于运行状态。

图18 启停单元原理图 2.时序电路: 时序电路由监控单元来控制时序输出(PLS1、PLS2、PLS3、PLS4)。实验所用的时序电路(如图19)可产生4个等间隔的时序信号PLS1、PLS2、PLS3、PLS4。为了便于监控程序流程,由监控单元输出PO信号和SIGN脉冲来实现STEP(微单步)、GO (全速)和HALT(暂停)。当实验机处于运行状态,并且是微单步执行,PLS1、PLS2、PLS3、PLS4分别发出一个脉冲,全速执行时PLS1、PLS2、PLS3、PLS4脉冲将周而复始的发送出去。在时序单元中也提供了4个按钮,实验者可手动给出4个独立的脉冲,以便实验者单拍调试模型机。

图19 时序电路图 实验步骤 1.交替按下“运行”和“暂停”,观察运行灯的变化(运行:RUN 亮;暂停:RUN灭)。 2.把HALT信号接入二进制拨动开关,HCK接入脉冲单元的PLS1。按下表接线 接入开关位号 信号定 义 HCK PLS1孔 HALT H13孔 3.按启停单元中的停止按钮,置实验机为停机状态,HALT=1。 4.按脉冲单元中的PLS1脉冲按键,在HCK上产生一个上升

《计算机组成原理》第6章习题答案

第 6 章习题答案 1 .控制器有哪几种控制方式?各有何特点? 解:控制器的控制方式可以分为3 种:同步控制方式、异步控制方式和联合控方式。同步控制方式的各项操作都由统一的时序信号控制,在每个机器周期中产生统一目的节拍电位和工作脉冲。这种控制方式设计简单,容易实现;但是对于许多简单指令说会有较多的空闲时间,造成较大数量的时间浪费,从而影响了指令的执行速度。 异步控制方式的各项操作不采用统一的时序信号控制,而根据指令或部件的具体况决定,需要多少时间,就占用多少时间。异步控制方式没有时间上的浪费,因而提高机器的效率,但是控制比较复杂。 联合控制方式是同步控制和异步控制相结合的方式。 2.什么是三级时序系统? 解:三级时序系统是指机器周期、节拍和工作脉冲。计算机中每个指令周期划分若干个机器周期,每个机器周期划分为若干个节拍,每个节拍中设置一个或几个工脉冲。3.控制器有哪些基本功能?它可分为哪几类?分类的依据是什么? 解:控制器的基本功能有: (1) 从主存中取出一条指令,并指出下一条指令在主存中的位置。 (2) 对指令进行译码或测试,产生相应的操作控制信号,以便启动规定的动作。 (3) 指挥并控制CPU主存和输入输出设备之间的数据流动。 控制器可分为组合逻辑型、存储逻辑型、组合逻辑与存储逻辑结合型 3 类,分类的依据在于控制器的核心一一微操作信号发生器(控制单元CU)的实现方法不同。 4 .中央处理器有哪些功能?它由哪些基本部件所组成? 解:从程序运行的角度来看,CPU的基本功能就是对指令流和数据流在时间与空间上实施正确的控制。对于冯?诺依曼结构的计算机而言,数据流是根据指令流的操作而形成的,也就是说数据流是由指令流来驱动的。 中央处理器由运算器和控制器组成。 5 .中央处理器中有哪几个主要寄存器?试说明它们的结构和功能。 解:CPU中的寄存器是用来暂时保存运算和控制过程中的中间结果、最终结果及控制、状态信息的,它可分为通用寄存器和专用寄存器两大类。 通用寄存器可用来存放原始数据和运算结果,有的还可以作为变址寄存器、计数器、地址指针等。专用寄存器是专门用来完成某一种特殊功能的寄存器,如程序计数器PC指令 寄存器IR、存储器地址寄存器MAR存储器数据寄存器MDR状态标志寄存器PSWF等。 15 、什么是微命令和微操作?什么是微指令?微程序和机器指令有何关系?微程序和程序之间有何关系? 解:微命令是控制计算机各部件完成某个基本微操作的命令。微操作是指计算机中最基本的、不可再分解的操作。微命令和微操作是一一对应的,微命令是微操作的控制信号,微操作是微命令的操作过程。 微指令是若干个微命令的集合。微程序是机器指令的实时解释器,每一条机器指令都对应一个微程序。 微程序和程序是两个不同的概念。微程序是由微指令组成的,用于描述机器指令,实际上是机器指令的实时解释器,微程序是由计算机的设计者事先编制好并存放在控制储器中的,一般不提供给用户;程序是由机器指令组成的,由程序员事先编制好并存放在主存储器中。 16.什么是垂直型微指令?什么是水平型微指令?它们各有什么特点? 解:垂直型微指令是指一次只能执行一个微命令的微指令;水平型微指令是指一次能定义并能

计算机组成原理第四章单元测试题

存储系统(一)单元测验 1、CPU可直接访问的存储器是 A、磁盘 B、主存 C、光盘 D、磁带 2、主存储器和CPU之间增加高速缓冲存储器(Cache)的目的是 A、提高存储系统访问速度 B、简化存储管理 C、扩大主存容量 D、支持虚拟存储技术 3、存储字长是指 A、存储器地址线的二进制位数 B、存放在一个存储单元中的二进制位数 C、存储单元总数 D、寄存器的数据位数 4、计算机字长32位,主存容量为128MB,按字编址,其寻址范围为 A、0 ~ 32M-1 B、0 ~ 128M-1 C、0 ~ 64M-1 D、0 ~ 16M-1 5、字位结构为256Kx4位SRAM存储芯片,其地址引脚与数据引脚之和为 A、18 B、22 C、24 D、30 6、某SRAM芯片,存储容量为64K×16位,该芯片的地址线和数据线数目分别为 A、64,16 B、16,64 C、16,16 D、64,64 7、假定用若干块4K *4位的存储芯片组成一个8K*8位的存储器,则地址0B1F所在芯片的最小地址是 A、0000H B、0600H C、0700H D、0B00H

8、计算机系统中的存贮器系统是指 A、RAM和ROM存贮器 B、Cache C、磁盘存储器 D、Cache、主存贮器和外存贮器 9、用若干片2K′4位的存储芯片组成一个8K′8位的存储器,则地址0B1FH所在的芯片在全局的最大地址是 A、0CFFH B、0BFFH C、1BFFH D、0FFFH 10、动态存储器刷新以()为单位进行 A、存储单元 B、行 C、列 D、字节 11、下列存储器类型中,速度最快的是 A、DRAM B、Flash Memory C、SRAM D、EPROM 12、某计算机字长32位,下列地址属性中属于按双字长边界对齐的是 A、存储器地址线低三位全部为0 B、存储器地址线低二位全部为0 C、存储器地址线最低为0 D、存储器地址线低三位取值随意 13、在32位的机器上存放0X12345678,假定该存储单元的最低字节地址为0X4000,则在小端存储模式下存在在0X4002单元的内容是 A、0X12 B、0X34 C、0X56 D、0X78 14、关于内存的下列说法中,错误的是 A、内存的存取速度不能低于CPU速度,否则会造成数据丢失 B、程序只有在数据和代码等被调入内存后才能运行 C、采用虚拟内存技术后程序可以在硬盘上直接运行 D、某计算机内存容量为8GB,按字节编址,那么它的地址总线为33位

计算机组成原理实验完整版

河南农业大学 计算机组成原理实验报告 题目简单机模型实验 学院信息与管理科学学院 专业班级计算机科学与技术2010级1班 学生姓名张子坡(1010101029) 指导教师郭玉峰 撰写日期:二○一二年六月五日

一、实验目的: 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号“取指”微指令,启动程序运行。 注:CA1、CA2由控制总线的E4、E5给出。键盘操作方式有监控程序直接对E4、E5赋值,无需接线。开关方式时可将E4、E5接至控制开关CA1、CA2,由开关控制。 五、实验内容、分析及参考代码: 生成的下一条微地址 UA5 UA0 MS5 MS0 微地址

计算机组成原理课后答案第四章_庞海波

第四章思考题与习题 1.解释下列概念主存、辅存、Cache、RAM、SRAM、DRAM、ROM、PROM、EPROM、EEPROM、CDROM、Flash Memory 答: 主存:与CPU 直接交换信息,用来存放数据和程序的存储器。 辅存:主存的后援存储器,不与CPU 直接交换信息。 CACHE:为了解决CPU 和主存的速度匹配,设在主存与CPU之间,起缓冲作用,用于提高访存速度的一种存储器。 RAM:随机存储器:是随机存取的,在程序执行过程中既可读出也可写入,存取时间与存储单元所在位置无关。 SRAM:静态RAM,以触发器原理存储信息。 DRAM:动态RAM,以电容充放电原理存储信息。 ROM:只读存储器,在程序执行过程中只能读出,而不能对其写入。 PROM:一次性编程的只读存储器。 EPROM:可擦除的可编程只读存储器,用紫外线照射进行擦写。 EEPROM:用电可擦除的可编程只读存储器。 CDROM:只读型光盘 Flash Memory:快擦型存储器,是性能价格比好,可靠性高的可擦写非易失型存储器 2.计算机中哪些部件可用于存储信息,请按其速度、容量和价格/位排序说明。 答: 寄存器、缓存、主存、磁盘、磁带等。 速度按顺序越来越慢,容量越来越高和价格/位越来越低 3.存储器的层次结构主要体现在什么地方为什么要分这些层次,计算机如何管理这些层次答:存储器的层次结构主要体现在Cache—主存和主存—辅存这两个存储层次上。 Cache—主存层次在存储系统中主要对CPU访存起加速作用,即从整体运行的效果分析,接近于Cache的速度,而容量和位价却接近于主存。 主存—辅存层次在存储系统中主要起扩容作用,其容量和位价接近于辅存,而速度接近于主存 4.说明存取周期和存取时间的区别。 答: 存取周期和存取时间的主要区别是:存取时间仅为完成一次存取操作的时间,而存取周期不仅包含操作时间,还包含操作后线路的恢复时间。即: 存取周期= 存取时间+ 恢复时间 5.什么是存储器的带宽若存储器的数据总线宽度为32 位,存取周期为200ns,则存储器的带宽是多少 解:存储器的带宽指单位时间内从存储器进出信息的最大数量。 存储器带宽= 1/200ns×32位= 160M位/秒= 20MB/S = 5M字/秒 6.某机字长为32 位,其存储容量是64KB,按字编址它的寻址范围是多少若主存以字节编

计算机组成原理全部实验.

计算机科学技术系王玉芬2012年11月3日

基础实验部分该篇章共有五个基础实验组成,分别是: 实验一运算器实验 实验二存储器实验 实验三数据通路组成与故障分析实验 实验四微程序控制器实验 实验五模型机CPU组成与指令周期实验

实验一运算器实验 运算器又称作算术逻辑运算单元(ALU),是计算机的五大基本组成部件之一,主要用来完成算术运算和逻辑运算。 运算器的核心部件是加法器,加减乘除运算等都是通过加法器进行的,因此,加快运算器的速度实质上是要加快加法器的速度。机器字长n位,意味着能完成两个n位数的各种运算。就应该由n个全加器构成n位并行加法器来实现。通过本实验可以让学生对运算器有一个比较深刻的了解。 一、实验目的 1.掌握简单运算器的数据传输方式。 2.掌握算术逻辑运算部件的工作原理。 3. 熟悉简单运算器的数据传送通路。 4. 给定数据,完成各种算术运算和逻辑运算。 二、实验内容: 完成不带进位及带进位的算术运算、逻辑运算实验。 总结出不带进位及带进位运算的特点。 三、实验原理: 1.实验电路图

图4-1 运算器实验电路图

2.实验数据流图 图4-2 运算器实验数据流图 3.实验原理 运算器实验是在ALU UNIT 单元进行;单板方式下,控制信号,数据,时序信号由实验仪的逻辑开关电路和时序发生器提供,SW7-SW0八个逻辑开关用于产生数据,并发送到总线上;系统方式下,其控制信号由系统机实验平台可视化软件通过管理CPU 来进行控制,SW7-SW0八个逻辑开关由可视化实验平台提供数据信号。 (1)DR1,DR2:运算暂存器, (2)LDDR1:控制把总线上的数据打入运算暂存器DR1,高电平有效。 (3)LDDR2:控制把总线上的数据打入运算暂存器DR2,高电平有效。 (4)S3,S2,S1,S0:确定执行哪一种算术运算或逻辑运算(运算功能表见附录1或者课本第49页)。 (5)M :M =0执行算术操作;M =1执行逻辑操作。 (6)/CN :/CN =0表示ALU 运算时最低位加进位1;/CN =1则表示无进位。 (7)ALU -BUS :控制运算器的运算结果是否送到总线BUS ,低电平有效。 (8)SW -BUS :控制8位数据开关SW7-SW0的开关量是否送到总线,低电平有效。 四、实验步骤: 实验前首先确定实验方式(是手动方式还是系统方式),如果在做手动方式实验则将方式选择开关置手动方式位置(31个开关状态置成单板方式)。实验箱已标明手动方式和系统方式标志。所有的实验均由手动方式来实现。如果用系统方式,则必须将系统软件安装到系统机上。将方式标志置系统模式位置。学生所做的实验均在系统机上完成。其中包括高 ALU DR1 DR2 LDDR1 T4 LDDR2 T4 S1 S2 M0 S0 CN S3

计算机组成原理第六章答案

计算机组成原理第六章 答案 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

1. 写出下列各数的原码、反码、补码、移码(用8位二进制表示),其中MSB是最高位(符号位),LSB是最低位。如果是小数,则小数点在MSB之后;如果是整数,则小数点在LSB之后。 (1)-59/64 (2)27/128 (3)-127/128 (4)用小数表示-1 (5)用整数表示-1 (6)-127 (7)35 (8)-128 2. 设[x]补=,其中x i取0或1,若要使x>-,则x0、x1、x2、x3、x4的取值应满足什么条件 3. 若32位定点小数的最高位为符号位,用补码表示,则所能表示的最大正数为,最小正数为,最大负数为,最小负数为;若32位定点整数的最高位为符号位,用原码表示,则所能表示的最大正数为,最小正数为,最大负数为,最小负数为。 4. 若机器字长为32位,在浮点数据表示时阶符占1位,阶码值占7位,数符占1位,尾数值占23位,阶码用移码表示,尾数用原码表示,则该浮点数格式所能表示的最大正数为,最小正数为,最大负数为,最小负数为。 5. 某机浮点数字长为18位,格式如图所示,已知阶码(含阶符)用补码表示,尾数(含数符)用原码表示。 (1)将(-1027)10表示成规格化浮点数; (2)浮点数(0EF43)16是否是规格化浮点数它所表示的真值是多少 图浮点数的表示格式 6. 有一个字长为32位的浮点数,格式如图所示,已知数符占1位;阶码占8位,用移码表示;尾数值占23位,尾数用补码表示。 图浮点数的表示格式 请写出: (1)所能表示的最大正数; (2)所能表示的最小负数; (3)规格化数所能表示的数的范围。 7. 若浮点数x的IEEE754标准的32位存储格式为(8FEFC000)16,求其浮点数的十进制数值。 8. 将数10转换成IEEE754标准的32位浮点数的二进制存储格式。

相关主题
文本预览
相关文档 最新文档