嵌入式CISC模型机设计

更新时间:2024-04-28 01:46:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目录

1:课程设计题目 ............................................................................................................................. 1 2:嵌入式CISC模型机数据通路框图 ........................................................................................... 1 3:操作控制器的逻辑框图 ............................................................................................................. 1 4:模型机的指令系统和所有指令的指令格式 ............................................................................. 2 5:所有机器指令的微程序流程图或CPU操作流程图 ................................................................. 3 6: 操作控制器单元 ......................................................................................................................... 4 7:嵌入式CISC模型计算机的顶层电路图 ................................................................................... 6 8:汇编语言源程序 ......................................................................................................................... 6 9:机器语言源程序 ......................................................................................................................... 7 10:机器语言程序的功能仿真波形图及结果分析 ....................................................................... 8 11:进行时序仿真是芯片的引脚分配 ........................................................................................... 8 12:故障现象和故障分析 ............................................................................................................... 8 13:软件清单,含各个部件的VHDL源程序(.VHD)或图形描述文件(.gfd) ............................. 8

13.1:ALU单元 .......................................................................................................................... 8 13.2: 状态条件寄存器单元 ................................................................................................. 11 13.3: 暂存寄存器单元 ......................................................................................................... 12 13.4: 3选1数据选择器 ...................................................................................................... 13 13.5:5选1数据选择器 ...................................................................................................... 14 13.6: 程序计数器单元 ......................................................................................................... 15 13.7: 地址寄存器单元 ......................................................................................................... 17 13.8: 主存储器单元 ............................................................................................................. 17 13.9: 指令寄存器单元 ......................................................................................................... 18 13.10: 时序产生器单元 ....................................................................................................... 19 13.11: 微程序控制器单元 ................................................................................................... 20

13.11.1: 地址转移逻辑电路 ........................................................................................ 21 13.11.2: 微地址寄存器 ................................................................................................ 23 13.11.3: 微地址转换器 ................................................................................................ 25 13.11.4: 控制存储器 .................................................................................................... 26 13.11.5: 微指令寄存器 ................................................................................................ 28 13.11.6: 微地址转换器 ................................................................................................ 30 13.11.7: 指令代码转换器 ............................................................................................ 31

1

1:课程设计题目

设计一台嵌入式CISC模型计算机:采用定长CPU周期、联合控制方法,并完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下:

输入5个有符号整数(8位二进制补码表示),求所有正数的平方和并输出显示。

2:嵌入式CISC模型机数据通路框图

模型机由CISC微处理器、地址寄存器AR、ROM存储器组成。微处理器有算数逻辑单元ALU、状态条件寄存器、累加器AC、数据暂存器R、通用寄存器R0~R3、程序计数器PC、指令寄存器IR、操作控制器和时序产生器组成。模型机数据通路如图2-1所示:

图2-1 模型机数据通路框图

说明:外部时钟信号上边沿有效。

3:操作控制器的逻辑框图

微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑电路三大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。微程序控制器在T4内形成微指令的微地址,并访问控制存储器,在T2的上边沿到来时,将读出的微指令打入微指令寄存器,即图中的微命令寄存器和微地址寄存器。微程序控制器组成原理框图如下图3-1所示。

1

图3-1 微程序控制器组成原理框图

4:模型机的指令系统和所有指令的指令格式

为了完成求和功能,系统设计了9条指令:IN(输入指令),MOV(将一个数送入寄存器),CMP(完成比较功能),JB(小于等于跳转),ADD(两数相加),DEC(自减1),JMP(无条件跳转),MUL(两数相乘),OUT(输出)。

助记符号 IN Rd 指令格式 1 0 0 0 ×× 1 1 1 1 功 能 Rd ×× Rd Rd Rd Rd 将数据存到Rd寄存器 (Rs)→LED (Rs)+(Rd) →Rd (Rs)-(Rd),锁存CY和ZI (Rd)+1→Rd data→Rd OUT Rs ADD Rs,Rd CMP Rs,Rd Rs 1 1 0 0 ×× 1 0 1 0 Rs DEC Rd 1 1 0 1 ×× 1 0 0 1 ×× data MOV Rd,data JMP addr 1 1 1 0 ×××× addr addr→PC JB addr 1 0 1 1 ×××× addr 若小于,则addr→PC MUL Rs,Rd 0001 Rs Rd (Rs)*(Rd)→Rd 说明:①对Rs和Rd的规定:

2

Rs或Rd 0 0 0 1 1 0 1 1 选定的寄存器 R0 R1 R2 R3 ②模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:

7 符号位 6 5 4 3 2 1 0 尾数 5:所有机器指令的微程序流程图或CPU操作流程图 微程序控制器的设计过程如下:

(1)根据指令格式和指令系统设计所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址;

(2)设计微指令格式和微指令代码表; (3)设计地址转移逻辑电路;

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

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

3

00 PC→AR PC+1 02 READ M BUS→IR P(1) MUL 01 RS→BUS BUS→AC IN 08 SW→BUS BUS→Rd MOV 09 PC→AR PC+1 CMP 0A Rs→BUS BUS→AC JB 0B PC→AR PC+1 ADD 0C RS→BUS BUS→AC DEC 0D Rd→BUS BUS→AC JMP 0E PC→AR PC+1 OUT 0F Rs→LED 15 Rd→BUS BUS→DR 03 00 ROM→BUS BUS→Rd 04 Rd→BUS BUS→DR 06 Rd→BUS BUS→DR 12 AC-1→BUS BUS→Rd 13 ROM→BUS BUS→PC 00 16 AC*DR→Rd 05 00 AC→DR 锁存FC、FZ P(2) 07 AC+DR→Rd 00 00 00 00 FS=0 20 ROM→BUS BUS→PC FS=1 00 30 00 00

6: 操作控制器单元

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

CISC模型机系统使用的微指令采用全水平型微指令,字长为25位,其中微命令字段为17位,P字段为2位,后继微地址为6位,其格式如下:

24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 LOAD LDPC LDAR LDIR LDRi RD_B RS_B S1 S0 ALU_B LDAC LDDR WR CS SW_B LED_B LDFR P1 P2 后继微地址

由微指令格式和微程序流程图编写的微指令代码表如下所示,在微指令的代码表中微命令字段从左边到右代表的微命令信号依次为:LOAD、LDPC、LDAR、LDIR、LDRi、RD_B、RS_B、S1、S0、ALU_B、LDAC、LDDR、WR、CS、SW_B、LED_B、LDFR。

4

微命令字段 微地址 LOAD LDPC LDAR LDIR LDRi RD_B RS_B S1 S0 ALU_B LDAC LDDR WR CS SW_B LED_B LDFR P1 P1 后继位地址 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 000010 010101 001000 000000 000101 000000 000111 000000 000000 000011 000100 100000 000110 010010 010012 000000 000000 000000 010110 000000 000000 000000 000000 000001 000010 000011 000100 000101 000110 000111 001000 001001 001010 001011 001100 001101 001110 001111 010010 010011 010101 010110 100000 110000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1

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

地址转移逻辑电路是根据微程序流程图3-2中的棱形框部分及多个分支微地址,利用微地址寄存器的异步置“1”端,实现微地址的多路转移。

由于微地址寄存器中的触发器异步置“1”端低电平有效,与μA4~μA0对应的异步置“1”控制信号SE5~SE1的逻辑表达式为:

SE5=(FC+FZ)?P(2)?T4 SE4=I7?P(1)?T4 SE3=I6?P(1)?T4 SE2=I5?P(1)?T4

5

SE1=I4?P(1)?T4

7:嵌入式CISC模型计算机的顶层电路图

在MAX+plusⅡ下设计的CISC模型机的顶层电路图如下图7-1所示。

图7-1嵌入式CISC模型计算机的顶层电路图

8:汇编语言源程序

MOV R1MOV R2MOV R3

0 --R1置为0,保存累加结果

0 --R2置为0,判输入数据正负性,计输入数据的次数 5 --R3置为5,计输入次数

L1: IN R0 --外部输入数据存到R0DEC R3 --R3减1

CMP R2,R0 --比较R2和R0的大小

JB L2 --若R2小于R0则跳转L2 CMP R2,R3 --判断次数,若不到5次返回L1 JB L1 --跳转到L1

JMP L3 --若次数达到5次,跳转到L3,输出结果,程序结束 L2: MUL R0,R0 -- R0大于0,做平方运算,存到R0中

ADD R0,R1 --R1用来存累加结果的,故将R0中的平方和R1的值相加

6

CMP R2,R3 --判断次数,若不到5次返回L1 JB L1 --跳转到L1

L3: OUT R1 --将正数的平方和输出

9:机器语言源程序

根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM中去。与汇编语言源程序对应的机器语言源程序如下:

助记符 地址(十六进制) MOV1 R0,0 00 10010001 00H 01 00000000

MOV1 R1,0 02 10010010 00H 03 00000000

MOV1 R2,5 04 10010011 05H 05 00000101

L1:IN R0 06 10000000 (SW) DEC R3 07 11010011 (R0)-1CMP R2,R0 08 10101000 (R2)-(R0) JB L2 09 10110000 0A 00010000

CMP R2,R3 0B 10101011 (R2)-(R3) JB L1 0C 10110000 L1 OD 00000110 JMP L3 0E 11100000 L3 0F 00010101

L2: MUL R0,R0 10 00010000 (R0)*(R0) ADD R0,R1 11 11000001 (R0)+(R1) CMP R2,R3 12 10101011 (R2)-(R3) JB L1 13 10110000 L114 00000110

L3: OUT R1 15 11110100 (R1)

机器代码 7

功能 →R0

→R1

→R2

→R0 →R3 若小于,L2 →PC

→PC

→PC →R0 →R1 →PC

→LED

10:机器语言程序的功能仿真波形图及结果分析

结果分析:输入的整数依次为01H,FFH,01H,02H,FFH。 结果输出:06H。

计算结果与事实相符,程序正确执行

11:进行时序仿真是芯片的引脚分配

在进行仿真时主要的引脚分配为:

PC 26 AR 23 IR 22 CROM R0 5 15 R1 16 R2 17 R3 18 MUX1 28 MUX2 30 ALU 2 PSW 3 ROM 1 12:故障现象和故障分析 1. CMP指令一开始设为CMP R0,R2导致结果出错。原来JB指令是小于等于的时候跳

转,所以导致结果取反。之后将CMP指令改为CMP R2,R0,结果程序正确。 2. 微程序控制器中采用全水平微指令,在设计AC*DR→Rd指令时忘记设计S0,S1为1,1,

即控制为乘法时,变成了加法,导致结果出错。在仿真时发现结果不对,算的是加法,然后通过修改为乘法,结果正确。

13:软件清单,含各个部件的VHDL源程序(.VHD)或图形描述文件(.gfd)

13.1:ALU单元

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

8

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_SIGNED.ALL; --有符号型 ENTITY ALU IS PORT(

A:IN STD_LOGIC_VECTOR(7 DOWNTO 0); B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); S1,S0:IN STD_LOGIC;

BCDOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); CY,ZI:OUT STD_LOGIC );

END ALU;

ARCHITECTURE A OF ALU IS

SIGNAL AA,BB,TEMP:STD_LOGIC_VECTOR(8 DOWNTO 0); BEGIN

PROCESS(S1,S0)

BEGIN

IF(S1='0' AND S0='0')THEN --加法

AA<='0'&A; BB<='0'&B; TEMP<=AA+BB;

BCDOUT<=TEMP(7 DOWNTO 0); CY<=TEMP(8);

IF(TEMP=\

ZI<='1';

ELSE

ZI<='0';

END IF;

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

BCDOUT<=A-B;

IF(A

9

CY<='1';

ZI<='0';

ELSIF(A=B)THEN

Y<='0';

ZI<='1';

ELSE

CY<='0';

ZI<='0';

END IF;

ELSIF(S1='1' AND S0='1')THEN --乘法

AA<='0'&A; BB<='0'&B; TEMP<=AA*BB;

BCDOUT<=TEMP(7 DOWNTO 0); CY<=TEMP(8);

IF(TEMP=\

ZI<='1';

ELSE

ZI<='0';

END IF;

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

AA<='0'&A;

TEMP<=AA-1;

BCDOUT<=TEMP(7 DOWNTO 0); CY<=TEMP(8);

IF(TEMP=\

ZI<='1';

ELSE

ZI<='0';

10

END IF;

ELSE

BCDOUT<=\CY<='0'; ZI<='0';

END IF;

END PROCESS;

END A;

13.2: 状态条件寄存器单元

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY LS74 IS PORT(

LDFR:IN STD_LOGIC; CY,ZI:IN STD_LOGIC; FC,FZ:OUT STD_LOGIC );

END LS74;--状态寄存器 ARCHITECTURE A OF LS74 IS BEGIN

PROCESS(LDFR)

BEGIN

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

11

FC<=CY;

FZ<=ZI;

END IF;

END PROCESS;

END A;

13.3: 暂存寄存器单元

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;

12

13.4: 3选1数据选择器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX3 IS PORT(

ID:IN STD_LOGIC_VECTOR(7 DOWNTO 0); SW_B,CS:IN STD_LOGIC;

N1,N2:IN STD_LOGIC_VECTOR(7 DOWNTO 0); EW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );

END MUX3;--3选1数据选择器单元 ARCHITECTURE A OF MUX3 IS BEGIN

PROCESS(SW_B,CS) BEGIN

IF(SW_B='0')THEN

EW<=ID;--从输入设备输入数据 ELSIF(CS='0')THEN

EW<=N2;--将ROM中读出的指令代码送入内部数据通路 ELSE

EW<=N1;--将5选1多路选择器的输出送入内部数据通路

13

END IF; END PROCESS; END A;

13.5:5选1数据选择器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX5 IS PORT( );

END MUX5;--5选1数据选择器单元 ARCHITECTURE A OF MUX5 IS

SIGNAL SEL: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN

14

C,D,E,F,G: IN STD_LOGIC;

X1,X2,X3,X4,x5: IN STD_LOGIC_VECTOR(7 DOWNTO 0); W: out STD_LOGIC_VECTOR(7 DOWNTO 0)

SEL<=G&F&E&D&C; PROCESS(SEL) BEGIN

IF(SEL=\ --输出R0的内容 W<=X1;

ELSIF(SEL=\ --输出R1的内容 W<=X2;

ELSIF(SEL=\ --输出R2的内容 W<=X3;

ELSIF(SEL=\ --输出R3的内容 W<=X4;

ELSIF(SEL=\ --输出ALU的内容 W<=X5; ELSE null; END IF; END PROCESS; END A;

13.6: 程序计数器单元

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;

15

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

SIGNAL QOUT:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN

PROCESS(LDPC,CLR,LOAD) BEGIN

IF(CLR='0')THEN

QOUT<=\将pc清0 ELSIF(LDPC'EVENT AND LDPC='1')THEN IF(LOAD='0')THEN

QOUT<=D; --将数据总线的内容送入pc ELSE

QOUT<=QOUT+1; --PC+1 END IF; END IF; END PROCESS; O<=QOUT; END A;

16

13.7: 地址寄存器单元

13.8: 主存储器单元

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ROM16 IS PORT( );

END ROM16;--主存储器单元ROM16 ARCHITECTURE A OF ROM16 IS BEGIN

DOUT<=\ -- MOV R1,00

\

\ --MOV R2,00

17

DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CS:IN STD_LOGIC

\

\ --MOV R3,05 \

\ -- L1: IN R0 \ -- DEC R3

\ -- CMP R2,R0 \ --JB L2

\

\ -- CMP R2,R3 \ -- JB: L1 \

\ -- JMP L3 \ --

\ --L2:MUL R0,R0

\ --ADD R0,R1 \ --CMP R2,R3 \ --JB L1 \ --

\ --L3:OUT1 R1 \END A;

13.9: 指令寄存器单元

18

13.10: 时序产生器单元

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNTER IS PORT(

Q,CLR:IN STD_LOGIC; T2,T3,T4:OUT STD_LOGIC );

END COUNTER;--时序产生器单元 ARCHITECTURE A OF COUNTER IS

SIGNAL X:STD_LOGIC_VECTOR(1 DOWNTO 0); BEGIN

PROCESS(Q,CLR) BEGIN

IF(CLR='0')THEN T2<='0'; T3<='0'; T4<='0'; X<=\

ELSIF(Q'EVENT AND Q='1')THEN--当出现时钟Q上边沿时,计数器的值X+1 X<=X+1;--由当前值X译码后产生节拍脉冲信号T2,T3,T4.

19

T2<=(NOT X(1))AND X(0); T3<=X(1)AND (NOT X(0)); T4<=X(1)AND X(0); END IF; END PROCESS; END A;

13.11: 微程序控制器单元

微程序控制器单元

20

微程序控制器的内部结构

13.11.1: 地址转移逻辑电路

21

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADDR IS PORT(

I7,I6,I5,I4:IN STD_LOGIC; FZ,FC,T4,P1,P2:IN STD_LOGIC;

SE6,SE5,SE4,SE3,SE2,SE1:OUT STD_LOGIC );

END ADDR;--地址转移逻辑电路 ARCHITECTURE A OF ADDR IS BEGIN SE6<='1';

SE5<=NOT ((NOT FC OR FZ ) AND P2 AND T4); SE4<=NOT(I7 AND P1 AND T4); SE3<=NOT(I6 AND P1 AND T4); SE2<=NOT(I5 AND P1 AND T4); SE1<=NOT(I4 AND P1 AND T4); END A;

22

13.11.2: 微地址寄存器

23

微地址寄存器内部结构

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY MMM IS PORT(

SE:IN STD_LOGIC; T2:IN STD_LOGIC; D:IN STD_LOGIC; CLR:IN STD_LOGIC; UA:OUT STD_LOGIC );

END MMM;--带有异步清零和异步置一功能的触发器,由多个mmm组成微地址寄存器aa

ARCHITECTURE A OF MMM IS BEGIN

PROCESS(CLR,SE,T2) BEGIN

24

IF(CLR='0')THEN UA<='0'; ELSIF(SE='0')THEN UA<='1';

ELSIF(T2'EVENT AND T2='1')THEN UA<=D; END IF; END PROCESS; END A;

13.11.3: 微地址转换器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY F1 IS PORT(

UA5,UA4,UA3,UA2,UA1,UA0:IN STD_LOGIC; D:OUT STD_LOGIC_VECTOR(5 DOWNTO 0) );

END F1;--微地址转换器 ARCHITECTURE A OF F1 IS

25

BEGIN

D(5)<=UA5; D(4)<=UA4; D(3)<=UA3; D(2)<=UA2; D(1)<=UA1; D(0)<=UA0; END A;

13.11.4: 控制存储器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.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(18 DOWNTO 0) );

END CONTROM;--操作控制器单元 ARCHITECTURE A OF CONTROM IS

SIGNAL DATAOUT: STD_LOGIC_VECTOR(24 DOWNTO 0); BEGIN

PROCESS(ADDR)

26

BEGIN

CASE ADDR IS

WHEN \ WHEN \取指 WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \

WHEN \

WHEN \

WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN OTHERS => DATAOUT<=\ END CASE;

UA(5 DOWNTO 0)<=DATAOUT(5 DOWNTO 0); D(18 DOWNTO 0)<=DATAOUT(24 DOWNTO 6); END PROCESS; END A;

27

13.11.5: 微指令寄存器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY MCOMMAND IS PORT(

T2,T3,T4,I3,I2,I1,I0:IN STD_LOGIC; O:IN STD_LOGIC_VECTOR(18 DOWNTO 0);

P1,P2,LOAD,LDPC,LDAR,LDIR,LDR0,LDR1,LDR2,LDR3,R0_B,R1_B,R2_B,R3_B,S1,S0,ALU_B,LDAC,LDDR,WR,CS,SW_B,LED_B,LDFR:OUT STD_LOGIC );

END MCOMMAND;--微地址寄存器 ARCHITECTURE A OF MCOMMAND IS

28

SIGNAL DATAOUT:STD_LOGIC_VECTOR(18 DOWNTO 0); BEGIN

PROCESS(T2) BEGIN

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

DATAOUT(18 DOWNTO 0)<=O(18 DOWNTO 0); END IF;

P2<=DATAOUT(0); P1<=DATAOUT(1);

LDFR<=DATAOUT(2) AND T4; LED_B<=DATAOUT(3); SW_B<=DATAOUT(4); CS<=DATAOUT(5);

WR<=DATAOUT(6)OR(NOT T3); LDDR<=DATAOUT(7) AND T4; LDAC<=DATAOUT(8) AND T4; ALU_B<=DATAOUT(9); S0<=DATAOUT(10); S1<=DATAOUT(11);

R3_B<=(DATAOUT(13)OR(NOT I1)OR (NOT I0))AND(DATAOUT(12)OR(NOT I3)OR (NOT I2));

R2_B<=(DATAOUT(13)OR(NOT I1)OR I0)AND(DATAOUT(12)OR(NOT I3)OR I2); R1_B<=(DATAOUT(13)OR(NOT I0)OR I1)AND(DATAOUT(12)OR(NOT I2)OR I3); R0_B<=(DATAOUT(13)OR I1 OR I0)AND(DATAOUT(12)OR I3 OR I2); LDR3<=T4 AND DATAOUT(14)AND I1 AND I0; LDR2<=T4 AND DATAOUT(14)AND I1 AND (NOT I0); LDR1<=T4 AND DATAOUT(14)AND (NOT I1) AND I0; LDR0<=T4 AND DATAOUT(14)AND (NOT I1) AND (NOT I0); LDIR<=DATAOUT(15)AND T3; LDAR<=DATAOUT(16)AND T3;

29

LDPC<=DATAOUT(17)AND T4; LOAD<=DATAOUT(18); END PROCESS; END A;

13.11.6: 微地址转换器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY F2 IS PORT(

D:IN STD_LOGIC_VECTOR(5 DOWNTO 0); UA5,UA4,UA3,UA2,UA1,UA0:OUT STD_LOGIC );

END F2;--微地址转换器 ARCHITECTURE A OF F2 IS BEGIN

UA5<=D(5); UA4<=D(4); UA3<=D(3); UA2<=D(2);

30

UA1<=D(1); UA0<=D(0); END A;

13.11.7: 指令代码转换器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY F3 IS PORT(

D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);

UA7,UA6,UA5,UA4,UA3,UA2,UA1,UA0:OUT STD_LOGIC );

END F3;--指令代码转换器,8位 ARCHITECTURE A OF F3 IS BEGIN

UA7<=D(7); UA6<=D(6); UA5<=D(5); UA4<=D(4); UA3<=D(3);

31

UA2<=D(2); UA1<=D(1); UA0<=D(0); END A;

32

本文来源:https://www.bwwdw.com/article/ln9g.html

Top