嵌入式CISC模型机设计(2)

2019-06-17 18:04

微命令字段 微地址 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


嵌入式CISC模型机设计(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016科学技术奖获奖项目科技进步奖一等奖13项1抗疏力技术在

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: