- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《简化CPU设计》-.
电子科技大学通信学院
简化CPU设计
2013年9月
一、课程设计要求
设计16位精简指令集CPU指令系统;
完成精简指令集CPU的结构设计和所有模块的代码编写,并仿真验证;
编写能够完成加法器﹑流水灯等功能的汇编程序,并翻译成二进制机器码;
设计CPU外围模块如分频器,存储器和IO接口,并在软件平台上仿真CPU执行程序的完整过程;
下载工程到FPGA芯片,在硬件资源上实现。
二、设计思路
1、CPU指令集系统设计
本课程设计所设计的RISC_CPU指令长度为16位,能够处理16位数据,指令中需要操作符,寄存器地址和立即数等字段。
完成立即数数据载入操作需要如下指令:
mil:将立即数放在低8位
mih:将立即数放在高8位
因为一条指令无法载入完整16比特立即数数据,设计指令格式中用于存放立即数的字段为8bits,将16bits数据传递到通用寄存器需要2条指令,“mil R1,I(低8位)”将立即数I的低8位传递给通用寄存器R1,“mih R1,I(高8位)”将立即数I的高8位传递给通用寄存器R1。
完成存储器或I/O数据载入与存储的操作需要如下指令:
lda:载入指定地址数据
sta:储存数据到指定地址
inp:从端口输入
oup:输出到端口
因为存储器中有些地址的数据可能是有工程意义的,对这些地址上的数据的处理是必不可少的。“lda Rd Rs”将通用寄存器Rs的数据作为指定地址,将存储器中该地址上的数据载入到通用寄存器Rd中,“sta Rd Rs”将通用寄存器Rd的数据作为指定地址,将通用寄存器Rs的数据储存到存储器该地址上。
完成通用寄存器阵列内数据运算操作需要如下指令:
and:寄存器数据与操作
orr:寄存器数据或操作
not:寄存器数据非操作
shl:左移
shr:右移
add:寄存器数据相加
sub:寄存器数据相减
mul:寄存器数据相乘
cmp:寄存器数据相比较
这些是本CPU设计能够完成的数据处理操作,有3点需要注意:1、所有操作的数据必须储存于通用寄存器中2、乘法运算只能进行8比特数据相乘,溢出则取其低8位数据相乘3、cmp指令的结果会影响标志位,该标志位可作为分支操作的条件,但执行cmp指令之前建议先清除相关标志位。
完成对标志位的处理操作需要如下指令:
szf:对零标志位置1
czf:清除零标志位
scf:对进位标志位置1
ccf:清除进位标志位
设计这些指令为分支操作的执行创造了条件,还需要注意其它指令在执行过程中同样可能影响标志位的值。
完成指令跳转、分支操作需要如下指令:
spc:保存pc的值
jpa:跳转到指定位置
jpr:跳转到相关位置
brz:以零标志位为条件的分支
brc:以进位标志位为条件的分支
spc、jpa、jpr指令为程序的循环执行创造了基础,brz、brc指令为程序的分支执行创造了基础。如果一个程序不只是顺序执行,那么这些指令是必不可少的。“spc Rd I”将当前PC值与立即数I相加的结果送给通用寄存器Rd,“brc I”如果进位标志位C为1,将当前PC的值与立即数I相加的结果作为PC的值。
完成对窗口指针的操作需要如下指令:
cwp:清除窗口指针
awp:窗口指针与立即数相加
窗口指针用于存放通用寄存器的窗口偏移值,达到扩大通用寄存器数量的目的。在最终的指令格式中通用寄存器地址(编号)只有两比特,也就是直接表示只能表示4个寄存器,经验证无法完成本课程设计所设计所要求的完成流水灯的程序编写,而加上窗口指针偏移值后,就可以表示更多的通用寄存器以达到课程设计要求。
完成无操作、中断需要如下指令:
nop:无操作
hlt:中断
建议本课程设计所设计的CPU的指令格式为:
15-12bit规定指令的类型;
11-8bit选择寄存器,共设有8个寄存器,前2位为目的寄存器,后2位为源寄存器;
7-0bit为立即数。
部分示例指令如下表2-1所示,其中D、S分别为目的、源寄存器,I为立即数。
表2-1 部分指令集系统
助记符及定义 比特15:0 注释 nop 无操作 0000-00-00无操作 hlt 中断 0000-00-01中断,遇到停止 szf 对零标志位置1 0000-00-10Z=’1’ czf 清除零标志位 0000-00-11Z=’0’ scf 对进位标志位置1 0000-01-00C=’1’ ccf 清除进位标志位 0000-01-01C=’0’ cwp 清除窗口指针 0000-01-10WP=’000’ mvr 转移寄存器数据 0001-D-SRd=Rs l
文档评论(0)