*CN102323766A*
(10)申请公布号 CN 102323766 A(43)申请公布日 2012.01.18
(12)发明专利申请
(21)申请号 201110135258.9(22)申请日 2011.05.24
(71)申请人华润半导体(深圳)有限公司
地址518040 广东省深圳市福田区深南西路
车公庙天安数码城天祥大厦8A部分(72)发明人陈勤学 丁东民 金翔
(74)专利代理机构北京正理专利代理有限公司
11257
代理人张雪梅(51)Int.Cl.
G05B 19/042(2006.01)
权利要求书 2 页 说明书 20 页 附图 4 页
()发明名称
一种智能玩具控制芯片(57)摘要
本发明提供一种智能玩具控制芯片,该控制芯片包括时钟模块,程序存储器,控制模块,寄存器文件和语音模块,寄存器文件包括用于存放语音初始地址的语音地址寄存器和用于存放语音采样率的采样率寄存器,语音模块包括语音地址发生器,采样率分频器,语音存储器,语音解码器,语音驱动模块和语音控制逻辑,该语音控制逻辑根据来自控制模块的启动信号,时钟信号以及语音初始地址和语音采样率控制语音模块输出语音驱动信号。本发明进一步提供一种包括该控制芯片的智能玩具。本发明的控制芯片具有改善的语音播放效果和较低的生产成本。
CN 102323766 ACN 102323766 ACN 102323776 A
权 利 要 求 书
1/2页
1.一种哈佛架构的控制芯片,该控制芯片包括时钟模块,程序存储器,控制模块,寄存器文件,和语音模块,其特征在于,
所述寄存器文件包括用于存放语音初始地址的语音地址寄存器和用于存放语音采样率的采样率寄存器,
所述语音模块包括语音地址发生器,采样率分频器,语音存储器,语音解码器,语音驱动模块和语音控制逻辑,
所述语音控制逻辑根据来自控制模块的启动信号,时钟信号,以及所述语音初始地址和语音采样率控制语音模块输出语音驱动信号。
2.如权利要求1所述的哈佛架构的控制芯片,其特征在于,
所述采样率分频器根据时钟信号和所述语音采样率产生采样率信号,并输出给语音地址发生器;
所述语音地址发生器根据所述初始地址和所述采样率信号产生语音存储器的地址;所述语音解码器对来自语音存储器的编码语音数据进行解码,输出解码的语音数据至语音驱动模块,并在语音结束时输出结束标志;
所述语音控制逻辑根据来自语音解码器的结束标志输出语音结束信号给控制模块。3.如权利要求1所述的哈佛架构的控制芯片,其特征在于,所述语音驱动模块是PWM或DAC。
4.如权利要求1所述的哈佛架构的控制芯片,其特征在于,所述时钟模块包括快速振荡器,慢速振荡器和时钟发生器,所述语音模块接收来自快速振荡器的时钟信号。
5.如权利要求1所述的哈佛架构的控制芯片,其特征在于,所述控制芯片进一步包括LCD驱动模块,并且所述寄存器文件包括用于控制LCD驱动模块工作的LCD控制寄存器和用于存储显示数据的LCD RAM。
6.如权利要求1所述的哈佛架构的控制芯片,其特征在于,所述控制模块是采用二级两相流水线架构的4位RISC架构的控制模块,该控制模块包括指令寄存器,指令译码器,堆栈,算术逻辑单元ALU,和程序计数器;存储于程序存储器的指令包括单周期指令和双周期指令,每个单周期指令在执行指令的同时取出下一条指令,每个双周期指令的第一指令周期在执行指令的同时取出下一条指令,其第二指令周期在执行指令的同时重新取指令,每个指令周期分为第一相和第二相,
在所述第一相,控制模块完成堆栈入栈、程序存储器读取、寄存器读取、指令译码和ALU运算操作,
在所述第二相,控制模块完成堆栈弹出、指令寄存器锁存、寄存器写入、程序计数器改写操作。
7.如权利要求1所述的哈佛架构的控制芯片,其特征在于,该控制模块包括具有49条指令的一套精简指令集,所述指令译码器输出的信号包括:
寄存器操作类指令,指令译码器输出寄存器地址信息和读写操作信号给寄存器文件,输出运算控制信号给算术逻辑单元;
立即数指令,指令译码器输出立即数和运算控制信号给算术逻辑单元;程序转移类指令和中断,指令译码器输出程序地址信息和跳转控制信号给程序计数器,输出堆栈控制信号给堆栈,输出中断控制信号给中断处理器;
2
CN 102323766 ACN 102323776 A
权 利 要 求 书
2/2页
控制类指令,指令译码器输出各种控制信号到控制模块或外围功能模块;
语音类指令,指令译码器输出语音类指令用于控制和检测语音模块的工作。8.如权利要求7所述的哈佛架构的控制芯片,其特征在于,所述语音类指令包括:用于启动语音模块开始播放语音的1条语音播放指令PVOX,和
用于在检测到来自语音模块的语音结束信号跳转到目标地址的语音跳转指令JVEND。9.如权利要求1所述的哈佛架构的控制芯片,其特征在于,所述程序存储器是15位宽用于存放指令码的程序存储器。
10.如权利要求1所述的哈佛架构的控制芯片,其特征在于,所述语音存储器是4位存储器。
11.如权利要求2所述的哈佛架构的控制芯片,其特征在于,所述控制模块包括工作模式处理器,用于根据下述四种芯片工作模式控制时钟模块输出时钟信号:
当芯片工作于正常模式时,时钟模块以慢速振荡器的输出作为控制模块的工作时钟;当芯片工作于快速模式时,时钟模块以快速振荡器的输出作为控制模块的工作时钟;当芯片工作于暂停模式时,时钟模块停止控制模块的工作时钟;当芯片工作于休眠模式时,时钟模块停止时钟输出并关闭快速振荡器和慢速振荡器。12.如权利要求2所述的哈佛架构的控制芯片,其特征在于,当语音模块不工作时并且芯片不以快速模式工作时,时钟模块关闭快速振荡器。
13.一种玩具,包括根据权利要求1所述的哈佛架构的控制芯片。
3
CN 102323766 ACN 102323776 A
说 明 书一种智能玩具控制芯片
1/20页
技术领域
[0001]
本发明涉及集成电路设计领域。更具体的,本发明涉及一种低成本多功能智能玩具核心控制芯片。
背景技术
[0002] 微控制器种类很多,从数据总线宽度上看有四位微控制器、八位微控制器、十六位微控制器、三十二位微控制器等,从指令架构上看有复杂指令集(Complex Instruction Set Computer,CISC)微控制器和精简指令集(Reduced Instruction Set Computer,RISC)微控制器等。从体系结构上看,用于智能玩具的核心控制芯片必须集成一些专用的外设,比如语音存储器、语音输出驱动电路、LCD/LED驱动电路等。这样的控制芯片除了普通的运算和控制指令之外,还需要有足够的语音控制指令。
[0003] 图1示出现有技术的普通玩具控制芯片的结构框图。现有玩具控制芯片的语音模块仅包括语音存储器105和语音驱动106,控制芯片通过对特殊功能寄存器(SFR)的操作来实现其对语音的控制。与普通芯片的数据读取、处理相似,图1所示的控制芯片的工作流程如下:CPU核101先把所要读取的语音数据的地址赋给语音地址寄存器102,语音存储器105打开并把相应地址上的语音数据传递给语音数据寄存器103,CPU核101再从语音数据寄存器103中读取数据,利用软件设计好的算法对该数据进行处理,转换成一定格式,赋给语音驱动寄存器104,语音驱动模块106把语音驱动寄存器104中的数据转换成对应的驱动信号去驱动喇叭或扬声器,经过由语音采样率确定的时间,再读取第二个数据,如此不断重复,即可从喇叭或扬声器上听到相应的语音。如上所述,整个语音播放过程都需要CPU核101不停写出语音地址、读取语音数据、处理语音数据再写出到语音驱动寄存器104并且判断语音是否结束,非常浪费CPU资源和程序资源。这种控制芯片的优点是语音编解码算法由软件实现,所以比较灵活。但其缺点也是显而易见的,如:(1)语音存储器一般为8位宽,CPU内核也是8位,采用16位的指令编码位宽,造成芯片面积偏大,成本偏高;(2)语音算法通过软件实现,占用程序存储器空间和CPU运行时间,不利于播放语音时处理其他进程,同时对采样率的计算还要另外增加一个定时器,并以中断等方式让CPU进入语音处理程序,增加了系统资源,而计算出的采样率也不够精确,如果语音算法太复杂,所需程序量太大,可能还会造成语音输出速度不均匀,影响语音效果;(3)没有语音操作指令,对语音的控制通过对相应特殊功能寄存器的相应位的操作的实现,而这些位通常是不可寻址的位,所以容易造成误操作,同时语音的结束也不好判断;(4)用软件实现语音算法,使得应用工程师必须自行开发语音算法并组织语音数据写入到语音存储器中,增加了程序开发难度和开发工具的设计难度;(5)一般此类控制器都缺少LCD驱动模块,缩小了应用范围。[0004] 为了适应对智能玩具功能性的新的需要,并提供低成本且低功耗的智能玩具,需要一种新型的智能玩具控制芯片。发明内容
4
CN 102323766 ACN 102323776 A[0005]
说 明 书
2/20页
本发明的一个目的在于,提供一种控制芯片,该控制芯片包括可于CPU运行的语音模块,以便语音模块运行时,CPU可同时处理其他进程,显著改善CPU的工作效率。[0006] 本发明提供一种哈佛架构的控制芯片,该控制芯片包括时钟模块,程序存储器,控制模块,寄存器文件,和语音模块,
[0007] 所述寄存器文件包括用于存放语音初始地址的语音地址寄存器和用于存放语音采样率的采样率寄存器,
[0008] 所述语音模块包括语音地址发生器,采样率分频器,语音存储器,语音解码器,语音驱动模块和语音控制逻辑,
[0009] 所述语音控制逻辑根据来自控制模块的启动信号,时钟信号,以及所述语音初始地址和语音采样率控制语音模块输出语音驱动信号。[0010] 优选地,所述采样率分频器根据时钟信号和所述语音采样率产生采样率信号,并输出给语音地址发生器;
[0011] 所述语音地址发生器根据所述初始地址和所述采样率信号产生语音存储器的地址;
[0012] 所述语音解码器对来自语音存储器的编码语音数据进行解码,输出解码的语音数据至语音驱动模块,并在语音结束时输出结束标志;
[0013] 所述语音控制逻辑根据来自语音解码器的结束标志输出语音结束信号给控制模块。
[0014] 优选地,所述语音驱动模块是PWM或DAC。[0015] 优选地,所述时钟模块包括快速振荡器,慢速振荡器和时钟发生器,所述语音模块接收来自快速振荡器的时钟信号。[0016] 优选地,所述控制芯片进一步包括LCD驱动模块,并且所述寄存器文件包括用于控制LCD驱动模块工作的LCD控制寄存器和用于存储显示数据的LCD RAM。[0017] 优选地,所述控制模块是采用二级两相流水线架构的4位RISC架构的控制模块,该控制模块包括指令寄存器,指令译码器,堆栈,算术逻辑单元ALU,和程序计数器;存储于程序存储器的指令包括单周期指令和双周期指令,每个单周期指令在执行指令的同时取出下一条指令,每个双周期指令的第一指令周期在执行指令的同时取出下一条指令,其第二指令周期在执行指令的同时重新取指令,每个指令周期分为第一相和第二相,[0018] 在所述第一相,控制模块完成堆栈入栈、程序存储器读取、寄存器读取、指令译码和ALU运算操作,
在所述第二相,控制模块完成堆栈弹出、指令寄存器锁存、寄存器写入、程序计数
器改写操作。
[0020] 优选地,该控制模块包括具有49条指令的一套精简指令集,所述指令译码器输出的信号包括:
[0021] 寄存器操作类指令,指令译码器输出寄存器地址信息和读写操作信号给寄存器文件,输出运算控制信号给算术逻辑单元;[0022] 立即数指令,指令译码器输出立即数和运算控制信号给算术逻辑单元;[0023] 程序转移类指令和中断,指令译码器输出程序地址信息和跳转控制信号给程序计数器,输出堆栈控制信号给堆栈,输出中断控制信号给中断处理器;
[0019]
5
CN 102323766 ACN 102323776 A[0024]
说 明 书
3/20页
控制类指令,指令译码器输出各种控制信号到控制模块或外围功能模块;[0025] 语音类指令,指令译码器输出语音类指令用于控制和检测语音模块的工作。[0026] 优选地,所述程序存储器是15位宽用于存放指令码的程序存储器。[0027] 优选地,所述语音存储器是4位存储器。[0028] 优选地,所述控制模块包括工作模式处理器,用于根据下述四种芯片工作模式控制时钟模块输出时钟信号:
[0029] 当芯片工作于正常模式时,时钟模块以慢速振荡器的输出作为控制模块的工作时钟;
[0030] 当芯片工作于快速模式时,时钟模块以快速振荡器的输出作为控制模块的工作时钟;
[0031] 当芯片工作于暂停模式时,时钟模块停止控制模块的工作时钟;[0032] 当芯片工作于休眠模式时,时钟模块停止时钟输出并关闭快速振荡器和慢速振荡器。
[0033] 优选地,当语音模块不工作时并且芯片不以快速模式工作时,时钟模块关闭快速振荡器。
[0034] 优选地,所述语音类指令包括:
[0035] 用于启动语音模块开始播放语音的1条语音播放指令PVOX,和
[0036] 用于在检测到来自语音模块的语音结束信号跳转到目标地址的语音跳转指令JVEND。
[0037] 本发明进一步提供一种玩具,该玩具包括如上所述的哈佛架构的控制芯片。[0038] 本发明中的语音模块,包括语音地址发生器、语音存储器、ADPCM语音解码器、PWM、DAC、采样率分频器和语音控制逻辑,在CPU指令PVOX的触发之下,可以自动完成语音的解码、播放和结束检测,完全不再需要CPU的干预。
[0039] 本发明的另一目的在于提供一种新型的4位RISC微控制器,以解决芯片成本、语音算法占用程序空间和CPU处理时间、语音采样率不精确影响语音效果、开发难度大等问题,并增加了LCD驱动模块,以更适合实际需要。
[0040] 本发明的方案包括一个4位RISC架构的CPU核、程序存储器、寄存器文件、复位模块、时钟模块以及语音模块、LCD驱动模块和I/O等外围功能模块。[0041] 本发明包括的4位RISC架构的CPU核,包括工作模式处理器、中断处理器、堆栈、程序计数器、指令寄存器、指令译码器和算术逻辑单元ALU,使用了一个二级两相流水线架构。每个指令周期在执行指令的同时把下一条指令取出。每个指令周期都分为Q1和Q2两相,比一般四相的RISC微控制器的运行速度要快一倍。在Q1相,CPU核完成堆栈入栈、取指令、寄存器读取、ALU运算等动作。在Q2相,完成堆栈弹出、指令寄存器锁存指令、寄存器写入、程序计数器改写等动作。[0042] 本发明中的寄存器文件,包括D触发器组成的特殊功能寄存器,单端异步静态随机存储器组成的通用数据存储器和双端异步静态随机存储器组成的LCD显示数据存储器,其地址通过地址映射电路映射到统一的逻辑地址上。
[0043] 根据本发明的智能玩具控制芯片采用RISC指令系统,包括49条高效指令,这些指令具有如下特点:
6
CN 102323766 ACN 102323776 A[0044]
说 明 书
4/20页
a.长字指令,指令宽度为15位;[0045] b.单字指令,每条指令都占15位的编码,程序存储器也是15位宽,所以全部程序存储器单元都是有效指令,避免了程序存储器浪费;[0046] c.单周期指令,除了跳转指令、调用指令和返回指令是双周期指令之外,其他指令都是单周期指令,每个指令周期为两个振荡周期;[0047] d.对称性,指令编码严格对称,使指令学习变得简单;[0048] e.压缩编码,对指令编码进行精简和压缩,编码只有15位宽。[0049] 本发明的控制芯片指令的运行采用二级流水线结构,每条指令的运行过程可以分为取指令和执行指令两个阶段,每个阶段均需要一个指令周期的运行时间。本发明的控制芯片使用哈佛架构,即程序存储器和数据存储器分开的架构,程序的存取和数据的存取可以同时进行,使得对不同指令的取操作和执行操作也可以同时进行。比如单周期指令,在指令0执行的同时,指令1被取出,在下一个指令周期到来时,指令1被执行,同时指令2被取出,所以尽管单独看,每条指令都需要两个指令周期,但平均下来却只需要一个指令周期。当执行程序转移指令或中断时,因为要改写程序计数器,所以需要多加一个指令周期来重新载入新的指令。
[0050] 本发明的指令集中,包含19条算术逻辑指令,对累加器和寄存器文件中的数据进行加、减、与、或、异或、取反、加1、减1的算术逻辑运算,可以将运算结果保存在累加器和/或存回寄存器文件。
[0051] 本发明的指令集中的算术逻辑指令,包含9条结果存放在累加器的算术逻辑指令,其运算结果不存回寄存器文件。
[0052] 本发明的指令集中的算术逻辑指令,包含10条结果存回寄存器文件的算术逻辑指令,其运算结果不仅存放在累加器,而且还存回寄存器文件。[0053] 本发明的指令集中的算术逻辑指令,包含4条带进位加、减指令。[00] 本发明的指令集中,包含2条数据传输类指令,把寄存器文件的数据传输给累加器或把累加器的数据传输给寄存器文件。[0055] 本发明的指令集中,包含7条立即数指令,把立即数传输给累加器或者把立即数与累加器数据进行加、减、与、或、异或,结果存放在累加器。[0056] 本发明的指令集中,包含2条十进制调整指令,把加、减运算后存放在累加器中二进制数据调整成十进制,结果存放在累加器。[0057] 本发明的指令集中,包含2条带进位移位指令,把累加器和进位寄存器进行循环左移或循环右移。
[0058] 本发明的指令集中,包含12条程序转移指令,通过改变程序计数器的值来控制程序的转移。
[0059] 本发明的指令集中的程序转移指令,包含一条程序调用指令CALL,用来调用子程序。
[0060] 本发明的指令集中的程序转移指令,包含1条无条件跳转指令JUMP,用来使程序无条件跳转到目标地址。
[0061] 本发明的指令集中的程序转移指令,包含4条条件跳转指令JZ、JNZ、JC和JNC,通过判断累加器是否为零或者进位标志是否为1作为条件,条件成立时使程序跳转到目标地
7
CN 102323766 ACN 102323776 A
说 明 书
5/20页
址,不成立时执行下一条指令。
[0062] 本发明的指令集中的程序转移指令,包含2条条件跳过指令SKZ和SKNZ,通过判断累加器某一位是否为零作为条件,条件成立时使程序跳过下一条指令,不成立时执行下一条指令。
[0063] 本发明的指令集中的程序转移指令,包含2条返回指令RET和RETI,RET从子程序或中断程序中返回,RETI从中断中返回并打开中断使能。[00] 本发明的指令集中的程序转移指令,包含2条数据表查找指令,使指令可以从程序存储器的数据表中查找数据,其中TJUMP指令跳转到查找表处,RETW把查找表的数据读入累加器和查找表寄存器并返回。[0065] 本发明的指令集中,包含3条控制指令,用于对CPU或其他外围模块进行控制。[0066] 本发明的指令集中的控制指令,包含1条暂停指令HALT,执行此指令,会使芯片进入暂停模式,CPU核暂停工作,其他外围功能模块不受影响。[0067] 本发明的指令集中的控制指令,包含1条看门狗清零指令CLRWDT,用来清零看门狗计数器。
[0068] 本发明的指令集中的控制指令,包含1条空操作指令NOP,此指令不作任何动作。本发明的指令集中,包含2条语音类指令,用于控制和检测语音模块的工作。[0070] 本发明的指令集中的语音类指令,包含1条语音播放指令PVOX,用于启动语音模块,使其开始播放语音。
[0071] 本发明的指令集中的语音类指令,包含1条语音结束跳转指令JVEND,用于对语音模块返回的结束信号进行检测,一旦检测到语音结束信号,即跳转到目标地址。[0072] 本发明的控制芯片,除了采用RISC架构的四位CPU内核,还集成了语音模块。这样,语音的解码和播放都于CPU之外,CPU可以在播放语音的同时做其他工作,增强了控制芯片中CPU的使用效率。同时,由于有专用的语音解码硬件电路,不需要程序员编写软件解码,也降低了应用的开发难度。采用本发明的控制芯片,指令集也只需采用15位的编码宽度,在保持运算能力和运算效率的同时节省了1位的程序存储空间,同时语音存储器可以只有4位宽,这样都降低了芯片生产成本和开发成本,并使控制芯片的小型化成为可能。
[0073] 将根据本发明的控制芯片应用于智能玩具,可在提高智能玩具的语音播放效果的同时显著降低现有语音玩具的生产成本和开发成本。
[0069]
附图说明
[0074]
下面将结合附图参照本发明的优选实施例对本发明的特点和优点进行详细说明,
其中,
图1示出现有技术的普通玩具控制芯片的结构框图;
[0076] 图2示出根据本发明的玩具控制芯片的结构框图;[0077] 图3示出图2所示控制芯片的功能模块图;
[0075]
图4示出图2所示控制芯片的单周期指令流水线示意图;
[0079] 图5示出图2所示控制芯片的双周期指令流水线示意图;[0080] 图6示出根据本发明的寄存器文件地址分配示意图;
[0078]
8
CN 102323766 ACN 102323776 A[0081]
说 明 书
6/20页
图7示出根据本发明的语音模块结构框图。
具体实施方式
[0082] 图2示出根据本发明的一种可用于玩具的控制芯片的结构框图。根据本发明的控制芯片包括复位模块208、时钟模块209、程序存储器210、CPU核211、寄存器文件212、定时器组216、I/O接口217、语音模块218以及LCD驱动219,其中寄存器文件212包括特殊功能寄存器213、通用数据RAM 214和LCDRAM 215。
[0083] 图3示出图2所示可用于玩具的控制芯片的一种具体的功能模块图。下面结合图2和图3对根据本发明控制芯片中的各功能模块进行详细说明。
[0084] 本实施例的控制芯片中的复位模块208在图3中示出为复位模块308。该复位模块308例如包括外部复位电路360、上电复位电路320、低电压复位电路321、看门狗电路322和复位信号发生器323。外部复位电路360提供外部复位信号。上电复位电路320提供上电复位信号。低电压复位电路321的低电压门槛可设置,当电源电压低于该门槛电压时输出低电压复位信号。看门狗电路322例如是一个计数时钟可选择的计数器,时钟来自时钟模块309,当计数溢出时输出一个溢出信号到复位信号发生器323,该计数器可以用指令CLRWDT清零。看门狗复位用于使系统从程序跑飞的状态中返回。以上四个模块的输出信号进入复位信号发生器323,经过延时等处理后得到最终的全局复位信号,输出给控制芯片中的其他模块。因此控制芯片拥有四种复位方式:上电复位、电压复位、外部复位和看门狗计数溢出复位,以便适应多种应用需求,其中低电压复位和看门狗计数溢出复位是可选的,可以根据应用的安全性要求选择是否使能。
[0085] 本实施例的控制芯片中的时钟模块309包括快速振荡器324、慢速振荡器325和时钟发生器326,为整个芯片提供工作时钟。慢速振荡器325可选择32768Hz的晶振或256KHz的RC振荡。快速振荡器324是2MHz的RC振荡。两个振荡器的输出经过时钟发生器326的分频和处理,最终生成各个模块所需要的时钟信号。时钟模块309的输出受到工作模式处理器327的控制,当芯片工作于正常模式时,时钟模块309选择慢速振荡器325的输出作为CPU核311的工作时钟;当芯片工作于快速模式时,时钟模块309选择快速振荡器324的输出作为CPU核311的工作时钟;当芯片工作于暂停模式时,时钟模块309停止CPU核311的工作时钟,而定时器组316、语音模块318和LCD驱动319的时钟则继续提供;当芯片工作于休眠模式时,时钟模块309停止一切时钟输出,并关闭振荡。语音模块318的时钟源来自于快速振荡器324,当语音模块318不工作并且芯片不工作在快速模式时,时钟模块309关闭快速振荡器324。根据本发明的工作模式管理可以显著地降低芯片的功耗。
本实施例的控制芯片中的程序存储器310例如是一个16K×15BITS的ROM,用于存
放指令码,关于指令码的细节,请见下文指令编码部分。本发明控制芯片中的程序存储器采用15位宽的程序存储器,可有效节省芯片面积,使控制芯片的进一步小型化成为可能。[0087] 本实施例的玩具控制芯片中的CPU核311是芯片的核心控制模块,数据位宽为四位。CPU核,在本文中也称为控制模块,包括工作模式处理器327、中断处理器328、堆栈329、程序计数器330、指令寄存器331、指令译码器332和算术逻辑单元ALU 333。CPU核311采用二级两相流水线架构,每个指令周期在执行指令的同时把下一条指令取出。每个指令周期都分为Q1和Q2两相,比一般四相的RISC微控制器的运行速度要快一倍。在Q1相,完成
[0086]
9
CN 102323766 ACN 102323776 A
说 明 书
7/20页
入栈、取指、寄存器读取、ALU运算等动作。在Q2相,完成出栈、锁存指令、寄存器写入、程序计数器变化等动作。
[0088] 包括在控制芯片的CPU核311中的工作模式处理器327,检测控制芯片的工作模式。本实施例提供例如四种工作模式:正常模式、快速模式、暂停模式和休眠模式。当寄存器文件312中的特殊功能寄存器313中的其他SFR 334中的控制工作模式的位被设置时,芯片进入某个工作模式,工作模式处理器327输出控制信号,控制时钟模块309的工作,具体请参考时钟模块309的介绍。
[00] 包括在控制芯片的CPU核311中的中断处理器328,负责处理芯片的中断事项。本发明的控制芯片提供例如四种中断:外部中断、定时器T溢出中断、时基定时器溢出中断和语音结束中断,每个中断有固定的入口地址即中断向量。寄存器文件312中的特殊功能寄存器313中的其他SFR 334中的一些寄存器控制中断的使能及中断标志。当中断发生时,相应中断标志置位,中断处理器328输出控制信号,把程序计数器330的当前值压入堆栈329,把中断向量写入程序计数器330。当从中断返回时,中断处理器328产生控制信号,从堆栈329中弹出地址数据并写入程序计数器330。
[0090] 包括在控制芯片的CPU核311中的堆栈329例如是一个16级、14位的环行堆栈,在执行调用指令和响应中断时把程序计数器330的当前值压入,在执行返回指令时把最后压入堆栈的值弹出给程序计数器330。
包括在控制芯片的CPU核311中的程序计数器330是例如14位的可预置值加法计
数器,复位时为零,可寻址例如16K的程序存储器310。运行一般程序时,程序计数器330如图4所示,在每个指令周期的时钟Q2相结束时自动加1。当运行例如CALL、JUMP、JZ、JNZ、JC、JNC、SKZ、SKNZ、TJUMP、RET、RETI、RETW或JVEND等程序转移指令和/或发生中断时,程序计数器330如图5所示,在指令周期T2的Q2相结束时把指令译码器332输出的地址和寄存器文件312中的特殊功能寄存器313中的其他SFR 334中的程序分页信息一起载入,此时程序计数器330需要一个额外的指令周期T3来重新取指令,所以这些CALL、JUMP、JZ、JNZ、JC、JNC、SKZ、SKNZ、TJUMP、RET、RETI、RETW和JVEND指令被称为双周期指令,其执行过程如图5的T2和T3周期所示。
[0092] 包括在控制芯片的CPU核311中的指令寄存器331用于寄存从程序存储器310中取出来的指令码,并输出给指令译码器332进行译码。
[0093] 包括在控制芯片的CPU核311中的指令译码器332负责对指令寄存器331中的指令进行译码,把指令翻译成相应的控制动作,输出相应的控制信号,控制芯片运行。指令译码器332的输出信号有以下几类:对寄存器操作类指令,指令译码器332输出寄存器地址信息和读/写操作信号给寄存器文件312,输出运算控制信号给算术逻辑单元ALU 333;对立即数指令,输出立即数和运算控制信号给算术逻辑单元ALU 333;对程序转移类指令和中断,输出程序地址信息和跳转控制信号给程序计数器330,输出堆栈控制信号给堆栈329,输出中断控制信号给中断处理器328;对控制类指令,则输出各种控制信号到工作模式处理器327、语音模块318或复位模块308等相关模块。
[0091]
包括在控制芯片的CPU核311中的ALU 333,是例如四位的算术逻辑单元,可以完成加、减、与、或、异或、取反、移位等运算,也可以仅仅传输数据。ALU 333内还包含一个累加器,用来锁存运算结果。指令译码器332输出运算控制信号,控制ALU 333的运算。在指
[0094]
10
CN 102323766 ACN 102323776 A
说 明 书
8/20页
令周期的Q1相,从寄存器文件312中读取数据并进行运算,并锁存运算结果;在指令周期的Q2相,把运算结果写回到寄存器文件312中。寄存器文件312中的特殊功能寄存器313中的其他SFR334中的一些寄存器寄存ALU的状态标志,如进位标志、零标志等。
[0095] 本实施例的控制芯片中的寄存器文件312包括特殊功能寄存器(SFR)313、通用数据RAM 314和LCD RAM 315。寄存器文件312可以被CPU核311读写,通过数据总线与ALU 333进行数据交换。特殊功能寄存器313、通用数据RAM 314和LCD RAM 315是不同的数据寄存器,通过地址映射的方式把它们的地址映射到同一套逻辑地址上,由此组成寄存器文件312,它们的地址映射关系参考图6。
[0096] 包括在控制芯片的寄存器文件312中的特殊功能寄存器313,由D触发器组成,都是一些具有特殊功能的寄存器,CPU核311通过这些寄存器可以实现对外围功能模块的控制。例如,特殊功能寄存器313包括LCD控制寄存器339,用于控制LCD驱动319的工作;语音地址寄存器338,用于存放语音的初始地址,输出到语音模块318;采样率寄存器337,用于存放语音的采样率,输出到语音模块318;I/O寄存器336,用于存放I/O的输出输入数据和I/O方向控制位,其中部分I/O的输入还可以输出给中断处理器328以判断是否进入外部中断;定时器寄存器335,用于存放定时器组316的时钟选择位、使能位和计数溢出标志,其中溢出标志输出给中断处理器328以判断是否进入中断;其他SFR 334,包括状态寄存器、中断控制寄存器、工作模式寄存器、振荡选择寄存器等,不一一列出,可以共有例如45个特殊功能寄存器。
包括在控制芯片的寄存器文件312中的通用数据RAM 314是单端异步静态RAM,共
有例如480×4BITS,作为通用数据存储器。
[0098] 包括在控制芯片的寄存器文件312中的LCD RAM 315是双端异步静态RAM,用于存储LCD显示数据,其两个端口中的一个用于CPU核311读取操作,另一个用于输出显示数据给LCD驱动319,以保证CPU核311进行操作时不影响LCD显示。LCD RAM 315在不用于存储LCD显示数据时亦可作为普通数据存储器使用。
[0099] 本实施例的控制芯片中的定时器组316包括定时器T 340和时基定时器341。[0100] 包括在控制芯片的定时器组316中的定时器T 340,例如是一个可预置值、自动重载的8位减法计数器,计数时钟由相应SFR选择,计数到零时产生溢出信号触发特殊功能寄存器313中的中断标志,并输出给中断处理器328以判断是否进入中断。[0101] 包括在控制芯片的定时器组316中的时基定时器341,例如是一个8位计数器,计数时钟由相应SFR选择,计数溢出时产生溢出信号触发特殊功能寄存器313中的中断标志,并输出给中断处理器328以判断是否进入中断。
[0102] 本实施例的控制芯片中的I/O端口317包括例如8个的通用I/O,另外有4个I/O与LCD驱动端口共用焊盘、32个输出口与LCD驱动端口共用焊盘,可以通过芯片生产时的掩膜选项选择作为I/O(或输出口)还是LCD驱动端口。[0103] 本实施例的控制芯片中的语音模块318,提供了语音存储和播放的功能,其功能模块和工作请参考图7。语音模块318从语音地址寄存器338中获得语音初始地址,从采样率寄存器337中获得语音采样率参数,从时钟模块309中获得工作时钟。本发明控制芯片中的语音模块一旦被指令PVOX触发,就会自动播放语音,整个播放过程不再需要CPU核311的干涉,不占用任何CPU资源和程序资源,语音结束后自动产生结束信号输出给CPU核311,
[0097]
11
CN 102323766 ACN 102323776 A
说 明 书
9/20页
CPU核311以中断或JVEND指令等方式作出反应。[0104] 本实施例的控制芯片中的LCD驱动模块319,用于驱动LCD显示屏,由LCD控制寄存器339控制其工作,并从LCD RAM 315中取得显示数据。本实施例提供例如36SEG×4COM、1/3偏压、3V驱动电压的LCD驱动319,可满足大部分智能玩具应用。
[0105] 图4示出图2所示控制芯片的单周期指令流水线示意图。控制芯片在执行指令的同时把下一条指令取出。例如,在指令周期T2,控制芯片在执行指令PC的同时把下一条指令PC+1取出。在下一个指令周期T3到来时,控制芯片执行指令PC+1,同时取出指令PC+2。根据本发明的控制芯片,除了程序转移指令之外的其他指令都是单周期指令。每个指令周期都分为Q1和Q2两相。在Q1相,完成入栈、取指、寄存器读取、ALU运算等动作。在Q2相,完成出栈、锁存指令、寄存器写入、程序计数器变化等动作。
[0106] 图5示出图2所示控制芯片的双周期指令流水线示意图。控制芯片在执行双周期指令或中断时,在指令周期T2的Q2相结束时把目标地址载入程序计数器,并且额外增加一个指令周期T3来重新取指令。例如,在指令周期T1,控制芯片执行单周期指令PC0-1并取出下一指令PC0。该指令PC0为双周期指令。在指令周期T2,控制芯片执行指令PC0,并照常按顺序取出指令PC0+1,但因PC0为双周期指令,所以在指令周期T3到来时并没有执行指令PC0+1,而是还在执行PC0,并取出目标地址的指令PC1。在指令周期T4,执行指令PC1并取出下一条指令PC1+1。
图6示出根据本发明的寄存器文件地址分配示意图。通过地址映射的方式把特殊
功能寄存器、通用数据存储器和LCD显示数据存储器的地址映射到同一套逻辑地址上。例如其中地址从000H到03FH为特殊功能寄存器,从080H到0A3H为LCD显示数据存储器,从100H到1FFH和从300H到3DFH为通用数据存储器。LCD显示数据存储器在LCD模块不使用时可作为普通数据存储器使用。
[0108] 图7示出根据本发明的语音模块结构框图。根据本发明的语音模块包括语音地址发生器742、语音存储器743、ADPCM语音解码器744、PWM 745或DAC 746、采样率分频器747和语音控制逻辑748。语音地址发生器742例如是一个可预置值的17位加法计数器,负责产生语音存储器743的地址。语音控制逻辑748从寄存器文件312中的语音地址寄存器338获得一段语音的起始地址并载入计数器,以采样率分频器747提供的采样率信号为计数时钟自动计数,直到语音结束。语音存储器743例如是一个96K×4BITS的存储器,存储ADPCM语音量化编码,可以同时存储若干段语音,把语音地址发生器742给出的地址上的数据输出给ADPCM语音解码器744。ADPCM语音解码器744负责把四位的ADPCM量化编码解码成八位的PCM格式的数据输出给PWM745或DAC 746,并且自动检测语音是否结束。PWM 745或DAC 746负责把PCM格式的语音数据转换成相应的喇叭驱动信号。虽然图7中示出了语音模块包括PWM 745和DAC 746二者,在PWM和DAC只能通过生产过程的掩膜选项选择其中之一,即控制模块选择PWM或DAC作为语音驱动模块。采样率分频器747是本发明的特征之一,其根据来自寄存器文件312中采样率寄存器337中的采样率参数对高速时钟进行分频,得到相应的采样率信号输出给语音地址发生器742。采样率分频器例如可以提供2KHz~KHz,诸如6KHz、8KHz、12KHz、16KHz的不同语音采样率,从而提高了开发的灵活性。语音控制逻辑748负责控制整个语音模块的运行。本发明的语音模块的运行过程如下:芯片上电时,语音控制逻辑748被全局复位信号复位,当CPU接到PVOX指令时,向语音
[0107]
12
CN 102323766 ACN 102323776 A
说 明 书
10/20页
模块输出启动信号,语音控制逻辑748接到启动信号之后,开始使能,PWM 745或DAC 746打开,并分配高速时钟信号给采样率分频器747,采样率分频器747根据寄存器文件312中的采样率寄存器337中的采样率参数对高速时钟进行分频,得到相应的采样率信号,语音地址发生器742从寄存器文件312中的语音地址寄存器338中载入语音起始地址,开始对语音存储器743寻址,语音存储器743输出四位ADPCM量化编码,ADPCM语音解码器744把ADPCM量化编码解码成八位的PCM语音数据输出给PWM 745或DAC 746去驱动喇叭,并且检测语音是否结束,如果语音未结束,则语音地址发生器742加1,语音存储器743输出下一个数据,ADPCM语音解码器744再解码,PWM745或DAC 746再输出,如此不断循环;如果语音结束,则ADPCM语音解码器744输出一个结束标志,语音控制逻辑748锁存后输出给CPU核311,CPU核311可以据此作出反应。所以可以看出,整个语音播放过程都是语音模块自动地完成的,没有占用任何CPU资源和程序资源。[0109] 指令说明
[0110] 本实施例支持常见RISC微控制器的典型指令,比如算术逻辑指令、程序转移指令等,所有指令采用位宽为十五位的编码方式,为芯片节省了一位的程序存储器,而又不过多削弱指令的能力。
[0111] 本实施例的指令的运行采用流水线方式,大部分指令都是单周期指令,只有程序转移指令为双周期指令。两个振荡周期(Q1相和Q2相)为一个机器周期(T),一个指令周期为一个或两个机器周期。单周期指令的执行如图4所示,在执行当前指令的同时取出下一条指令。双周期指令的执行如图5所示,需要增加一个机器周期以便CPU从新的目标地址中取指。
[0112] 本实施例中所有指令都是单字长的,每条指令占1个程序存储地址。根据译码,可分为立即数寻址、直接寻址、寄存器间接寻址和数据表寻址四种寻址方式。其中数据表寻址方式通过两条专用的指令实现,TJUMP和RETW。在编程时,应用工程师可以用RETW把一些固定数据存放在程序存储器中,作为数据查找表,再用TJUMP指令跳转到该查找表,执行RETW把这些数据读到累加器ACC和查找表寄存器TBL中。[0113] 指令总共49条,涵盖了一般应用领域中需要的功能。指令采用对称的压缩编码,15位宽。其中,算术逻辑类指令19条,包括ADC、ADCM、ADD、ADDM、SBC、SBCM、SUB、SUBM、XOR、XORM、OR、ORM、AND、ANDM、CPLM、INC、INCM、DEC、DECM。数据传输类指令2条,包括LDA、STA。立即数指令7条,包括LDI、ADI、SBI、SBIA、XORI、ORI、ANDI。十进制调整指令2条,用于调整十进制数加减法运算之后的结果,包括DAA、DAS。移位指令2条,包括RORC、ROLC。程序转移指令12条,包括CALL、JUMP、JZ、JNZ、JC、JNC、SKZ、SKNZ、RET、RETI、RETW、TJUMP。控制指令3条,包括暂停指令HALT、看门狗清零指令CLRWDT、空操作指令NOP。语音类指令2条,包括语音播放指令PVOX、语音结束跳转指令JVEND。其中PVOX指令是专门播放语音用的,如果CPU取出了PVOX指令,经过指令译码器译码后输出一个启动信号给语音模块,触发了语音,使语音模块以采样率寄存器确定的采样率播放从以语音地址寄存器确定的地址开始的语音。而当语音结束后返回一个结束信号,CPU进入中断,或者用JVEND对这个信号进行检测,一旦检测到语音结束信号,即跳转到目标地址。[0114] 以下是本发明的指令集。
[0115]
13
CN 102323766 ACN 102323776 A
说 明 书
11/20页
14
CN 102323766 ACN 102323776 A
说 明 书
12/20页
[0116]
[0117]
15
CN 102323766 ACN 102323776 A
说 明 书
13/20页
[0118] [0119]
操作数说明
指令集描述[0121] ADC[0122] 功能:带进位加法指令。将存储器(Mx)内容、进位标志(CF)和累加器(ACC)内容相加,结果回存到累加器(ACC)内,运算结果影响进位标志位,有进位CF被设为1,否则CF被设为0。
[0123] 格式:ADC Mx[0124] 方程式:ACC←Mx+ACC+CF[0125] 指令周期:1[0126] ADCM[0127] 功能:带进位加法并回存到存储器。将存储器(Mx)内容、进位标志(CF)和累加器(ACC)内容相加,结果回存到累加器(ACC)和存储器(Mx)内,运算结果影响进位标志位,有进位CF被设为1,否则CF被设为0。[0128] 格式:ADCM Mx[0129] 方程式:ACC,Mx←Mx+ACC+CF[0130] 指令周期:1[0131] ADD[0132] 功能:不带进位加法指令。将存储器(Mx)内容和累加器(ACC)内容相加,结果回存到累加器(ACC)内,运算结果影响进位标志位,有进位CF被设为1,否则CF被设为0。[0133] 格式:ADD Mx[0134] 方程式:ACC←Mx+ACC[0135] 指令周期:1[0136] ADDM[0137] 功能:不带进位加法并回存到存储器。将存储器(Mx)内容和累加器(ACC)内容相加,结果回存到累加器(ACC)和存储器(Mx)内,运算结果影响进位标志位,有进位CF被设为1,否则CF被设为0。[0138] 格式:ADDM Mx[0139] 方程式:ACC,Mx←Mx+ACC
[0120]
16
CN 102323766 ACN 102323776 A[0140]
说 明 书
14/20页
指令周期:1[0141] SBC[0142] 功能:带借位减法指令。将存储器(Mx)内容减去累加器(ACC)内容,再减去反相进位标志(CF),结果回存到累加器(ACC)内,运算结果影响进位标志位,减法产生借位时CF被设为0,否则CF被设为1。格式:SBC Mx[0144] 方程式:ACC←Mx-ACC-!CF[0145] 指令周期:1[0146] SBCM[0147] 功能:带借位减法并回存到存储器。将存储器(Mx)内容减去累加器(ACC)内容,再减去反相进位标志(CF),结果回存到累加器(ACC)和存储器(Mx)内,运算结果影响进位标志位,减法产生借位时CF被设为0,否则CF被设为1。[0148] 格式:SBCM Mx[0149] 方程式:ACC,Mx←Mx-ACC-!CF[0150] 指令周期:1[0151] SUB[0152] 功能:不带借位减法指令。将存储器(Mx)内容减去累加器(ACC)内容,结果回存到累加器(ACC)内,运算结果影响进位标志位,减法产生借位时CF被设为0,否则CF被设为1。
[0153] 格式:SUB Mx[01] 方程式:ACC←Mx-ACC[0155] 指令周期:1[0156] SUBM[0157] 功能:不带借位减法并回存到存储器。将存储器(Mx)内容减去累加器(ACC)内容,结果回存到累加器(ACC)和存储器(Mx)内,运算结果影响进位标志位,减法产生借位时CF被设为0,否则CF被设为1。[0158] 格式:SUBM Mx[0159] 方程式:ACC,Mx←Mx-ACC[0160] 指令周期:1
[0143]
XOR[0162] 功能:按位异或指令。将存储器(Mx)内容与累加器(ACC)内容作异或运算,结果回存到累加器(ACC)内,运算结果不影响标志位。[0163] 格式:XOR Mx[01] 方程式:[0165] 指令周期:1[0166] XORM[0167] 功能:按位异或并回存到存储器。将存储器(Mx)内容与累加器(ACC)内容作异或运算,结果回存到累加器(ACC)和存储器(Mx)内,运算结果不影响标志位。[0168] 格式:XORM Mx
[0161]
17
CN 102323766 ACN 102323776 A[0169] [0170]
说 明 书
15/20页
方程式:
指令周期:1[0171] OR
[0172] 功能:按位或指令。将存储器(Mx)内容与累加器(ACC)内容作或运算,结果回存到累加器(ACC)内,运算结果不影响标志位。[0173] 格式:OR Mx[0174] 方程式:ACC←Mx|ACC[0175] 指令周期:1[0176] ORM[0177] 功能:按位或并回存到存储器。将存储器(Mx)内容与累加器(ACC)内容作或运算,结果回存到累加器(ACC)和存储器(Mx)内,运算结果不影响标志位。[0178] 格式:ORM Mx[0179] 方程式:ACC,Mx←Mx|ACC[0180] 指令周期:1[0181] AND[0182] 功能:按位与指令。将存储器(Mx)内容与累加器(ACC)内容作与运算,结果回存到累加器(ACC)内,运算结果不影响标志位。[0183] 格式:AND Mx[0184] 方程式:ACC←Mx&ACC[0185] 指令周期:1[0186] ANDM[0187] 功能:按位与并回存到存储器。将存储器(Mx)内容与累加器(ACC)内容作与运算,结果回存到累加器(ACC)和存储器(Mx)内,运算结果不影响标志位。[0188] 格式:ANDM Mx[01] 方程式:ACC,Mx←Mx&ACC[0190] 指令周期:1[0191] CPLM[0192] 功能:对存储器按位取反并回存。将存储器(Mx)内容读到累加器(ACC),按位取反,结果回存到累加器(ACC)和存储器(Mx)内,运算结果不影响标志位。格式:CPLM Mx[0194] 方程式:ACC,Mx←!Mx[0195] 指令周期:1[0196] INC[0197] 功能:存储器递增指令。将存储器(Mx)内容加1,结果存到累加器(ACC)内,运算结果影响进位标志位,有进位CF被设为1,否则CF被设为0。[0198] 格式:INC Mx[0199] 方程式:ACC←Mx+1[0200] 指令周期:1[0201] INCM
[0193]
18
CN 102323766 ACN 102323776 A[0202]
说 明 书
16/20页
功能:存储器递增并回存。将存储器(Mx)内容加1,结果回存到累加器(ACC)和存储器(Mx)内,运算结果影响进位标志位,有进位CF被设为1,否则CF被设为0。[0203] 格式:INCM Mx[0204] 方程式:ACC,Mx←Mx+1[0205] 指令周期:1
[0206]
DEC[0207] 功能:存储器递减指令。将存储器(Mx)内容减去1,结果存到累加器(ACC)内,运算结果影响进位标志位,有借位CF被设为0,否则CF被设为1。[0208] 格式:DEC Mx[0209] 方程式:ACC←Mx-1[0210] 指令周期:1[0211] DECM[0212] 功能:存储器递减并回存。将存储器(Mx)内容减去1,结果回存到累加器(ACC)和存储器(Mx)内,运算结果影响进位标志位,有借位CF被设为0,否则CF被设为1。[0213] 格式:DECM Mx[0214] 方程式:ACC,Mx←Mx-1[0215] 指令周期:1[0216] LDA[0217] 功能:将存储器(Mx)内容传递给累加器(ACC),传递结果不影响标志位。[0218] 格式:LDA Mx[0219] 方程式:ACC←Mx[0220] 指令周期:1[0221] STA[0222] 功能:将累加器(ACC)内容传递给存储器(Mx),传递结果不影响标志位。[0223] 格式:STA Mx[0224] 方程式:Mx←ACC[0225] 指令周期:1[0226] LDI[0227] 功能:将立即数(I)传递给累加器(ACC),传递结果不影响标志位。格式:LDI I[0229] 方程式:ACC←I[0230] 指令周期:1[0231] ADI[0232] 功能:将累加器(ACC)内容和立即数(I)相加,结果回存到累加器(ACC)内,运算结果影响进位标志位,有进位CF被设为1,否则CF被设为0。[0233] 格式:ADI I[0234] 方程式:ACC←ACC+I[0235] 指令周期:1[0236] SBIA
[0228]
19
CN 102323766 ACN 102323776 A[0237]
说 明 书
17/20页
功能:将立即数(I)减去累加器(ACC)内容,结果回存到累加器(ACC),运算结果影响进位标志位,有借位CF被设为0,否则CF被设为1。[0238] 格式:SBIA I[0239] 方程式:ACC←I-ACC[0240] 指令周期:1
[0241]
SBI[0242] 功能:将累加器(ACC)内容减去立即数(I),结果回存到累加器(ACC)内,运算结果影响进位标志位,有借位CF被设为0,否则CF被设为1。[0243] 格式:SBI I[0244] 方程式:ACC←ACC-I[0245] 指令周期:1[0246] XORI[0247] 功能:将累加器(ACC)内容与立即数(I)异或运算,结果回存到累加器(ACC)内,运算结果不影响进位标志位。[0248] 格式:XORI I[0249] 方程式:[0250] 指令周期:1[0251] ORI[0252] 功能:将累加器(ACC)内容与立即数(I)或运算,结果回存到累加器(ACC)内,运算结果不影响进位标志位。[0253] 格式:ORI I[02] 方程式:ACC←ACC|I[0255] 指令周期:1[0256] ANDI[0257] 功能:将累加器(ACC)内容与立即数(I)与运算,结果回存到累加器(ACC)内,运算结果不影响进位标志位。[0258] 格式:ANDI I[0259] 方程式:ACC←ACC&I[0260] 指令周期:1DAA[0262] 功能:将存储器(Mx)内容作十进制加法调整,结果回存到累加器(ACC)和存储器(Mx)内,调整方式为:如果存储器的内容大于9或CF=1,则把存储器的内容加上6,并把CF设为1。在使用该指令前必须先进行一次十进制加法操作,否则结果会出错。[0263] 格式:DAA Mx[02] 指令周期:1[0265] DAS[0266] 功能:将存储器(Mx)内容作十进制减法调整,结果回存到累加器(ACC)和存储器(Mx)内,调整方式为:如果存储器的内容大于9或CF=0,则把存储器的内容加上0AH,并把CF设为0。在使用该指令前必须先进行一次十进制减法操作,否则结果会出错。
[0261]
20
CN 102323766 ACN 102323776 A[0267] [0268] [0269] [0270] [0271] [0272]
说 明 书
18/20页
格式:DAS Mx
指令周期:1RORC功能:将累加器(ACC)作带进位的循环右移一次。结果影响标志位CF。格式:RORC
方程式:CF,ACC[3:0]ACC[3:0],CF
[0273] 指令周期:1[0274] ROLC[0275] 功能:将累加器(ACC)作带进位的循环左移一次。结果影响标志位CF。[0276] 格式:ROLC[0277] 方程式:ACC[3:0],CF CF,ACC[3:0][0278] 指令周期:1[0279] CALL[0280] 功能:子程序调用指令,操作先将PC保存到堆栈,堆栈指针加1,然后跳转到lab指定的目标位置去执行子程序。[0281] 格式:CALL lab[0282] 指令周期:2[0283] JUMP[0284] 功能:无条件跳转指令,从当前地址直接跳到目标标号去执行程序。[0285] 格式:JUMP lab[0286] 指令周期:2[0287] JZ
[0288] 功能:如果累加器(ACC)的值等于0,则直接跳到目标标号去执行程序,否则继续执行下一条指令。[02] 格式:JZ lab[0290] 指令周期:跳转条件成立时为2,否则为1[0291] JNZ[0292] 功能:如果累加器(ACC)的值不等于0,则直接跳到目标标号去执行程序,否则继续执行下一条指令。
格式:JNZ lab
[0294] 指令周期:跳转条件成立时为2,否则为1[0295] JC
[0296] 功能:如果进位标志(CF)等于1,则直接跳到目标标号去执行程序,否则继续执行下一条指令。[0297] 格式:JC lab[0298] 指令周期:跳转条件成立时为2,否则为1[0299] JNC[0300] 功能:如果进位标志(CF)等于0,则直接跳到目标标号去执行程序,否则继续执行下一条指令。
[0293]
21
CN 102323766 ACN 102323776 A[0301]
说 明 书
19/20页
格式:JNC lab[0302] 指令周期:跳转条件成立时为2,否则为1[0303] SKZ[0304] 功能:如果累加器(ACC)的第I位等于0,则跳过下一条指令,否则执行下一条指令。
[0305] 格式:SKZ I[0306] 指令周期:跳转条件成立时为2,否则为1[0307] SKNZ[0308] 功能:如果累加器(ACC)的第I位不等于0,则跳过下一条指令,否则执行下一条指令。
[0309] 格式:SKNZ I[0310] 指令周期:跳转条件成立时为2,否则为1[0311] RETW[0312] 功能:从子程序返回;堆栈指针减1,从堆栈中取出原来的地址返回,同时将立即数I传递给ACC,L传递给TBL。格式:RETW L,I[0314] 指令周期:跳转条件成立时为2,否则为1[0315] RFT[0316] 功能:从子程序返回;堆栈指针减1,从堆栈中取出原来的地址返回。[0317] 格式:RET[0318] 指令周期:2[0319] RETI[0320] 功能:从中断服务程序返回;堆栈指针减1,从堆栈中取出原来的地址返回,同时将总中断使能位(IEA)设为1。[0321] 格式:RETI[0322] 指令周期:2[0323] TJUMP[0324] 功能:无条件跳转指令,由PC<13:8>、TBL和ACC组成目标地址。[0325] 格式:TJUMP[0326] 指令周期:2[0327] HALT[0328] 功能:暂停MCU程序指令,指令执行后,MCU停止执行指令,但振荡仍然继续,LCD显示、定时器和语音不受影响,等到有中断发生时即恢复正常工作,以节省功耗。[0329] 格式:HALT[0330] 指令周期:1[0331] CLRWDT[0332] 功能:清零看门狗计数器。[0333] 格式:CLRWDT[0334] 指令周期:1
[0313]
22
CN 102323766 ACN 102323776 A[0335] [0336] [0337] [0338] [0339] [0340] [0341] [0342] [0343] [0344]
说 明 书
20/20页
NOP
功能:空操作指令。格式:NOP指令周期:1PVOX
功能:语音播放指令。格式:PVOX指令周期:1JVEND功能:如果语音结束,则直接跳到目标标号去执行程序,否则继续执行下一条指
令。
格式:JVEND lab
[0346] 指令周期:跳转条件成立时为2,否则为1。
[0345]
23
CN 102323766 ACN 102323776 A
说 明 书 附 图
1/4页
图1
图2
24
CN 102323766 ACN 102323776 A
说 明 书 附 图
2/4页
图3
图4
25
CN 102323766 ACN 102323776 A
说 明 书 附 图
3/4页
图5
图6
26
CN 102323766 ACN 102323776 A
说 明 书 附 图
4/4页
图7
27
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- howto234.com 版权所有 湘ICP备2022005869号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务