ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:279.94KB ,
资源ID:9837949      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9837949.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式CISC模型机设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式CISC模型机设计.docx

1、嵌入式CISC模型机设计1:课程设计题目设计一台嵌入式CISC模型计算机:采用定长CPU周期、联合控制方法,并完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下:输入5个有符号整数(8位二进制补码表示),求所有正数的平方和并输出显示。2:嵌入式CISC模型机数据通路框图模型机由CISC微处理器、地址寄存器AR、ROM存储器组成。微处理器有算数逻辑单元ALU、状态条件寄存器、累加器AC、数据暂存器R、通用寄存器R0R3、程序计数器PC、指令寄存器IR、操作控制器和时序产生器组成。模型机数据通路如图2-1所示:图2-1 模型机数据通路框图说明:外部时钟信号上边沿有效。3:操作控制器的逻辑

2、框图微程序控制器主要由控制存储器、微指令寄存器和地址转移逻辑电路三大部分组成,其中微指令寄存器分为微地址寄存器和微命令寄存器两部分。微程序控制器在T4内形成微指令的微地址,并访问控制存储器,在T2的上边沿到来时,将读出的微指令打入微指令寄存器,即图中的微命令寄存器和微地址寄存器。微程序控制器组成原理框图如下图3-1所示。图3-1 微程序控制器组成原理框图4:模型机的指令系统和所有指令的指令格式为了完成求和功能,系统设计了9条指令:IN(输入指令),MOV(将一个数送入寄存器),CMP(完成比较功能),JB(小于等于跳转),ADD(两数相加),DEC(自减1),JMP(无条件跳转),MUL(两数

3、相乘),OUT(输出)。助记符号指令格式功 能IN Rd 1 0 0 0Rd将数据存到Rd寄存器OUT Rs1 1 1 1Rs(Rs)LEDADD Rs,Rd1 1 0 0Rd(Rs)+(Rd) RdCMP Rs,Rd1 0 1 0RsRd(Rs)-(Rd),锁存CY和ZIDEC Rd1 1 0 1Rd(Rd)+1RdMOV Rd,data1 0 0 1RddatadataRdJMP addr1 1 1 0addraddrPCJB addr1 0 1 1addr若小于,则addrPCMUL Rs,Rd0001RsRd(Rs)*(Rd)Rd说明:对Rs和Rd的规定:Rs或Rd选定的寄存器0 0R

4、00 1R11 0R21 1R3模型机规定数据的表示采用定点整数补码表示,单字长为8位,其格式如下:76 5 4 3 2 1 0符号位尾数5:所有机器指令的微程序流程图或CPU操作流程图微程序控制器的设计过程如下:(1)根据指令格式和指令系统设计所有机器指令的微程序流程图,并确定每条微指令的微地址和后继微地址;(2)设计微指令格式和微指令代码表;(3)设计地址转移逻辑电路;(4)设计微程序控制器中的其它逻辑单元电路,包括微地址寄存器、微命令寄存器和控制存储器;(5)设计微程序控制器的顶层电路(由多个模块组成)。DECJMPADDJBCMPMOVINMULFS=1FS=0302007131206

5、0F05040316150E0D0C0B0A0908020001PCARPC+1READ MBUSIRP(1)RsLEDPCARPC+1RdBUSBUSACRSBUSBUSACPCARPC+1RsBUSBUSACPCARPC+1SWBUSBUSRdRSBUSBUSACROMBUSBUSPCAC-1BUSBUSRdRdBUSBUSDRRdBUSBUSDRROMBUSBUSRdRdBUSBUSDRP(2)ROMBUSBUSPCAC+DRRdACDR锁存FC、FZAC*DRRd00000000000000000000OUT6: 操作控制器单元(1)设计微指令格式和微指令代码表CISC模型机系统使用的

6、微指令采用全水平型微指令,字长为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 0LOAD 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

7、、S1、S0、ALU_B、LDAC、LDDR、WR、CS、SW_B、LED_B、LDFR。微地址微命令字段P1P1后继位地址LOADLDPCLDARLDIRLDRiRD_BRS_BS1S0ALU_BLDACLDDRWRCSSW_BLED_BLDFR00000011100110010011110000000100000011000010001101111000010101000010100101100100101101000100000001110001110010010110000000000001001000001001011111000000101000101100001101100111

8、110000000000011010000010010111110000001110001111000111000001111000000000001000100011100100110100000000000100111100110010011110000000110010101000010001101111000000100001011111001100100111100110000000110010000100011011110000001100011011000001001101111000010010001110111001100100111100001001200111110000

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

10、1”端低电平有效,与A4A0对应的异步置“1”控制信号SE5SE1的逻辑表达式为: SE5=(FC+FZ)P(2)T4SE4=I7P(1)T4SE3=I6P(1)T4SE2=I5P(1)T4SE1=I4P(1)T47:嵌入式CISC模型计算机的顶层电路图在MAX+plus下设计的CISC模型机的顶层电路图如下图7-1所示。图7-1嵌入式CISC模型计算机的顶层电路图8:汇编语言源程序MOV R1 0 -R1置为0,保存累加结果 MOV R2 0 -R2置为0,判输入数据正负性,计输入数据的次数 MOV R3 5 -R3置为5,计输入次数 L1: IN R0 -外部输入数据存到R0 DEC R3

11、 -R3减1 CMP R2,R0 -比较R2和R0的大小 JB L2 -若R2小于R0则跳转L2CMP R2,R3 -判断次数,若不到5次返回L1JB L1 -跳转到L1JMP L3 -若次数达到5次,跳转到L3,输出结果,程序结束 L2: MUL R0,R0 - R0大于0,做平方运算,存到R0中ADD R0,R1 -R1用来存累加结果的,故将R0中的平方和R1的值相加CMP R2,R3 -判断次数,若不到5次返回L1JB L1 -跳转到L1L3: OUT R1 -将正数的平方和输出 9:机器语言源程序根据设计的指令格式,将汇编语言源程序手工转换成机器语言源程序,并将其设计到模型机中的ROM

12、中去。与汇编语言源程序对应的机器语言源程序如下:助记符 地址(十六进制) 机器代码 功能MOV1 R0,0 00 10010001 00H R0 01 00000000 MOV1 R1,0 02 10010010 00H R1 03 00000000 MOV1 R2,5 04 10010011 05H R2 05 00000101 L1:IN R0 06 10000000 (SW) R0DEC R3 07 11010011 (R0)-1R3CMP R2,R0 08 10101000 (R2)-(R0)JB L2 09 10110000 若小于,L2 PC 0A 00010000 CMP R2,

13、R3 0B 10101011 (R2)-(R3) JB L1 0C 10110000 L1PC OD 00000110 JMP L3 0E 11100000 L3PC 0F 00010101L2: MUL R0,R0 10 00010000 (R0)*(R0) R0 ADD R0,R1 11 11000001 (R0)+(R1) R1CMP R2,R3 12 10101011 (R2)-(R3) JB L1 13 10110000 L1PC14 00000110L3: OUT R1 15 11110100 (R1) LED10:机器语言程序的功能仿真波形图及结果分析结果分析:输入的整数依次为0

14、1H,FFH,01H,02H,FFH。结果输出:06H。计算结果与事实相符,程序正确执行11:进行时序仿真是芯片的引脚分配在进行仿真时主要的引脚分配为:PCARIRCROMR0R1R2R3MUX1MUX2ALUPSWROM262322515161718283023112:故障现象和故障分析1 CMP指令一开始设为CMP R0,R2导致结果出错。原来JB指令是小于等于的时候跳转,所以导致结果取反。之后将CMP指令改为CMP R2,R0,结果程序正确。2 微程序控制器中采用全水平微指令,在设计AC*DRRd指令时忘记设计S0,S1为1,1,即控制为乘法时,变成了加法,导致结果出错。在仿真时发现结果

15、不对,算的是加法,然后通过修改为乘法,结果正确。13:软件清单,含各个部件的VHDL源程序(.VHD)或图形描述文件(.gfd)13.1:ALU单元LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL; -有符号型ENTITY ALU ISPORT( A:IN STD_LOGIC_VECTOR(7 DOWNTO 0); B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); S1,S0:IN STD_LOGIC; BCDOUT:OUT

16、STD_LOGIC_VECTOR(7 DOWNTO 0); CY,ZI:OUT STD_LOGIC );END ALU;ARCHITECTURE A OF ALU ISSIGNAL 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=100000000OR TEMP=000000000)THEN ZI=1; ELSE

17、ZI=0; END IF; ELSIF(S1=0 AND S0=1)THEN -减法 BCDOUT=A-B; IF(AB)THEN 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=100000000OR TEMP=000000000)THEN ZI=1; ELSE ZI=0; END IF; ELSIF(S1=1 A

18、ND S0=0)THEN -自减1 AA=0&A; TEMP=AA-1; BCDOUT=TEMP(7 DOWNTO 0); CY=TEMP(8); IF(TEMP=100000000OR TEMP=000000000)THEN ZI=1; ELSE ZI=0; END IF; ELSE BCDOUT=00000000; CY=0; ZI=0; END IF; END PROCESS;END A;13.2: 状态条件寄存器单元LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS74 ISPORT(LDFR:IN STD_LOGIC;CY,ZI:IN

19、 STD_LOGIC;FC,FZ:OUT STD_LOGIC);END LS74;-状态寄存器ARCHITECTURE A OF LS74 ISBEGIN PROCESS(LDFR) BEGIN IF(LDFREVENT AND LDFR=1)THEN FC=CY; FZ=ZI; END IF; END PROCESS;END A;13.3: 暂存寄存器单元LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS273 ISPORT( D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC; O:OUT

20、 STD_LOGIC_VECTOR(7 DOWNTO 0) );END LS273;-通用寄存器ARCHITECTURE A OF LS273 ISBEGIN PROCESS(CLK) BEGIN IF(CLKEVENT AND CLK=1)THEN O=D; END IF; END PROCESS;END A;13.4: 3选1数据选择器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX3 ISPORT( ID:IN STD_LOGIC_VECTOR(7 DOWNTO 0); SW_B,CS:IN STD_LOGIC; N1,N2:IN S

21、TD_LOGIC_VECTOR(7 DOWNTO 0); EW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END MUX3;-3选1数据选择器单元ARCHITECTURE A OF MUX3 ISBEGIN PROCESS(SW_B,CS) BEGIN IF(SW_B=0)THEN EW=ID;-从输入设备输入数据 ELSIF(CS=0)THEN EW=N2;-将ROM中读出的指令代码送入内部数据通路 ELSE EW=N1;-将5选1多路选择器的输出送入内部数据通路 END IF; END PROCESS;END A;13.5:5选1数据选择器LIBRARY IEE

22、E;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX5 ISPORT( 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);END MUX5;-5选1数据选择器单元ARCHITECTURE A OF MUX5 ISSIGNAL SEL: STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN SEL=G&F&E&D&C; PROCESS(SEL) BEGIN IF(SEL=11110)

23、THEN -输出R0的内容 W=X1; ELSIF(SEL=11101) THEN -输出R1的内容 W=X2; ELSIF(SEL=11011) THEN -输出R2的内容 W=X3; ELSIF(SEL=10111) THEN -输出R3的内容 W=X4; ELSIF(SEL=01111) THEN -输出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;USE IEEE.ST

24、D_LOGIC_UNSIGNED.ALL;ENTITY PC ISPORT( 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 ISSIGNAL QOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(LDPC,CLR,LOAD) BEGIN IF(CLR=0)THEN QOUT=00000000; -将pc清0 ELSIF(LDPCEVENT 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;13.7: 地址寄存器单元13.8: 主存储器单元LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1