CPU报告

CPU报告
CPU报告

Computer Organization and Architecture

Course Design

CPU REPORT

04006628 邓睿 04006618 肖游龙 Time:

2009.04.08

Purpose

The purpose of this project is to design a simple CPU (Central Processing Unit). This CPU has basic instruction set, and we will utilize its instruction set to generate a very simple program to verify its performance. For simplicity, we will only consider the relationship among the CPU, registers, memory and instruction set. That is to say we only need consider the following items: Read/Write Registers, Read/Write Memory and Execute the instructions.

At least four parts constitute a simple CPU: the control unit, the internal registers, the ALU and instruction set, which are the main aspects of our project design and will be studied.

Instruction Set

Single-address instruction format is used in our simple CPU design. The instruction word contains two sections: the operation code(opcode), which defines the function of instructions (addition, subtraction, logic operations, etc.); the address part, in most instructions, the address part contains the memory location of the datum to be operated, we called it direct addressing. In some instructions, the address part is the operand, which is called immediate addressing.

For simplicity, the size of memory is 256 16 in the computer. The instruction word has 16 bits. The opcode part has 8 bits and address part has 8 bits. The instruction word format can be expressed in Figure 1

OPCODE [15..8]ADDRESS

[7..0]

Figure 1 the instruction format

Internal Registers and Memory

MAR (Memory Address Register)

MAR contains the memory location of the word to be read from the memory or written into the memory. Here, READ operation is denoted as the CPU reads from memory, and WRITE operation is denoted as the CPU writes to memory. In our design, MAR has 8 bits to access one of 256 addresses of the memory.

MBR(Memory Buffer Register)

MBR contains the value to be stored in memory or the last value read from memory. MBR is connected to the address lines of the system bus. In our design, MBR has 16

bits.

PC (Program Counter)

PC keeps track of the instructions to be used in the program. In our design, PC has 8 bits.

IR (Instruction Register)

IR contains the opcode part of an instruction. In our design, IR has 8 bits.

BR (Buffer Register)

BR is used as an input of ALU, it holds other operand for ALU. In our design, BR has 16 bits.

ACC (Accumulator)

ACC holds one operand for ALU, and generally ACC holds the calculation result of ALU. In our design, ACC has 16 bits.

MR (Multiplier Register)

MR is used for implementing the MPY instruction, holding the multiplier at the beginning of the instruction. When the instruction is executed, it holds part of the product.

DR (Division Register)

DR is used for implementing the DIV instruction, you can define it according to your division algorithm.

LPM_RAM_DQ

LPM_RAM_DQ is a RAM with separate input and output ports, it works as memory, and its size is 256 16. Although it’s not an internal register of CPU, we need it to simulate and test the performance of CPU.

All the registers are positive-edge-triggered.

All the reset signals for the registers are synchronized to the clock signal.

ALU

ALU (Arithmetic Logic Unit) is a calculation unit which accomplishes basic arithmetic and logic operations. In our design, some operations must be supported which are listed as follows

T able 1 ALU Operations

Operations Explanations

ADD (ACC)?(ACC)+(BR)

SUB (ACC)?(ACC)-(BR)

AND (ACC)?(ACC) and (BR)

OR (ACC)?(ACC) or (BR)

NOT (ACC)?Not (A CC)

SRL (ACC)?Shift (A CC) to Left 1 bit

SRR (ACC)?Shift (A CC) to Right 1 bit Microprogrammed Control Unit

We have learnt the knowledge of Microprogrammed control unit. Here, we only review some terms and basic structures.

In the Microprogrammed control, the microprogram consists of some microinstructions and the microprogram is stored in control memory that generates all the control signals required to execute the instruction set correctly. The microinstruction contains some micro-operations which are executed at the same time.

Sequencing Logic Control Address Register

Control Memory

Control Buffer Register

Figure 2 Control Unit Micro-architecture

Figure 2shows the key elements of such an implementation. The set of microinstructions is stored in the control memory. The control address register contains the address of the next microinstructions to be read. When a microinstruction is read from the control memory, it is transferred to a control buffer register. The register connects to the control lines emanating from the control unit. Thus, reading a microinstruction from the control memory is the same as executing that microinstruction. The third element shown in the figure is a sequencing unit that loads the control address register and issues a read command.

CPU Design

M

B

R

M A R

PC IR

ACC

ALU

Control

Unit

B

R

Control signals

Flags

Control

Signals

Figure 3 CPU data path and control signals

Figure 3indicates a simple CPU architecture and its use of a variety of internal data paths and control signals. Our CPU design should be based on this architecture. Example: LOAD instruction

MBR<=memory

IR<=MBR

MAR<=MBR

PC<=PC+1

MBR<=memory

BR<=MBR

ACC<=0

ACC<=ACC+BR

MAR<=PC

Figure 4 Control Flowchart of the LOAD instruction

T able 2 Some Control signals for the LOAD instruction

Bit in Control Memory Micro-operation Meaning

C0 CAR<=CA R+1 Control Address Increment

C1 CAR<=*** Control Address Redirection, depends on the position of microinstruction

C2 CAR<=0 Reset Control Address to zero position

C3 MBR<=memory Memory Content to MBR

C4 IR<=MBR[15..8] Copy MBR[15..8] to IR for OPCODE

C5 MAR<=MBR[7..0] Copy MBR[7..0] to MAR for address

C6 PC<=PC+1 Increment PC for indicating position

C7 BR<=MBR Copy MBR data to BR for buffer to A LU

C8 ACC<=0 Reset ACC register to zero

C9 ACC<=A CC+BR Add BR to A CC

C10 MAR<=PC Copy PC value to MAR for next address

……………

Then according to the control flowchart and the table, the microprogram and control signals of the LOAD instruction is:

T able 3 Microprogram for LOAD instruction

Microprogram Control signals

MBR<=memory, CAR<=CA R+1 C3, C0

IR<=MBR[15..8], CA R<=CAR+1 C4, C0

CAR<=*** (*** is determined by OPCODE) C1

MAR<=MBR[7..0], PC<=PC+1, CA R<=CAR+1 C5, C6, C0

MBR<=memory, CAR<=CA R+1 C3, C0

BR<=MBR, A CC<=0, CAR<=CA R+1 C7, C8, C0

ACC<=A CC+BR, CAR<=CA R+1 C9, C0

MAR<=PC, CA R<=0 C10,C2

Design description results

According to the introduction an requirements, we designed the micro operations as follows:

STORE X IRopcode←MBR,CAR←CAR+1

(CAR←opcode)

MAR←MBR7-0,PC←PC+1,CAR←CAR+1

MBR←ACC,CAR←CAR+1

memory←MBR,CAR←CAR+1 W

MAR←PC7-0,CAR←0

C17,C4

C5

C13,C19,C4

C16,C4

C14,C4

C12,C6

LOAD X MBR←memory,CAR←CAR+1 R

IRopcode←MBR,CAR←CAR+1

(CAR←opcode)

MAR←MBR7-0,PC←PC+1,CAR←CAR+1

MBR←memory,CAR←CAR+1 R

BR←MBR,ACC←0,CAR←CAR+1

ACC←ACC+BR,CAR←CAR+1

MAR←PC,CAR←0

C15,C4

C17,C4

C5

C13,C19,C4

C15,C4

C21,C24,C4

C22,C4

C12,C6

ADD X MBR←memory,CAR←CAR+1 R

IRopcode←MBR,CAR←CAR+1

(CAR←opcode)

MAR←MBR7-0,PC←PC+1,CAR←CAR+1

MBR←memory,CAR←CAR+1 R

BR←MBR,CAR←CAR+1

ACC←ACC+BR,CAR←CAR+1

MAR←PC,CAR←0

C15,C4

C17,C4

C5

C13,C19,C4

C15,C4

C21,C4

C22,C4

C12,C6

SUB X MBR←memory,CAR←CAR+1 R

IRopcode←MBR,CAR←CAR+1

(CAR←opcode)

MAR←MBR7-0,PC←PC+1,CAR←CAR+1

MBR←memory,CAR←CAR+1 R

BR←MBR,CAR←CAR+1

ACC←ACC-BR,CAR←CAR+1

MAR←PC,CAR←0

C15,C4

C17,C4

C5

C13,C19,C4

C15,C4

C21,C4

C23,C4

C12,C6

JMPGEZ X MBR←memory, CAR←CAR+1 R

IRopcode←MBR, CAR←CAR+1

(CAR←opcode)

IF ACC≥0 THEN PC←MBR9-0, CAR←CAR+1

MAR←PC, CAR←0

ELSE PC←PC+1, CAR←CAR+1

MAR←PC, CAR←0

C15,C4

C17,C4

C5

C18,C4

C12,C6

C19,C4

C12,C6

HALT MBR←memory,CAR←CAR+1 R

IRopcode←MBR,CAR←CAR+1

(CAR←opcode)

PC←0, ACC←0, CAR←CAR+1

MAR←PC, CAR←0

C15,C4

C17,C4

C5

C20,C24,C4

C12,C6

MPY IRopcode←MBR, CAR←CAR+1

(CAR←opcode)

MAR←MBR7-0, PC←PC+1, CAR←CAR+1

MBR←memory, CAR←CAR+1 R

QR←MBR, CAR←CAR+1

MBR←ACC, CAR←CAR+1

BR←MBR, CAR←CAR+1

0←ACC, CNT←16,CAR←CAR+1

IF multi_add =1 then ACC←ACC+BR, SHIFTR

ELSIF multi_sub=1 then ACC←ACC-BR, SHIFTR

ELSIF multi_shift=1 then SHIFTR

MAR←PC, CAR←0

C17,C4

C5

C13,C19,C4

C15,C4

C26,C4

C16,C4

C21,C4

C28,C26,C4

C27,C25,C22

C27,C25,C23

C27,C25

C12,C6

AND MBR←memory, CAR←CAR+1 R

IRopcode←MBR, CAR←CAR+1

(CAR←opcode)

MAR←MBR7-0, PC←PC+1, CAR←CAR+1

MBR←memory, CAR←CAR+1 R

BR←MBR, CAR←CAR+1

ACC←ACC and BR, CAR←CAR+1

MAR←PC, CAR←0

C15,C4

C17,C4

C5

C13,C19,C4

C15,C4

C21,C4

C1,C4

C12,C6

OR MBR←memory, CAR←CAR+1 R

IRopcode←MBR, CAR←CAR+1

(CAR←opcode)

MAR←MBR7-0, PC←PC+1, CAR←CAR+1

MBR←memory, CAR←CAR+1 R

BR←MBR, CAR←CAR+1

ACC←ACC or BR, CAR←CAR+1

MAR←PC, CAR←0

C15,C4

C17,C4

C5

C13,C19,C4

C15,C4

C21,C4

C2,C4

C12,C6

NOT MBR←memory, CAR←CAR+1 R

IRopcode←MBR, CAR←CAR+1

(CAR←opcode)

MAR←MBR7-0, PC←PC+1, CAR←CAR+1

MBR←memory, CAR←CAR+1 R

BR←MBR, CAR←CAR+1

ACC←ACC not BR, CAR←CAR+1

MAR←PC, CAR←0

C15,C4

C17,C4

C5

C13,C19,C4

C15,C4

C21,C4

C3,C4

C12,C6

SHIFTR IRopcode←MBR, CAR←CAR+1

(CAR←opcode)

MAR←MBR7-0, PC←PC+1, CAR←CAR+1

MBR←memory, CAR←CAR+1 R

BR←MBR, ACC←0, CAR←CAR+1

ACC←ACC+BR, CAR←CAR+1

SHIFTR ACC, CAR←CAR+1

MAR←PC, CAR←0

C17,C4

C5

C13,C19,C4

C15,C4

C21,C24,C4

C22,C4

C25,C4

C12,C6

SHIFTL MBR←memory, CAR←CAR+1 R

IRopcode←MBR, CAR←CAR+1

(CAR←opcode)

MAR←MBR7-0, PC←PC+1, CAR←CAR+1

MBR←memory, CAR←CAR+1 R

BR←MBR, ACC←0, CAR←CAR+1

ACC←ACC+BR, CAR←CAR+1

SHIFTR ACC, CAR←CAR+1

MAR←PC, CAR←0

C15,C4

C17,C4

C5

C13,C19,C4

C15,C4

C21,C24,C4

C22,C4

C7,C4

C12,C6

The meaning of every bit of the control memory (ROM) according to your design.

The micro-instructions are stored in the control memory sequentially, starting from 00000000 (HEX). If a control signal is C12, the 12th bit in the control memory should be 1 and the others are all 0.

Bit in read-only control

memory (Bit of ROM)

Micro-operation Control signal name C12MAR←PC7-0PC_into_MA

C13MAR←MBR7-0MB_into_MA

C14memory←MBR ram_write

C15MBR←memory ram_read

C16MBR←ACC AC_into_MB

C17IRopcode←MBR15-12MB_into_IRopcode

C18PC←MBR9-0MB_into_PC

C19PC←PC+1 Increment_PC

C20PC←0 reset_PC

C21BR←MBR MB_into_BR

C22ACC←ACC+BR ADD

C23ACC←ACC-BR SUB

C24ACC←0 reset_ACC

C25shift ACC to right SHIFTR

C26QR←MBR MB_into_QR

C27shift QR to right shift_QR

C28cnt←MBR MB_into_cnt//a decrement count

C29cnt←cnt-1 downcnt

C30cnt←0 reset_cnt

C31

C1ACC←ACC and BR Logic_AND

C2ACC←ACC or BR Logic_OR

C3ACC←not BR Logic_NOT

C4CAR←CAR+1 add1

C6CAR←0 reset

C5CAR←opcode load

C7shift ACC to left SHIFTL

C8

C9

C10

C11

The contents in ROM

Location

control

memory (address, in HEX) contents (in HEX)

(control signals)

micro-program comments

00 00008010 MBR←memory, CAR←CAR+1 Fetch Data

01 00020010 IRopcode←MBR, CAR←CAR+1 Fetch Opcode

02 00000020 CAR←** JUMP

03 00082010 MAR←MBR7-0, PC←PC+1, CAR←CAR+1 AND

04 00008010 MBR←memory, CAR←CAR+1

05 00200010 BR←MBR, CAR←CAR+1

06 00000012 ACC←ACC and BR, CAR←CAR+1

07 00001040 MAR←PC, CAR←0 End of AND

08 00082010 MAR←MBR7-0, PC←PC+1, CAR←CAR+1 OR

09 00008010 MABR←memory, CAR←CAR+1

0A 00200010 BR←MBR, CAR←CAR+1

0B 00000014 ACC←ACC or BR, CAR←CAR+1

0C 00001040 MAR←PC, CAR←0 End of OR

0D 00000000

0E 00000000

0F 00000000

10 00082010 MAR←MBR7-0, PC←PC+1, CAR←CAR+1 STORE

11 00010010 MBR←ACC, CAR←CAR+1

12 00004010 memory←MBR, CAR←CAR+1

13 00001040 MAR←PC, CAR←0 End of STORE

14 00082010 MAR←MBR7-0, PC←PC+1, CAR←CAR+1 LOAD

15 00008010 MBR←memory, CAR←CAR+1

16 01200010 BR←MBR, ACC←0, CAR←CAR+1

17 00400010 ACC←ACC+BR, CAR←CAR+1

18 00001040 MAR←PC, CAR←0 End of LOAD

19 00082010 MAR←MBR7-0, PC←PC+1, CAR←CAR+1 ADD

1A 00008010 MABR←memory, CAR←CAR+1

1B 00200010 BR←MBR, CAR←CAR+1

1C 00400010 ACC←ACC+BR, CAR←CAR+1

1D 00001040 MAR←PC, CAR←0 End of ADD 1E 00082010 MAR←MBR7-0, PC←PC+1, CAR←CAR+1 SUB

1F 00008010 memory←MBR, CAR←CAR+1

20 00200010 BR←MBR, CAR←CAR+1

21 00800010 ACC←ACC-BR, CAR←CAR+1

22 00001040 MAR←PC, CAR←0 End of SUB

23 00040010 PC←MBR9-0, CAR←CAR+1 JMPGEZ

24 00001040 MAR←PC, CAR←0

25 00080010 PC←PC+1, CAR←CAR+1

26 00001040 MAR←PC, CAR←0 End of JMP

27 01100010 PC←0, ACC←0, CAR←CAR+1 HALT

28 00001040 MAR←PC, CAR←0 End of HALT

29 00082010 MAR←MBR7-0, PC←PC+1, CAR←CAR+1 MPY

2A 00008010 MABR←memory, CAR←CAR+1

2B 04000010 QR←MBR, CAR←CAR+1

2C 00010010 MBR←ACC, CAR←CAR+1

2D 00200010 BR←MBR, CAR←CAR+1

2E 11000010 0←ACC, CNT←16,CAR←CAR+1

2F 00000000

30 00400010 ACC←ACC+BR, CAR←CAR+1 Multi_add

31 2A000000 Shift ACC QR to Right, CNT←CNT-1

32 00000000

33 00800010 ACC←ACC-BR, CAR←CAR+1 Multi_sub

34 2A000000 Shift ACC QR to Right, CNT←CNT-1

35 00000000

36 2A000000 Shift ACC QR to Right, CNT←CNT-1 Multi_shift

37 00000000

38 00001040 MAR←PC, CAR←0 End of MPY

39 00082010 MAR←MBR7-0, PC←PC+1, CAR←CAR+1 NOT

3A 00008010 MABR←memory, CAR←CAR+1

3B 00200010 BR←MBR, CAR←CAR+1

3C 00000018 ACC←NOT BR, CAR←CAR+1

3D 00001040 MAR←PC, CAR←0 End of NOT 3E 00082010 MAR←MBR7-0, PC←PC+1, CAR←CAR+1 SHIFTR

3F 00008010 MBR←memory, CAR←CAR+1

40 01200010 BR←MBR, ACC←0, CAR←CAR+1

41 00400010 ACC←ACC+BR, CAR←CAR+1

42 02000010 SHIFTR ACC, CAR←CAR+1

43 00001040 MAR←PC, CAR←0 End of SHIFTR

44 00082010 MAR←MBR7-0, PC←PC+1, CAR←CAR+1 SHIFTL

45 00008010 MBR←memory, CAR←CAR+1

46 01200010 BR←MBR, ACC←0, CAR←CAR+1

47 00400010 ACC←ACC+BR, CAR←CAR+1

48 00000090 SHIFTL ACC, CAR←CAR+1

49 00001040 MAR←PC, CAR←0 End of SHIFTL

Design description

The overall design

The whole design:

Appendix

The detailed design is shown in Verilog-HDL version (1)BR

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity br is

port

(

mbr_in : in std_logic_vector(15 downto 0);--from mbr clk : in std_logic;

cs : in std_logic_vector(31 downto 0);

br_out : out std_logic_vector(15 downto 0)

);

end br;

architecture behave of br is

begin

process(clk)

begin

if clk'event and clk='1' then

if cs(12)='1' then

br_out<=mbr_in;

end if;

end if;

end process;

end behave;

(2)MBR

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity mbr is

port

(

memery_in : in std_logic_vector(15 downto 0);--output from ram

acc : in std_logic_vector(15 downto 0);--output from acc of alu

clk : in std_logic;

cs : in std_logic_vector(31 downto 0);--output from cs

mbr_out : out std_logic_vector(15 downto 0) --to low and high

);

end;

architecture behar of mbr is

begin

process(clk)

begin

if (rising_edge(clk)) then

if (cs(7)='1') then

mbr_out<=memery_in;

elsif (cs(8)='1') then

mbr_out<=acc;

end if;

end if;

end process;

end;

(3)IR

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

ENTITY IR IS

PORT

( mbr_in : IN std_logic_vector(7 downto 0); --MBR[15..8] accept-opcode

cs : in std_logic_vector(31 downto 0);

clk : IN std_logic;

ir_out : out std_logic_vector(7 downto 0)

);

END IR;

ARCHITECTURE behave OF IR IS

BEGIN

PROCESS(clk)

BEGIN

IF rising_edge(clk) THEN

if cs(5)='1' then

ir_out<=mbr_in;

end if;

END IF;

END PROCESS;

END behave;

(4)PC

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

ENTITY PC IS

PORT

( mbr_in : IN std_logic_vector(7 downto 0); --MBR[15..0]

cs : IN std_logic_vector(31 downto 0);

clk : IN std_logic;

pc_out : OUT std_logic_vector(7 downto 0)

);

END PC;

ARCHITECTURE behave OF PC IS

BEGIN

PROCESS(clk)

variable temp:std_logic_vector(7 downto 0);

BEGIN

if (rising_edge(clk)) then

if cs(10)='1' THEN --reset

temp:="00000000";

elsif cs(9)='1' then --MBR to PC

temp:=mbr_in;

elsif cs(11)='1' then --increment

temp:=temp+1;

end if;

pc_out<=temp;

END IF;

END PROCESS;

END behave;

(6)ALU

entity alu is

port(

clk: in std_logic;

reset:in std_logic;

con_to_alu:in std_logic_vector(31 downto 0);

br_to_alu:in std_logic_vector(7 downto 0);

alu_to_acc:out std_logic_vector(7 downto 0);

acc_to_alu:in std_logic_vector(7 downto 0)

);

end alu;

architecture arc_alu of alu is

begin

process(clk,reset)

begin

if reset='1' then

alu_to_acc<="00000000";

elsif (clk'event and clk='1') then

if con_to_alu(22)='1' then

alu_to_acc<=br_to_alu+acc_to_alu;--add elsif con_to_alu(23)='1' then

alu_to_acc<=acc_to_alu-br_to_alu;--sub elsif con_to_alu(1)='1' then

alu_to_acc<=acc_to_alu and br_to_alu;--and elsif con_to_alu(2)='1' then

alu_to_acc<=acc_to_alu or br_to_alu;--or

elsif con_to_alu(3)='1' then

alu_to_acc<=not br_to_alu;--not

elsif con_to_alu(25)='1' then

alu_to_acc<='0' & acc_to_alu(7 downto 1);--shiftr elsif con_to_alu(7)='1' then

alu_to_acc<=acc_to_alu(6 downto 0) & '0';--shiftl end if;

end if;

end process;

end arc_alu;

(7)control_unit

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

ENTITY control_unit IS

PORT

( clk : in std_logic;

flag : in std_logic; --ACC is 0 or not

cs : in std_logic_vector(31 downto 0);--from accis of acc

IR_out : in std_logic_vector(7 downto 0);

address_out : out std_logic_vector(7 downto 0) --to the rom

);

END control_unit ;

ARCHITECTURE behave OF control_unit IS

BEGIN

PROCESS (clk)

variable address : std_logic_vector(7 downto 0);

BEGIN

IF (rising_edge(clk)) THEN

if cs(1)='1' then --Increament car

address:=address+1;

elsif cs(0)='1' then --reset car

address:="00000000"; --32bits hex

elsif cs(2)='1' then --load

case IR_out is

when "00000001"=> --ADD 01

address:="00000100";

when "00000010"=> --SUB 02

address:="00001011";

when "00000011"=> --AND 03

address:="00010010";

when "00000100"=> --OR 04

address:="00011001";

when "00001010"=> --NOT 0a

address:="00100000";

when "00001011"=> --SHIFTR 0b address:="00100111";

when "00001100"=> --SHIFTL 0c address:="00101111";

when "00001101"=> --STORE 0d address:="01000001";

when "00001110"=> --LOAD 0e

address:="01000111";

when "00001000"=> --JUMP 08 address:="01001110";

when "00000101"=> --jmpegz 05 if flag='0' then

address:="00111011";

else address:="00111101";

end if;

when "00000111"=> --HALT 07

address:="00110111";

when others=>null;

end case;

end if;

address_out<=address;

END IF;

END PROCESS;

END behave;

Above all,we must use it to do something.

As shows:

Then let's do an easy problem to show how we use the cpu: A example:

Problem:1+2+3+4+……..+100

1.C language program with the instructions

Program with c Program

with

instructions Contents of memory in HEX Address Contents

Sum=0; LOAD 20 00 0E20

STORE 24 01 0D24 Temp=100; LOAD 21 02 0E21

STORE 23 03

0D23

Loop:sum=sum+temp ; LOOP:LOAD 24 04 0E24 ADD 23 05 0123 STORE 24 06 0D24

Temp=temp-1; LOAD 23 07 0E23

SUB 22 08 0222

STORE 23 09 0D23 If temp>=0 goto loop JMPGEZ LOOP 0A 0504 Sum=sum+1 LOAD 24 0B 0124

ADD 24 0C 0C24

STORE 24 0D 0D24 end HAL T 10 0700 2. Initialize memory:

精简8位cpu设计报告

精简8位cpu实验设计报告 实验介绍: 实验分为两个部分,第一部分为16*8 ROM 设计与仿真 第二部分为SAP-1 设计与仿真 实验流程: ①16*8 ROM 的设计与仿真 Rom16_8.VHDL LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ROM16_8 is PORT( DATAOUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --Data Output ADDR :IN STD_LOGIC_VECTOR(3 DOWNTO 0); --ADDRESS CE :IN STD_LOGIC --Chip Enable ); END ROM16_8; ARCHITECTURE a OF ROM 16_8 IS BEGIN DATA<=“00001001”WHEN ADDR=“0000”AND CE=‘0’--LDA 9H “00011010”WHEN ADDR=“0001”AND CE=‘0’ELSE --ADD AH “00011011”WHEN ADDR=“0010”AND CE=‘0’ELSE --ADD BH “00101100”WHEN ADDR=“0011”AND CE=‘0’ELSE --SUB CH “11100000”WHEN ADDR=“0100”AND CE=‘0’ELSE --OUT “11110000”WHEN ADDR=“0101”AND CE=‘0’ELSE --HLT “00010000”WHEN ADDR=“1001”AND CE=‘0’ELSE “00010100”WHEN ADDR=“1010”AND CE=‘0’ELSE “00011000”WHEN ADDR=“1011”AND CE=‘0’ELSE

cpu主要包括

CPU包括运算逻辑部件、寄存器部件,运算器和控制部件等。 一、运算逻辑部件: 运算逻辑部件可以执行定点或浮点算术运算,移位运算和逻辑运算,以及地址运算和转换。 二、寄存器部件: 寄存器部件,包括通用寄存器,专用寄存器和控制寄存器。 通用寄存器可以分为定点数和浮点数。它们用于在指令中存储寄存器操作数和运算结果。 通用寄存器是中央处理器的重要组成部分,大多数指令必须访问通用寄存器。通用寄存器的宽度决定了计算机内部数据路径的宽度,其端口数通常会影响内部操作的并行性。 专用寄存器是执行某些特殊操作所需的寄存器。 控制寄存器通常用于指示机器执行状态或保留一些指针。有处理状态寄存器,地址转换目录的基地址寄存器,特权状态寄存器,条件代码寄存器,异常处理寄存器和错误检测寄存器。 有时,中央处理单元中有一些缓存,用于临时存储一些数据指令。缓存越大,CPU的计算速度越快。目前,市场上的中高端中央处理单元具有大约2M的二级缓存。高端中央处理单元具有大约4M的辅助缓存。 三、控制部件: 控制部件主要负责解码指令并发出控制信号以完成要为每个指令执行的每个操作。

有两种结构:一种是以微存储为核心的微程序控制模式;另一种是微程序控制模式。另一种是基于逻辑硬连线结构的控制模式。 微代码存储在微存储器中,每个微代码对应一个基本的微操作,也称为微指令。每个指令由不同的微代码序列组成,这些序列构成一个微程序。中央处理单元对指令进行解码后,发出一定的时序控制信号,并以给定的顺序以微周期为节拍执行由这些微代码确定的许多微操作,以完成拍子的执行。一定的指示。 简单的指令由(3到5个)微操作组成,而复杂的指令由数十个微操作甚至数百个微操作组成。

数据通路实验报告

非常简单CPU数据通路设计实验报告非常简单CPU数据通路设计【实验目的】 1. 掌握CPU的设计步骤 2. 学会芯片的运用及其功能 【实验环境】 Maxplus2环境下实现非常简单CPU数据通路的设计 【实验内容】 非常简单CPU的寄存器:一个8位累加器AC,一个6位的地址寄存器绘制 AR,一个6位的程序计数器PC,一个8位的数据寄存器DR,一个2位的指令寄存器IR。其数据通路详见教材P。 1、零件制作 6位寄存器 (自行设计) 6位计数器 (自行设计) 8位寄存器 (可选择74系列宏函数74273) 8位计数器 (由两个74161构成) 2位寄存器 (由D触发器构成,自行设计) 6三态缓冲器 (自行设计,可由74244内部逻辑修改而成) 8三态缓冲器 (选择74系列宏函数74244,或作修改) alu模块 (自行设计,限于时间,其内部逻辑不作要求) 2、选择器件,加入数据通路顶层图 8位累加器AC:选择8位计数器 6位地址寄存器AR:reg6 6位的程序计数器PC:cou6

8位的数据寄存器DR:选择8位寄存器 2位的指令寄存器IR:选择2位寄存器 3、为PC、DR加入三态缓冲器。 4、调整版面大小,器件位置。 5、设计地址引脚、数据引脚、8位内部总线,加入数据引脚到内部总线的 缓冲器。 6、连接各器件之间以及到内部总线的线路,设计并标注各控制信号。 7、(选做)编译之后,给出微操作 AR<-PC 的测试方法及仿真结果。 8、实验报告中应给出各元部件的实现方法、内部逻辑贴图、打包符号说 明及顶层的“非常简单CPU”数据通路图。 实验报告 一、实验步骤 基于前面非常简单CPU的讲解,我掌握了非常简单CPU的指令集结构及非常简单CPU的指令读取过程和执行过程,本次实验是在上次实验的基础之上完成非常简单CPU数据通路的设计,其步骤如下: (1)、AC累加器原理图如下:

计算机硬件课程设计报告(cpu设计)

计算机硬件课程设计 设计报告 学号: 姓名:成绩: 学号: 姓名:成绩: 东南大学计算机科学与工程系 二0 10 年11 月

一、设计名称: My CPU的设计 二、本设计的主要特色: 1、熟悉挂总线的逻辑器件的特性和总线传送的逻辑实现方法。 2、掌握半导体静态存储器的存取方法。 三、设计方案: 1. 数据格式——8位二进制定点表示 2. 指令系统——CPU的指令格式尽量简单规整,这样在硬件上更加容易实现。 7条基本指令:输入/输出,数据传送,运算,程序控制。 指令格式:Array 7 6 5 4 3 2 1 0 两种寻址方式: 寄存器寻址Array 7 6 5 4 3 2 1 0 直接地址寻址,由于地址要占用一个字节,所以为双字节指令。 7条机器指令:

IN R目:从开关输入数据到指定的寄存器R目。 OUT R源:从指定的寄存器R源中读取数据送入到输出缓冲寄存器,显示灯亮。 ADD R目,R源:将两个寄存器的数据相加,结果送到R目。 JMP address : 无条件转移指令。 HALT : 停机指令。 LD R目,address : 从内存指定单元中取出数据,送到指定寄存器R 目。 ST address , R 源: 从指定的寄存器R源中取出数据,存入内存指定单元。

Address(内存地址) 3. CPU内部结构 4.数据通路设计 根据指令系统,分析出数据通路中应包括寄存器组、存储器、运算器、多路转换器等,采用单总线结构。 通用寄存器组:

运算器: 存储器: 多路转换器:

输出缓冲器: 5.控制器设计 控制通路负责整个CPU的运行控制,主要由控制单元和多路选择器MUX 完成。在每一个时钟周期的上升沿指令寄存器IR 从内存中读取指令字后,控制单元必须能够根据操作码,为每个功能单元产生相应主控制信号,以及对ALU 提供控制信号。对于不同的指令,同一个功能单元的输入不同,需要多路选择器MUX 来对数据通路中功能单元的输入进行选择。

cpu主要包括

CPU是计算机的核心,是电脑的心脏,叫做中央处理器。负责处理、运算计算机内部的所有数据,主要由运算器、控制器、寄存器组和内部总线等构成。CPU是整个微机系统的核心,它往往是各种档次微机的代名词,CPU的性能大致上反映出微机的性能,因此它的性能指标十分重要。 CPU包括运算逻辑部件、寄存器部件、控制部件。 CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码。它把指令分解成一系列的微操作,然后发出各种控制命令,执行微操作系列,从而完成一条指令的执行。指令是计算机规定执行操作的类型和操作数的基本命令。指令是由一个字节或者多个字节组成,其中包括操作码字段、一个或多个有关操作数地址的字段以及一些表征机器状态的状态字和特征码。有的指令中也直接包含操作数本身。 运算逻辑部件 运算逻辑部件,可以执行定点或浮点的算术运算操作、移位操作以及逻辑操作,也可执行地址的运算和转换。 寄存器部件 寄存器部件,包括通用寄存器、专用寄存器和控制寄存器。 32位CPU的寄存器 通用寄存器又可分定点数和浮点数两类,它们用来保存指令中的寄存器操作数和操作结果。通用寄存器是中央处理器的重要组成部分,大多数指令都要访问到通

用寄存器。通用寄存器的宽度决定计算机内部的数据通路宽度,其端口数目往往可影响内部操作的并行性。 专用寄存器是为了执行一些特殊操作所需用的寄存器。控制寄存器通常用来指示机器执行的状态,或者保持某些指针,有处理状态寄存器、地址转换目录的基地址寄存器、特权状态寄存器、条件码寄存器、处理异常事故寄存器以及检错寄存器等。 有的时候,中央处理器中还有一些缓存,用来暂时存放一些数据指令,缓存越大,说明CPU的运算速度越快,目前市场上的中高端中央处理器都有2M左右的二级缓存。 控制部件 控制部件,主要负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。其结构有两种:一种是以微存储为核心的微程序控制方式;一种是以逻辑硬布线结构为主的控制方式。 微存储中保持微码,每一个微码对应于一个最基本的微操作,又称微指令;各条指令是由不同序列的微码组成,这种微码序列构成微程序。中央处理器在对指令译码以后,即发出一定时序的控制信号,按给定序列的顺序以微周期为节拍执行由这些微码确定的若干个微操作,即可完成某条指令的执行。 简单指令是由(3~5)个微操作组成,复杂指令则要由几十个微操作甚至几百个微操作组成。逻辑硬布线控制器则完全是由随机逻辑组成。指令译码后,控制器

8位CPU的设计与实现

实验题目 8位CPU的系统设计学号 1115106046 姓名魏忠淋 班级 11电子B 班 指导老师凌朝东

华侨大学电子工程系 8位CPU的系统设计 一、实验要求与任务 完成从指令系统到CPU的设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。 1.1设计指标 能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令; 1.2设计要求 画出电路原理图、仿真波形图; 二、CPU的组成结构

三、元器件的选择 1.运算部件(ALU) ALU181的程序代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALU181 IS PORT ( S : IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); A : IN STD_LOGIC_VECTOR(7 DOWNTO 0); B : IN STD_LOGIC_VECTOR(7 DOWNTO 0); F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); M : IN STD_LOGIC; CN : IN STD_LOGIC; CO,FZ: OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN A9 <= '0' & A ; B9 <= '0' & B ;

计算机中央处理器CPU的发展

计算机中央处理器CPU的发展 (兰州大学信息科学与工程学院10级电信基地班胡亚昆) 摘要:上个世纪中期至今,计算机的发展日新月异。CPU是计算机的核心。本文以美国Intel 公司推出的CPU为例,详细介绍了计算机CPU的发展。 关键词:CPU 数据总线时钟频率80X86 Pentium Core 1. 引言 自1946年第一台计算机问世以来,计算机的发展已经历了电子管、晶体管、中小规模集成电路、大规模集成电路和超大规模集成电路4个阶段。而中央处理器(Central Processing Unit,简称CPU)正是现代计算机系统的核心和引擎,计算机日新月异的发展在很大程度上归结为CPU技术的发展。通常,计算机的发展是以CPU的发展为表征的。根据摩尔定律,我们知道微处理器集成度每个18个月翻一番,芯片的性能也随之提高一倍左右。目前世界上生产CPU最强的公司是美国著名的Intel公司。本文将从Intel公司推出的第一台微处理器4004逐个介绍到Intel最近推出的Core系列处理器,通过这些介绍来让大家深刻地了解计算机中央处理器CPU的发展。 2. Intel 4004 1971年,Intel公司推出了世界上第一款微处理器4004,这是第一个可用于微型计算机的四位微处理器。它包含2300个晶体管,功能相当有限,而且速度还很慢,被当时的蓝色巨人IBM以及大部分商业用户不屑一顾,但是它毕竟是划时代的产品。从此以后,Intel便与微处理器结下了不解之缘。 3. 8086/8088/80186/80188 1978年,Intel公司正式推出了8086CPU,这是该公司生产的第一个16位芯片,内外数据总线均为16位,地址总线20位,主存寻址范围为1MB,时钟频率为5MHz,集成度只有0.040百万件/个。 由于当时的外设接口是8位,8086的16位外设数据线不能直接与外设接口连接,这一点限制了8086的推广。于是,1979年,Intel公司推出了准16位处理器8088,它只是将数据总线改为8位,其他设计都没有交大的改变,应用较为广泛。 8086/8088CPU内部结归纳起来可分为控制单元、逻辑单元和存储单元三大部分。这三大部分互相协调,对命令各数据进行分析、判断、运算并控制计算机协调工作。以后不管什么样的CPU,其内部结构都可归纳为这三部分。 8086/8088的指令是以字节为基础构成的,建立了指令预取队列,将取指令和执行指令这两个操作分别由总线接口单元(BIU)和执行单元(EU)来完成,提高了微处理器的指令执行速度。 8086/8088内有8个通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI),4个段寄存器(SS,ES,DS,CS)和2个控制寄存器(IP,FLAGS),这些寄存器全部是16位寄存器。 8086/8088无高速缓存。 随后,Intel公司80186/80188,它们的核心分别是8006/8088,配以定时器、中断控制器、DMA控制器等支持电路,功能更多,速度更快。80186/80188指令系统比8086/8088增加了若干实用的指令,涉及堆栈操作、位移指令、输入输出指令、过程指令、边界检测及乘法指令。

CPU课程设计报告

课程设计报告 课程片上计算机系统 题目 CPU模型机设计 班级 专业 学生 学号 指导教师 2014年7 月 3 日 目录: 1.课程设计的目的及要求 (3) 2.处理器的设计思想和设计内容 (3)

3.设计处理器的结构和实现方法 (3) 4.模型机的指令系统 (4) 5.处理器的状态跳转操作过程 (4) 6. CPU的Verilog代码 (7) 7. 模型机在Quartus II环境下的应用 (19) 8. 仿真波形 (19) 9. 课程设计的总结 (21) 一.课程设计的目的及要求: (一)目的: 1.掌握RISC CPU与内存数据交换的方法。 2.学会指令格式的设计与用汇编语言编写简易程序。 3.能够使用VHDL硬件描述语言在QuartusⅡ软件环境下完成CPU模型机的 设计。

(二)要求: 1.以《计算机组成与设计》书中123页的简化模型为基础更改其指令系 统,形成设计者的CPU, 2.在Quartus II环境下与主存连接,调试程序,观察指令的执行是否达 到设计构想。 二.处理器的设计思想和设计内容: 处理器的字长为16b;包括四种指令格式,格式1、格式2、格式3的指令字长度为8b,格式4的指令字长度为16b;处理器内部的状态机包括七个状态。(一)关于修改后的CPU: 一共设计25条指令,主要包括空操作指令、中断指令、加法指令、减法指令、加法指令、四种逻辑运算指令、比较、算术移位操作指令、逻辑移位操作指令、加减1指令、加减2指令、数据传输指令、转移类指令、读写指令、特权指令等等。 (二)关于RAM: 地址线设置成8bits,主存空间为4096words。 三.设计处理器的结构和实现方法: (指令格式) 格式1:寄存器寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP Rx Ry 空白 格式2:寄存器变址寻址方式 OP Ry 空白 格式3:立即数寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP I 空白 格式4:无操作数寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP 空白空白 格式5:直接寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP Addr 内存(2的12次方) 四.模型机的指令系统 CPU的指令集: 操作码OP IR(15..1 2) 指令 格式 指令的助记指令的内容

cpu包括

Cpu 的组成: CPU的内部由寄存器、控制器、运算器和时钟四个部分组成,各个部分之间由电流信号相互连通。 寄存器中的种类和作用包括: 1.数据寄存器 数据寄存器(Data Register,DR)又称数据缓冲寄存器,其主要功能是作为CPU和主存、外设之间信息传输的中转站,用以弥补CPU 和主存、外设之间操作速度上的差异。 数据寄存器用来暂时存放由主存储器读出的一条指令或一个数据字;反之,当向主存存入一条指令或一个数据字时,也将它们暂时存放在数据寄存器中。 数据寄存器的作用是: (1)作为CPU和主存、外围设备之间信息传送的中转站;

(2)弥补CPU和主存、外围设备之间在操作速度上的差异; (3)在单累加器结构的运算器中,数据寄存器还可兼作操作数寄存器。 2.指令寄存器 指令寄存器(Instruction Register,IR)用来保存当前正在执行的一条指令。 当执行一条指令时,首先把该指令从主存读取到数据寄存器中,然后再传送至指令寄存器。 指令包括操作码和地址码两个字段,为了执行指令,必须对操作码进行测试,识别出所要求的操作,指令译码器(Instruction Decoder,ID)就是完成这项工作的。指令译码器对指令寄存器的操作码部分进行译码,以产生指令所要求操作的控制电位,并将其送到微操作控制线路上,在时序部件定时信号的作用下,产生具体的操作控制信号。 指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码,即可向操作控制器发出具体操作的特定信号。 3.程序计数器 程序计数器(Program Counter,PC)用来指出下一条指令在主存储器中的地址。 在程序执行之前,首先必须将程序的首地址,即程序第一条指令

cpu实验报告

简易计算机系统综合设计设计报告 班级姓名学号 一、设计目的 连贯运用《数字逻辑》所学到的知识,熟练掌握EDA工具的使用方法,为学习好后续《计算机原理》课程做铺垫。 二、设计内容 ①按给定的数据格式和指令系统,使用EDA工具设计一台用硬连线逻辑控制的简易计算机系统; ②要求灵活运用各方面知识,使得所设计的计算机系统具有较佳的性能; ③对所做设计的性能指标进行分析,整理出设计报告。 三、详细设计 3.1设计的整体架构 控制信号

3.2各模块的具体实现 1.指令计数器(zhiling_PC) 元件: 输入端口:CLK,RESET,EN; 输出端口:PC[3..0]; CLK:时钟信号; RESET:复位信号; EN:计数器控制信号,为1的时候加一; PC[3..0]:地址输出信号; 代码:

波形图: 总共有九条指令,指令计数器从0000到1000;功能: 实现指令地址的输出; 2.存储器(RAM) 元件: 输入端口:PC[3..0],CLK; 输出端口:zhiling[7..0]; CLK:时钟信号; PC[3..0]:指令地址信号; zhiling[7..0]:指令输出信号; 代码:

波形图: 功能: 根据输入的地址输出相应的指令; 3.指令译码器(zlymq) 元件: 输入端口:zhiling[7..0]; 输出端口:R1[1..0],R2[1..0],M[3..0];zhiling[7..0]:指令信号; R1:目标寄存器地址; R2:源寄存器地址; M[3..0]:指令所代表的操作编号; 代码:

波形图:

功能: 实现指令的操作译码,同时提取出目标寄存器和源寄存器的地址; 4.算术逻辑运算器(ALU) 元件: 输入端口:EN_ALU,a[7..0],b[7..0],M[3..0]; 输出端口:c[7..0],z; EN_ALU:运算器的使能端; a[7..0]:目标寄存器R1的值; b[7..0]:源寄存器R2的值; M[3..0]:指令所代表的操作编号; c[7..0]:运算结果; z:运算完成的信号; 代码:

CPU设计实验报告

实验中央处理器的设计与实现 一、实验目的 1、 理解中央处理器的原理图设计方法。 2、 能够设计实现典型MIPS 的11条指令。 二、 实验要求 1、 使用Logisim 完成数据通路、控制器的设计与实现。 2、 完成整个处理器的集成与验证。 3、 撰写实验报告,并提交电路源文件。 三、 实验环境 VMware Workstatio ns Pro + Win dows XP + Logisim-wi n-2.7.1 四、 操作方法与实验步骤 1、数据通路的设计与实现 数据通路主要由NPC 、指令存储器、32位寄存器文件、立即数扩展部件、 ALU 、数据存储器构成。其中指令存储器和数据存储器可直接调用软件库中的 ROM 和RAM 元件直接完成,其余部件的设计如图所示: Cue ------- 吊孙 ----------- n -ar ch Zan [p]~ 图 1.1 NPC G —-- DO jlf* 04 4 D 04 nero & res?l ■&

幣> >曰CXI e Q

图1.3立即数扩展部件 图 1.4 ALU 2、控制器的设计与实现 控制器的主要设计思想如图所示 图2.1控制器设计思想 通过列真值表得到控制器的两部分电路,真值表如下 : 输入 000000 001101 100011 101011 000100 000010 immIC £it£ DOO -DO ooo n Q □□□non UOnflO OOC ?>:>0 DQ 000 指令 lnst :ruction[31:O] OP[5:OJ fu net [5:0] Jump ExBp Branch Mem Write ALUctr * RegWrite MemtoReg * ALUSrc 控制器 控制信号 LLLLLLLLLmM f ZERO A ()-- irnmmmiiiimiiiiifeiiim IIII93 1-] * 11114444 ".'O

cpu主要包括

CPU主要包括两个部分,即控制器、运算器,其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。 中央处理器(CPU),是电子计算机的主要设备之一,电脑中的核心配件。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU是计算机中负责读取指令,对指令译码并执行指令的核心部件。电子计算机三大核心部件就是CPU、内部存储器、输入/输出设备。中央处理器的功效主要为处理指令、执行操作、控制时间、处理数据。 主要功能 一、处理指令 英文Processing instructions;这是指控制程序中指令的执行顺序。程序中的各指令之间是有严格顺序的,必须严格按程序规定的顺序执行,才能保证计算机系统工作的正确性。 二、执行操作 英文Perform an action;一条指令的功能往往是由计算机中的部件执行一系列的操作来实现的。CPU要根据指令的功能,产生相应的操作控制信号,发给相应的部件,从而控制这些部件按指令的要求进行动作。 三、控制时间 英文Control time;时间控制就是对各种操作实施时间上的定时。在一条指令的执行过程中,在什么时间做什么操作均应受到严格的控制。只有这样,计算机才能有条不紊地工作。

四、处理数据 即对数据进行算术运算和逻辑运算,或进行其他的信息处理。 其功能主要是解释计算机指令以及处理计算机软件中的数据,并执行指令。在微型计算机中又称微处理器,计算机的所有操作都受CPU控制,CPU的性能指标直接决定了微机系统的性能指标。CPU 具有以下4个方面的基本功能:数据通信,资源共享,分布式处理,提供系统可靠性。运作原理可基本分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。

CPU设计实验报告

实验中央处理器的设计与实现 一、实验目的 1、理解中央处理器的原理图设计方法。 2、能够设计实现典型MIPS的11条指令。 二、实验要求 1、使用Logisim完成数据通路、控制器的设计与实现。 2、完成整个处理器的集成与验证。 3、撰写实验报告,并提交电路源文件。 三、实验环境 VMware Workstations Pro + Windows XP + Logisim-win-2.7.1 四、操作方法与实验步骤 1、数据通路的设计与实现 数据通路主要由NPC、指令存储器、32位寄存器文件、立即数扩展部件、ALU、数据存储器构成。其中指令存储器和数据存储器可直接调用软件库中的ROM和RAM元件直接完成,其余部件的设计如图所示: 图1.1 NPC

图1.2 32位寄存器

图1.3 立即数扩展部件 图1.4 ALU 2、控制器的设计与实现 控制器的主要设计思想如图所示 图2.1 控制器设计思想 输入 1 1 0

输出R-type ORI LW SW BEQ JUMP RegDst 1 0 0 x x x ALUSrc 0 1 1 1 0 x MemtoReg0 0 1 x x x RegWrite 1 1 1 0 0 0 MemWrite0 0 0 1 0 0 Branch 0 0 0 0 1 0 Jump 0 0 0 0 0 1 Extop x 0 1 1 1 x ALUop2 1 0 0 0 0 x ALUop1 x 1 0 0 x x ALUop0 x 0 0 0 1 x ALUop[2:0] Funct[3:0] 指令ALUctr[2:0] 111 0000 add 010 111 0010 sub 110 111 0100 and 000 111 0101 or 001 111 1010 slt 111 010 xxxx ori 001 000 xxxx Lw/sw 010 011 xxxx beq 110 表2.1 控制器设计真值表

8位CPU的设计与实现

计算机组成原理 实验题目8位CPU得系统设计 学号1115106046 姓名魏忠淋 班级 11电子B 班 指导老师凌朝东 华侨大学电子工程系 8位CPU得系统设计 一、实验要求与任务 完成从指令系统到CPU得设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。 1。1设计指标 能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令; 1、2设计要求 画出电路原理图、仿真波形图;

二、CPU得组成结构 三、元器件得选择 1.运算部件(ALU) ALU181得程序代码: LIBRARY IEEE; USEIEEE、STD_LOGIC_1164。ALL; USEIEEE、STD_LOGIC_UNSIGNED.ALL; ENTITY ALU181 IS PORT( S: IN STD_LOGIC_VECTOR(3 DOWNTO0 ); A:IN STD_LOGIC_VECTOR(7 DOWNTO0); B: INSTD_LOGIC_VECTOR(7DOWNTO 0); F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ?COUT:OUTSTD_LOGIC_VECTOR(3 DOWNTO0); M :INSTD_LOGIC; CN : IN STD_LOGIC; CO,FZ:OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNALA9 :STD_LOGIC_VECTOR(8DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO0); SIGNALF9: STD_LOGIC_VECTOR(8 DOWNTO0); BEGIN A9<= '0'& A; B9 <= ’0’&B;

《单周期CPU设计》实验报告

《计算机组成原理与接口技术实验》 实验报告 学院名称: 学生姓名: 学号: 专业(班级): 合作者: 时间:2016 年4 月25 日 成绩: ________ 实验二: 一. 实验目的 1.掌握单周期CPU数据通路图的构成、原理及其设计方法; 2.掌握单周期CPI的实现方法,代码实现方法; 3.认识和掌握指令与CPU勺关系; 4.掌握测试单周期CPI的方法。 二. 实验内容 设计一个单周期CPU,该CPU至少能实现以下指令功能操作。需设计的指令

与格式如下:

==>算术运算指令 功能:rd Jrs + rt 。 reserved为预留部分,即未用,一般填“0 (2)addi rt , rs , immediate 功能:rt J rs + (sign-extend) immediate ;immediate 符号扩展再参加“加”运算(3) sub rd , rs , rt 完成功能:rd J rs - rt ==>逻辑运算指令 (4)ori rt , rs , immediate 功能:rt Jrs | (zero-extend) immediate ; immediate 做“ o ”扩展再参加“或”运算(5) and rd , rs , rt 功能:rd Jrs & rt ;逻辑与运算 (6)or rd , rs , rt 功能:rd Jrs | rt ;逻辑或运算。 ==>传送指令 功能:rd Jrs + $0 ; $0=$zero=0。 ==>存储器读/写指令 (8)sw rt , immediate( rs)写存储器 功能:memory[rs+ (sign-extend) immediate ] J rt ; immediate 符号扩展再 相加。

8位CPU的设计与实现

计算机组成原理 CPU 实验题目 8位的系统设计1115106046 号学 魏忠淋姓名 B 11电子班班级凌朝东指导老师

华侨大学电子工程系 8位CPU的系统设计 一、实验要求与任务 完成从指令系统到CPU的设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。 1.1设计指标 能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令; 1.2设计要求 画出电路原理图、仿真波形图; 二、CPU的组成结构 三、元器件的选择 1.运算部件(ALU) ALU181的程序代码: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALU181 IS PORT ( S : IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); A : IN STD_LOGIC_VECTOR(7 DOWNTO 0); B : IN STD_LOGIC_VECTOR(7 DOWNTO 0); F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); M : IN STD_LOGIC; CN : IN STD_LOGIC; CO,FZ: OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN B9 <= '0' & B ; A9 <= '0' & A ; PROCESS(M,CN,A9,B9) BEGIN CASE S IS WHEN ぜ?尰=> IF M='0' THEN F9<=A9 + CN ; ELSE F9<=NOT A9; END IF; WHEN IF M='0' THEN F9<=(A9 or B9) + CN ; ELSE F9<=NOT(A9 OR B9); END IF; WHEN 0 => IF M='0' THEN F9<=(A9 or (NOT B9))+ CN ; ELSE F9<=(NOT A9) AND B9; END IF; WHEN 1 => IF M='0' THEN F9<= ; ELSE F9<= END IF; WHEN 0 => IF M='0' THEN F9<=A9+(A9 AND NOT B9)+ CN ; ELSE F9<=NOT (A9 AND B9); END IF; WHEN 1 => IF M='0' THEN F9<=(A9 or B9)+(A9 AND NOT B9)+CN ; ELSE F9<=NOT B9; END IF; WHEN 0 => IF M='0' THEN F9<=(A9 - B9) - CN ; ELSE F9<=A9 XOR B9; END IF; WHEN 1 => IF M='0' THEN F9<=(A9 or (NOT B9)) - CN ; ELSE F9<=A9 and (NOT B9); END IF; WHEN @0 => IF M='0' THEN F9<=A9 + (A9 AND B9)+CN ; ELSE F9<=(NOT A9)and B9; END IF; WHEN @1 => IF M='0' THEN F9<=A9 + B9 + CN ; ELSE F9<=NOT(A9 XOR B9); END IF; WHEN A0 => IF M='0' THEN F9<=(A9 or(NOT B9))+(A9 AND B9)+CN ;

8位CPU的设计与实现

计算机组成原理 实验题目 8位CPU的系统设计学号 1115106046 姓名魏忠淋 班级 11电子B 班 指导老师凌朝东 华侨大学电子工程系

8位CPU的系统设计 一、实验要求与任务 完成从指令系统到CPU的设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。 1.1设计指标 能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令; 1.2设计要求 画出电路原理图、仿真波形图; 二、CPU的组成结构

三、元器件的选择 1.运算部件(ALU) ALU181的程序代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALU181 IS PORT ( S : IN STD_LOGIC_VECTOR(3 DOWNTO 0 ); A : IN STD_LOGIC_VECTOR(7 DOWNTO 0); B : IN STD_LOGIC_VECTOR(7 DOWNTO 0); F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); M : IN STD_LOGIC; CN : IN STD_LOGIC; CO,FZ: OUT STD_LOGIC ); END ALU181; ARCHITECTURE behav OF ALU181 IS SIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN A9 <= '0' & A ; B9 <= '0' & B ;

中央处理器的发展

中央处理器的发展 CPU的英文全称是Central Processing Unit,意思是中央处理单元,我们通常也称之为中央处理器。CPU是电脑中最重要的核心组件。通常,一块CPU都要包含运算/逻辑单元、控制单元和寄存器这三部分,这些单元都被集成在一块面积不大的硅晶片中。 要了解CPU,首先要了解一些CPU方面的术语,拿这颗Intel新推出的P4 (图1)来看,它的一些参数已经在金属外壳上刻有了,1M/800分别代表CPU的主频、二级缓存和前端总线频率。 主频就是这颗CPU的工作频率,一般来说主频越高CPU的速度越快,性能也就越强,主频、倍频和外频之间有一个换算关系:主频=外频×倍频。这颗CPU的外频是200MHz,于是我们可以推算出它的倍频应该是14。缓存是很重要的一个指标,Int el通常按照二级缓存的多少来划分Pentium和Celeron,通常两者之间有一倍的差距。前端总线(FSB)在Intel P4系列CPU 中和外频之间也有个换算关系:前端总线频率(FSB)=外频×4,所以通过这里给出的800MHz,我们可以推算出外频为200MH z。 目前,市面上的CPU主要是Intel和AMD两家公司的,下面我们从这两个公司的发展旅程来看看CPU的发展。 CPU双雄:Intel & AMD 一、早期的CPU 早期我们接触的电脑,大部分使用的是Intel的处理器,386、486其实说的就是CPU的型号。例如486是指CPU为Intel 80486(图2)处理器的电脑,Intel的处理器价格昂贵,并不是每个人都能够买得起的,当时一台普通的486电脑售价接近1 0000RMB。这个时候的AMD公司一直都在努力仿照Intel的CPU,推出一系列与之兼容的处理器,而且采取和Intel同样的命名方式,也取名叫386、486。 二、Pentium与K5出现 1993年3月,Intel发布了继80486之后的又一款CPU,并正式取名为Pentium(奔腾),俗称“586”。最初有Pentium

CPU与简单模型机设计 实验报告汇总

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称计算机组成与结构 项目名称 CPU与简单模型机设计实验 班级 学号 姓名 同组人员无 实验日期 2015-11-15

一、实验目的 1.掌握一个简单CPU的组成原理; 2.在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机; 3.为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。 二、实验逻辑原理图与分析 2.1 实验逻辑原理图及分析 本实验要实现一个简单的CPU,并且在此CPU的基础上,继续构建一个简单的模型计算机。CPU由运算器(ALU)、微程序控制器(MC)、通用寄存器(RO)、指令寄存器(IR)、程序计数器(PC)和地址寄存器(AR)组成,如图下图所示。这个CPU在写入相应的微指令后,就具备了执行机器指令的功能,但是机器指令一般存放在主存当中,CPU必须和贮存挂接后,才有实际的意义,所以还需要在该CPU的基础上增加一个主存和基本的输入输出部件,以构成一个简单的模型计算机。 基本CPU构成原理图 系统的程序计数器(PC)和地址寄存器(AR)集成在一片CPLD芯片中。CLR连接至CON单元的纵情断CLR,按下CLR按钮,将是PC清零,LDPC和T3相与后作为计数器的计数时钟,当LOAD为低时,计数时钟到来后将CPU内总线的数据打入PC。 程序计数器(PC)原理图

2.2 逻辑原理图分析 本模型机;和前面微程序控制器实验相比,新增加一条跳转指令JMP,供有五条指令:IN(输入)、ADD(二进制加法)、OUT(输出)、JMP(无条件转移)、HLT(停机)、其指令格式瑞霞(高4为为操作码): 其中JMP为双字节指令,其余均为单字节指令,********为addr对应的二进制地址码。微程序控制器实验的指令是通过手动给出的,现在要求CPU自动从存储器读取指令并执行。 系统涉及到的微程序流程如下图所示,当拟定“取指”微指令时,该微指令的判别测试字段为P<1>测试。由于“取指”微指令是所有微程序都使用的公用微指令,因此P<1>的测试结果出现多分支。本机用指令寄存器的高6位(IR7—IR2)作为测试条件,出现5路分支,占用5个固定为地址单元,剩下的其他地方就可以一条微指令占用控制一个微地址单元随意填写,微程序流程图上的但愿地址为16进制。 当全部为程序设计完毕后,应将每条微指令代码化,下表即为将下图的微程序流程图按微指令格式转化而成的“二进制微代码表”。 简单模型机微程序流程图

cpu包括以下部件

CPU组成结构 CPU包括运算逻辑部件、寄存器部件,运算器和控制部件等。 运算逻辑部件 运算逻辑部件,可以执行定点或浮点算术运算操作、移位操作以及逻辑操作,也可执行地址运算和转换。 寄存器部件 寄存器部件,包括通用寄存器、专用寄存器和控制寄存器。 通用寄存器又可分定点数和浮点数两类,它们用来保存指令中的寄存器操作数和操作结果。 通用寄存器是中央处理器的重要组成部分,大多数指令都要访问到通用寄存器。通用寄存器的宽度决定计算机内部的数据通路宽度,其端口数目往往可影响内部操作的并行性。 专用寄存器是为了执行一些特殊操作所需用的寄存器。 控制寄存器通常用来指示机器执行的状态,或者保持某些指针,有处理状态寄存器、地址转换目录的基地址寄存器、特权状态寄存器、条件码寄存器、处理异常事故寄存器以及检错寄存器等。 有的时候,中央处理器中还有一些缓存,用来暂时存放一些数据指令,缓存越大,说明CPU的运算速度越快,目前市场上的中高端中

央处理器都有2M左右的二级缓存,高端中央处理器有4M左右的二级缓存。 控制部件 控制部件,主要负责对指令译码,并且发出为完成每条指令所要执行的各个操作的控制信号。 其结构有两种:一种是以微存储为核心的微程序控制方式;一种是以逻辑硬布线结构为主的控制方式。 微存储中保持微码,每一个微码对应于一个最基本的微操作,又称微指令;各条指令是由不同序列的微码组成,这种微码序列构成微程序。中央处理器在对指令译码以后,即发出一定时序的控制信号,按给定序列的顺序以微周期为节拍执行由这些微码确定的若干个微操作,即可完成某条指令的执行。 简单指令是由(3~5)个微操作组成,复杂指令则要由几十个微操作甚至几百个微操作组成。

相关文档
最新文档