计算机组成原理课程设计——简单CISC模型机设计

article/2025/10/16 11:30:39

 

 

 

根据《计算机组成原理课程设计》的设计要求设计能够执行一定机器指令完成指定任务的CISC模型机。

 

1、课程设计的题目和内容

 

1.1 课程设计的题目

本次课程设计中本人选题为:输入包含10个整数(有符号数)的数组M,将其分成正整数数组P和负数数组N,依次输出正数数组P中的整数及正数的个数。

 

 

 

1.2 课程设计完成的内容

1.完成系统的总体设计,画出模型机数据通路框图;

2.设计微程序控制器(CISC模型计算机)的逻辑结构框图;

3.设计机器指令格式和指令系统;

4.设计时序产生器电路;

5.设计所有机器指令的微程序流程图;

6.设计操作控制器单元;在CISC模型计算机中,设计的内容包括微指令格式(议采用全水平型微指令)、微指令代码表(根   据微程序流程图和微指令格式来设计)和微程序控制器硬件电路(包括地址转移逻辑电路、微地址寄存器、微命令寄存和控制    存储器等。具体电路根据微程序控制器的逻辑结构框图、微指令格式和微指令代码来设计)。

7.设计模型机的所有单元电路,并用VHDL语言(也可使用GDF文件----图形描述文件)对模型机中的各个部件进行编程,并使之成为一个统一的整体,即形成顶层电路或顶层文件;

8.由给出的题目和设计的指令系统编写相应的汇编语言源程序;

9.根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去;

10.使用EDA软件进行功能仿真,要保证其结果满足题目的要求;(其中要利用EDA软件提供的波形编辑器,选择合适的输入输出信号及中间信号进行调试。)

2、系统总体设计

2.1 嵌入式CISI模型机系统总体设计

 

图2-1 CISI模型机系统

 

2.2 嵌入式CISC系统控制器的逻辑结构框图

图2-2 CISC系统控制器的逻辑结构框图

 

说明:在T4内形成微指令的微地址,并访问控制存储器,在T2的上边沿到来时,将读出的微指令打入微指令寄存器,即图中的微命令寄存器和微地址寄存器。

2.3 模型机的指令系统和所有指令的指令格式设计

    为了完成这次课程设计的功能,本次设计设计了10条指令:IN1(输入),MOV(将一个数送入寄存器),LAD(将寄存器内容送到内存),JMP(无条件跳转),INC(自加1),DEC(自减1),JNS(大于跳转),STO1(将源寄存器值送到目标寄存器),OUT1(输出),TEST(测试),如下用到的Rs和Rd分别表示源寄存器和目的寄存器。

2.3.1机器指令格式和指令系统

指令助记符

指令格式

功能

15——12

11  10

9  8

7——0

IN1 Rd

0001

xx

Rd

xxxxxxxx

输入设备→Rd

MOV Rd,im

0010

xx

Rd

im

立即数→Rd

LAD (Rs),Rd

0011

Rs

Rd

xxxxxxxx

((Rs)) →Rd

JMP addr

0100

xx

xx

addr

addr→PC

INC Rd

0101

xx

Rd

xxxxxxxx

将(Rd)+1→Rd,锁存SF和ZF

DEC Rd

0110

xx

Rd

xxxxxxxx

将(Rd)-1→Rd,锁存SF和ZF

JNS addr

0111

xx

xx

addr

若结果小于零,addr->pc

STO1 Rs,(Rd)

1000

Rs

Rd

XXXXXXXX

(Rs) →((Rd))

OUT1 Rs

1001

Rs

xx

XXXXXXXX

(Rs) →输出设备

TEST Rd

1010

XX

Rd

XXXXXXXX

测试(Rd)是否为负,锁存SF

2.3.2 对Rs和Rd格式规定

Rs或Rd

选定的寄存器

00

R0

01

R1

10

R2

11

R3

2.3.3  算数逻辑单元ALU的功能表

S2

S1

S0

功能

0

0

0

X+Y,修改SF和ZF

0

0

1

X-Y,修改SF和ZF

0

1

0

Y+1,修改SF和ZF

0

1

1

Y-1,修改SF和ZF

1

0

0

X∧Y,修改SF和ZF

1

0

1

Y是否大于零,修改SF和ZF

1

1

0

Y

2.3.4  程序计数器PC的功能表

CLR

LOAD

LDPC

功能

0

X

X

将PC清0

1

0

BUS-->PC

1

1

0

不装入,也不计数

1

1

PC+1

2.3.5  时序产生器

本实验采用的是微程序控制器的时序产生器,如下图

 

图2-3 微程序控制器的时序关系图

 

2.3.6  数据的表示

模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:

7

6     5     4     3     2     1     0

符号位

尾数

3 微程序控制器的设计全过程

3.1 微程序控制器的设计

微程序控制器的设计包括以下几个阶段:

(1)根据微处理器结构图、指令格式和功能设计所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址;

(2)设计微指令格式和微指令代码表;

(3)设计地址转移逻辑电路;

(4)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器;

(5)设计微程序控制器的顶层电路(由多个模块组成)。

  3.2地址转移逻辑电路的设计

地址转移逻辑电路是根据微程序流程图中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。由于微地址寄存器中的触发器异步置“1”端低电平有效,与µA5~µA0对应的异步置“1”控制信号SE5~SE0的逻辑表达式为:

3.3 汇编语言程序

本题目的算法思想为:输入包含10个整数(无符号数)的数组M,将其分成正整数数组P和负数数组N,依次输出正数数组P中的整数及正数的个数。

汇编程序源码及对应注释如下:

MOV R0,00H    ;数据存放在RAM中的地址 

MOV R1,0AH    ;循环次数计数,从0A开始,到01时结束

MOV R3,00H    ;保存正整数的个数 (L3中)

L1:

IN1 R2        ;输入一个数到R2中

STO1 R2,(R0)  ;将输入的数据存放到地址为(R0)的RAM中

INC R0        ;RAM地址指针+1

DEC R1        ;循环次数-1 

TEST R1       ;测试循环次数是否达到10次

JNS L1        ;R1不为负时跳转到L1

MOV R0,00H    ;当10个数输入完成后,初始化RAM指针

MOV R1,0AH    ;重置循环次数

L2:

LAD (R0),R2   ;将内存中地址为(R0)的数据送到R2

TEST R2       ;测试(R2)是否大于零

JNS L3        ;(R2)大于零时跳转到L3

JMP L4        ;(R2)不大于零时跳转到L4

L3:

OUT1 R2       ;(R2)输出

INC R3        ;正整数计数+1

L4:

INC R0        ;RAM地址指针+1

DEC R1        ;循环次数-1

TEST R1       ;测试循环次数是否达到10次

JNS L2        ;(R2)不为负时跳转到L2

OUT1 R3       ;输出正整数的个数

3.4 汇编程序流程图

图3-1汇编程序流程图

 

3.5 汇编程序对应的地址与机器语言代码表:

地址

(十六进制)

汇编语言源程序

机器语言源程序

(二进制)

机器语言源程序

(十六进制)

00

MOV R0,00H

0010 00 00 00000000

2000

01

MOV R1,0AH

0010 00 01 00001010

210A

02

MOV R3,00H

0010 00 11 00000000

2300

03

L1:IN1 R2

0001 00 10 00000000

1200

04

STO1 R2,(R0)

1000 10 00 00000000

8800

05

INC R0

0101 00 00 00000000

5000

06

DEC R1

0110 00 01 00000000

6100

07

TEST R1

1010 00 01 00000000

A100

08

JNS L1

0111 00 00 00000011

7003

09

MOV R0,00H

0010 00 00 00000000

2000

0A

MOV R1,0AH

0010 00 01 00001001

210A

0B

L2:LAD (R0),R2

0011 00 10 00000000

3200

0C

TEST R2

1010 00 10 00000000

A200

0D

JNS L3

0111 00 00 00001111

700F

0E

JMP L4

0100 00 00 00010001

4011

0F

L3:OUT1 R2

1001 10 00 00000000

9800

10

INC R3

0101 00 11 00000000

5300

11

L4:INC R0

0101 00 00 00000000

5000

12

DEC R1

0110 00 01 00000000

6100

13

TEST R1

1010 00 01 00000000

A100

14

JNS L2

0111 00 00 00001011

700B

15

OUT1 R3

1001 11 00 00000000

9C00

表3-1 汇编语言与机器语言代码表

3.6  微程序流程图如下所示:

图 3-2微程序流程图

 

3.7 微指令的设计

CISC模型机系统使用的微指令采用全水平型微指令,字长位26位,其中微命令字段位18位,P字段2位,后继微地址为6位。

微地址

LOAD

LDPC

LDAR

LIR

LREG

LPSW

RS_B

S2

S1

S0

ALU

IN

OUT

RW

RCS

RD

ROM

ADR_B

P1

P2

uA5~uA0

00

1

1

0

1

0

0

1

0

0

0

1

1

1

1

1

1

0

1

1

0

000000

01

1

0

0

0

1

0

1

0

0

0

1

0

1

1

1

1

1

1

0

0

000000

02

1

0

0

0

1

0

1

0

0

0

1

1

1

1

1

1

1

0

0

0

000000

03

1

0

1

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

001011

04

0

1

0

0

0

0

1

0

0

0

1

1

1

1

1

1

1

0

0

0

000000

05

1

0

0

0

1

1

1

0

1

0

0

1

1

1

1

1

1

1

0

0

000000

06

1

0

0

0

1

1

1

0

1

1

0

1

1

1

1

1

1

1

0

0

000000

07

1

0

0

0

0

0

1

0

0

0

1

1

1

1

1

1

1

1

0

1

000000

08

1

0

1

0

0

0

1

1

1

0

0

1

1

1

1

1

1

1

0

0

001100

09

1

0

0

0

0

0

0

0

0

0

1

1

0

1

1

1

1

1

0

0

000000

0A

1

0

0

0

0

1

1

1

0

1

0

1

1

1

1

1

1

1

0

0

000000

0B

1

0

0

0

1

0

1

0

0

0

1

1

1

1

0

0

1

1

0

0

000000

0C

1

0

0

0

0

0

0

0

0

0

1

1

1

0

0

1

1

1

0

0

000000

10

0

1

0

0

0

0

1

0

0

0

1

1

1

1

1

1

1

0

0

0

000000

表 3-2 微指令代码表

4  MAX+plus Ⅱ软件编译仿真测试和结果分析

4.1 嵌入式模型计算机的顶层电路图

 

图 4-1 CISC模型计算机的顶层电路图

如图4-1中,其中的操作控制器单元crom的内部结构如下图所示

图 4-2 控制器单元crom的内部结构图

如图4-2中寄存器AA的内部结构如下所示,AA的内部是由6个MM构成的。

图 4-3 寄存器AA内部结构图

 

4.2 编译仿真测试和结果分析

通过创建仿真时序图top.scf.,可以实现模型机的功能仿真,从图中可以看出cpu处理数据和数据的具体流向的每一个过程,如下是仿真的输出波形,具体结果和分析如下:

图 4-4 仿真结果图1

如图4-4所示,在图4-4中CLK为时钟信号,INBUS[7..0]是输入中线,OUTBUS[7..0]是输出总线,IROUT是操作指令,寄存器R0,寄存器R1,寄存器R2,寄存器R3。

从总线INBUS[7..0]输入的10个数分别为 50H、40H、FCH、10H、23H、FEH、25H、25H、00H、FDH。输出结果为:50H、40H、10H、23H、25H、25H、06H(正整数个数为6)

 

结果过程分析

图 4-5 仿真结果图2

 

由图4-5所示,IROUT=2000、IROUT=210A和IROUT=2300时执行MOV指令,将00H送入寄存器R0,将0AH送入寄存器R1,将00H送入寄存器R0。IROUT=1200时执行IN1指令将50H输入寄存器R2;IROUT=8800时执了STO1指令,将R2的内容送到RAM;IROUT=5000时执行了INC指令,R0自加1;IROUT=6100时执行了DEC指令,R1自减1;IROUT=A100时执行了TEST指令,测试R1是否大于零;IROUT=7003时执行了JNS指令(跳转条件是SF=0,ZF=0),由于此时R1自减1之后为08H大于零所以跳转1200执行IN1指令,如此循环了10次,完成10个数据的输入。

图 4-6 仿真结果图3

 

图 4-7仿真结果图4

由图4-6所示,输入完数据以后,可以看见R1寄存器的值为00,IROUT=7003执行JNS指令不跳转;IROUT=2000、IROUT=210A时执行MOV指令,将00H送入寄存器R0,将0AH送入寄存器R1;IROUT=3200时执行LAD指令,将地址为(R0)的内存的内容送到寄存器R2;IROUT=A200时执行TEST指令,测试(R2)是否大于零;IROUT=700F时执JNS指令,此时(R2)大于零,跳转9800;IROUT=9800时执行OUT1指令输出(R2),在数据输出线OUTBUS[7..0]显示为50。IROUT=5300时执行INC指令,R3自加1;IROUT=5000时执行了INC指令,R0自加1;IROUT=6100时执行了DEC指令,R1自减1;IROUT=A100时执行了TEST指令,测试R1是否大于零;IROUT=700B时执行了JNS指令,跳转到3200执行LAD指令,如此循环测试完10个数。

由图4-7所示,测试的整数是负数FC,IROUT=700F时执JNS指令,此时(R2)小于零不做跳转;IROUT=4011时执行JMP指令,无条件跳转到IROUT=5000执行INC指令,R0自加1。

图 4-8仿真结果图5

 

第二组测试的10个数据分别为 FFH、11H、FCH、50H、02H、FEH、0FH、84H、00H、98H。输出结果为:11H、50H、02H、0FH、04H(正整数个数为4)。

经过多次的不同数据测试,结果都与预期的结果相符合,没有出现错误。

附录

 

代码设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_SIGNED.ALL;

ENTITY ALU IS

PORT

(

X:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

Y:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

S2,S1,S0:IN STD_LOGIC;

ALUOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);

SF,ZF:OUT STD_LOGIC

);

END ALU;

ARCHITECTURE A OF ALU IS

SIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(7 DOWNTO0);

SIGNAL TEMP1:STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

PROCESS

BEGIN

 

IF(S2='0' AND S1='0' AND S0='0')THEN

AA<=X;

BB<=Y;

TEMP<=AA+BB;

ALUOUT<=TEMP(7 DOWNTO 0);

SF<=TEMP(7);

IF(TEMP="00000000")THEN

ZF<='1';

ELSE

ZF<='0';

END IF;

 

ELSIF(S2='0'AND S1='0' AND S0='1')THEN

ALUOUT<=X-Y;

IF(X<Y)THEN

SF<='1';

ZF<='0';

ELSIF(X=Y)THEN

SF<='0';

ZF<='1';

ELSE

SF<='0';

ZF<='0';

END IF;

 

ELSIF(S2='0' AND S1='1' AND S0='0')THEN

BB<=Y;

TEMP<=BB+1;

ALUOUT<=TEMP(7 DOWNTO 0);

SF<=TEMP(7);

IF(TEMP="00000000")THEN

ZF<='1';

ELSE

ZF<='0';

END IF;

 

ELSIF(S2='0' AND S1='1' AND S0='1')THEN

BB<=Y;

TEMP<=BB-1;

ALUOUT<=TEMP(7 DOWNTO 0);

SF<=TEMP(7);

IF(TEMP="00000000")THEN

ZF<='1';

ELSE

ZF<='0';

END IF;

ELSIF(S2='1' AND S1='0' AND S0='0') THEN     --AND

AA<=X;

BB<=Y;

TEMP1<=AA AND BB;

ALUOUT<=TEMP1(7 DOWNTO 0);

SF<=TEMP1(7);

IF (TEMP1="00000000") THEN

ZF<='1';

ELSE

ZF<='0';

END IF;

ELSIF(S2='1' AND S1='0' AND S0='1') THEN     --TEST

BB<=Y;

TEMP1<= BB;

SF<=TEMP1(7);

IF (TEMP1="00000000") THEN

ZF<='1';

ELSE

ZF<='0';

END IF;

ELSIF(S2='1' AND S1='1' AND S0='0') THEN     --Rd->BUS

ALUOUT<=Y;

ELSE

ALUOUT<="00000000" ;

SF<='0';

ZF<='0';

END IF;

END PROCESS;

END A;

 

 

 

 

代码设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY ROM IS

PORT(

   DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);

   ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

   CS_I:IN STD_LOGIC

   );

END ROM ;

ARCHITECTURE A OF ROM IS

BEGIN

DOUT<=

"0010000000000000"WHENADDR="00000000"AND CS_I='0' ELSE

"0010000100001010"WHENADDR="00000001"AND CS_I='0' ELSE

"0010001100000000"WHENADDR="00000010"AND CS_I='0' ELSE

"0001001000000000"WHENADDR="00000011"AND CS_I='0' ELSE

"1000100000000000"WHENADDR="00000100"AND CS_I='0' ELSE

"0101000000000000"WHENADDR="00000101"AND CS_I='0' ELSE

"0110000100000000"WHENADDR="00000110"AND CS_I='0' ELSE

"1010000100000000"WHENADDR="00000111"AND CS_I='0' ELSE

"0111000000000011"WHENADDR="00001000"AND CS_I='0' ELSE

"0010000000000000"WHENADDR="00001001"AND CS_I='0' ELSE

"0010000100001010"WHENADDR="00001010"AND CS_I='0' ELSE

"0011001000000000"WHENADDR="00001011"AND CS_I='0' ELSE

"1010001000000000"WHENADDR="00001100"AND CS_I='0' ELSE

"0111000000001111"WHENADDR="00001101"AND CS_I='0' ELSE

"0100000000010001"WHENADDR="00001110"AND CS_I='0' ELSE

"1001100000000000"WHENADDR="00001111"AND CS_I='0' ELSE

"0101001100000000"WHENADDR="00010000"AND CS_I='0' ELSE

"0101000000000000"WHENADDR="00010001"AND CS_I='0' ELSE

"0110000100000000"WHENADDR="00010010"AND CS_I='0' ELSE

"1010000100000000"WHENADDR="00010011"AND CS_I='0' ELSE

"0111000000001011"WHENADDR="00010100"AND CS_I='0' ELSE

"1001110000000000"WHENADDR="00010101"AND CS_I='0' ELSE

"0000000000000000";

END A;

 

 

 

代码设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY CONVERT IS

PORT(

  IRCODE:IN STD_LOGIC_VECTOR(15 DOWNTO 0);

OP:OUT STD_LOGIC_VECTOR(3DOWNTO 0);

I11,I10,I9,I8:OUT STD_LOGIC;

A:OUT STD_LOGIC_VECTOR(7DOWNTO 0)

 

);

END CONVERT;

ARCHITECTURE A OF CONVERT IS

BEGIN

   OP<=IRCODE(15 DOWNTO 12);

   I11<=IRCODE(11);

   I10<=IRCODE(10);

   I9<=IRCODE(9);

   I8<=IRCODE(8);

   A<=IRCODE(7 DOWNTO 0);

END A;

 

代码设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY CONTROM IS

PORT(

     ADDR:IN STD_LOGIC_VECTOR(5 DOWNTO 0);

     UA:OUT STD_LOGIC_VECTOR(5 DOWNTO 0);

     D:OUT STD_LOGIC_VECTOR(19 DOWNTO 0)

   );

END CONTROM;

ARCHITECTURE A OF CONTROM IS

SIGNALDATAOUT:STD_LOGIC_VECTOR(25 DOWNTO 0);

BEGIN

    PROCESS(ADDR)

     BEGIN

       CASE ADDR IS

WHEN"000000"=>DATAOUT<="11010010001111110110000000";

WHEN"000001"=>DATAOUT<="10001010001011111100000000";

WHEN"000010"=>DATAOUT<="10001010001111111000000000";

WHEN"000011"=>DATAOUT<="10100000001111111100001011";

WHEN"000100"=>DATAOUT<="01000010001111111000000000";

WHEN"000101"=>DATAOUT<="10001110100111111100000000";

WHEN"000110"=>DATAOUT<="10001110110111111100000000";

WHEN"000111"=>DATAOUT<="10000010001111111101000000";

WHEN"001000"=>DATAOUT<="10100011100111111100001100";

WHEN"001001"=>DATAOUT<="10000000001101111100000000";

WHEN"001010"=>DATAOUT<="10000111010111111100000000";

WHEN"001011"=>DATAOUT<="10001010001111001100000000";

WHEN"001100"=>DATAOUT<="10000000001110011100000000";

WHEN"010000"=>DATAOUT<="01000010001111111000000000";

WHEN OTHERS=>DATAOUT<="10000011111111110100000000";

   END CASE;

   UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0);

   D(19 DOWNTO 0)<=DATAOUT(25 DOWNTO 6);

END PROCESS;

END A;

 

代码设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY ADDR IS

PORT(

    I15,I14,I13,I12:IN STD_LOGIC;

    SF,ZF,T4,P1,P2:IN STD_LOGIC;

    SE5,SE4,SE3,SE2,SE1,SE0:OUT STD_LOGIC

    );

END ADDR;

ARCHITECTURE A OF ADDR IS

BEGIN

    SE5<='1';

    SE4<=NOT((NOT ZF)AND(NOT SF) AND P2 AND T4);

    SE3<=NOT(I15 AND P1 AND T4);

    SE2<=NOT(I14 AND P1 AND T4);

    SE1<=NOT(I13 AND P1 AND T4);

    SE0<=NOT(I12 AND P1 AND T4);

END A;

 

 

 

代码设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY MCOMMAND IS

PORT(

     T2,T3,T4:IN STD_LOGIC;

     O:IN STD_LOGIC_VECTOR(19 DOWNTO 0);

    P1,P2,LOAD,LDPC,LDAR,LDIR,LDRI,LDPSW,RS_B,S2,S1,S0,

    ALU_B,SW_B,LED_B,RD_D,CS_D,RAM_B,CS_I,ADDR_B:OUT STD_LOGIC 

    );

END  MCOMMAND;

ARCHITECTURE A OF MCOMMANDIS

SIGNALDATAOUT:STD_LOGIC_VECTOR(19 DOWNTO 0);

BEGIN

PROCESS(T2)

    BEGIN

        IF(T2'EVENT AND T2='1') THEN

             DATAOUT(19 DOWNTO 0)<=O(19DOWNTO 0);

        END IF;

        LOAD<=DATAOUT(19);

        LDPC<=DATAOUT(18) AND T4;

        LDAR<=DATAOUT(17) AND T3;

        LDIR<=DATAOUT(16) AND T3;

        LDRI<=DATAOUT(15) AND T4;

        LDPSW<=DATAOUT(14) AND T4;

        RS_B<=DATAOUT(13);

        S2<=DATAOUT(12);

        S1<=DATAOUT(11);

        S0<=DATAOUT(10);

        ALU_B<=DATAOUT(9);

        SW_B<=DATAOUT(8);

        LED_B<=DATAOUT(7);

        RD_D<=NOT(NOT DATAOUT(6) AND (T2 ORT3));

        CS_D<=NOT(NOT DATAOUT(5) AND T3);

        RAM_B<=DATAOUT(4);

        CS_I<=DATAOUT(3);

        ADDR_B<=DATAOUT(2);

        P1<=DATAOUT(1);

        P2<=DATAOUT(0);

    END PROCESS;

 

END A;

 

 

代码设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY PC IS

PORT(

    LOAD,LDPC,CLR:IN STD_LOGIC;

    D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

    O:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

    );

END PC;

ARCHITECTURE A OF PC IS

SIGNALQOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

    PROCESS(LDPC,CLR,LOAD)

BEGIN

    IF(CLR='0')THEN

    QOUT<="00000000";

ELSIF(LDPC'EVENT ANDLDPC='1')THEN

IF(LOAD='0')THEN

    QOUT<=D;

ELSE

    QOUT<=QOUT+1;

END IF;

END IF;

END PROCESS;

O<=QOUT;

END A;

 

 

 

代码设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY IR IS

PORT(

    D:IN STD_LOGIC_VECTOR(15 DOWNTO 0);

    CLK:IN STD_LOGIC;

    O:OUT STD_LOGIC_VECTOR(15 DOWNTO 0)

    );

END IR;

ARCHITECTURE A OF IR IS

BEGIN

    PROCESS(CLK)

    BEGIN

        IF(CLK'EVENT AND CLK='1')THEN

            O<=D;

        END IF;

    END PROCESS;

END A;

 

 

 

代码设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY PSW IS

PORT(

    S,Z:IN STD_LOGIC;

    LDPSW:IN STD_LOGIC;

    SF,ZF:OUT STD_LOGIC

    );

END PSW;

ARCHITECTURE A OF PSW IS

BEGIN

    PROCESS(LDPSW)

    BEGIN

        IF(LDPSW'EVENT AND LDPSW='1')THEN

            SF<=S;

            ZF<=Z;

        END IF;

    END PROCESS;

END A;

 

 

 

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY LS273 IS

PORT(

    D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

    CLK:IN STD_LOGIC;

    O:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)

    );

END LS273;

ARCHITECTURE A OF LS273 IS

BEGIN

       PROCESS(CLK)

       BEGIN

          IF(CLK'EVENT AND CLK='1')THEN

            O<=D;

          END IF;

      END PROCESS;

 

END A ;

 

 

代码设计

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY DECODER IS

PORT(

    I9,I8:IN STD_LOGIC;

    Y0,Y1,Y2,Y3:OUT STD_LOGIC

    );

END DECODER;

ARCHITECTURE A OF DECODER IS

BEGIN

    PROCESS(I9,I8)

    BEGIN

        IF(I9='0' AND I8='0')THEN

            Y0<='1';

            Y1<='0';

            Y2<='0';

            Y3<='0';

        ELSIF(I9='0' AND I8='1')THEN

            Y0<='0';

            Y1<='1';

            Y2<='0';

            Y3<='0';

        ELSIF(I9='1' AND I8='0')THEN

            Y0<='0';

            Y1<='0';

            Y2<='1';

            Y3<='0';

        ELSE

            Y0<='0';

            Y1<='0';

            Y2<='0';

            Y3<='1';

        END IF;

    END PROCESS;

END A;

 

 

说明:先绘制AA,再绘制MM,最后绘制整个操作控制器单元crom。

 


http://chatgpt.dhexx.cn/article/8svtxxC3.shtml

相关文章

计算机组成原理74299,计算机组成原理课程设计(模型机)

计算机组成原理课程设计 模型机详细介绍 1. 模型机的结构 模型机主要由运算器、控制器、存储器、数据总线、输入输出和时序产生器组成&#xff0c;模型机的结构图如图1所示。 图1 模型机结构图 (1) 运算器。运算器又由运算逻辑单元、数据暂存器、通用寄存器组成。在图 1模型机的…

山东大学软件学院计算机组成原理课程设计实验四

文章目录 一、实验时间二、实验内容1.实验目的2.设计要求3.结构框架图4. 实验要求和基本思路5. 微程序设计 三、电路图1. 启动电路2. MBR寄存器3.总图 四、补充说明 一、实验时间 第四次实验&#xff1a;2021年4月15日星期四&#xff0c;第7周 第二次部件级实验&#xff0c;算…

NEFU计算机组成原理课程设计之乘法器

乘法器 只需要根据学习通中给出的视频&#xff0c;进行操作即可下面为logisim截图 原码一位乘 补码一位乘 这个也不难就不说费话了直接上图

山东大学软件学院计算机组成原理课程设计实验一

文章目录 一、实验时间二、实验内容1、熟悉Quartus II 开发环境及实验台2、设计16位寄存器3、设计二选一&#xff08;每路数据宽度8位&#xff09;多路选择器 一、实验时间 2021年3月18日星期四&#xff0c;第三周 二、实验内容 1、熟悉Quartus II 开发环境及实验台 &#…

山东大学软件学院计算机组成原理课程设计实验三

文章目录 一、实验时间二、实验内容1. 实验目的2. 设计要求3. 实验基本思路 三、电路图1. 可预置初值的模256异步计数器2. 8位ALU电路3. 总图 四、补充 一、实验时间 第三次实验&#xff1a;2021年4月8日星期四&#xff0c;第六周 第一次部件级实验&#xff0c;开始算分 二、…

北航计算机组成原理课程设计-2020秋 PreProject-Logisim-Logisim组合逻辑电路

北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Logisim-Logisim组合逻辑电路 本系列所有博客&#xff0c;知识讲解、习题以及答案均由北航计算机学院计算机组成原理课程组创作&#xff0c;解析部分由笔者创作&#xff0c;如有侵权联系删除。 从本节开始&#xff0…

山东大学软件学院计算机组成原理课程设计整机实验(1)

文章目录 一、实验时间二、实验要求三、整机实验基本思路3.1 前序知识3.2 关于机器指令和微指令的存放&#xff0c;读取和跳转 四、电路图4.1 启动电路4.2 模8计数器4.3 24和38译码器4.4 总图 五、实验中遇到的问题和注意事项5.1 脉冲问题5.2 微指令问题5.3 取指周期不断循环的…

计算机组成原理课程设计基于cop2000

目 录 1总体设计方案 - 1 - 1.1 课程设计的目的 - 1 - 1.2利用COP2000实验平台上设计指令微指令(微程序)系统并验证,掌握微程序设计控制器的基本方法并了解指令系统与硬件结构的对应关系; - 1 - 1.3 课程设计的任务 - 1 - 1.4 详细了解并掌握COP2000模型机的微程序控制原理…

北航计算机组成原理课程设计-2020秋 PreProject-Logisim-时序逻辑电路

北航计算机学院-计算机组成原理课程设计-2020秋 PreProject-Logisim-Logisim时序逻辑电路 本系列所有博客&#xff0c;知识讲解、习题以及答案均由北航计算机学院计算机组成原理课程组创作&#xff0c;解析部分由笔者创作&#xff0c;如有侵权联系删除。 从本节开始&#xff0…

计算机组成原理课程设计报告总结

实验0 ROM仿真 1、实验目的 &#xff08;1&#xff09;掌握ROM的工作原理&#xff1b; &#xff08;2&#xff09;画出逻辑电路图及布出美观整齐的接线图&#xff1b; &#xff08;3&#xff09;掌握ROM读出原理。 2、实验原理 存储元由有否二极管组成&#xff0c;若有&#x…

计算机组成原理论文5000字,计算机组成原理课程设计论文

计算机组成原理课程设计论文 (25页) 本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01; 14.9 积分 计算机组成原理庁果程设计扌艮告设计题目&#xff1a;设计八位全加器院系:计算机科学与信息工程学院专…

计算机组成原理 中断综合设计实验,模型机中断实验计算机组成原理课程设计报告...

模型机中断实验计算机组成原理课程设计报告 计算机组成原理课程设计报告2014 计算机组成原理课程设计报告 班级&#xff1a;计科 1202组号 2-3北京化工大学计算机科学与技术专业计算机组成原理课程设计报告院 系&#xff1a; 信息科学与技术学院 专 业&#xff1a; 计算机科学…

计算机组成原理课程设计——CPU与简单模型机设计

一、设计目的 1、掌握一个简单CPU的组成原理。 2、在掌握部件单元电路的基础上&#xff0c;进一步将其构造一台基本模型计算机。 3、掌握微程序控制器设计。 二、设计任务与要求 设计任务&#xff1a; 用所学知识&#xff0c;设计并构造一台简单模型机。验证指导书…

计算机组成原理——课程设计

《计算机组成原理》 课程设计 一、目的和要求 深入了解计算机各种指令的执行过程&#xff0c;以及控制器的组成&#xff0c;指令系统微程序设计的具体知识&#xff0c;进一步理解和掌握动态微程序设计的概念&#xff1b;完成微程序控制的特定功能计算机的指令系统设计和调试。…

计算机组成原理课程设计:复杂模型机

课程设计报告 课程名称&#xff1a; 计算机组成原理 设计题目&#xff1a; 复杂模型机 目 录 1、课程设计任务书 3 1.1设计任务 3 1.2性能指标和设计要求 3 2、本设计的模型机体系结构及功能 4 2.1 模型机的体系结构 5 2.2 模型机所具有的基本功能 5 3、 模型机硬件设计 5 3…

用excel、matlab、python绘制正态分布图

用excel、matlab、python绘制正态分布图 excel绘图matlab绘图python绘图 为加深对统计知识的理解&#xff0c;老师要求用excel和matlab绘图&#xff0c;在这想介绍3个常见的绘图软件来绘制正态分布密度函数曲线和正态分布分布函数曲线。 excel: matlab&#xff1a; excel绘图…

统计信号处理基础 习题解答1-2

题目&#xff1a; 一个未知参数θ影响一个随机变量实验的结果&#xff0c;这个随机实验可以看成随机变量x。x的PDF为 进行一系列的实验&#xff0c;发现x总是在区间[97,103]内。结果我们得出结论&#xff1a;θ肯定是100&#xff0c;这种推测正确么&#xff1f; 解答&#xf…

数学建模(NO.9斯皮尔曼相关系数)

斯皮尔曼相关系数 一. 定义方法一&#xff1a;计算公式法三.方法二&#xff1a;利用皮尔逊相关系数法四.Matlab计算五.斯皮尔曼和皮尔逊对比六.斯皮尔曼相关系数的假设检验1.小样本&#xff08;查表&#xff09;2.大样本&#xff08;计算统计量&#xff09; 七.两个比较八.相关…

【FinE】统计与计量指标计算(Matlab)

导航 CDF函数(normal distribution)CDF函数(t-location-scale distribution)CAPM模型 β \beta β计算误差项 ε i \varepsilon_i εi​计算correlation and covariance t t t分布拟合序列Generalized Hyperbolic Distributionapproximation method 1approximation method 2 Go…

【概率论与数理统计】python实验

实验一抛硬币试验的模拟 利用python产生一系列0和1的随机数&#xff0c;模拟抛硬币试验。验证抛一枚质地均匀的硬币&#xff0c;正面向上的频率的稳定值为0.5。 实验步骤 &#xff08;1&#xff09;生成0和1的随机数序列&#xff0c;将其放入列表count中&#xff1b;也可用函数…