文档库 最新最全的文档下载
当前位置:文档库 › 数字系统设计实验

数字系统设计实验

数字系统设计实验
数字系统设计实验

多周期MIPS微处理器设计

一、实验目的

(1)、熟悉MIPS指令系统。

(2)、掌握MIPS多周期微处理器的工作原理和实现方法。

(3)、掌握控制器的微程序设计方法。

(4)、掌握MIPS多周期微处理器的测试方法。

(5)、了解用软件实现数字系统设计的方法。

二、实验任务

设计一个32位MIPS多周期微处理器,具体的要求如下:

1、至少运行下列的6类32条MIPS指令。

(1)、算术逻辑指令:ADD、ADDU、SUB、SUBU、ADDI、ADDIU。

(2)、逻辑运算指令:AND、OR、NOR、XOR、ANDI、ORI、XORI、SLT、SLTU、SLTI、SLTIU。

(3)、位移指令:SLL、SLLV、SRL、SRLV、SRA。

(4)、条件分支指令:BEQ、BNE、BGEZ、BGTZ、BLEZ、BLTZ。

(5)、无条件跳转指令:J、JR。

(6)、数据传送指令:LW、SW。

2、在XUP Virtex-2 Pro开发系统中实现该32位MIPS多周期微处理器,要求运行速度(CPU 工作时钟)大于25MHz。

三、实验设备

1、装有ISE、Modelsim SE和Chipscope Pro软件的计算机。

2、XUP Virtex-2 pro开发系统一套。

3、SVGA显示器一台。

四、MIPS指令简介

MIPS指令集具有以下特点:

1、简单的LOAD/STORE结构:所有的计算机类型的指令均从寄存器堆中读取数据并

把结果写入寄存器堆中,只有LOAD和STORE指令访问存储器。

2、易于流水线CPU的设计:MIPS指令集的指令格式非常规整,所有的指令均为32位,而且指令操作码在固定的位置上。

3、易于编译器的开发:一般来讲,编译器在编译高级语言程序时,很难用到复杂的指令,MIPS指令的寻址方式非常的简单,每条指令的操作也非常简单。

MIPS系统的寄存器结构采用标准的32位寄存器堆,共32个寄存器,标号为0-31。其中第0号寄存器永远为常数0。

CPU所支持的MIPS指令格式一共有3种,分别为R、I、J。R类型的指令从寄存器堆中读出两个源操作数,计算结果写回到寄存器堆;I类型的指令使用一共16为立即数作为源操作数;J类型的指令使用一共26位立即数作为跳转的目标地址(target address)。

MIPS的指令格式如图1所示,指令格式中OP(operation)是指令操作码;RS(register sourse)是源操作数的寄存器号;RD(register destination)是目标寄存器号;RT(register target)可以既是源寄存器号,又可以使目标寄存器号,由具体位置决定;FUNCT(function)可以被认为是扩展的操作码;SA(shift amount)由移位指令使用,定义移位位数。

I型中的Immediate是16为立即数。立即数型算术逻辑运算指令、数据传输指令和条件分支指令均采用这种形式。在立即数型算术逻辑运算指令、数据传送指令中,Immediate进行符号扩展至32位;而在条件分支指令中,Immediate先进行符号扩展至32位再左移2位。

在J形指令中26为target由JUMP指令使用,用于产生跳转的目标地址。

下面通过表格简单介绍本实验使用的MIPS核心指令。表1列出了本实验使用到的MIPS指令的格式和OP、FUNCT等简要信息。

五、实验原理以及相应Verilog HDL代码

图2所示为可实现上述指令的多周期MIPS微处理器的原理框图,根据功能将其分划分为控制单元(cunit)、执行单元(eunit)、指令单元(iunit)以及存储单元(munit)四大模块。

控制单元(cunit)是多周期微处理器的核心,控制微处理器取指令、指令译码和指令执行等工作。主要由指令译码器控制器(outputs control)、算术逻辑运算控制器(ALU control)两个子模块组成。

执行单元(eunit)主要由寄存器堆(registers)和算术逻辑单元(ALU)两个子模块组成。其中

寄存器是微处理器最基本的元素,MIPS系统的寄存器堆由32个32位寄存器组成;而ALU

则是微处理器的主要功能部件,执行加、减、比较等算术运算和与、或、或非、异或等逻辑

运算。这里需要说明的是,图2所示的原理框图中未画出ANDI、ORI、XORI三条指令所

需的16位立即数“0扩展”至32位立即数电路,设计时可以将“0扩展”电路功能放在ALU

内部完成。

图 2

多周期

CPU框图

指令单元(iunit)的作用是决定下一条指令的地址(PC值)。

存储单元(munit)由存储器(memory)、指令寄存器(instruction register)和存储数据寄存器(memory data register)组成。

1、控制单元(cunit)的设计。

控制单元模块主要作用是通过机器码解析出指令,并根据解析结果控制数据通道工作流程。控制模块的接口信息如表2所示。

1)、Outputs Control控制器的设计

Outputs Control控制器的主要作用是取出指令,并根据指令确定各个控制信号的值。首先对指令进行分类。

(1)、R型指令。根据操作数来源可分为R_type1、R_type2和JR三类。其中,R_type1指令中的两个操作数为寄存器rs、rt;R_type2为三个移位指令,操作数为指令中的sa字段和寄存器rt;JR指令只有一个操作数rs。根据各指令执行的特点,本实验设计时,将各指令进行了分类:

R_type1:包括指令ADD、ADDU、SUB、SUBU、AND、OR、NOR、XOR 、

SLT、SLTU、SLLV、SRLV、SRAV。

R_type2:包括指令SLL、SRL、SRA。

JR_type:包括指令JR。

(2)、J型指令。J_type:包括指令J。

(3)、立即数指令。I_type:包括指令ADDI、ADDIU、ANDI、ORI、XORI、SLTI、SLTIU。

(4)、分支指令。Branch:包括指令BEQ、BNE、BGEZ、BGTZ、BLEZ、BLTZ。

(5)、数据传输指令。LW:包括指令LW。SW:包括指令SW。

MIPS指令的执行步骤不尽相同。分支和跳转指令需要3个周期,R型指令和立即数指令需要4个周期,数据传送指令需要4-5个周期。表3列出了各类指令执行步骤。

从原理框图(图2)我们可以看出,整个CPU中,一共有13组控制信号,

○1、RegDst,决定目标寄存器是rt还是rd。

RegDst=0时,rt为目标寄存器。

RegDst=1时,rd为目标寄存器。

○2、RegWrite,决定是否对寄存器(registers)进行写操作。

RegWrite有效时,将数据写入指定的寄存器中。

○3、MemWrite,决定是否对存储器(memory)进行写操作。

MemWrite有效时,将数据写入存储器指定的位置。

○4、MemRead,决定是否对存储器(memory)进行读操作。

MemRead有效时,读取存储器指定位置的数据。

○5、MemtoReg,决定写入寄存器(registers)的数据来自ALUOut还是MDR。

MemtoReg=0时,数据来自ALU。

MemtoReg=1时,数据来自存储器。

?以上5组控制信号与单周期MIPS CPU中的各个信号一致。

○6、IorD,.决定存储器地址由PC还是ALUOut提供。

IorD=0时,存储器地址来自于PC。

IorD=1时,存储器地址来自于ALU。

○7、IRWrite,决定是否对指令寄存器(IR)进行写操作。

IRWrite有效时,将指令写入指令寄存器中。

○8、PCWrite,决定是否对PC寄存器进行写操作。

PCWrite有效时,对PC寄存器进行写操作;源由PCSource决定。

○9、PCWriteCond

在Zero有效的前提下,决定是否对PC寄存器进行写操作。

PCWrite有效时,同时Zero亦有效,对PC寄存器进行写操作。

?以上9组控制信号均为1位控制信号,而以下4组信号均为2位控制信号。

○10、ALUSrcA,决定ALU第一操作数来源。

ALUSrcA=00时,ALU第一操作数来源于PC。

ALUSrcA=01时,ALU第一操作数来源于寄存器A。

ALUSrcA=10时,ALU第一操作数来源于0扩展的5

○11、ALUSrcB,决定ALU第二操作数来源。

ALUSrcB=00时,ALU第二操作数来源于寄存器B。

ALUSrcB=01时,ALU第二操作数为常数“4”。

ALUSrcB=10时,ALU第二操作数来源于符号扩展的16位Imm。

ALUSrcB=11时,ALU第二操作数来源于符号扩展后左移两位的16位Imm。○12、ALUOp,决定ALU的操作。

ALUOp=00时,ALU进行加操作。

ALUOp=01时,由指令中的op及rt决定。

ALUOp=10时,由指令中的funct决定。

ALUOp=11时,由指令中的op决定。

○13、PCSource,决定写入PC寄存器的来源。

PCSource=00时,写入值为下一条指令的地址PC+4。

PCSource=01时,写入值为ALU计算出的分支地址。

PCSource=10时,写入值为跳转地址。

根据表3所示的指令的执行步骤与指令功能,可以画出Output Control模块的有限状态机图,如图3所示。

从图3中我们可以看出,除了第一周期和第二周期对所有的指令都一样外,在其它周期,不同指令的操作不同,因此控制信号也可能不同:

第1周期----取指

操作过程:

①IR<= Memory[PC];②PC=PC+4

设置控制信号:

①MemRead有效;②IRWrite有效;③IorD=0;④ALUSrcA=00;

⑤ALUSrcB=01;⑥ALUOp=00;⑦PCSource=00;⑧PCWrite有效。

第2周期----指令译码和读取寄存器

操作过程:

①A <= IR[25:21] B<= IR[20:16];②ALUOut <= PC+ (sign-extend(IR[15:0])<<2)

设置控制信号:

①ALUSrcA=00;②ALUSrcB=11;③ALUOp=00。

第3周期----指令执行、存储地址的计算或分支的完成

在这一周期内CPU的具体操作取决于不同类型的指令。我们将本实验需要实现的指令分成六类来讨论:

I. 存储器访问指令(LW、SW)

II. R型指令(除移位指令)— R_type1、JR_type

III. 移位指令— R_type2

Ⅳ. I型指令— I_type

Ⅴ. 跳转指令— J_type

Ⅵ. 分支指令— Branch

I. 存储器访问指令(LW、SW)

操作过程:

ALUOut <= A + (sign-extend(IR[15:0]))

设置控制信号:

①ALUSrcA=01;②ALUSrcB=10;③ALUOp=00

II. R型指令(除移位指令)

操作过程:

ALUOut <= A op B

设置控制信号:

①ALUSrcA=01;②ALUSrcB=00;③ALUOp=10

III. 移位指令

操作过程:

ALUOut <= B op (zero-extend(IR[10:6]))

设置控制信号:

①ALUSrcA=10;②ALUSrcB=00;③ALUOp=10

Ⅳ. I型指令

操作过程:

ALUOut <= A op (sign-extend(IR[15:0]))

设置控制信号:

①ALUSrcA=01;②ALUSrcB=10;③ALUOp=11

Ⅴ. 跳转指令

操作过程:

PC<= { PC[31:28], IR[25:0], 2’b00 }

设置控制信号:

①PCWrite有效;②PCSource=10

Ⅵ. 分支指令

操作过程:

if ( condition==1 ) PC<= ALUOut

分支条件成立时

设置控制信号:

①ALUSrcA=01;②ALUSrcB=00;③ALUOp=01;④PCSource=01;

⑤PCWriteCond有效

第4周期----存储器的访问、R型/I型指令的完成。在这一周期内CPU的具体操作也取决于不

同类型的指令。我们同样把指令分为五类:

I. 取字指令— LW

II. 存字指令— SW

III. R型指令(含移位指令,但不含JR指令)— R_type1、R_type2 Ⅳ. JR指令— JR_type

Ⅴ. I型指令— I_type

I. 取字指令LW

操作过程:

MDR <= Memory[ALUOut]

设置控制信号:

①MemRead有效;②IorD = 1.

Ⅱ. 存字指令SW

操作过程:

Memory[ALUOut] <= B

设置控制信号:

①MemWrite有效;;②IorD = 1

Ⅲ. R型指令(包括移位指令,但除JR指令)

操作过程:

IR[15:11] <= ALUOut

设置控制信号:

①RegWrite有效;②RegDst = 1;③MemtoReg=0

Ⅳ. JR指令

操作过程:

PC<= ALUOut

设置控制信号:

①PCWrite有效;②PCSource=01

Ⅴ. I型指令

操作过程:

IR[20:16] <= ALUOut

设置控制信号:

①RegWrite有效;②RegDst = 1;③MemtoReg=0.

第5周期----读取存储器完成

这一时钟周期只有取值指令LW。

操作过程:

IR[20:16] <= ALUOut

设置控制信号:

①RegWrite有效;②RegDst = 1;③MemtoReg=1

2)、多周期MIPS微处理器控制器的有限状态机的实现

如图3所示,Output Control是较为复杂的控制器,输出多端口较多,因此很合适采用微处理程序设计方法。在设计之前,先进行状态编码,为简单起见,状态采用自然编码,即状态i用4位二进制i表示,如状态S5用0101表示。

图4所示为微程序控制器的结构框图。由图4可以看出,电路的次态可由计数器、回到0状态或调度电路三者方式决定。由反馈信号SEQ信号选择哪种方式:当SEQ=00时,控制器的次态由计数器决定,即状态值加1.

当SEQ=01时,控制器的次态回到S0状态。

当SEQ=10或者11时,次态由指令决定。因为状态在指令的第二和第三周期都存在分支可能,所以Dispatch输出NS1为指令在第二周期状态的次态、而NS2为指令在第三周期状态的次态。

电路的状态作为Microcode ROM的地址,Microcode ROM中存放微程序的内容。根有限状态机和SEQ的信号,可以得出微指令ROM的各个控制信号如表4。

表 4

ROM核输出有两部分内容组成,一部分为该状态下的控制器输出信号,另外一部分为决定控制器次态来源的SEQ信号。ROM核的容量是2^4*19bit。既可以采用IP内核实现,又可以采用阵列实现,这里我采用阵列实现。相应的verilog HDL代码如下:

//ROM_array阵列代码,此代码可以根据表4容易得出

module ROM_array (addr, ROM_out);

input [3:0] addr;

output reg [18:0] ROM_out;

always @ (*)

case (addr)

0:ROM_out<=19'b00_00_01_0xx0101_00_10_00;

1:ROM_out<=19'b00_00_11_0xxx000_xx_00_10;

2:ROM_out<=19'b00_01_10_0xxx000_00_00_11;

3:ROM_out<=19'bxx_xx_xx_0xx1100_xx_00_00;

4:ROM_out<=19'bxx_xx_xx_101x000_xx_00_01;

5:ROM_out<=19'bxx_xx_xx_0xx1010_xx_00_01;

6:ROM_out<=19'b10_01_00_0xxx000_xx_00_11;

7:ROM_out<=19'bxx_xx_xx_0xxx000_01_10_01;

8:ROM_out<=19'b10_10_00_0xxx000_xx_00_00;

9:ROM_out<=19'bxx_xx_xx_110x000_xx_00_01;

10:ROM_out<=19'b11_01_10_0xxx000_xx_00_00;

11:ROM_out<=19'bxx_xx_xx_100x000_xx_00_01;

12:ROM_out<=19'bxx_xx_xx_0xxx000_10_10_01;

13:ROM_out<=19'b01_01_00_0xxx000_01_01_01;

default:ROM_out=19'b0;

endcase

endmodule

调度电路Dispatch电路的设计,Dispatch电路负责产生不同类型的指令在第2时钟周期和第3时钟周期时的次态NS1、NS2。根据控制器有限状态机图中描述的现态和次态的关系,结合微指令ROM中SEQ信号,不难得出Dispatch电路的功能如表5所示:

表5Dispatch电路的功能表

其它单元电路的设计:

地址寄存器:4位的D触发器。

指令译码器(Inst_Decode):根据输入指令的op、rt和funct段完成指令分类的功能。

选择器MUX:4位的4选1数据选择器。

加法器:4位二进制加法器,完成状态加1的功能。

3)、算术逻辑运算控制子模块ALU Control的设计

ALU 控制器是一组合电路,其输入信号为指令机器码和Outputs 控制单元产生的ALUOp信号,输出信号为ALUCode,用来决定ALU做哪种运算。ALU控制器的功能表如下表所示,表中ALUCode的值可由自己定义,但必须能区分各种运算。ALU Control模块的功能表如下表(表6)所示:

表6 ALU Control 模块的功能表

经过上述分析,我们可以得出相应(cunit)的Verilog HDL代码如下:

module cunit(

// Outputs

PCSource,PCEnable, ALUCode,ALUSrcA,ALUSrcB,

RegWrite , RegDst, IorD,MemRead ,MemWrite, MemtoReg, IRWrite,

// Inputs

clk,reset,Instruction, Z,state

);

input clk;

input reset;

input Z;

input [31:0] Instruction; // current instruction

output RegWrite; // enable writing back to the register

output RegDst;

output IorD;

output MemRead;

output IRWrite;

output [1:0] PCSource;

output PCEnable;

output [4:0] ALUCode; // select ALU operation

output [1:0] ALUSrcA,ALUSrcB;

output MemtoReg; // use memory output as data to write into register output MemWrite; // write to memory

output reg [3:0] state;

wire PCWriteCond,PCWrite;

wire[1:0] ALUOp;

assign PCEnable=Z && PCWriteCond ||PCWrite;

reg [3:0] nextstate;

wire [18:0] ROM_out;

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

// instruction field

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

wire [5:0] op;

wire [4:0] rt;

wire [5:0] funct;

assign op = Instruction[31:26];

assign funct = Instruction[5:0];

assign rt = Instruction[20:16];

//inst_Decode

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

//R_type instruction decode

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

parameter R_type_op= 6'b000000;

parameter ADD_funct = 6'b100000;

parameter ADDU_funct = 6'b100001;

parameter AND_funct = 6'b100100;

parameter XOR_funct = 6'b100110;

parameter OR_funct = 6'b100101;

parameter NOR_funct = 6'b100111;

parameter SUB_funct = 6'b100010;

parameter SUBU_funct = 6'b100011;

parameter SLT_funct = 6'b101010;

parameter SLTU_funct = 6'b101011;

parameter SLL_funct= 6'b000000;

parameter SLLV_funct= 6'b000100;

parameter SRL_funct= 6'b000010;

parameter SRLV_funct= 6'b000110;

parameter SRA_funct= 6'b000011;

parameter SRAV_funct= 6'b000111;

parameter JR_funct= 6'b001000;

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

// R_type1 instruction decode

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

wire ADD,ADDU,AND,NOR,OR,SLT,SLTU,SUB,SUBU,XOR,SLLV, SRAV, SRLV;

wire [0:0] R_type1;

assign ADD = (op == R_type_op) && (funct ==ADD_funct);

assign ADDU = (op == R_type_op) && (funct == ADDU_funct);

assign AND = (op == R_type_op) && (funct == AND_funct);

assign NOR = (op == R_type_op) && (funct == NOR_funct);

assign OR = (op == R_type_op) && (funct == OR_funct);

assign SLT = (op == R_type_op) && (funct == SLT_funct);

assign SLTU = (op == R_type_op) && (funct == SLTU_funct);

assign SUB = (op == R_type_op) && (funct == SUB_funct);

assign SUBU = (op == R_type_op) && (funct == SUBU_funct);

assign XOR = (op == R_type_op) && (funct == XOR_funct);

assign SLLV = (op == R_type_op) && (funct == SLLV_funct);

assign SRAV = (op == R_type_op) && (funct == SRAV_funct);

assign SRLV = (op == R_type_op) && (funct == SRLV_funct);

assign R_type1 =ADD || ADDU || AND || NOR || OR || SLT || SLTU || SUB || SUBU || XOR || SLLV || SRAV || SRLV;

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

// R_type2 instruction decode

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

wire SLL, SRA, SRL;

wire [0:0]R_type2;

assign SLL = (op == R_type_op) && (funct == SLL_funct);

assign SRA = (op == R_type_op) && (funct == SRA_funct);

assign SRL = (op == R_type_op) && (funct == SRL_funct);

assign R_type2=SLL || SRA || SRL;

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

// JR_type instruction decode

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

wire [0:0] JR_type ;

assign JR_type = (op == R_type_op) && (funct == JR_funct);

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

// branch instructions decode

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

parameter BEQ_op= 6'b000100;

parameter BNE_op = 6'b000101;

parameter BGEZ_op= 6'b000001;

parameter BGEZ_rt= 5'b00001;

parameter BGTZ_op= 6'b000111;

parameter BGTZ_rt= 5'b00000;

parameter BLEZ_op = 6'b000110;

parameter BLEZ_rt = 5'b00000;

parameter BLTZ_op= 6'b000001;

parameter BLTZ_rt= 5'b00000;

wire BEQ, BGEZ, BGTZ, BLEZ, BLTZ, BNE;

wire [0:0] Branch;

assign BEQ = (op ==BEQ_op );

assign BNE = (op ==BNE_op );

assign BGEZ = (op == BGEZ_op) && (rt == BGEZ_rt);

assign BGTZ = (op == BGTZ_op) && (rt== BGTZ_rt);

assign BLEZ = (op == BLEZ_op) && (rt == BLEZ_rt);

assign BLTZ = (op == BLTZ_op) && (rt ==BLTZ_rt);

assign Branch=BEQ || BNE ||BGEZ || BGTZ || BLEZ ||BLTZ;

//****************************************************************************** // Jump instructions decode

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

parameter J_op=6'b000010;

wire [0:0] J_type;

assign J_type=(op == J_op);

//****************************************************************************** // I_type instruction decode

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

parameter ADDI_op = 6'b001000;

parameter ADDIU_op= 6'b001001;

parameter ANDI_op = 6'b001100;

parameter XORI_op = 6'b001110;

parameter ORI_op = 6'b001101;

parameter SLTI_op = 6'b001010;

parameter SLTIU_op= 6'b001011;

wire ADDI,ADDIU,ANDI,XORI,ORI,SLTI,SLTIU;

assign ADDI = (op == ADDI_op) ;

assign ADDIU= (op == ADDIU_op) ;

assign ANDI= (op == ANDI_op) ;

assign XORI= (op == XORI_op) ;

assign SLTI= (op == SLTI_op) ;

assign SLTIU= (op == SLTIU_op) ;

assign ORI= (op == ORI_op) ;

wire[0:0] I_type;

assign I_type=ADDI || ADDIU || ANDI || XORI || ORI || SLTI || SLTIU;

//****************************************************************************** // SW ,LW instruction decode

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

parameter SW_op = 6'b101011;

parameter LW_op = 6'b100011;

wire [0:0] SW,LW;

assign SW= (op == SW_op) ;

assign LW= (op == LW_op) ;

// Dispatch

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

reg[3:0] NS1,NS2;

always@(*)

begin

case({R_type1,R_type2,JR_type,I_type,Branch,J_type,SW,LW})

8'b10000000:begin NS1<=4'b0110;NS2<=4'b1001;end

8'b01000000: NS1<=4'b1000;

8'b00100000:begin NS1<=4'b0110;NS2<=4'b0111;end

8'b00010000: NS1<=4'b1010;

8'b00001000: NS1<=4'b1101;

8'b00000100: NS1<=4'b1100;

8'b00000010:begin NS1<=4'b0010;NS2<=4'b0101;end

8'b00000001:begin NS1<=4'b0010;NS2<=4'b0011;end

default: NS1<=4'b1101;

endcase

end

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

// state convert

//****************************************************************************** always@(*)// 4选1,MUX,用于选择NS1、NS2等信号,决定次态begin

case(ROM_out[1:0])

2'b00:nextstate<=state+1;

2'b01:nextstate<=4'b0000;

2'b10:nextstate<=NS1;

2'b11:nextstate<=NS2;

endcase

end

always@(posedge clk) //D触发器

begin

if(reset)

state<=4'b0000;

else

state<=nextstate;

end

数字系统设计技术实验指导书

Experiment 2 Designing Number Comparer 实验目的: 熟悉QuartusII 的开发环境 熟练掌握编程开发流程 学习VHDL 的基本语法 学习VHDL 编程设计 实验内容:数值比较器设计 实验要求:熟练掌握QuartusII 开发环境下对可编程逻辑器件进行程序化设计的整套流程 设计输入使用插入模板 (Insert Template ) 在QuartusII 开发环境下对设计程序进行时序仿真 将生成的配置文件下载到实验板,进行最终的实物测试验证 实验原理:根据两位二进制数的大小得到对应的比较结果,其电路示意图及电路特性表为: 比较器特性表 比较器电路示意图 实验报告内容要求: (1) 实验目的; (2) 实验内容; (3) 实验要求; (4) 实验原理; (5) 程序编写; (6) 程序编译(首先选择器件具体型号); (7) 功能仿真和芯片时序仿真; (8) 芯片引脚设定; (9) 适配下载结果及结论。 Number Comparer A(3..0) B(3..0) In_s In_l In_e Yl Ye Ys Y

Experiment 3 Designing 8 to1-Multiplxer 实验目的:熟悉QuartusII的开发环境 熟练掌握编程开发流程 学习VHDL的基本语法 学习VHDL编程设计 实验内容:八选一数据选择器设计。 实验要求:熟练掌握QuartusII开发环境下对可编程逻辑器件进行程序化设计的整套流程设计输入使用插入模板(Insert Template) 在QuartusII开发环境下对设计程序进行时序仿真 将生成的配置文件下载到实验板,进行最终的实物测试验证 实验原理: 电路功能表及其电路外部符号如下: 电路功能表 实验报告内容要求: (1)实验目的; (2)实验内容; (3)实验要求; (4)实验原理; (5)程序编写; (6)程序编译(首先选择器件具体型号); (7)功能仿真和芯片时序仿真; (8)芯片引脚设定; (9)适配下载结果及结论。

《管理信息系统》课程设计实验报告

《管理信息系统》课程设计实验报告 课程名称:管理信息系统 指导老师: ******* 院系:商学院 专业班级: ******** 姓名: ******** 学号: ******** 实验日期: 2011.7.11 实验地点:一机房

《管理信息系统》课程设计任务书 一.课程设计目的及意义: 《管理信息系统》课程设计是在完成《管理信息系统》课程学习之后的一次实践性教 学,是本课程理论知识的一次综合运用。通过本课程设计,能够进一步加深对信息、信息系 统、管理信息系统等基础理论知识的理解,能初步掌握结构化的生命周期法、面向对象法等 系统工程方法,进一步加强熟练应用管理信息系统的操作技能,并能够借助于管理信息系统 解决实际问题。 二.课程设计要求: 1.本课程设计时间为一周。 2.本课程设计以教学班为单位进行上机操作及实验。 3.按照任务要求完成课程设计内容。 三.课程设计任务要求: 1.任务内容:进入山东轻工业学院主页,在“网络资源”区域进入“网络教学平台”,输入各自的用户名和密码(学生学号及密码),进入本网络教学平台系统,在充分熟悉本系统 的前提下,完成下列任务要求。 2.任务要求: ①按照课程讲解的系统分析步骤和理论对本系统进行系统分析。 ②绘制不少于 3 个的主要业务流程图。 ③描述上述主要业务流程图的逻辑处理功能。 ④分析本系统的优缺点,提出改进意见,并描述改进的逻辑处理功能,绘制业务流 程图。 四.课程设计评分标准: 按照《管理信息系统课程设计大纲》的要求,本课程 1 学分,采用百分制计分,其中 任务要求②占30 分,任务要求③占30 分,任务要求④占30 分,考勤及实践表现占10 分。五.本课程设计自2011 年 6 月 27 日至 2011 年 7 月 1 日。

数字钟设计报告——数字电路实验报告

. 数字钟设计实验报告 专业:通信工程 :王婧 班级:111041B 学号:111041226 .

数字钟的设计 目录 一、前言 (3) 二、设计目的 (3) 三、设计任务 (3) 四、设计方案 (3) 五、数字钟电路设计原理 (4) (一)设计步骤 (4) (二)数字钟的构成 (4) (三)数字钟的工作原理 (5) 六、总结 (9) 1

一、前言 此次实验是第一次做EDA实验,在学习使用软硬件的过程中,自然遇到很多不懂的问题,在老师的指导和同学们的相互帮助下,我终于解决了实验过程遇到的很多难题,成功的完成了实验,实验结果和预期的结果也是一致的,在这次实验中,我学会了如何使用Quartus II软件,如何分层设计点路,如何对实验程序进行编译和仿真和对程序进行硬件测试。明白了一定要学会看开发板资料以清楚如何给程序的输入输出信号配置管脚。这次实验为我今后对 EDA的进一步学习奠定了更好的理论基础和应用基础。 通过本次实验对数电知识有了更深入的了解,将其运用到了实际中来,明白了学习电子技术基础的意义,也达到了其培养的目的。也明白了一个道理:成功就是在不断摸索中前进实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。 2

二、设计目的 1.掌握数字钟的设计方法。 2熟悉集成电路的使用方法。 3通过实训学会数字系统的设计方法; 4通过实训学习元器件的选择及集成电路手册查询方法; 5通过实训掌握电子电路调试及故障排除方法; 6熟悉数字实验箱的使用方法。 三、设计任务 设计一个可以显示星期、时、分、秒的数字钟。 要求: 1、24小时为一个计数周期; 2、具有整点报时功能; 3、定时闹铃(未完成) 四、设计方案 一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器和定时器组成。干电路系统由秒信号发生器、“时、 3

数字钟设计报告——数字电路实验报告

数字钟设计实验报告 专业:通信工程 姓名:王婧 班级:111041B 学号:111041226

数字钟的设计 目录 一、前言 (3) 二、设计目的 (3) 三、设计任务 (3) 四、设计方案 (3) 五、数字钟电路设计原理 (4) (一)设计步骤 (4) (二)数字钟的构成 (4) (三)数字钟的工作原理 (5) 六、总结 (9) 1

一、前言 此次实验是第一次做EDA实验,在学习使用软硬件的过程中,自然遇到很多不懂的问题,在老师的指导和同学们的相互帮助下,我终于解决了实验过程遇到的很多难题,成功的完成了实验,实验结果和预期的结果也是一致的,在这次实验中,我学会了如何使用Quartus II软件,如何分层设计点路,如何对实验程序进行编译和仿真和对程序进行硬件测试。明白了一定要学会看开发板资料以清楚如何给程序的输入输出信号配置管脚。这次实验为我今后对 EDA的进一步学习奠定了更好的理论基础和应用基础。 通过本次实验对数电知识有了更深入的了解,将其运用到了实际中来,明白了学习电子技术基础的意义,也达到了其培养的目的。也明白了一个道理:成功就是在不断摸索中前进实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。 2

二、设计目的 1.掌握数字钟的设计方法。 2熟悉集成电路的使用方法。 3通过实训学会数字系统的设计方法; 4通过实训学习元器件的选择及集成电路手册查询方法; 5通过实训掌握电子电路调试及故障排除方法; 6熟悉数字实验箱的使用方法。 三、设计任务 设计一个可以显示星期、时、分、秒的数字钟。 要求: 1、24小时为一个计数周期; 2、具有整点报时功能; 3、定时闹铃(未完成) 四、设计方案 一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器和定时器组成。干电路系统由秒信号发生 3

系统设计实验报告

系统设计实验报告——远程在线考试系统

目录软件需求说明书························1 引言··························· 1.1编写目的······················· 1.2背景························· 1.3定义························· 1.4参考资料······················· 2 程序系统的结构························ 3 程序设计说明·························

1引言 1.1编写目的 本文档的编写目的是为远程在线考试系统项目的设计提供: a.系统的结构、设计说明; b.程序设计说明; c. 程序(标识符)设计说明 1.2背景 随着网络技术的飞速发展,现在很多的大学及社会上其它的培训部门都已经开设了远程教育,并通过计算机网络实现异地教育。但是,远程教育软件的开发,就目前来说,还是处于起步的阶段。因此,构建一个远程在线考试系统,还是有很大的实际意义的。 根据用户提出的需求,本项目组承接该系统的开发工作 a.开发软件系统的名称:远程在线考试系统 b.本项目的任务提出者:福州大学软件学院 c.用户:各类大专院校学校、中小学校。 1.3定义 远程在线考试系统 远程在线考试系统是基于用Browser/Web模式下的,可以实现考试题库管理、多用户在线考试、自动阅卷功能的系统。

1.4参考资料 ?GB 8566 计算机软件开发规范 ?GB 8567 计算机软件产品开发文件编制指南?软件设计标准 ?《ASP与SQL-Server2000》清华大学出版社?《可行性研究报告》 ?《项目计划文档》 ? 2程序系统的结构 3程序1(标识符)设计说明

北京邮电大学数字电路实验报告

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称:QuartusII原理图输入 法设计与实现 学院:北京邮电大学 班级: 姓名: 学号:

一.实验名称和实验任务要求 实验名称:QuartusII原理图输入法设计与实现 实验目的:⑴熟悉用QuartusII原理图输入法进行电路设计和仿真。 ⑵掌握QuartusII图形模块单元的生成与调用; ⑶熟悉实验板的使用。 实验任务要求:⑴掌握QuartusII的基础上,利用QuartusII用逻辑 门设计实现一个半加器,生成新的半加器图像模 块。 ⑵用实验内容(1)中生成的半加器模块以及逻辑门 实现一个全加器,仿真验证其功能,并能下载到实 验板上进行测试,要求用拨码开关设定输入信号, 发光二级管显示输出信号。 ⑶用3线—8线译码器(74L138)和逻辑门实现要求 的函数:CBA F+ C + =,仿真验证其 + B C B A A A B C 功能,,并能下载到实验板上进行测试,要求用拨 码开关设定输入信号,发光二级管显示输出信号。二.设计思路和过程 半加器的设计实现过程:⑴半加器的应有两个输入值,两个输出值。 a表示加数,b表示被加数,s表示半加和, co表示向高位的进位。

⑵由数字电路与逻辑设计理论知识可知 b a s ⊕=;b a co ?= 选择两个逻辑门:异或门和与门。a,b 为异 或门和与门的输入,S 为异或门的输出,C 为与门的输出。 (3)利用QuartusII 仿真实现其逻辑功能, 并生成新的半加器图形模块单元。 (4)下载到电路板,并检验是否正确。 全加器的设计实现过程:⑴全加器可以由两个半加器和一个或门构 成。全加器有三个输入值a,b,ci ,两个输 出值s,co :a 为被加数,b 为加数,ci 为低 位向高位的进位。 ⑵全加器的逻辑表达式为: c b a s ⊕⊕= b a ci b a co ?+?⊕=)( ⑶利用全加器的逻辑表达式和半加器的逻 辑功能,实现全加器。 用3线—8线译码器(74L138)和逻辑门设计实现函数 CBA A B C A B C A B C F +++= 设计实现过程:⑴利用QuartusII 选择译码器(74L138)的图形模块

数字电路实验计数器的设计

数字电路与逻辑设计实验报告实验七计数器的设计 :黄文轩 学号:17310031 班级:光电一班

一、实验目的 熟悉J-K触发器的逻辑功能,掌握J-K触发器构成异步计数器和同步计数器。 二、实验器件 1.数字电路实验箱、数字万用表、示波器。 2.虚拟器件: 74LS73,74LS00, 74LS08, 74LS20 三、实验预习 1. 复习时序逻辑电路设计方法 ①根据设计要求获得真值表 ②画出卡诺图或使用其他方式确定状态转换的规律 ③求出各触发器的驱动方程 ④根据已有方程画出电路图。 2. 按实验内容设计逻辑电路画出逻辑图 Ⅰ、16进制异步计数器的设计 异步计数器的设计思路是将上一级触发器的Q输出作为下一级触发器的时钟信号,置所有触发器的J-K为1,这样每次到达时钟下降沿都发生一次计数,每次前一级 触发器从1变化到0都使得后一级触发器反转,即引发进位操作。 画出由J-K触发器组成的异步计数器电路如下图所示:

使用Multisim仿真验证电路正确性,仿真图中波形从上到下依次是从低位到高位 触发器的输出,以及时钟信号。: 可以看出电路正常执行16进制计数器的功能。 Ⅱ、16进制同步计数器的设计 较异步计数器而言,同步计数器要求电路的每一位信号的变化都发生在相同的时间点。

因此同步计数器各触发器的时钟脉冲必须是同一个时钟信号,这样进位信息就要放置在J-K 输入端,我们可以把J-K端口接在一起,当时钟下降沿到来时,如果满足进位条件(前几位触发器输出都为1)则使JK为1,发生反转实现进位。 画出由J-K触发器和门电路组成的同步计数器电路如下图所示 使用Multisim仿真验证电路正确性,仿真图中波形从上到下依次是从低位到高位触发器的输出,计数器进位输出,以及时钟信号。:

数字秒表的设计与实现实验报告

电子科技大学《数字秒表课程设计》 姓名: xxx 学号: 学院: 指导老师:xx

摘要 EDA技术作为电子工程领域的一门新技术,极大的提高了电子系统设计的效率和可靠性。文中介绍了一种基于FPGA在ISE10.1软件下利用VHDL语言结合硬件电路来实现数字秒表的功能的设计方法。采用VHDL硬件描述语言,运用ModelSim等EDA仿真工具。该设计具有外围电路少、集成度高、可靠性强等优点。通过数码管驱动电路动态显示计时结果。给出部分模块的VHDL源程序和仿真结果,仿真结果表明该设计方案的正确,展示了VHDL语言的强大功能和优秀特性。 关键词:FPGA, VHDL, EDA, 数字秒表

目录 第一章引言 (4) 第二章设计背景 (5) 2.1 方案设计 (5) 2.2 系统总体框图 (5) 2.3 -FPGA实验板 (5) 2.4 系统功能要求 (6) 2.5 开发软件 (6) 2.5.1 ISE10.1简介 (6) 2.5.2 ModelSim简介 (6) 2.6 VHDL语言简介 (7) 第三章模块设计 (8) 3.1 分频器 (8) 3.2 计数器 (8) 3.3 数据锁存器 (9) 3.4 控制器 (9) 3.5 扫描控制电路 (10) 3.6 按键消抖电路 (11) 第四章总体设计 (12) 第五章结论 (13) 附录 (14)

第一章引言 数字集成电路作为当今信息时代的基石,不仅在信息处理、工业控制等生产领域得到普及应用,并且在人们的日常生活中也是随处可见,极大的改变了人们的生活方式。面对如此巨大的市场,要求数字集成电路的设计周期尽可能短、实验成本尽可能低,最好能在实验室直接验证设计的准确性和可行性,因而出现了现场可编程逻辑门阵列FPGA。对于芯片设计而言,FPGA的易用性不仅使得设计更加简单、快捷,并且节省了反复流片验证的巨额成本。对于某些小批量应用的场合,甚至可以直接利用FPGA实现,无需再去订制专门的数字芯片。文中着重介绍了一种基于FPGA利用VHDL硬件描述语言的数字秒表设计方法,在设计过程中使用基于VHDL的EDA工具ModelSim对各个模块仿真验证,并给出了完整的源程序和仿真结果。

操作系统课程设计实验报告

河北大学工商学院 课程设计 题目:操作系统课程设计 学部信息学部 学科门类电气信息 专业计算机 学号2011482370 姓名耿雪涛 指导教师朱亮 2013 年6月19日

主要内容 一、设计目的 通过模拟操作系统的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。 二、设计思想 实现一个模拟操作系统,使用VB、VC、CB等windows环境下的程序设计语言,以借助这些语言环境来模拟硬件的一些并行工作。模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。 设计模板如下图: 注:本人主要涉及设备管理模块

三、设计要求 设备管理主要包括设备的分配和回收。 ⑴模拟系统中有A、B、C三种独占型设备,A设备1个,B设备2个,C设备2个。 ⑵采用死锁的预防方法来处理申请独占设备可能造成的死锁。 ⑶屏幕显示 注:屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。 设备管理模块详细设计 一、设备管理的任务 I/O设备是按照用户的请求,控制设备的各种操作,用于完成I/O 设备与内存之间的数据交换(包括设备的分配与回收,设备的驱动管理等),最终完成用户的I/O请求,并且I/O设备为用户提供了使用外部设备的接口,可以满足用户的需求。 二、设备管理函数的详细描述 1、检查设备是否可用(主要代码) public bool JudgeDevice(DeviceType type) { bool str = false; switch (type) { case DeviceType.a: {

数字电路及设计实验

常用数字仪表的使用 实验内容: 1.参考“仪器操作指南”之“DS1000操作演示”,熟悉示数字波器的使用。 2.测试示波器校正信号如下参数:(请注意该信号测试时将耦合方式设置为直流耦合。 峰峰值(Vpp),最大值(Vmax),最小值(Vmin), 幅值(Vamp),周期(Prd),频率(Freq) 顶端值(Vtop),底端值(Vbase),过冲(Overshoot), 预冲(Preshoot),平均值(Average),均方根值(Vrms),即有效值 上升时间(RiseTime),下降时间(FallTime),正脉宽(+Width), 负脉宽(-Width),正占空比(+Duty),负占空比(-Duty)等参数。 3.TTL输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低 电平是0.2V。最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V。 请采用函数信号发生器输出一个TTL信号,要求满足如下条件: ①输出高电平为3.5V,低电平为0V的一个方波信号; ②信号频率1000Hz; 在示波器上观测该信号并记录波形数据。

集成逻辑门测试(含4个实验项目) (本实验内容选作) 一、实验目的 (1)深刻理解集成逻辑门主要参数的含义和功能。 (2)熟悉TTL 与非门和CMOS 或非门主要参数的测试方法,并通过功能测试判断器件好坏。 二、实验设备与器件 本实验设备与器件分别是: 实验设备:自制数字实验平台、双踪示波器、直流稳压电源、数字频率计、数字万用表及工具; 实验器件:74LS20两片,CC4001一片,500Ω左右电阻和10k Ω左右电阻各一只。 三、实验项目 1.TTL 与非门逻辑功能测试 按表1-1的要求测74LS20逻辑功能,将测试结果填入与非门功能测试表中(测试F=1、0时,V OH 与V OL 的值)。 2.TTL 与非门直流参数的测试 测试时取电源电压V CC =5V ;注意电流表档次,所选量程应大于器件电参数规范值。 (1)导通电源电流I CCL 。测试条件:输入端均悬空,输出端空载。测试电路按图1-1(a )连接。 (2)低电平输入电流I iL 。测试条件:被测输入端通过电流表接地,其余输入端悬空,输出空载。测试电路按图1-1(b )连接。 (3)高电平输入电流I iH 。测试条件:被测输入端通过电流表接电源(电压V CC ),其余输入端均接地,输出空载。测试电路按图1-1(c )连接。 (4)电压传输特性。测试电路按图1-2连接。按表1-2所列各输入电压值逐点进行测量,各输入电压值通过调节电位器W 取得。将测试结果在表1-2中记录,并根据实测数据,做出电压传输特性曲线。然后,从曲线上读出V OH ,V OL ,V on ,V off 和V T ,并计算V NH ,V NL 等参数。 表1-1 与非门功能测试表

数字系统设计软件实验报告

实验一QuartusⅡ9.1软件的使用 一、实验目的: 1、通过实现书上的例子,掌握QUARTUSII9.1软件的使用; 2、编程实现3-8译码电路以掌握VHDL组合逻辑的设计以及QUARTUSII9.1软件的使用。 二、实验流程: 1、仔细阅读书上的操作指南,学会在QuartusⅡ9.1中创建新的工程,创建过程如下所示: 1)、建立新设计项目: ①启动QuartusⅡ9.1软件,在软件的管理器窗口选File下拉菜单,即File→New Project Wizard,则出现新建工程向导窗口。如下所示: ②点击Next按钮,将弹出新建工程设置窗口,如下图所示。在新建工程设置窗口中设置好工程的存放路径、工程名称等。

③点击Next进入添加文件窗口,如下图。由于尚未创建文件,跳过该步骤。 ④点击Next按钮,进入选择目标芯片窗口。在这里我们选择Cyclone系列的EP1C6Q240C8,如下图:

⑤点击Next按钮,进入EDA工具设置窗口,通常选择默认的“None”,表示选择QuartusⅡ自带的仿真器和综合器。如下图: ⑥点击Next按钮,弹出New Project Wizard概要对话框,在这个窗口中列出了所有前面设置的结果。若有错误则点击Back回去修改,否则点击Finish结束,即完成新工程的设定工作。如下图:

2)、文本设计输入: ①在QuartusⅡ主界面菜单栏中选择File下拉菜单中的New,弹出新建设计文件窗口,选择VHDL File项,点击OK按钮即可打开VHDL文本编辑窗口,其默认文件名为“Vhdl.vhd”。 ②出现文本编辑窗口后,我们可以直接在空白界面中键入所设计的VHDL文本。这时我们将书本中的程序输入到文本编辑环境中去。程序如下: library IEEE; use IEEE.std_logic_1164.all; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity count10 is port(clk,load,en:in std_logic; data_in:in std_logic_vector(3 downto 0); seg:out std_logic_vector(6 downto 0)); end count10; architecture beha of count10 is signal qout:std_logic_vector(3 downto 0); signal q_temp:std_logic_vector(3 downto 0); begin process(clk,load) begin

数字电路与系统设计实验报告

数字电路与系统设计实验报告 学院: 班级: 姓名:

实验一基本逻辑门电路实验 一、实验目的 1、掌握TTL与非门、与或非门和异或门输入与输出之间的逻辑关系。 2、熟悉TTL中、小规模集成电路的外型、管脚和使用方法。 二、实验设备 1、二输入四与非门74LS00 1片 2、二输入四或非门74LS02 1片 3、二输入四异或门74LS86 1片 三、实验内容 1、测试二输入四与非门74LS00一个与非门的输入和输出之间的逻辑关系。 2、测试二输入四或非门74LS02一个或非门的输入和输出之间的逻辑关系。 3、测试二输入四异或门74LS86一个异或门的输入和输出之间的逻辑关系。 四、实验方法 1、将器件的引脚7与实验台的“地(GND)”连接,将器件的引脚14与实验台的十5V连接。 2、用实验台的电平开关输出作为被测器件的输入。拨动开关,则改变器件的输入电平。 3、将被测器件的输出引脚与实验台上的电平指示灯(LED)连接。指示灯亮表示输出低电平(逻辑为0),指示灯灭表示输出高电平(逻辑为1)。 五、实验过程 1、测试74LS00逻辑关系 (1)接线图(图中K1、K2接电平开关输出端,LED0是电平指示灯) (2)真值表 2、测试74LS02逻辑关系

(1)接线图 (2)真值表 3、测试74LS86逻辑关系接线图 (1)接线图 (2)真值表 六、实验结论与体会 实验是要求实践能力的。在做实验的整个过程中,我们首先要学会独立思考,出现问题按照老师所给的步骤逐步检查,一般会检查处问题所在。实在检查不出来,可以请老师和同学帮忙。

实验二逻辑门控制电路实验 一、实验目的 1、掌握基本逻辑门的功能及验证方法。 2、掌握逻辑门多余输入端的处理方法。 3、学习分析基本的逻辑门电路的工作原理。 二、实验设备 1、基于CPLD的数字电路实验系统。 2、计算机。 三、实验内容 1、用与非门和异或门安装给定的电路。 2、检验它的真值表,说明其功能。 四、实验方法 按电路图在Quartus II上搭建电路,编译,下载到实验板上进行验证。 五、实验过程 1、用3个三输入端与非门IC芯片74LS10安装如图所示的电路。 从实验台上的时钟脉冲输出端口选择两个不同频率(约7khz和14khz)的脉冲信号分别加到X0和X1端。对应B和S端数字信号的所有可能组合,观察并画出输出端的波形,并由此得出S和B(及/B)的功能。 2、实验得真值表

软件设计与体系结构实验报告

福建农林大学计算机与信息学院 实验报告 课程名称:软件设计与体系结构 姓名:陈宇翔 系:软件工程系 专业:软件工程 年级:2007 学号:070481024 指导教师:王李进 职称:讲师 2009年12月16日

实验项目列表

福建农林大学计算机与信息学院实验报告 学院:计算机与信息学院专业:软件工程系年级:2007 姓名:陈宇翔 学号:070481024 课程名称:软件设计与体系结构实验时间:2009-10-28 实验室田实验室312、313计算机号024 指导教师签字:成绩: 实验1:ACME软件体系结构描述语言应用 一、实验目的 1)掌握软件体系结构描述的概念 2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作 二、实验学时 2学时。 三、实验方法 由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。 四、实验环境 计算机及ACMESTUDIO。 五、实验内容 利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。 六、实验操作步骤 一、导入Zip文档 建立的一个Acme Project,并且命名为AcmeLab2。如下图:

接着导入ZIP文档,导入完ZIP文档后显示的如下图: 二、修改风格 在AcmeLab2项目中,打开families下的TieredFam.acme.如下图: 修改组件外观 1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify 按钮,将打开外观编辑器对话框。 2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选 择Repository类型. 3. 在Color/Line Properties section修改填充颜色为深蓝色。 4. 在颜色对话框中选择深蓝色,并单击 [OK]. 5. 修改图形的边框颜色为绿色 7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK] 产生的图形如下图:

数字系统设计实验

多周期MIPS微处理器设计 一、实验目的 (1)、熟悉MIPS指令系统。 (2)、掌握MIPS多周期微处理器的工作原理和实现方法。 (3)、掌握控制器的微程序设计方法。 (4)、掌握MIPS多周期微处理器的测试方法。 (5)、了解用软件实现数字系统设计的方法。 二、实验任务 设计一个32位MIPS多周期微处理器,具体的要求如下: 1、至少运行下列的6类32条MIPS指令。 (1)、算术逻辑指令:ADD、ADDU、SUB、SUBU、ADDI、ADDIU。 (2)、逻辑运算指令:AND、OR、NOR、XOR、ANDI、ORI、XORI、SLT、SLTU、SLTI、SLTIU。 (3)、位移指令:SLL、SLLV、SRL、SRLV、SRA。 (4)、条件分支指令:BEQ、BNE、BGEZ、BGTZ、BLEZ、BLTZ。 (5)、无条件跳转指令:J、JR。 (6)、数据传送指令:LW、SW。 2、在XUP Virtex-2 Pro开发系统中实现该32位MIPS多周期微处理器,要求运行速度(CPU 工作时钟)大于25MHz。 三、实验设备 1、装有ISE、Modelsim SE和Chipscope Pro软件的计算机。 2、XUP Virtex-2 pro开发系统一套。 3、SVGA显示器一台。 四、MIPS指令简介 MIPS指令集具有以下特点: 1、简单的LOAD/STORE结构:所有的计算机类型的指令均从寄存器堆中读取数据并

把结果写入寄存器堆中,只有LOAD和STORE指令访问存储器。 2、易于流水线CPU的设计:MIPS指令集的指令格式非常规整,所有的指令均为32位,而且指令操作码在固定的位置上。 3、易于编译器的开发:一般来讲,编译器在编译高级语言程序时,很难用到复杂的指令,MIPS指令的寻址方式非常的简单,每条指令的操作也非常简单。 MIPS系统的寄存器结构采用标准的32位寄存器堆,共32个寄存器,标号为0-31。其中第0号寄存器永远为常数0。 CPU所支持的MIPS指令格式一共有3种,分别为R、I、J。R类型的指令从寄存器堆中读出两个源操作数,计算结果写回到寄存器堆;I类型的指令使用一共16为立即数作为源操作数;J类型的指令使用一共26位立即数作为跳转的目标地址(target address)。 MIPS的指令格式如图1所示,指令格式中OP(operation)是指令操作码;RS(register sourse)是源操作数的寄存器号;RD(register destination)是目标寄存器号;RT(register target)可以既是源寄存器号,又可以使目标寄存器号,由具体位置决定;FUNCT(function)可以被认为是扩展的操作码;SA(shift amount)由移位指令使用,定义移位位数。 I型中的Immediate是16为立即数。立即数型算术逻辑运算指令、数据传输指令和条件分支指令均采用这种形式。在立即数型算术逻辑运算指令、数据传送指令中,Immediate进行符号扩展至32位;而在条件分支指令中,Immediate先进行符号扩展至32位再左移2位。 在J形指令中26为target由JUMP指令使用,用于产生跳转的目标地址。 下面通过表格简单介绍本实验使用的MIPS核心指令。表1列出了本实验使用到的MIPS指令的格式和OP、FUNCT等简要信息。

基于FPGA的现代数字系统设计实验报告

****大学 实验报告 课程名称:基于FPGA的现代数字系统设计 实验名称:基于HDL十进制计数显示系统设置 姓名: 学号: 班级: 指导教师: ****大学信息工程学院制

基于HDL十进制计数显示系统设置 一、实验要求 1.设计具有异步复位,同步使能的十进制计数器,其计数结果通过七段数码管,发光二极管等进行显示。 2.主要设计的模块有十进制计数模块和数码管驱动模块以及消抖模块。 3.需要将按键输入的时钟,然后通过消抖模块消抖后,再输出至后续使用。 4.共阴极数码管驱动。 二、实验原理 本次的设计是一个具有数显输出的十进制计数器。示意图如2.1所示。 图2.1 七段数码管属于数码管的一种,是由7段二极管组成。按发光二极管单元衔接方式分为共阳极数码管和共阴极数码管。本实验使用共阴数码管。它是指将一切发光二极管的阴极接到一同构成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平相应字段就点亮,当某一字段的阳极为低电平相应字段就不亮。 显示译码器,用HDL语言判断CLK的上升沿信号,每次收到一次上升沿信号,计数器的值加一并显示在数码管上,所以本次实验会将十进制计数与七段数码管的显示分别写在两个模块里面。 系统模块划分及引脚连线图如下:

三、实验步骤(设计输入) 1.十进制计数器模块 module cnt10(clk,clr,ena,sum,cout); input clk,clr,ena; output [3:0] sum; output cout; reg [3:0] sum; reg cout; always @ (posedge clk or posedge clr) if(clr==1) begin sum <= 4'b0000; cout<= 1'b0;end else if(ena==1'b1) if(sum==4'b1001) begin sum <= 4'b0000; cout<= 1'b1; end else begin sum <= sum+1; cout<= 1'b0; end else begin sum <= sum; cout<= cout; end Endmodule 程序主要思路是用always等待clk与clr的上升沿信号,因为是异步清零所以在always 中也要等待clr的清零信号。用if语句判断clr信号,为1则清零。判断ena信号,为1进行计数操作,为0输出保持不变。计数中,判断sum的值如果为9时,进行进位操作,并将sum值赋值为0 2.数码管驱动模块 module led7 (sum ,out ); input [3:0] sum; output [6:0] out; reg [6:0] out ; always @(sum) begin out = {7{1'b0}};

操作系统课程设计实验报告proj2

操作系统课程设计报告 班级: 团队成员:

目录 ................................................................................................................ 错误!未定义书签。 一、实验要求:建立线程系统................................................................... 错误!未定义书签。 1.1Task 2.1实现文件系统调用 (3) 1.1.1题目要求 (3) 1.1.2题目分析与实现方案 (3) 1.1.3关键点与难点 (4) 1.1.4实现代码 (4) 1.2 Task 2.2 完成对多道程序的支持 (5) 1.2.1题目要求 (5) 1.2.2题目分析与实现方案 (5) 1.2.3关键点与难点 (6) 1.2.4实现代码 (7) 1.3 Task 2.3 实现系统调用 (7) 1.3.1题目要求 (7) 1.3.2题目分析与实现方案 (8) 1.3.3关键点与难点 (9) 1.3.4实现代码 (9) 1.4 Task 2.4 实现彩票调度 (10) 1.4.1题目要求 (10) 1.4.2题目分析与实现方案 (10) 1.4.3关键点与难点 (11) 1.4.4实现代码 (11) 二、测试结果............................................................................................ 2错误!未定义书签。

数字系统设计实验三

实验四简易数字钟下载 1、实验目的 1)学习掌握数字系统综合设计方法。 2)学习掌握层次设计方法。 3)学习掌握设计下载方法。 4)学习掌握实验系统使用方法。 2、实验原理 数字钟是对输入时基秒脉冲进行计数,依次输出秒数值、分数值、小时数值,从而确定时钟时间,其原理框图如下图所示。 Image 简易数字钟原理图 简易数字钟原理图 实际的数字钟设计中还需要增加年月日的功能,这里框图中

也省略了校时功能的结构。 3、实验内容 1)选择XC2S200PQ208器件建立一个新的工程。 2)在上述工程中,采用VHDL语言的方法设计上述简易数字钟。 3)参考实验系统使用说明,按下列要求锁定引脚。秒、分钟、小时由实验系统的J1、J2输出,显示输出的时分秒间隔一位数码管。时钟输入由J7的1脚输入。 4)下载编程并验证设计结果。 4、实验设备 1)清华同方PⅣ 2.4G\256M60G 2)ISE 6.2i—Windows软件系统 3)多功能EDA实验系统(V型) 5、实验步骤 1)写出简易数字钟的设计程序。 2)画出简易数字钟的仿真波形。 3)将程序下载到芯片中。 a.首先点击菜单Assignments->Device,选择Device family->Cyclone IV E,然后选择芯片型号Available device->EP4CE6F17C8。 b.进行管脚锁定,选择菜单Assignments->Pin Planner,在Location列下为输入\输出变量选择对应的管脚进行锁定。 c.选择快捷菜单进行编译Start Compilation,生成下载文件。 d.点击Tools->Programmer e.点击Add Device,在Device->Cyclone IVE中,选择Device

系统设计实验报告

电子商务系统分析与设计 系统设计

目录第三章系统设计 3.1电子商务系统总体结构设计 3.1.1系统边界 3.1.2 系统组成结构

3.1.3 系统模块结构设计 根据系统的功能,对前台功能和后台功能模块分别进行分析: 前台用户模块 主要包括古越文化品读,商品信息查看,分类展示,商品查询,用户 注册,用户登录,用户购买商品等8个主要模块。 前台用户模块如图所示: 前台功能模块 最新商品 商品展示 商品查询 商品购买 古越文化展示 用户注册 用户登录

用户前台模块图

后台功能模块 管理员模块的主要功能是实现对文静电子商城网站的维护和管理,如商品的添加、修改、删除等管理操作;商品大类的添加、查看、删除、修改等管理操作;管理员的管理;用户的管理;订单的管理等操作。管理员功能结构如图所示。 管理员功能模块图 商品管理模块 管理员管理模块 文化展示模块 用户管理模块 订单管理模块 商品添加 商品修改 商品删除 管理员添加 管理员修改 管理员删除 文化展示删除 文化展示修改 文化展示添加 用户修改 用户删除 后台管理员管理功能模块图 3.1.4 系统功能模块间的关系 公司职员 用户 订单及结算信息 3.1.5 系统总体机构图 3.2网络基础设施

3.2.1系统运行环境 服务器:主流计算机服务器 如Dell PowerEdge R710 操作系统:Windows Server 2003 Web服务器:IIS6.0 数据库: Microsoft SQL Server 2005 3.2.2硬件环境 CPU:2.0GHZ以上 内存:2G MB以上 硬盘:160G以上 3.2.3安全选择 电子支付系统中的安全设计: (1)用户与商家间的信息安全——采用数字信封与数字签名技术 (2)商家与银行间的信息安全——采用数字信封与数字签名技术 (3)用户与银行间的信息安全——采用数字信封与数字签名技术 (4)用户、商家、银行之间的信息安全——双签名技术

华南理工大学数字系统设计实验3报告资料

实验三基于状态机的交通灯控制 地点:31号楼312房;实验台号:12 实验日期与时间:2017年12月08日评分: 预习检查纪录:批改教师: 报告内容: 一、实验要求 1、开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。 2、交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。 3、为了方便观察,本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。编程之前要求同学们先画好ASM图。 4、1Hz分频模块请采用第二次实验中的内容,7段码显示模块请参考书本相关内容。 5、第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码:方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。和其它VHDL编写的模块可以混搭在一个电路图中使用。EP2C8Q208C8的SCTP,SHCP,SER_DATA数码管信号线通过两块74HC595集成块,再驱动数码管。 6、芯片型号:cyclone:EP2C8Q208C8,开发板所有资料都在“新板”附件中,其中管脚配置在实验要求中是不对的,以“新板”附件中为准。 二、实验内容 1设计要求 开发板上三个led等分别代表公路上红黄绿三种颜色交通灯。交通灯状态机初始状态为红灯,交通灯工作过程依次是红→绿→黄→红。本次实验要求红灯的显示时间为9s,绿灯显示时间为6s,黄灯显示时间为3s,时间需要倒计时,在数码管上显示。

2设计思路 (1)数码管驱动 第三次实验课用到EP2C8Q208C8通过74HC595驱动数码管,有两种方法写该模块代码: 方法1,用VHDL语言写,(自己写VHDL代码有加实验分)。 方法2,可调用verilog数码管驱动模块,该模块在附件“seg.zip”中。和其它VHDL 编写的模块可以混搭在一个电路图中使用。EP2C8Q208C8的SCTP,SHCP,SER_DATA 数码管信号线通过两块74HC595集成块,再驱动数码管。 (2)交通灯流程设计 我根据实验要求,将实验设计分为6部分:分频器模块、复位部分、红灯部分、黄灯(红转黄时)部分、绿灯部分、扩位模块。其中复位部分包括1个状态:reset0,红灯部分包括9个状态:r1到r9,绿灯部分包括6个状态:r1到r6,黄灯部分包括3个状态:y1到y3。其中,对脉冲信号进行2的n次方分之一的分频,实现分频器分频。扩位模块采用补0操作实现将4位二进制数转为16位二进制数。

数字电路组合逻辑电路设计实验报告

实验三组合逻辑电路设计(含门电路功能测试)

一、实验目的 1.掌握常用门电路的逻辑功能 2.掌握小规模集成电路设计组合逻辑电路的方法 3.掌握组合逻辑电路的功能测试方法 二、实验设备与器材 Multisim 、74LS00 四输入2与非门、示波器、导线 三、实验原理 TTL集成逻辑电路种类繁多,使用时应对选用的器件做简单逻辑功能检查,保证实验的顺利进行。 测试门电路逻辑功能有静态测试和动态测试两种方法。静态测试时,门电路输入端加固定的高(H)、低电平,用示波器、万用表、或发光二极管(LED)测出门电路的输出响应。动

态测试时,门电路的输入端加脉冲信号,用示波器观测输入波形与输出波形的同步关系。 下面以74LS00为例,简述集成逻辑门功能测试的方法。74LS00为四输入2与非门,电路图如3-1所示。74LS00是将四个二输入与非门封装在一个集成电路芯片中,共有14条外引线。使用时必须保证在第14脚上加+5V电压,第7脚与底线接好。 整个测试过程包括静态、动态和主要参数测试三部分。 表3-1 74LS00与非门真值表 1.门电路的静态逻辑功能测试 静态逻辑功能测试用来检查门电路的真值表,确认门电路的逻辑功能正确与否。实验时,可将74LS00中的一个与非门的输入端A、B分别作为输入逻辑变量,加高、低电平,观测输出电平是否符合74LS00的真值表(表3-1)描述功能。 测试电路如图3-2所示。试验中A、B输入高、低电平,由数字电路实验箱中逻辑电平产生电路产生,输入F可直接插至逻辑电平只是电路的某一路进行显示。

仿真示意 2.门电路的动态逻辑功能测试 动态测试用于数字系统运行中逻辑功能的检查,测试时,电路输入串行数字信号,用示波器比较输入与输出信号波形,以此来确定电路的功能。实验时,与非门输入端A加一频率为

相关文档
相关文档 最新文档