简化的RISC_CPU设计

简化的RISC_CPU设计
简化的RISC_CPU设计

第十七章简化的 RISC CPU设计

前言:

在前面的各章中我们已经学习了VerilogHDL的基本语法、简单组合逻辑和简单时序逻辑模块的编写、Top-Down设计方法、还学习了可综合风格的组合逻辑和有限状态机的设计,其中EEPROM读写器的设计,可以算是一个较复杂的嵌套的有限状态机的设计,它是根据我们已完成的实际工程项目,为达到教学目标而改写的,已很接近真实的设计。在本章中,我们将介绍另一个经过简化的用于教学目标的精简指令集(RISC)CPU的构造原理和设计方法。作者相信读者参考书上的程序和解释,经过自己的努力,就可以独立完成该CPU核的设计和验证,从而学习Verilog设计方法,并由此逐步掌握这种利用硬件描述语言的高层次设计方法。

17.1 课题的由来和设计环境介绍:

在本章中,我们将通过自己动脑筋,设计出CPU的软核和固核。这个CPU是一个简化的专门为教学目的而设计的RISC_CPU。在设计中我们不但关心CPU 总体设计的合理性,而且还使得构成这个RISC_CPU的每一个模块不仅是可仿真的也都可以综合成门级网表。因而从物理意义上说,这也是一个能真正通过具体电路结构而实现的CPU。为了能在这个虚拟的CPU上运行较为复杂的程序并进行仿真, 我们把寻址空间规定为8K(即13位地址线)字节。

下面让我们一步一步地来设计这样一个CPU,并进行RTL仿真、经过综合、布局布线后,再次进行一次仿真,从中我们可以体会到这种设计方法的潜力。本章中的VerilogHDL程序都是我们自己为教学目的而编写的,全部程序在CADENCE公司的NC-Verilog 环境、Synopsys VCS、Mentor 公司的ModelSim 6.1 等环境下用Verilog语言进行了仿真。同时我们分别用Synplify、Altera Quartus II 等工具,针对不同的FPGA进行了综合。顺利地通过RTL级仿真、综合后门级逻辑网表仿真以及布线后的门级结构电路模型仿真。这个CPU 模型只是一个教学模型,设计也不一定很合理,只是从原理上说明了简单的RISC _CPU是如何构成的。本章的内容是想达到以下四个目的:1)学习RISC CPU的基本结构和原理;2)了解Verilog HDL仿真和综合工具的潜力;2)展示Verilog设计方法对软/硬件联合设计和验证的意义;3)学习并掌握一些常用的Verilog语法和验证方法。作者也希望本章的内容能引起对CPU和复杂数字逻辑系统设计有兴趣的电子工程师们的注意,加入我国集成电路的设计队伍,提高我国电子产品的档次。由于作者的经验与学识有限,不足之处敬请读者批评、指正。

17.2.什么是CPU?

CPU 即中央处理单元的英文缩写,它是计算机的核心部件。计算机进行信息处理可分为两个步骤:

1)将数据和程序(即指令序列)输入到计算机的存储器中。

2)从第一条指令的地址起开始执行该程序,得到所需结果,结束运行。CPU的作用是协

调并控制计算机的各个部件执行程序,使其有条不紊地进行。因此它必须具有以下基

本功能:

a)取指令:当程序已在存储器中时,首先根据程序入口地址取出一条程序,为此要

发出指令地址及控制信号。

b)分析指令:即指令译码。是对当前取得的指令进行分析,指出它要求什么操作,

并产生相应的操作命令。

c)执行指令:根据分析指令时产生的操作命令形成相应的操作控制信号序列,通过

运算器,存储器及输入/输出设备的执行,实现每条指令的功能,其中包括对运算

结果的处理以及下条指令地址的形成。

将其功能进一步细化,可概括如下:

1)能对指令进行译码并执行规定的动作;

2)可以进行算术和逻辑运算;

3)能与存储器,外设交换数据;

4)提供整个系统所需要的控制;

尽管各种CPU的性能指标和结构细节各不相同,但它们所能完成的基本功能相同。由功能分析,可知任何一种CPU内部结构至少应包含下面这些部件:

1)算术逻辑运算部件(ALU),

2)累加器,

3)程序计数器,

4)指令寄存器,译码器,

5)时序和控制部件。

RISC 即精简指令集计算机(Reduced Instruction Set Computer)的缩写。它是一种八十年代出现的CPU,与一般的CPU 相比不仅只是简化了指令系统,而且是通过简化指令系统使计算机的结构更加简单合理,从而提高了运算速度。从实现的途径看,RISC_CPU与一般的CPU的不同处在于:它的时序控制信号形成部件是用硬布线逻辑实现的而不是采用微程序控制的方式。所谓硬布线逻辑也就是用触发器和逻辑门直接连线所构成的状态机和组合逻辑,故产生控制序列的速度比用微程序控制方式快得多,因为这样做省去了读取微指令的时间。RISC_CPU也包括上述这些部件,下面就详细介绍一个简化的用于教学目的的RISC_CPU的可综合VerilogHDL模型的设计和仿真过程。

17.3. RISC CPU结构

RISC_CPU是一个复杂的数字逻辑电路,但是它的基本部件的逻辑并不复杂。我们可把它分成八个基本部件来考虑:

1)时钟发生器

2)指令寄存器

3)累加器

4)算术逻辑运算单元

5)数据控制器

6)状态控制器

7)程序计数器

8)地址多路器

各部件的相互连接关系见图17.1。其中时钟发生器利用外来时钟信号进行分频生成一系列时钟信号,送往其他部件用作时钟信号。各部件之间的相互操作关系则由状态控制器来控制。各部件的具体结构和逻辑关系在下面的小节里逐一进行介绍。

图17.1 RISC-CPU中各部件的相互连接关系

17.3.1时钟发生器

图1. 时钟发生器

时钟发生器clkgen 利用外来时钟信号clk 来生成一系列时钟和控制信号:clk、fetch、alu_ena 送往CPU的其他部件。其中fetch是控制信号,clk 的八分频信号,当fetch高电平时,使clk能触发CPU控制器开始执行一条指令,同时fetch信号还将控制地址多路器输出指令地址和数据地址。clk 信号用作指令寄存器、累加器、状态控制器的时钟信号。alu_ena 则用于控制算术逻辑运算单元的操作。时钟发生器clkgen的波形见下图2所示:

clk

fetch

alu_ena

图2 时钟发生器clkgen的波形

其VerilogHDL 程序见下面的模块:

//----------------------------------------- clk_gen.v 的开始----------------------------

`timescale 1ns/1ns

module clk_gen (clk,reset,fetch,alu_ena);

input clk, reset;

output fetch,alu_ena;

wire clk,reset;

reg fetch,alu_ena;

reg[7:0] state;

parameter S1 = 8'b00000001,

S2 = 8'b00000010,

S3 = 8'b00000100,

S4 = 8'b00001000,

S5 = 8'b00010000,

S6 = 8'b00100000,

S7 = 8'b01000000,

S8 = 8'b10000000,

idle = 8'b00000000;

always @(posedge clk)

if(reset)

begin

fetch <= 0;

alu_ena <= 0;

state <= idle;

end

else

begin

case(state)

S1:

begin

alu_ena <= 1;

state <= S2;

end

S2:

begin

alu_ena <= 0;

state <= S3;

end

S3:

begin

fetch <= 1;

state <= S4;

end

S4:

begin

state <= S5;

end

S5: state <= S6;

S6: state <= S7;

S7: begin

fetch <= 0;

state <= S8;

end

S8: begin

state <= S1;

end

idle: state <= S1;

default: state <= idle;

endcase

end

endmodule

//----------------------------------------- clk_gen.v 的结束----------------------------

由于在时钟发生器的设计中采用了同步状态机的设计方法,不但使clk_gen模块的源程序可以被各种综合器综合,也使得由其生成的fetch、alu_ena 在同步性能上有明显的提高,为整个系统的性能提高打下了良好的基础。

17.3.2 指令寄存器

顾名思义,指令寄存器用于寄存指令。

指令寄存器的触发时钟是clk ,在clk 的正沿触发下,寄存器将数据总线送来的指令存入高8位或低8位寄存器中。但并不是每个clk 的上升沿都寄存数据总线的数据,因为数据总线上有时传输指令,有时传输数据。什么时候寄存,什么时候不寄存由CPU 状态控制器的load_ir 信号控制。load_ir 信号通过ena 口输入到指令寄存器。复位后,指令寄存器被清为零。

每条指令为2个字节,即16位。高3位是操作码,低13位是地址。(CPU 的地址总线为13位,寻址空间为8K 字节。)本设计的数据总线为8位,所以每条指令需取两次。先取高8位,后取低8位。而当前取的是高8位还是低8位,由变量state 记录。state 为零表示取的高8位,存入高8位寄存器,同时将变量state 置为1。下次再寄存时,由于state 为1,可知取的是低8位,存入低8位寄存器中。

其VerilogHDL 程序见下面的模块:

//-------------------------------------------------------------------- `timescale 1ns/1ns

module register(opc_iraddr,data,ena,clk,rst); output [15:0] opc_iraddr; input [7:0] data; input ena, clk, rst; reg [15:0] opc_iraddr; reg state;

always @(posedge clk)

begin if(rst) begin

opc_iraddr <= 16'b0000_0000_0000_0000;

state <=1'b0;

end else begin if(ena) //如果加载指令寄存器信号load_ir 到来, begin //分两个时钟每次8位加载指令寄存器 casex(state) //先高字节,后低字节

图3 指令寄存器模块

INSTRUCTION REGISTER

CLK RESET

1'b0: begin

opc_iraddr[15:8]<=data; state<=1;

end 1'b1: begin

opc_iraddr[7:0]<=data; state<=0; end

default: begin

opc_iraddr[15:0]<=16'bxxxxxxxxxxxxxxxx;

state<=1'bx;

end

endcase end else

state<=1'b0; end

end

endmodule

//--------------------------------------------------------------------

17.3.3.累加器

累加器用于存放当前的结果,它也是双目运算其中一个数据来源。复位后,累加器的值是零。当累加器通过ena 口收到来自CPU 状态控制器load_acc 信号时,在clk 时钟正跳沿时就收到来自于数据总线的数据。

其VerilogHDL 程序见下面的模块:

//--------------------------------------------------------------

module accum( accum, data, ena, clk, rst); output[7:0]accum; input[7:0]data; input ena, clk, rst; reg[7:0]accum;

always@(posedge clk) begin if(rst)

accum <= 8'b0000_0000; //Reset else

if(ena) //当CPU 状态控制器发出load_acc 信号 accum <= data; //Accumulate

end

图4 累加器模块 ACCUMULATOR CLK RST

endmodule

//--------------------------------------------------------------

17.3.4.算术运算器

图5 算术运算器模块

算术逻辑运算单元根据输入的8种不同操作码分别实现相应的加、与、异或、跳转等8种基本操作运算。利用这几种基本运算可以实现很多种其它运算以及逻辑判断等操作。

其VerilogHDL 程序见下面的模块:

//------------------------------------------------------------------------------

`timescale 1ns/1ns

module alu (alu_out, zero, data, accum, clk, alu_ena, opcode);

output [7:0]alu_out;

output zero;

input [7:0] data, accum;

input [2:0] opcode ;

input alu_ena;

input clk;

reg [7:0] alu_out;

parameter HLT = 3'b000,

SKZ = 3'b001,

ADD = 3'b010,

ANDD = 3'b011,

XORR = 3'b100,

LDA = 3'b101,

STO = 3'b110,

JMP = 3'b111;

assign zero = !accum;

always @(posedge clk)

if (alu_ena)

begin //操作码来自指令寄存器的输出opc_iaddr<15..0>的低3位

casex (opcode)

HLT: alu_out <= accum;

SKZ: alu_out <= accum;

ADD: alu_out <= data + accum;

ANDD: alu_out <= data & accum;

XORR: alu_out <= data ^ accum;

LDA: alu_out <= data;

STO: alu_out <= accum;

JMP: alu_out <= accum; default: alu_out <= 8'bxxxx_xxxx; endcase end endmodule

//------------------------------------------------------------------------------------

17.3.5.数据控制器

数据控制器的作用是控制累加器数据输出,由于数据总线是各种操作时传送数据的公共通道,不同的情况下传送不同的内容。有时要传输指令,有时要传送RAM 区或接口的数据。累加器的数据只有在需要往RAM 区或端口写时才允许输出,否则应呈现高阻态,以允许其它部件使用数据总线。 所以任何部件往总线上输出数据时,都需要一控制信号。而此控制信号的启、停,则由CPU 状态控制器输出的各信号控制决定。数据控制器何时输出累加器的数据则由状态控制器输出的控制信号datactl_ena 决定。

其VerilogHDL 程序见下面的模块:

//--------------------------------------------------------------------

module datactl (data, in, data_ena);

output [7:0] data; input [7:0] in; input data_ena;

assign data = (data_ena)? in : 8'bzzzz_zzzz;

endmodule

//--------------------------------------------------------------------

17.3.6.地址多路器

图6 数据控制器模块

DATACTL IN [7:0]

DATA_ENA

DATA[7:0] ALU_OUT[7:0]

DATACTL_ENA

DATA[7:0] 图7 地址多路器模块 ADR PC_ADDR[12 : 0] IR_ADDR[12 : 0] FETCH ADDR[12 : 0] PC_ADDR[12 : 0]

IR_ADDR[12 : 0]

FETCH ADDR[12 : 0]

地址多路器用于选择输出的地址是PC(程序计数)地址还是数据/端口地址。每个指令周期的前4个时钟周期用于从ROM中读取指令,输出的应是PC地址。后4个时钟周期用于对RAM或端口的读写,该地址由指令中给出。地址的选择输出信号由时钟信号的8分频信号fetch提供。

其VerilogHDL 程序见下面的模块:

//------------------------------------------------------------------------------

module adr(addr, fetch, ir_addr, pc_addr);

output [12:0] addr;

input [12:0] ir_addr, pc_addr;

input fetch;

assign addr = fetch? pc_addr : ir_addr;

endmodule

//------------------------------------------------------------------------------

17.3.7.程序计数器

程序计数器用于提供指令地址。以便读取指令,指令按地址顺序存放在存储器中。有两种途径可形成指令地址:其一是顺序执行的情况,其二是遇到要改变顺序执行程序的情况,例如执行JMP指令后,需要形成新的指令地址。下面就来详细说明PC地址是如何建立的。

图8 程序计数器模块

复位后,指令指针为零,即每次CPU重新启动将从ROM的零地址开始读取指令并执行。每条指令执行完需2个时钟,这时pc_addr已被增2,指向下一条指令。(因为每条指令占两个字节。)如果正执行的指令是跳转语句,这时CPU状态控制器将会输出load_pc信号,通过load口进入程序计数器。程序计数器(pc_addr)将装入目标地址(ir_addr),而不是增2。

其VerilogHDL 程序见下面的模块:

//------------------------------------------------------------------------------ module counter (clock, rst, ir_addr, load, pc_addr);

output [12:0] pc_addr;

input [12:0] ir_addr;

input load, clock, rst;

reg [12:0] pc_addr;

always @( posedge clock or posedge rst )

begin

if(rst)

pc_addr <= 13'b0_0000_0000_0000;

else

if(load)

pc_addr <= ir_addr;

else

pc_addr <= pc_addr + 1;

end

endmodule

//------------------------------------------------------------------------------ 17.3.8.状态控制器

图9 状态控制器模块

状态控制器由两部分组成:

状态机(上图中的MACHINE部分)

状态控制器(上图中的MACHINECTL部分)

状态机控制器接受复位信号RST,当RST有效时通过信号ena使其为0,输入到状态机中停止状态机的工作。

状态控制器的VerilogHDL程序见下面模块:

//------------------------------------------

`timescale 1ns/1ns

module machinectl( clk, rst, fetch, ena);

input clk, rst,fetch;

output ena;

reg ena;

reg state;

always @(posedge clk )

begin

if(rst)

begin

ena<=0;

end

else

if (fetch)

begin

ena <= 1;

end

end

endmodule

//------------------------------------------

状态机是CPU的控制核心,用于产生一系列的控制信号,启动或停止某些部件。CPU何时进行读指令读写I/O端口,RAM区等操作,都是由状态机来控制的。状态机的当前状态,由变量state记录,state的值就是当前这个指令周期中已经过的时钟数(从零计起)。

指令周期是由8个时钟周期组成,每个时钟周期都要完成固定的操作。

1)第0个时钟,因为CPU状态控制器的输出:rd和load_ir为高电平,其余均为低电平。指令寄

存器寄存由ROM送来的高8位指令代码。

2)第1个时钟,与上一时钟相比只是inc_pc从0变为1故PC增1,ROM送来低8位指令代码,

指令寄存器寄存该8位代码。

3)第2个时钟,空操作。

4)第3个时钟,PC增1,指向下一条指令。若操作符为HLT,则输出信号HLT为高。如果操作

符不为HLT,除了PC增1外(指向下一条指令),其它各控制线输出为零。

5)第4个时钟,若操作符为AND、ADD、XOR或LDA,读相应地址的数据;若为JMP,将目的

地址送给程序计数器;若为STO,输出累加器数据。

6)第5个时钟,若操作符为ANDD、ADD或XORR,算术运算器就进行相应的运算;若为LDA,

就把数据通过算术运算器送给累加器;若为SKZ,先判断累加器的值是否为0,如果为0,PC 就增1,否则保持原值;若为JMP,锁存目的地址;若为STO,将数据写入指定地址。

7)第6个时钟,空操作。

8)第7个时钟,若操作符为SKZ且累加器值为0,则PC值再增1,跳过一条指令,否则PC无

变化。

状态机的VerilogHDL 程序见下面模块:

//------------------------------------------------------------------------------------

`timescale 1ns/1ns

module machine ( inc_pc, load_acc, load_pc, rd,wr, load_ir,

datactl_ena, halt, clk, zero, ena, opcode );

output inc_pc, load_acc, load_pc, rd, wr, load_ir;

output datactl_ena, halt;

input clk, zero, ena;

input [2:0] opcode;

reg inc_pc, load_acc, load_pc, rd, wr, load_ir;

reg datactl_ena, halt;

reg [2:0] state;

parameter HLT = 3 'b000,

SKZ = 3 'b001,

ADD = 3 'b010,

ANDD = 3 'b011,

XORR = 3 'b100,

LDA = 3 'b101,

STO = 3 'b110,

JMP = 3 'b111;

always @( posedge clk )

begin

if ( !ena ) //接收到复位信号RST,进行复位操作

begin

state<=3'b000;

{inc_pc,load_acc,load_pc,rd}<=4'b0000;

{wr,load_ir,datactl_ena,halt}<=4'b0000;

end

else

ctl_cycle;

end

//-----------------begin of task ctl_cycle---------

task ctl_cycle;

begin

casex(state)

3'b000: //load high 8bits in struction

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b0001;

{wr,load_ir,datactl_ena,halt} <= 4'b0100;

state <= 3'b001;

end

3'b001: //pc increased by one then load low 8bits instruction begin

{inc_pc,load_acc,load_pc,rd}<= 4'b1001;

{wr,load_ir,datactl_ena,halt} <= 4'b0100;

state <= 3'b010;

end

3'b010: //idle

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b0000;

{wr,load_ir,datactl_ena,halt}<= 4'b0000;

state <= 3'b011;

end

3'b011: //next instruction address setup 分析指令从这里开始

begin

if(opcode==HLT) //指令为暂停HLT

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b1000;

{wr,load_ir,datactl_ena,halt} <= 4'b0001;

end

else

begin

{inc_pc,load_acc,load_pc,rd}<=4'b1000;

{wr,load_ir,datactl_ena,halt} <=4'b0000;

end

state<=3'b100;

end

3'b100: //fetch oprand

begin

if(opcode==JMP)

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b0010;

{wr,load_ir,datactl_ena,halt} <= 4'b0000;

end

else

if( opcode==ADD || opcode ==ANDD ||

opcode==XORR || opcode==LDA)

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b0001;

{wr,load_ir,datactl_ena,halt} <= 4'b0000;

end

else

if(opcode==STO)

begin

{inc_pc,load_acc,load_pc,rd}<=4'b0000;

{wr,load_ir,datactl_ena,halt} <=4'b0010;

end

else

begin

{inc_pc,load_acc,load_pc,rd}<=4'b0000;

{wr,load_ir,datactl_ena,halt}<=4'b0000;

end

state<=3'b101;

end

3'b101: //operation

begin

if ( opcode ==ADD||opcode==ANDD||

opcode==XORR||opcode==LDA )

begin //过一个时钟后与累加器的内容进行运算

{inc_pc,load_acc,load_pc,rd}<= 4'b0101;

{wr,load_ir,datactl_ena,halt}<= 4'b0000;

end

else

if( opcode ==SKZ && zero==1)

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b1000;

{wr,load_ir,datactl_ena,halt}<= 4'b0000;

end

else

if(opcode==JMP)

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b1010;

{wr,load_ir,datactl_ena,halt} <= 4'b0000;

end

else

if(opcode == STO)

begin

//过一个时钟后把wr变1就可写到RAM中

{inc_pc,load_acc,load_pc,rd}<= 4'b0000;

{wr,load_ir,datactl_ena,halt}<= 4'b1010;

end

else

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b0000;

{wr,load_ir,datactl_ena,halt}<= 4'b0000;

end

state <= 3'b110;

end

3'b110: //idle

begin

if ( opcode == STO )

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b0000;

{wr,load_ir,datactl_ena,halt}<= 4'b0010;

end

else

if ( opcode ==ADD||opcode ==ANDD||

opcode==XORR||opcode==LDA)

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b0001;

{wr,load_ir,datactl_ena,halt}<= 4'b0000;

end

else

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b0000;

{wr,load_ir,datactl_ena,halt}<= 4'b0000;

end

state<=3'b111;

end

3'b111: //

begin

if( opcode==SKZ && zero==1 )

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b1000;

{wr,load_ir,datactl_ena,halt}<= 4'b0000;

end

else

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b0000;

{wr,load_ir,datactl_ena,halt}<= 4'b0000;

end

state<=3'b000;

end

default:

begin

{inc_pc,load_acc,load_pc,rd}<= 4'b0000;

{wr,load_ir,datactl_ena,halt} <= 4'b0000;

state <=3'b000;

end

endcase

end

endtask

//-----------------end of task ctl_cycle---------

endmodule

//------------------------------------------------------------------------------

状态机和状态机控制器组成了状态控制器。它们之间的连接关系很简单。见本小节的图9。

17.3.9.外围模块

为了对RISC_CPU进行测试,需要有存储测试程序的ROM和装载数据的RAM、地址译码器。下面来简单介绍一下:

1)地址译码器:

module addr_decode( addr, rom_sel, ram_sel);

output rom_sel, ram_sel;

input [12:0] addr;

reg rom_sel, ram_sel;

always @( addr )

begin

casex(addr)

13'b1_1xxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b01;

13'b0_xxxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b10;

13'b1_0xxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b10;

default:{rom_sel,ram_sel}<=2'b00;

endcase

end

endmodule

地址译码器用于产生选通信号,选通ROM或RAM。

1FFFH---1800H RAM

17FFH---0000H ROM

2)RAM和ROM

module ram( data, addr, ena, read, write );

inout [7:0] data;

input [9:0] addr;

input ena;

input read, write;

reg [7:0] ram [10'h3ff:0];

assign data = ( read && ena )? ram[addr] : 8'hzz;

always @(posedge write)

begin

ram[addr]<= data;

end

endmodule

module rom( data, addr, read, ena );

output [7:0] data;

input [12:0] addr;

input read, ena;

reg [7:0] memory [13'h1fff:0];

wire [7:0] data;

assign data= ( read && ena )? memory[addr] : 8'bzzzzzzzz;

endmodule

ROM用于装载测试程序,可读不可写。RAM用于存放数据,可读可写。

17.4. RISC_CPU 操作和时序

一个微机系统为了完成自身的功能,需要CPU执行许多操作。以下是RISC_CPU的主要操作:1)系统的复位和启动操作

2)总线读操作

3)总线写操作

下面详细介绍一下每个操作:

17.4.1.系统的复位和启动操作

RISC_CPU的复位和启动操作是通过reset引脚的信号触发执行的。当reset信号一进入高电平,RISC_CPU就会结束现行操作,并且只要reset停留在高电平状态,CPU就维持在复位状态。在复位状态,CPU各内部寄存器都被设为初值,全部为零。数据总线为高阻态,地址总线为0000H,所有控制信号均为无效状态。reset回到低电平后,接着到来的第一个fetch上升沿将启动RISC_CPU 开始工作,从ROM的000处开始读取指令并执行相应操作。波形图见图10。虚线标志处为RISC_CPU启动工作的时刻。

图10. RISC_CPU的复位和启动操作波形

17.4.2.总线读操作

每个指令周期的前0--3个时钟周期用于读指令,在状态控制器一节中已详细讲述,这里就不再重复。第3.5个周期处,存储器或端口地址就输出到地址总线上,第4--6个时钟周期,读信号rd 有效,数据送到数据总线上,以备累加器锁存,或参与算术、逻辑运算。第7个时钟周期,读信号无效,第7.5个周期,地址总线输出PC地址,为下一个指令做好准备。

17.4.3写总线操作

每个指令周期的第3.5个时钟周期处,写的地址就建立了,第4个时钟周期输出数据,第5个时钟周期输出写信号。至第6个时钟结束,数据无效,第7.5时钟地址输出为PC 地址,为下一个指令周期做好准备。

17.5.RISC_CPU 寻址方式和指令系统

RISC_CPU 的指令格式一律为:

它的指令系统仅由8条指令组成。

1)HLT 停机操作。该操作将空一个指令周期,即8个时钟周期。

2)SKZ 为零跳过下一条语句。该操作先判断当前alu 中的结果是否为零,若是零就跳过下一条语句,否则继续执行。

3)ADD 相加。该操作将累加器中的值与地址所指的存储器或端口的数据相加,结果仍送回累加器中。

4)AND 相与。该操作将累加器的值与地址所指的存储器或端口的数据相与,结果仍送回累加器中。 5)XOR 异或。该操作将累加器的值与指令中给出地址的数据异或,结果仍送回累加器中。

图11. CPU 从存储器或端口读取数据的时序

图12. CPU 对存储器或端口写数据的时序 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

指令 地址

6)LDA 读数据。该操作将指令中给出地址的数据放入累加器。

7)STO 写数据。该操作将累加器的数据放入指令中给出的地址。

8)JMP 无条件跳转语句。该操作将跳转至指令给出的目的地址,继续执行。

RISC_CPU是8位微处理器,一律采用直接寻址方式,即数据总是放在存储器中,寻址单元的地址由指令直接给出。这是最简单的寻址方式。

17.6. RISC_CPU模块的调试

17.6.1. RISC_CPU模块的前仿真

为了对所设计的RISC_CPU模型进行验证,需要把RISC_CPU包装在一个模块下,这样其内部连线就隐蔽起来,从系统的角度看就显得简洁,见图13,还需要建立一些必要的外围器件模型,例如储存程序用的ROM模型、储存数据用的RAM和地址译码器等。这些模型都可以用VerilogHDL描述,由于不需要综合成具体的电路,只要保证功能和接口信号正确就能用于仿真。也就是说,用虚拟器件来代替真实的器件对所设计的RISC_CPU模型进行验证,检查各条指令是否执行正确,与外围电路的数据交换是否正常。这种模块是很容易编写的,上面17.3.9节中的ROM和RAM模块就是简化的虚拟器件的例子,可在下面的仿真中来代替真实的器件,用于验证RISC_CPU模型是否能正确地运行装入ROM和RAM的程序。在RISC_CPU的电路图上加上这些外围电路把有关的电路接通,见图13;也可以用VerilogHDL模块调用的方法把这些外围电路的模块连接上,这跟用真实的电路器件调试情况很类似,

图13 RISC_CPU和它的外围电路

下面介绍的是在modelsim 6.1 下进行调试的仿真测试程序cputop.v。可用于对以上所设计的RISCCPU进行仿真测试,下面是前仿真的测试程序cputop.v。它的作用是按模块的要求执行仿真,并显示仿真的结果,测试模块cputop.v中的$display和$monitor等系统调用能在计算机的显示屏幕上显示部分测试结果,可以同时用波型观察器观察有关信号的波形。

//------------------------------------------- cputop.v 文件的开始-----------------------------------------------------

/**************************************************************************************

*** 模块功能:cputop 模块通过运行三个不同的汇编程序对cpu模块进行完整的逻辑测试

*** 和验证。仿真程序在加栽后会自动执行,运行的结果在人机交互的显示

*** 屏上显示。本模块是不可综合的行为模块,用于对CPU模块进行RTL级和

*** 门级逻辑功能的全面仿真验证。本测试模块也可以为布线后仿真,只需要将

*** 代码的第一句`include "cpu.v" 改写为`include "cpu.vo" 即可。

**************************************************************************************/

//**********************************************************************

`include "cpu.v" // 若改为`include "cpu.vo" 便可做布线后仿真

`include "ram.v"

`include "rom.v"

`include "addr_decode.v"

//*****************************

`timescale 1ns / 1ns

`define PERIOD 100 // matches clk_gen.v

module cputop;

reg reset_req,clock;

integer test;

reg [(3*8):0] mnemonic; //array that holds 3 8-bit ASCII characters

reg [12:0] PC_addr,IR_addr;

wire [7:0] data;

wire [12:0] addr;

wire rd,wr,halt,ram_sel,rom_sel;

wire [2:0] opcode; //为布线后仿真做的专门添加的CPU内部信号线

wire fetch; //为布线后仿真做的专门添加的CPU内部信号线

wire [12:0] ir_addr, pc_addr; //为布线后仿真做的专门添加的CPU内部信号线

//------------------------ cpu 模块与地址译码器和ROM、RAM的连接部分-------------------------------------- cpu t_cpu (.clk(clock),.reset(reset_req),.halt(halt),.rd(rd),

.wr(wr),.addr(addr),.data(data),.opcode(opcode),.fetch(fetch),

.ir_addr(ir_addr),.pc_addr(pc_addr));

ram t_ram (.addr(addr[9:0]),.read(rd),.write(wr),.ena(ram_sel),.data(data));

rom t_rom (.addr(addr),.read(rd),.ena(rom_sel),.data(data));

addr_decode t_addr_decode (.addr(addr),.ram_sel(ram_sel),.rom_sel(rom_sel));

//--------------------cpu 模块与地址译码器和ROM、RAM的连接部分结束---------------------------------- initial

begin

clock=1;

//display time in nanoseconds

$timeformat ( -9, 1, " ns", 12);

display_debug_message;

sys_reset;

test1;

$stop;

test2;

$stop;

test3;

$finish; // simulation is finished here.

end

task display_debug_message;

begin

$display("\n**************************************************");

$display("* THE FOLLOWING DEBUG TASK ARE A V AILABLE: *");

$display("* \"test1; \" to load the 1st diagnostic progran. *");

现代设计方法

考试科目:《现代设计方法》 (总分100分) 时间:90分钟 __________学习中心(教学点) 批次: 层次: 专业: 学号: 身份证号: 姓名: 得分: 一、单项选择题(每小题1.5分,共27分) 1.试判别矩阵1111???? ? ?,它是( ) A 、单位矩阵 B 、正定矩阵 C 、负定矩阵 D 、不定矩阵 2.约束极值点的库恩——塔克条件为:-?=?=∑F X g X i i q i ()()* * λ1 ,当约束函数是g i (X)≤0和 λi >0时,则q 应为( ) A 、等式约束数目 B 、不等式约束数目 C 、起作用的等式约束数目 D 、起作用的不等式约束数目 3.在图示极小化的约束优化问题中,最优点为( ) A 、A B 、B C 、C D 、D 4.下列优化方法中,不需计算迭代点一阶导数和二阶导数的是( ) A 、可行方向法 B 、复合形法 C 、DFP 法 D 、BFGS 法 5.内点罚函数Φ(X,r (k))=F(X)-r (k) 1 01g X g X u u u m () ,(())≤=∑,在其无约束极值点X ·(r (k))逼近原 目标函数的约束最优点时,惩罚项中( ) A 、r (k)趋向零, 11 g X u u m ()=∑ 不趋向零 B 、r (k) 趋向零,11g X u u m ()=∑ 趋向零 C 、r (k)不趋向零, 11 g X u u m ()=∑ 趋向零 D 、④r (k) 不趋向零,11g X u u m ()=∑ 不趋向零 6.0.618法在迭代运算的过程中,区间的缩短率是( )

A 、不变的 B 、任意变化的 C 、逐渐变大 D 、逐渐变小 7.对于目标函数F(X)受约束于g u (X)≥0(u=1,2,…,m)的最优化设计问题,外点法惩罚函数的表 达式是( ) A 、Φ(X,M (k) )=F(X)+M (k) {max[(),]},() g X M u u m k 01 2=∑为递增正数序列 B 、Φ(X,M (k))=F(X)+M (k){max[(),]},() g X M u u m k 01 2 =∑为递减正数序列 C 、Φ(X,M (k))=F(X)+M (k) {min[(),]},()g x M u u m k 01 2 =∑为递增正数序列 D 、Φ(X,M (k))=F(X)+M (k){min[(),]},() g x M u u m k 01 2 =∑为递减正数序列 8.标准正态分布的均值和标准离差为( ) A 、μ=1,σ=0 B 、μ=1,σ=1 C 、μ=0,σ=0 D 、μ=0,σ=1 9.在约束优化方法中,容易处理含等式约束条件的优化设计方法是( ) A 、可行方向法 B 、复合形法 C 、内点罚函数法 D 、外点罚函数法 10.若组成系统的诸零件的失效相互独立,但只有某一个零件处于工作状态,当它出现故障后, 其它处于待命状态的零件立即转入工作状态。这种系统称为( ) A 、串联系统 B 、工作冗余系统 C 、非工作冗余系统 D 、r/n 表决系统 11.对于二次函数F(X)=1 2 X T AX+b T X+c,若X *为其驻点,则▽F(X *)为( ) A 、零 B 、无穷大 C 、正值 D 、负值 12.平面应力问题中(Z 轴与该平面垂直),所有非零应力分量均位于( ) A 、XY 平面内 B 、XZ 平面内 C 、YZ 平面内 D 、XYZ 空间内 13当选线长度l ,弹性模量E 及密度ρ为三个基本量时,用量纲分析法求出包含振幅A 在内的 相似判据为(E 的量纲为( )[ML -1T -2] A 、A=l E 1 1212 -ρ B 、A=l E -- 1 1212 ρ C 、A=l E 100ρ D 、A l E =-11 12ρ 14.平面三角形单元内任意点的位移可表示为三个节点位移的( ) A 、算术平均值 B 、代数和车员 C 、矢量和 D 、线性组合 15.已知F(X)=(x 1-2)2+x 22,则在点X (0)=00???? ??处的梯度为( ) A 、?=?????? F X ()()000 B 、?=-?????? F X ()() 020

计算机系统设计报告书模板

课程设计报告目录

一、课程设计概述: 本次数据结构课程设计共完成三个题:一元稀疏矩阵多项式计算器、稀疏矩阵的操作、Josephu问题。 使用语言:C 编译环境:vc6.0 二、课程设计题目一 成绩分析文档资料 [问题描述] 录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。 [需求分析] 1.通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat 2.对文件input.dat中的数据进行处理,要求具有如下功能: a.按各门课程成绩排序,并生成相应的文件输出 b.计算每人的平均成绩,按平均成绩排序,并生成文件 c.求出各门课程的平均成绩、最高分、最低分、不及格人数、

60-69分人数、70-79分人数、80-89分人数、90分以上人数 d.根据姓名或学号查询某人的各门课成绩,重名也要能处理 3.界面美观 [概要设计] -=ADT=- { Status CreateList(DataRecond* DR, int n); //创建成绩表 Status SortScore(DataRecond* DR,int n); //按各科成绩排序并存于文件 Status Partition(KeyWord* RL, int low, int high); //快速排序的第一趟 Status QSort(KeyWord* RL, int low, int high); //快速排序 Status QuickSort(KeyWord* RL,int n); //快速排序

Status EveryAvageScore(DataRecond* DR, int n); //计算每科平均成绩 Status CaluAverage(int *temp, int n); //计算平均成绩 Status ScoreProcess(DataRecond* DR); //成绩处理 Status MaxScore(int *temp, int n); //求最大分数 Status MinScore(int *temp, int n); //求最小分数 Status ScoreSegment(DataRecond* DR); //求分数段 Status Process(int *temp,int n); //主处理函数 Status NameQuery(DataRecond* DR); //按名字查找

散热器简化设计计算方法

壁挂散热器价格简化设计计算方法 一. 金旗舰散热量Q的计算 1.基本计算公式: Q=S×W×K×4.1868÷3600 (Kw) 式中: ①.Q —散热器散热量(KW)=发动机水套发热量×(1.1~1.3) ②.S —散热器散热面积(㎡)=散热器冷却管的表面积+2×散热带 的表面积。 ③.W —散热器进出水、进出风的算术或对数平均液气温差(℃), 设计标准工况分为:60℃、55℃、45℃、35℃、25℃。它们分别对应散热器允许适用的不同环境大气压和自然温度工况条件。④.K —散热系数(Kcal/m.h.℃)。它对应关联为:散热器冷却管、散热带、钎焊材料选用的热传导性能质量的优劣;冷却管与散热带钎焊接合率的质量水平的优劣;产品内外表面焊接氧化质量水平的优劣;冷却管内水阻值(通水断面积与水流量的对应关联—水与金属的摩擦流体力学),散热带风阻值(散热带波数、波距、百叶窗开窗的翼宽、角度的对应关联—空气与金属的摩擦流体阻力学)质量水平的优劣。总体讲:K值是代表散热器综合质量水平的关键参数,它包容了散热器从经营管理理念、设计、工装设备、物料的选用、采购供应、制造管理控制全过程的综合质量水平。根据多年的经验以及

数据收集,铜软钎焊散热器的K值为:65~95 Kcal/m2.h.℃;改良的簿型双波浪带铜软钎焊散热器的K值为:85~105 Kcal/m2.h.℃;铝硬钎焊带电子风扇系统的散热器的K值为:120~150 Kcal/m2.h.℃。充分认识了解掌握利用K值的内涵,可科学合理的控制降低散热器的设计和制造成本。准确的K值需作散热器风洞试验来获取。 ⑤.4.1868和3600 —均为热能系数单位与热功率单位系数换算值⑥.发动机水套散热量=发动机台架性能检测获取或根据发动机升功 率、气门结构×经验单位系数值来获取。 二、计算程序及方法 1. 散热面积S(㎡) S=冷却管表面积F1+2×散热带表面积F2 F1={ [2×(冷却管宽-冷却管两端园孤半径)]+2π冷却管两端园孤半径}×冷却管有效长度×冷却管根数×10 F2=散热带一个波峰的展开长度×一根散热带的波峰数×散热带的 宽度×散热带的根数×2×10 2. 算术平均液气温差W(℃) W=[(进水温度+出水温度)÷2]-[(进风温度+出风温度)÷2] 常用标准工况散热器W值取60℃,55℃,增强型取45℃,35℃。这要根据散热器在什么工况环境使用条件下来选取。 3. 散热系数K

精简指令系统技术

精简指令系统的优化技术 摘要:计算机指令系统是计算机发展中一个非常重要的研究课题,是计算机设计中的重要内容之一指令系统的发展是伴随计算机硬件和件的发展而演变的。 RISC ( 精简指令系统)是继 CISC (复杂指令系统)之后产生的指令系统。为了提高处理器的执行和运算速度,精简指令系统采用了各种优化技术。对这些技术进行分析和研究,对于精简指令系统的进一步发展有着重要意义,在现代高档的计算机设计中也是一个相当重要的环节。 关键词: CISC; RISC; 时钟周期; 优化技术; CPU 0.引言 计算机各种各样的工作都是通过计算机程序来实现的,程序是由一系列有序的指令构成的,指令是执行某种基本操作 ( 如加、减、移动等) 的命令,它由一组二进制代码表示,指示计算机硬件完成指定的基本操作。 指令系统是指一台计算机中所有指令的集合,它是表征一台计算机性能的重要因素,其格式与功能不仅直接影响到机器的硬件结构,也直接影响到系统软件和机器的适用范围。也就是说指令系统既为软件设计者提供最低层的程序设计语言,也为硬件设计者提供最基本的设计依据,因此说指令系统是软件和硬件的主要界面。 1.复杂指令系统 复杂指令系统 ( CISC) 是通过连续的增加指令数量来实现机器的向上兼容,这样能够有效地缩短新指令的微代码设计时间。由于微程序指令的格式与高阶语言相匹配,指令串是按顺序执行的,因而编译器并不一定要重新编写。复杂指令集的设计和硬件产品的设计更加复杂,完成指令需要不同的时钟周期来完成,执行较慢的指令时将影响整台机器的执行效率。这样主要靠提高时钟频率和指令执行的并行性来提高运行速度。复杂指令系统中指令差异性的增大使得设计流水线CPU 难度增加,硬件变得十分复杂。这一方面限制了内部高速缓存的扩大,另一方面使得芯片运行频率难以提高,由于频率过高容易导致芯片工作的不稳定,因此使得这方面的进展受阻。 2.精简指令系统 由于以上原因,复杂指令系统在发展过程中造成计算机发展的诸多疑难问题,使计算机技术研制周期加长,降低了计算机运行速度,软件在设计、调试、维护等方面也遇到了无法克服的困难。通过测试表明,复杂指令系统中有相当数量的指令其使用频率很低,而常用的指令却是一些简单的基本指令。因此,在20 世纪80 年代精简指令系统 ( RISC) 产生了,这种指令系统精简了指令,采用统一的指令格式,指 令的种类和寻址方式都比复杂指令系统要少,因而相对于复杂指令系统来说,能够提高处理器的速度。RISC 绝不是简单地返回到过去,而是在硬件高度发展的基础上使指令系统更趋合理,更为有效。它是?返朴归真# 中的再次升华,其基本思想是只留下最常用的仅占20% 的简单指令,优化硬件设计,通过提高时钟频率来提高运行速度。它尽量使用一个时钟周期来执行一条指令,采用指令流水线结构,不用或少用微程序控制逻辑,使计

计算机系统组成教学设计

《计算机系统组成》教学设计 一、教学对象分析 本校初一级学生,基础比较薄弱,针对其好奇好动的特点。在教学过程当中,多设计一些教学过程让学生动手参与,提高学生的兴趣,增加感性认识。在讲解过程中注意多联系生活及身边的事物,有利于学生更好地掌握和理解教学内容。 学习本课之前,许多学生对计算机的操作有一定了解,但学生对于计算机系统的构成,各部件的功能,工作原理还没有形成具体概念。因此必要进一步学习《计算机系统的组成》 二、教学内容分析 本章内容是信息技术的基础知识。涉及到计算机的系统构成的术语和概念比较多,应用范围广泛,在教学中多运用实物介绍比较和基础练习,引导学生观察,分析,比较,归纳,从而达到教学目标。 教学重点:计算机是由特定功能的各种设备组合在一起的一个整体。 教学难点:计算机硬件和软件的概念。 三、教学目标 基本目标 (1)了解计算机组成各部分的名称和作用 (2)知道什么是计算机软件,了解计算机软件的作用。 (3)了解计算机处理信息的过程。 四、教学方法 ⒈本课的教学内容涉及较多名称术语,在教学中可以通过演示教学辅助软件,展示计算机硬件实物,讲解投影等多种形式增加学生对教学内容的感性认识。 ⒉学生通过填写、拼图比较,思考回答,讨论表述,理解巩固相关知识。 五、教学过程设计 新课导入: 同学们,计算机这个词对于我们来说已经不再陌生了,它已经渗透到我们生活中的每个环节中去了。那么你们知道哪些有关计算机的名词呢?(根据学生的回答,教师作出相应的小结)。同学们,你们所说的这些名词有的是计算机的硬件,有的是计算机的软件,还有一些则是计算机的应用,今天我们就要学习计算机系统的组成,计算机有许多部件,如显示器、主机、键盘等,这些部件在处理信息的过程中各起什么作用呢?一个完整的计算机系统又是由哪些部分组成?这就是今天我们要学习的内容。 (一)计算机的硬件系统(屏幕广播) ⒈硬件:指计算机实际设备的总称 ⒉硬件部分按其功能划分为:控制器、运算器、存储器(内外)、输入设备、输出设备。 ⒊展示一台打开的计算机,用实物介绍硬件的组成与作用。 ⒋硬件系统的组成结构图和功能作用。 ⒌网络传送“硬件分类填空练习课件”,让学生独自或者讨论完成练习。选一到两个学生上讲

柱下条形基础简化计算及设计步骤

柱下条形基础简化计算及其设计步骤 柱下条形基础简化计算及其设计步骤 提要:本文对常用的静力平衡法和倒梁法的近似计算及其各自的适用范围和相互关系作了一些叙述,提出了自己的一些看法和具体步骤,并附有柱下条基构造表,目的是使基础设计工作条理清楚,方法得当,既简化好用,又比较经济合理. 一.适用范围: 柱下条形基础通常在下列情况下采用: 1.多层与高层房屋无地下室或有地下室但无防水要求,当上部结构传下的荷载较大,地基的承载力较低,采用各种形式的单独基础不能满足设计要求时. 2.当采用单独基础所需底面积由于邻近建筑物或构筑物基础的限制而无法扩展时. 3.地基土质变化较大或局部有不均匀的软弱地基,需作地基处理时. 4.各柱荷载差异过大,采用单独基础会引起基础之间较大的相对沉降差异时. 5.需要增加基础的刚度以减少地基变形,防止过大的不均匀沉降量时. 其简化计算有静力平衡法和倒梁法两种,它们是一种不考虑地基与上部结构变形协调条件的实用简化法,也即当柱荷载比较均匀,柱距相差不大,基础与地基相对刚度较大,以致可忽略柱下不均匀沉降时,假定基底反力按线性分布,仅进行满足静力平衡条件下梁的计算. 二.计算图式 1.上部结构荷载和基础剖面图 2.静力平衡法计算图式 3.倒梁法计算图式 三.设计前的准备工作 在采用上述两种方法计算基础梁之前,需要做好如下工作: 1.确定合理的基础长度 为使计算方便,并使各柱下弯矩和跨中弯矩趋于平衡,以利于节约配筋,一般将偏心地基净反力(即梯形分布净反力)化成均布,需要求得一个合理的基础长度.当然也可直接根据梯形分布的净反力和任意定的基础长度计算基础.基础的纵向地基净反力为: 式中Pjmax,Pjmin—基础纵向边缘处最大和最小净反力设计值. ∑Fi—作用于基础上各竖向荷载合力设计值(不包括基础自重和其上覆土重,但包括其它局部均布qi). ∑M—作用于基础上各竖向荷载(Fi ,qi),纵向弯矩(Mi)对基础底板纵向中点产生的总弯矩设计值. L—基础长度,如上述. B—基础底板宽度.先假定,后按第2条文验算. 当Pjmax与Pjmin相差不大于10%,可近似地取其平均值作为均布地基反力,直接定出基础悬臂长度a1=a2(按构造要求为第一跨距的1/4~1/3),很方便就确定了合理的基础长度L;如果Pjmax与Pjmin相差较大时,常通过调整一端悬臂长度a1或a2,使合力∑Fi的重心恰为基础的形心(工程中允许两者误差不大于基础长度的3%),从而使∑M为零,反力从梯形分布变为均布,求a1和a2的过程如下: 先求合力的作用点距左起第一柱的距离: 式中,∑Mi—作用于基础上各纵向弯矩设计值之和. Xi—各竖向荷载Fi距F1的距离. 当x≥a/2时,基础长度L=2(X+a1), a2=L-a-a1. 当x按上述确定a1和a2后,使偏心地基净反力变为均布地基净反力,其值为: 式中, pj—均布地基净反力设计值. 由此也可得到一个合理的基础长度L. 2.确定基础底板宽度b. 由确定的基础长度L和假定的底板宽度b,根据地基承载力设计值f,一般可按两个方向分别进行如下验算,从而确定基础底板宽度b.

计算机系统教学设计

《计算机系统》教学设计 一、学习者分析 初一的学生,具有活泼好动的特点,怀着对初中生活的憧憬来到一个新的环境里,对每样事物都充满着好奇,都想去探个究竟。随着社会的进步,计算机的使用范围越来越广,计算机的硬件发展越来越迅速,计算机在家庭中的普及程度越来越高,很多学生的家中都有了计算机,但对计算机的认识可能仅仅局限于上网与打游戏,对于计算机系统也只能从自己可以看到的来理解,认识比较片面,通过学习本节内容,系统地认识计算机系统。 二、教材内容分析 1、本节的主要内容及在本章中的地位 本节的主机内容有计算机系统的组成、硬件系统、软件系统。要求学生从信息处理的角度了解计算机系统的基本组成,它是重要的基础知识。 本节课的内容涉及很多专业术语,这些术语都是比较难理解和掌握的,大多数学生学习起来有一定的难度,教师在教学中可能通过学习活动,引导学生观察、分析、比较、归纳和总结,使之逐步掌握《计算机系统》的知识。 2、教学重点、难点: 重点:计算机系统的组成及结构,各主要部件的作用,存储器的单位及其换算。 难点:计算机系统的组成及结构。 3、课时安排:1课时 三、教学目标 1.知识与技能 (1)了解计算机硬件和软件的概念及其关系; (2)了解计算机硬件的各个组成部份及其作用; (3)知道存储器的分类、内存RAM与ROM的区别及其作用。 (4)了解软件的分类,知道常见的软件的类别。 2.过程与方法 (1)通过让学生观察计算机的结构和主要部件,了解计算机结构及各部分的作用; (2)通过学习活动让学生体验计算机软件的分类及其作用,并归纳计算机系统的组成结构图。 3.情感态度价值观 在学习过程中,激发学生学习计算机基础知识的兴趣和积极探究的精神。 四、教学理念和方法 本课的教学内容涉及较多专业述语、名词和概念,其中很多与学生日常接触到的内容不一致。根据任务驱动教学方法和建构主义理论,设计教学情境和活动,通过展示计算机实物和观察活动,引导学生根据这些体验,认识所学内容,掌握专业词汇,理解概念,自主归纳总结出系统结构图,同时培养学生自主探究、协作学习的能力,完成教学任务。 五、教学过程设计 1.教学内容的组织与呈现方式 先用简短的语言引入新课,通过实物展示和学生的讨论活动介绍计算机的硬

操作系统简单文件系统设计及实现

简单文件系统的设计及实现 一、实验目的: 1、用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程。从而对各种文件操作命令的实质内容和执行过程有比较深入的了解 2、要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。 二、实验内容: 1、设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。 2、程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED)。另外,为打开文件设置了运行文件目录(AFD)。 3、为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作 4、算法与框图 ?因系统小,文件目录的检索使用了简单的线性搜索。 ?文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。 ?程序中使用的主要设计结构如下:主文件目录和用户文件目录( MFD、UFD); 打开文件目录( AFD)(即运行文件目录) 文件系统算法的流程图如下

三、工具/准备工作: 在开始本实验之前,请回顾教科书的相关内容。并做以下准备: 1) 一台运行Windows 2000 Professional或Windows 2000 Server的操作系统的计算机。 2) 计算机中需安装Visual C++ 6.0专业版或企业版 四、实验要求: (1)按照学校关于实验报告格式的要求,编写实验报告(含流程图); (2)实验时按两人一组进行分组,将本组认为效果较好的程序提交检查。

现代设计方法与传统设计方法区别

现代设计方法与传统设计方法区别 (1)直觉设计阶段古代的设计是一种直觉设计。当时人们或是从自然现象中直接得到启示,或是全凭人的直观感觉来设计制作工具。设计方案存在于手工艺人头脑之中,无法记录表达,产品也是比较简单的。直觉设计阶段在人类历史中经历了一个很长的时期,17世纪以前基本都属于这一阶段。 (2)经验设计阶段随着生产的发展,单个手工艺人的经验或其头脑中的构思已很难满足这些要求。于是,手工艺人联合起来,互相协作。一部分经验丰富的手工艺人将自己的经验或构思用图纸表达出来,然后根据图纸组织生产。图纸的出现,即可使具有丰富经验的手工艺人通过图纸将其经验或构思记录下来,传与他人,便于用图纸对产品进行分析、改进和提高,推动设计工作向前发展;还可满足更多的人同时参加同一产品的生产活动,满足社会对产品的需求及提高生产率的要求。因此,利用图纸进行设计,使人类设计活动由直觉设计阶段进入到经验设计阶段。 (3)半理论半经验设计阶段 20世纪以来,由于科学和技术的发展与进步,设计的基础理论研究和实验研究得到加强,随着理论研究的深入、实验数据及设计经验的积累,已形成了一套半经验半理论的设计方法。这种方法以理论计算和长期设计实践而形成的经验、公式、图表、设计手册等作为设计的依据,通过经验公式、近似系数或类比等方法进行设计。依据这套方法进行机电产品设计,称为传统设计。所谓“传统”是指这套设计方法已延用了很长时间,直到现在仍被广泛地采用着。传统设计又称常规设计。 (3)现代设计阶段近30年来,由于科学和技术迅速发展,对客观世界的认识不断深入,设计工作所需的理论基础和手段有了很大进步,特别是电子计算机技术的发展及应用,对设计工作产生了革命性的突变,为设计工作提供了实现设计自动或和精密计算的条件。例如CAD技术能得出所需要的设计计算结果资料、生产图纸和数字化模型,一体化的CAD/CAM 技术更可直接输出加工零件的数控代码程序,直接加工出所需要的零件,从而使人类设计工作步入现代设计阶段。此外,步入现代设计阶段的另一个特点就是,对产品的设计已不是仅考虑产品本身,并且还要考虑对系统和环境的影响;不仅要考虑技术领域,还要考虑经济、社会效益;不仅考虑当前,还需考虑长远发展。例如,汽车设计,不仅要考虑汽车本身的有关技术问题,还需考虑使用者的安全、舒适、操作方便等。此外,还需考虑汽车的燃料供应和污染、车辆存放、道路发展等问题。 传统设计是以经验总结为基础,运用长期设计实践和理论计算而形成的经验、公式、图表、设计手册等作为设计的依据,通过经验公式、近似系数或类比等方法进行设计。传

计算机操作系统课程设计

) 计算机操作系统课程设计 班级:计091-1 ! 姓名: 学号: 使用语言:C++ 指导老师: 学院: ~

一、系统要求 1、实验目的 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 2、实验内容 ( 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条); login 用户登陆 dir 列文件目录 create 创建文件 delete 删除文件 open 打开文件 ~ close 关闭文件 read 读文件 write 写文件 (2)列目录时要列出文件名、物理地址、保护码和文件长度; (3)源文件可以进行读写保护。 二、系统分析 1、设计思想 ` 本文件为二级文件系统,即要实现对文件的增删改查,同时又具备登陆系统、注册用户的功能,各个用户之间的文件系统互不干扰。 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 系统采用结构体来存储用户、文件目录、文件数据内容: 0 48*5 48*5+44*50 48*5+44*50+264*200

每个分区都是由结构体组成,每个个去的结构体的个数由格式化系统是决定。整个系统的编码构成主要分为: ! 定义了每个分区的结构体; 声明了对系统操作的各种方法; 声明了对文件操作的各种方法; 整个系统的主函数,操作入口; 包含了,实现了操作系统的各种方法; 包含了,实现了操作文件的各种方法; 2、主要数据结构 文件的内容: 。 struct s_user 登录"<>n_select; (); 看文件内容"<

计算机控制系统课程设计

《计算机控制》课程设计报告 题目: 超前滞后矫正控制器设计 姓名: 学号: 10级自动化 2013年12月2日

《计算机控制》课程设计任务书 指导教师签字:系(教研室)主任签字: 2013年11 月25 日

1.控制系统分析和设计 1.1实验要求 设单位反馈系统的开环传递函数为) 101.0)(11.0(100 )(++= s s s s G ,采用模拟设 计法设计数字控制器,使校正后的系统满足:速度误差系数不小于100,相角裕度不小于40度,截止角频率不小于20。 1.2系统分析 (1)使系统满足速度误差系数的要求: ()() s 0 s 0100 lim ()lim 100 0.1s 10.011V K s G s s →→=?==++ (2)用MATLAB 画出100 ()(0.11)(0.011) G s s s s = ++的Bode 图为: -150-100-50050 100M a g n i t u d e (d B )10 -1 10 10 1 10 2 10 3 10 4 P h a s e (d e g ) Bode Diagram Gm = 0.828 dB (at 31.6 rad/s) , P m = 1.58 deg (at 30.1 rad/s) Frequency (rad/s) 由图可以得到未校正系统的性能参数为: 相角裕度0 1.58γ=?, 幅值裕度00.828g K dB dB =, 剪切频率为:030.1/c rad s ω=, 截止频率为031.6/g rad s ω=

(3)未校正系统的阶跃响应曲线 024******** 0.20.40.60.811.2 1.41.61.8 2Step Response Time (seconds) A m p l i t u d e 可以看出系统产生衰减震荡。 (4)性能分析及方法选择 系统的幅值裕度和相角裕度都很小,很容易不稳定。在剪切频率处对数幅值特性以-40dB/dec 穿过0dB 线。如果只加入一个超前校正网络来校正其相角,超前量不足以满足相位裕度的要求,可以先缴入滞后,使中频段衰减,再用超前校正发挥作用,则有可能满足要求。故使用超前滞后校正。 1.3模拟控制器设计 (1)确定剪切频率c ω c ω过大会增加超前校正的负担,过小会使带宽过窄,影响响应的快速性。 首先求出幅值裕度为零时对应的频率,约为30/g ra d s ω=,令 30/c g rad s ωω==。 (2)确定滞后校正的参数 2211 3/10 c ra d s T ωω= ==, 20.33T s =,并且取得10β=

计算机控制系统设计性实验 (1)

《计算机控制系统》设计性实验 一、通过设计性实验达到培养学生实际动手能力方法及步骤: 对系统设计方法可以从“拿到题目”到“进行分析”再到“确定解决方案”最后到“具体系统的设计的实现”的整个过程进行全方位的启发。让学生掌握对不同的控制系统设计方法和基本思想,从工程角度对待设计题目,尽量做到全面认识理解工程实际与实验室环境的区别,逐步引入工程思想,提高学生设计技巧和解决实际问题的能力。 1、了解和掌握被控制对象的特性; 2、选择合理的传感器(量程、精度等); 3、计算机控制系统及接口的设计(存储器、键盘、显示); 4、制定先进的、合理的控制算法; 5、结合控制系统的硬件系统对软件进行设计; 6、画出系统硬件、软件框图; 7、系统调试。 二、具体完成成品要求: 1、对传感器、A/D、D/A、中央处理器、显示、键盘、存储器的选型大小等; 2、实现系统硬件原理图用Protel或Proteus、MATLAB软件(框图)仿真设计; 3、达到课题要求的各项功能指标; 4、系统设计文字说明书; 5、按照学号循环向下作以下5个题目。 三、系统控制框图: 控制系统硬件框图

四、设计题目: 1、瓦斯气体浓度控制系统: 要求:准确测量和显示瓦斯的浓度,其主要成分是甲烷、一氧化碳、氢气等瓦斯浓度在4﹪以下是安全的,大于4﹪就会引发爆炸很危险。控制算法对气体浓度有预判性,控制通风系统工作,保证环境安全稳定。 a、对信号调理电路中采用的具体元器件应有器件选型依据; b、电路的设计应当考虑可靠性和抗干扰设计内容; c、电路的基本工作原理应有一定说明; d、电路应当在相应的仿真软件上进行仿真以验证电路可行性。 2、酒精浓度自动控制系统: 要求:测量范围10-1000PPM、精度为5PPM。设计传感器的信号调理电路。实现以下要求: 设计信号调理将传感器输出0.2-1.4 V的信号转换为0-5V直流电压信号; a、对信号调理电路中采用的具体元器件应有器件选型依据; b、电路的设计应当考虑可靠性和抗干扰设计内容; c、电路的基本工作原理应有一定说明; d、电路应当在相应的仿真软件上进行仿真以验证电路可行性。 3、恒温箱控制系统: 要求:恒温箱温度控制在70℃-80℃之间,精度0.5℃,有越线报警。并具有断电保护、报警等功能。 a、对信号调理电路中采用的具体元器件应有器件选型依据; b、电路的设计应当考虑可靠性和抗干扰设计内容; c、电路的基本工作原理应有一定说明; d、电路应当在相应的仿真软件上进行仿真以验证电路可行性。

自然通风与翼墙简化设计方法

0 引言 自然通风可以有效提高建筑室内空气质量和热舒适性,并且可以减少建筑能耗。研究表明,自然通风量由36 m3/h·p提高到72 m3/h·p,可有效减少建筑综合症症状,同时,根据调查显示,当建筑内人体感觉有风流动时,热舒适感觉会提高[1],由此可见建筑自然通风的好坏对建筑内人员舒适度的提升非常重要。GB/T 50378—2006《绿色建筑评价标准》中对建筑自然通风也非常重视,其中4.1.13、4.2.4、4.5.4、5.1.7、5.2.6、5.5.7条均提出了促进建筑自然通风的要求。 目前,建筑自然通风主要通过围护结构开口实现,如外门、外窗及洞口,虽然某些建筑采用共享空间或热压烟囱来增强自然通风,但由于共享空间及热压烟囱占用过多的建筑内部空间,目前应用并不广泛。但翼墙作为一种增强自然通风的建筑外构件,却可以达到有效增强室内自然通风,又不占用室内空间,易于工程实现的目的,目前应用较多。 对于翼墙促进自然通风的效果及翼墙的设置方式,很多学者均进行了研究,并且建议:翼墙的出挑的长度至少应为窗户宽度的0.5~1倍,翼墙之间的距离至少为窗户宽度的2倍[2]。但是翼墙出挑长度、翼墙间距、外窗可开启扇宽度与风速的关系,在不同风速下,如何准确确定这些参数,目前尚无相关研究。本文通过理论分析及CFD模拟计算的方法,确定了上述这些参数之间的关系,并尝试给出求解图表,以方便设计师的翼墙设计工作。 1 翼墙通风原理及影响因素分析 1.1 翼墙通风原理分析 翼墙是外墙突出的一种建筑构件,其主要作用是通过阻挡上流来风,形成空气滞留区,进而增强翼墙上游附近建筑表面风压,形成室外空气进入室内的有利条件;同时,翼墙下游区域则形成负压区,降低下游附近建筑表面风压,进而形成室内空气进入室外的有利条件,以促进自然通风,如图1所示。 建筑节能 2015年第2期(总第43卷第288期) doi:10.3969/j.issn.1673-7237.2015.02.018 ■绿色建筑与设计 自然通风与翼墙简化设计方法 芦岩,王亚楠,陈彦熹,尹宝泉 (天津市建筑设计院,天津300074) 摘要:提出有效正压区长度(Lep)及有效负压长度(Len)的定义,采用CFD软件模拟计算了不同风速及不同翼墙出挑长度下的Lep与Len,得出影响翼墙通风效果的公式,并绘制出了翼墙设计图 谱。设计师可以根据不同的来流风速与设计的翼墙出挑长度,通过查阅图谱确定翼墙上游外窗 最大开启宽度与翼墙下游外窗最大开启宽度及翼墙间距,简化了建筑翼墙设计。 关键词:翼墙;正压区;负压区;有效正压区长度;有效负压区长度 中图分类号:TU834.1文献标志码:A文章编号:1673-7237(2015)02-0070-05 Natural Ventilation and Wing Wall Simplified Design Method LU Yan,WANG Ya-nan,CHEN Yan-xi,YIN Bao-quan (Tianjin Architecture Design Institute, Tianjin 300074, China) Abstract:The effective lengths of positive pressure zone and negative pressure zone are defined. Adopting CFD model to simulate and calculate the effective lengths of positive pressure zone and negative pressure zone under different wind velocities and different wing wall projecting lengths,the formula of wall wing ventilation effectiveness is gained,and wing wall design map is drew.The designer can determine the spaces between maximum open width of wing wall upstream and downstream windows and wall wing by looking up the map and according to different wind velocities and wing wall projecting lengths. Keywords:wing wall; positive pressure zone; negative pressure zone; effective length of positive pressure zone (Lep); effective length of negative pressure zone (Len) 收稿日期:2014-08-13;修回日期:2014-09-16 70

(完整版)《现代设计方法》2014考题及答案

贵州大学机械与自动化学院普通硕士研究生 《现代设计方法》考试试题 姓名:专业:研究方向:成绩: 一、填空题(每题1分,共15分) 1、现代设计所指的新兴理论与方法包括(现代设计方法学、计算机辅助设计技术、可信性设计技术)等等。 2、优化设计是(以数学规划理论为基础,以计算机为工具,优化设计参数)的一种现代设计方法。 3、功能设计法的基本过程包括(任务抽象、功能分解、功能载体、载体组合、方案评价)。 4、功能分解的常用方法有(按解决问题的因—果关系,或手段—目的关系分解;、按产品工艺过程的空间顺序或时间顺序分解;)。 5、解决供求矛盾的措施有(互换性原理、组合机床、系列化、通用化、标准化)。 6、模块化设计可分类成(横系列模块化、纵系列模块化、跨系列、全系列模块化、跨类模块化)。 7、模块的划分将影响(模块通用性、产品性能、产品外观、产品成本)。 8、遗传算法是一种(模拟生物进化过程)的搜索算法。 9、遗传算法最常用和基本的选择方法(选择算子)是(适应度比例选择)。 10、遗传算法中采用罚函数法的目的是(对违背约束条件的情况给予惩罚,并将此惩罚体现在目标函数设计中。2.2)。 11、遗传算法常用的编码方法有(二进制编码二进制编码方法、格雷码编码方法、实数编码、多参数级联编码)等等。 12、神经网络的样本数据应包括(训练样本数据和检验样本数据)。 13、当神经网络的样本数据不在[0~1]范围内时,应对数据进行(归一化)处理。 14、前馈型人工神经网络包括(1、线性阈值单元组成的前馈网络2、非线性单元组成的前馈网络输入层、隐层和输出层)3章。 15、神经网络的学习规则有(Hebb学习规则、感知器(perceptron)学习规则、Delta学习规则、

简述计算机系统设计的主要方法

1.简述计算机系统设计的主要方法。 答:基于计算机系统层次结构的基础上,其计算机系统设计 方法可以有以下的三种: 方法1:由上向下(Top-Down) 设计过程:面向应用的数学模型→面向应用的高级语言→面向这种应用的操作系统→面向操作系统和高级语言的机器语言→面向机器语言的微指令系统和硬件实现。应用场合:专用计算机的设计(早期计算机的设计)。特点:对于所面向的应用领域,性能(性能价格比)很高。随着通用计算机价格降低,目前已经很少采用。 方法2:由下向上(Bottom-Up)(通用计算机系统的一种设计方法) 设计过程:根据当时的器件水平,设计微程序机器级和传统机器级。根据不同的应用领域设计多种操作系统、汇编语言、高级语言编译器等。最后设计面向应用的虚拟机器级。应用场合:在计算机早期设计中(60~70年代)广为采用。特点:容易使软件和硬件脱节,整个计算机系统的效率降低。 方法3:中间开始(Middle-Out) 设计过程:首先定义软硬件的分界面。然后各个层次分别进行设计。应用场合:用于系列机的设计。特点:软硬件的分界面在上升,硬件比例在增加。硬件价格下降,软件价格上升。软硬件人员结合共同设计。 2. 一般来讲,计算机组成设计要确定的内容应包括那些方面? 答:(1)数据通路的宽度; (2)专用部件的设置;(3)各种操作对部件的共享程度; (4)功能部件的并行度;(5)控制机构的组成方式;(6)缓冲和排队技术;(7)预估,预判技术(8)可靠性技术。 3. 简述计算机系统结构用软件实现和用硬件实现各自的优缺点。 答:计算机系统结构用硬件实现:速度快、成本高;灵活性差、占用内存少。用软件实现:速度低、复制费用低;灵活性好、占用内存多。 4.简述冯.诺依曼计算机的特征。 答:计算机的工作过程就是执行程序的过程。怎样组织程序,涉及到计算机体系结构问题。现在的计算机都是基于“程序存储”概念设计制造出来的。 (l)冯.诺依曼(V on Neumann)的“程序存储”设计思想冯.诺依曼是美籍匈牙利数学家,他在1946年提出了关于计算机组成和工作方式的基本设想。到现在为止,尽管计算机制造技术已经发生了极大的变化,但是就其体系结构而言,

现代设计方法B 答案全

东北大学继续教育学院 现代设计方法试卷(作业考核线上) B 卷学习中心:院校学号:姓名 (共页) 一.选择题(可多选,各2分,共20分) 1. 机械设计主要应体现哪些特点(B.D.E )。 A) 整体性B) 系统性C) 相关性 D) 多解性E)创新性 2. 机械系统的总体设计中不包括以下哪些内容(B.E )。 A) 功能原理方案设计 B) 技术可行性报告 C) 总体布局设计 D) 系统主要参数计算 E)结构草图设计 3. 室内工作的机械选择(B )作为动力机不太合适。 A)电动机B)内燃机C)液压马达D)气动马达 4. 利用对未知系统的外部观测,分析该系统与环境之间的输入和输出,通过输入和输出的转换关系确定系统的功能、特性所需具备的工作原理与内部结构,这种方法称为( A )。 A) 黑箱法B) 列举法C) 移植法D) 筛选法 5. ( A )执行系统,要求执行系统实现预期精度的动作(位移、速度、加速度等),而对执行系统中各构件的强度、刚度无特殊要求。 A. 动作型 B. 动力型 C. 动作——动力型 6. 考虑到强度问题时,(C )图的设计比较合理。 A) (a) B) (b) C) (c)

A) 设计空间 B) 设计维数 C) 设计可行域 9. 已知某零件的失效时间随机变量服从指数分布,其故障率是5×10-4/小时,那么在工作时间100小时的可靠度水平是:( C ) A) 0.05 B) 0.85 C) 0.95 10. 对野外工作的机械及移动式机械,其动力机一般不选择(A )。 A)电动机 B)内燃机 C)液压马达 D)气动马达 二.判断题:(正确:T;错误:F,各2分,共20分) 1. 一个机械系统必须由动力系统、执行系统、传动系统、操纵控制系统、架体支撑系统几部分组成。( F ) 2. 机械产品的施工设计阶段要完成全部图纸资料和相关的技术文件。(T ) 3. 利用对未知系统的外部观测,分析该系统与环境之间的输入和输出,通过输入和输出的转换关系确定系统的功能、特性所需具备的工作原理与内部结构,这种方法称为黑箱法。(T ) 4. 执行系统由执行构件和执行机构组成,其中执行构件往往是执行机构中的一个构件。(T ) 5. 双线性位移模式灵活性较好,而线性位移模式则灵活性较差。( F ) 6. 单元刚度矩阵具有对称性、奇异性和稀疏性。( F )

计算机组成原理简单计算机的设计

烟台大学 计算机组成原理 课程设计报告书 设计题目: 简单计算机 专业: 计算机科学与技术 班级: 设计者: 学号: 指导老师: 年月日

简单的计算机系统设计 一、设计要求: 1.提供完善的逻辑图。 2.提供全部的微程序。 3.提供系统的调试方法。 4.提供系统的功能调试方法。 5.R0,R1为通用寄存器,8位。 6.IR为指令寄存器,8位。 7.PC程序计数器,8位。 8.MAR为地址寄存器,8位。 二、设计的基本过程 1.在设计的初级阶段,学生根据所学的内容,按照课程设计的要求,在设计报告书中完成方案设计并画出逻辑线路图。 2.在输入原理图阶段即编程设计阶段,利用编程软件在其上画出各部件的原理图,在设计过程中要充分体现其灵活性。 当原理图输入完毕后,编程软件系统可对原理图文件进行编译、优化、适配、将错误消灭在设计阶段。最后完成对 isp EXPERT 的编程文件。 若有错误,则继续进行修改,直到没有错误,且编译通过后进行下一个步骤。 3.当一个设计完成且产生编程文件后,就可以进行下载了,模式开关在通调的模式下,对其下载到器件中去。 结合计算机组成原理的内容和设计平台系统,计算机的设计与调试步骤如下:

拟订指令系统 指令系统是设计计算机的依据,拟订指令系统涉及基本字长,指令格式,指令种类,寻址方式等内容。 基本字长:课程设计平台中配置的存储器容量为256*8,显然基本字长只能定为8位。 指令格式:指令格式可有单字长指令和双字长指令两种 指令格式为: 7 3 1 0 指令类型:模型机有单操作数指令,双操作数指令和无操作数指令。 操作码OP共4位,最多可定义16条指令。 数据传送的单位为8位(一个字节) 数据的传送范围R R R RAM RAM R 寻址方式:由于指令较短,操作数字段仅两位, 源操作数字段寻址方式目的操作数寻址方式 00 R0 00 R1 01 (R0) 01 (R1) 10 I 10 I 11 D 11 D (D)指令的第二字节为操作数的地址 源操作数使用R0寻址 目的操作数使用R1寻址 这样设计的目的是为了简化运算器选择门的设计和缩短指令长度。 三.确定总体结构 总体结构如下图:

相关文档
最新文档