微型计算机及非易失性半导体装置制造方法

文档序号:6498254阅读:169来源:国知局
微型计算机及非易失性半导体装置制造方法
【专利摘要】程序计数器(12)通过加上第1值或第2值来更新地址。代码选择电路(14)根据程序计数器(12)的地址,选择插入代码寄存器组块(17)内的由程序计数器(12)指定的地址所对应的插入代码或闪存控制代码用ROM(13)内的由程序计数器(12)指定的地址的源代码中的某一个。命令执行部(15)执行所选择的代码。多个源代码及插入代码中的至少1个是多循环命令。程序计数器(14)在执行多循环命令时,停止地址的更新。
【专利说明】微型计算机及非易失性半导体装置

【技术领域】
[0001] 本发明涉及微型计算机及非易失性半导体装置,尤其涉及具备向原始的代码中插 入追加的代码的功能的微型计算机及非易失性半导体装置。

【背景技术】
[0002] -直以来,已知有对记录在微型计算机的ROM (Read Only Memory,只读存储器)的 程序进行变更的方法。
[0003] 专利文献1 (日本特开平10-27704号公报)的装置具备修正地址寄存器和比较电 路。专利文献1的装置具备如下结构:将ROM取得地址和修正地址寄存器的值通过比较电 路进行比较,并将其结果向命令译码器发送,在命令译码器中检测比较电路中的一致性后, 通过微命令的执行而从RAM上的预定的地址取得修正程序的开始地址,使程序的执行向该 RAM内的修正程序的开始地点分支。
[0004] 专利文献2(日本特开平8-95946号公报)的装置具备命令队列、取得指示器 (fetch pointer)、存储内置ROM的故障部分的地址的寄存器、通过对寄存器与取得指示器 的内容进行比较的比较电路的输出结果来输出存储器上的程序或特定的分支命令的选择 电路。在取得指示器的内容与寄存器的内容一致的时刻,从选择电路向分支命令传送命令 队列,CPU通过该分支命令的执行而向修正程序转移,避免故障部分的执行。
[0005] 专利文献3(日本特开2004-46318号公报)的装置具备:存储器,存储有命令数据 列;CPU,具有命令寄存器及表示特定命令地址的程序计数器,该特定命令地址存储有在存 储器内存储的命令数据中应向命令寄存器输出的特定命令数据。而且,该装置具备追加命 令存储单元,该追加命令存储单元能够从外部写入,并且能够存储由向命令数据列追加的 追加命令数据和表示追加该追加命令数据的位置的追加地址构成的数据-地址对,该装置 对程序计数器表示的特定命令地址和存储于追加命令存储单元的追加地址进行比较来选 择特定命令数据和追加命令数据中的任意一个。在特定命令地址与追加地址一致时,程序 计数器停止特定命令地址的更新。
[0006] 现有技术文献
[0007] 专利文献
[0008] 专利文献1 :日本特开平10-27704号公报
[0009] 专利文献2 :日本特开平8-95946号公报
[0010] 专利文献3 :日本特开2004-46318号公报


【发明内容】

[0011] 发明要解决的课题
[0012] 然而,在专利文献1及专利文献2的装置中,虽然能够进行代码的插入和变更,但 是存在所需的硬件量较大的问题。而且,因与分支跳转相伴的额外时间而导致装置的性能 劣化。
[0013] 在专利文献3的装置中,虽然能够进行代码的插入,但是在插入代码时程序计数 器停止1循环,因此难以适用于多循环命令。其他课题和新特征通过本说明书的记述及附 图而明确可知。
[0014] 用于解决课题的方案
[0015] 本实施的一种实施方式的微型计算机具备:程序计数器,通过加上第1值或第2值 来更新地址,在执行多循环命令时,停止地址的更新;选择电路,根据程序计数器的地址,选 择寄存器内的由程序计数器指定的地址所对应的插入代码或ROM内的由程序计数器指定 的地址的源代码中的某一个;以及命令执行部,执行由选择电路选择的代码。
[0016] 发明效果
[0017] 根据本发明的一种实施方式的微型计算机及非易失性半导体装置,能够进行代码 的插入且能够执行多循环命令。

【专利附图】

【附图说明】
[0018] 图1 (a)是表示记录于ROM的代码(源代码)和插入的代码的例子的图。图1 (b) 是表示具备代码变更功能的微型计算机A的变更后的代码的图。图1(c)是表示具备代码 插入功能的微型计算机B的ROM的变更后的代码的图。
[0019] 图2 (a)是表示记录于ROM的代码(源代码)和变更的代码的例子的图。图2 (b) 是表示具备代码变更功能的微型计算机A的变更后的代码的图。图2(c)是表示具备代码 插入功能的微型计算机B的变更后的代码的图。
[0020] 图3(a)是表示单循环方式下的命令的取得及执行的时机的图。图3(b)是表示多 循环方式下的命令的取得及执行的时机的图。
[0021] 图4是在专利文献3中,在记录于ROM的代码(源代码)的一部分为多循环命令 的情况下插入单循环命令时的时序图。
[0022] 图5 (a)是在记录于ROM的代码(源代码)的一部分为多循环命令的情况下,即使 插入单循环命令也正常动作时的时序图。图5(b)是在记录于ROM的代码(源代码)为单 循环命令的情况下,即使插入多循环命令也正常动作时的时序图。
[0023] 图6是表示本实施方式的微型计算机的结构的图。
[0024] 图7是表示第1实施方式的闪存控制部2的结构的图。
[0025] 图8是用于说明命令执行部15和程序计数器12的功能的图。
[0026] 图9是表示程序计数器12的结构的图。
[0027] 图10是表示插入代码寄存器组块17的结构的图。
[0028] 图11是表示代码插入用寄存器组29-0的结构的图。
[0029] 图12是表示代码选择电路14的结构的图。
[0030] 图13(a)是表示在代码插入用寄存器组29-i的地址寄存器31中保持的值的例子 的图。图13(b)是图13(a)的条件下的时序图。
[0031] 图14(a)是表示在代码插入用寄存器组29-i的地址寄存器31中保持的值的例子 的图。图14(b)是表不源代码和插入代码的图。图14(c)是图14(a)及图14(b)所不的条 件下的时序图。
[0032] 图15(a)是表示在代码插入用寄存器组29-i的地址寄存器31中保持的值的例子 的图。图14(b)是表不源代码和插入代码的图。图14(c)是图14(a)及图14(b)所不的条 件下的时序图。
[0033] 图16是表示第2实施方式的闪存控制部102的结构的图。
[0034] 图17是表示程序计数器51的结构的图。
[0035] 图18是表示插入代码寄存器组块52的结构的图。
[0036] 图19是表示代码插入用寄存器组54-0的结构的图。
[0037] 图20(a)是表示在代码插入用寄存器组29-i的地址寄存器31中保持的值的例子 的图。图20(b)是图20(a)的条件下的时序图。
[0038] 图21是表示第3实施方式的闪存控制部312的结构的图。
[0039] 图22是表示插入代码寄存器组块164所包含的代码插入用寄存器组64-0的结构 的图。
[0040] 图23 (a)是表示在代码插入用寄存器组64-i的地址寄存器31中保持的值的例子 的图。图23(b)是图23(a)的条件下的时序图。
[0041] 图24是表示第4实施方式的闪存控制部103的结构的图。
[0042] 图25是表示第4实施方式的程序计数器65的结构的图。
[0043] 图26 (a)是表示在代码插入用寄存器组54-i的地址寄存器31中保持的值的例子 的图。图26(b)是图26(a)的条件下的时序图。
[0044] 图27是表示第5实施方式的闪存控制部395的结构的图。
[0045] 图28是表示插入代码寄存器组块396所包含的代码插入用寄存器组40-0的结构 的图。
[0046] 图29是表示第6实施方式的闪存控制部423的结构的图。
[0047] 图30是表示程序计数器72的结构的图。
[0048] 图31是表示插入代码寄存器组块424所包含的代码插入用寄存器组71-0的结构 的图。
[0049] 图32(a)是表示在代码插入用寄存器组71-i的地址寄存器31中保持的值的例子 的图。图32(b)是图32(a)的条件下的时序图。
[0050] 图33是表示第7实施方式的闪存控制部623的结构的图。
[0051] 图34是表示程序计数器74的结构的图。
[0052] 图35是表示插入代码寄存器组块624所包含的代码插入用寄存器组78-0的结构 的图。
[0053] 图36 (a)是表示在代码插入用寄存器组78-i的地址寄存器31中保持的值的例子 的图。图36(b)是图36(a)的条件下的时序图。
[0054] 图37是表示第8实施方式的闪存控制部742的结构的图。
[0055] 图38是表示程序计数器94的结构的图。
[0056] 图39是表示插入代码寄存器组块743的结构的图。
[0057] 图40是表示插入代码寄存器组块743所包含的代码插入用寄存器组88-0的结构 的图。
[0058] 图41 (a)是表示在代码插入用寄存器组88-i的地址寄存器31中保持的值的例子 的图。图41(b)是图41 (a)的条件下的时序图。
[0059] 图42是表示第9实施方式的闪存控制部388的结构的图。
[0060] 图43是表示程序计数器94的结构的图。
[0061] 图44是表示插入代码寄存器组块389的结构的图。
[0062] 图45是表示插入代码寄存器组块389所包含的代码插入用寄存器组86-0的结构 的图。
[0063] 图46 (a)是表示在代码插入用寄存器组86-i的地址寄存器31中保持的值的例子 的图。图46(b)是图46(a)的条件下的时序图。

【具体实施方式】
[0064] 以下,关于本发明的实施方式,使用附图进行说明。
[0065][第1实施方式]
[0066](关于代码插入和代码变更)
[0067] 首先,在具备代码变更功能的微型计算机A和具备代码追加功能的微型计算机B 中,说明伴随着代码插入而需要变更的代码量。
[0068] 图1 (a)是表示记录于ROM的代码(源代码)和插入的代码的例子的图。在图1 (a) 的例子中,源代码为命令〇?10、11、12,在命令3之后插入的代码为命令:V。
[0069] 图1 (b)是表示具备代码变更功能的微型计算机A的变更后的代码的图。
[0070] 如图1(b)所示,在地址"0x0108"中存储命令:V。由于变更前的Ν0Ρ区域为地址 "0x0116",因此命令4?命令10的存储位置向地址"ΟχΟΙΟΑ"?"0x0116"移动。因此,所 需的变更代码量为"8"。即,从插入的区域到Ν0Ρ区域需要变更,因此根据Ν0Ρ区域的位置 的不同而需要庞大的量的变更。需要设置变更的量的寄存器组,硬件大规模化。作为其对 策,可考虑设置较多的Ν0Ρ区域,但是增加了冗长的处理时间,因此CPU的处理性能劣化。
[0071] 图1 (C)是表示具备代码插入功能的微型计算机B的ROM的变更后的代码的图。
[0072] 如图1(c)所示,在地址"0x0106"中存储命令3'。因此,所需的变更代码量为 "1"。
[0073] 接下来,说明伴随着具备代码变更功能的微型计算机A和具备代码追加功能的微 型计算机B中的代码变更而需要变更的代码量。
[0074] 图2(a)是表示记录于ROM的代码(源代码)和变更的代码的例子的图。在图2(a) 的例子中,示出源代码为命令〇?10、11、12并将命令3变更为命令3'的情况。
[0075] 图2(b)是表示具备代码变更功能的微型计算机A的变更后的代码的图。
[0076] 如图2(b)所示,在地址"0x0106"中存储的命令3被变更为命令Υ。因此,所需 的变更代码量为"1"。
[0077] 图2(c)是表示具备代码插入功能的微型计算机B的变更后的代码的图。
[0078] 如图2(c)所示,在地址"0x0104"中存储命令3'和跳转命令"JUMP0108"。因此, 所需的变更代码量为"2"。
[0079] 如以上说明那样,在具备代码变更功能的微型计算机中,在插入代码的情况下,有 时需要庞大的量的代码的变更,需要设置变更的量的寄存器组。因此,可以说利用代码变更 功能来插入代码的效率较差。
[0080] (单循环方式和多循环方式)
[0081] 接下来,说明单循环方式和多循环方式。以下,循环是指成为动作时机的基准的所 谓固定频率的基准时钟信号的循环。
[0082] 并且,与该循环连动地实施程序计数器的更新。
[0083] 图3(a)是表示单循环方式下的命令的取得及执行的时机的图。
[0084] 在各循环中,从由程序计数器表示的ROM的地址取得命令(IF阶段),同时执行在 前一循环中取得的命令(EX阶段)。在单循环中,所有循环的时间相同。
[0085] 图3(b)是表示多循环方式下的命令的取得及执行的时机的图。
[0086] 在多循环方式中,也与单循环方式同样地,在各循环中,从由程序计数器表示的 ROM的地址取得命令(IF阶段),同时执行在前一循环中取得的命令(EX阶段)。在多循环 中,至少1个命令执行跨多个循环进行。
[0087] 在单循环方式中,利用最长通路(最长的命令执行时间)对1循环的时间进行限 速,存在1循环的时间变长、所需硬件量增多等缺点。因此,可以说优选采用多循环方式。在 采用多循环方式的情况下,代码插入功能也需要对应于多循环方式。然而,专利文献3的装 置如段落[0049]所记载的那样,PC更新停止信号成为1循环的量,未对应于多循环方式。 [0088](以多循环方式设置代码插入功能时的问题)
[0089] 接下来,说明在记录于ROM的代码(源代码)的一部分为多循环命令的情况下插 入单循环命令时的问题。
[0090] 图4是在专利文献3中,在记录于ROM的代码(源代码)的一部分为多循环命令 的情况下插入单循环命令时的时序图。
[0091] 在图4的例子中,作为源代码的一部分的"R0106"是多循环命令(3循环命令)。 示出该代码的地址为"0x0106",且在该代码之后插入单循环的插入代码"Code 0"时的例 子。在此,"〇χ· · · ·"表示16进制显示。
[0092] 在第3循环中,当程序计数器的值与地址"0x0108" 一致时,取得插入代码CodeO, 并且程序计数器更新停止信号有效。然而,在第3循环中,程序计数器由于执行多循环命令 而处于停止中,因此程序计数器更新停止信号无法起到为了插入而使程序计数器停止这样 的作用。其结果是,地址"0x0108"的ROM的代码未被取得及执行。为了执行地址"0x0108" 的ROM的代码,如图4所示,需要使PC更新停止进行3循环期间的停止,但为此需要复杂的 控制。以下,说明其理由。
[0093] 在多循环命令执行时,从命令执行部输出用于使程序计数器的更新进行(多循环 数-1)的期间的停止的信号即PC延迟信号。PC延迟信号是通过一般的处理器执行多循环 命令时输出的信号。并且,尝试研究了根据该PC延迟信号和地址一致信号而生成简易逻 辑,来实现多循环命令执行中的代码插入功能。
[0094] 图5 (a)是在记录于ROM的代码(源代码)的一部分为多循环命令的情况下,即使 插入单循环命令也正常动作时的时序图。需要说明的是,IF执行代码、地址、IF阶段的执行 代码、EX阶段的执行代码的时序图是为了实现代码插入所需的期望值。
[0095] PC延迟信号的时序图表示一般的多循环方式的微型计算机中的动作,地址一致信 号的时序图表示使用了简易比较器时的动作。
[0096] 在图5(a)的例子中,示出作为源代码的一部分的"R0106"为多循环命令(3循环 命令),该代码的地址为"0x0106",并在该代码之后插入单循环的插入代码"Code 0"时的 例子。
[0097] 在第3循环中,当程序计数器的值与地址"0x0108" 一致时,地址一致信号成为4 个循环的期间"H"电平,PC延迟信号成为2个循环的期间"H"电平。如图5 (a)所示,为了 取得并执行地址"0x0108"的ROM的代码,在PC延迟信号为"L"电平的第5循环中,需要另 行产生用于使程序计数器的更新停止的PC更新停止信号。在图5(a)的情况下,在前一循 环中,地址一致信号和PC延迟信号均为"H"电平,且在当前循环中,地址一致信号成为"H" 电平、PC延迟信号成为"L"电平时,需要设置新设置的PC更新停止信号成为"H"电平的逻 辑电路。
[0098] 图5 (b)是在记录于ROM的代码(源代码)为单循环命令的情况下,即使插入多循 环命令也正常动作时的时序图。
[0099] 在图5(b)的例子中,示出在作为源代码的一部分的"R0106"之后插入作为3循环 命令的插入代码"Code 0"时的例子。
[0100] 在第3循环中,当程序计数器的值与地址"0x0108" 一致时,地址一致信号成为4 个循环的期间"H"电平,PC延迟信号从第4循环成为2循环的期间"H"电平。如图5 (b) 所示,为了取得并执行地址"〇x〇l〇8"的ROM的代码,在PC延迟信号为"L"电平的第3循环 中,需要产生用于使程序计数器的更新停止的PC更新停止信号。在图5(b)的情况下,在前 一循环中,地址一致信号和PC延迟信号均为"L"电平,且在当前循环中,地址一致信号成为 "H"电平、PC延迟信号成为"L"电平的情况下,需要设置PC更新停止信号成为"H"电平的 逻辑电路。
[0101] 如上所述,在图5(a)和图5(b)的情况下,为了生成PC更新停止信号而需要另外 的逻辑电路。
[0102] 另外,在图5(a)的第5循环和前一循环的第4循环、图5(b)的第6循环和前一循 环的第5循环中,地址一致信号与PC延迟信号的电平相同。然而,取得的代码在图5(a)中 为保持插入代码的CodeReg侧,在图5 (b)中为保持源代码的ROM侧,两者不一致。
[0103] 因此,仅单纯地追加逻辑电路的话,难以生成用于实现代码插入功能的PC更新停 止信号和用于切换对源代码或插入代码进行选择并向命令执行部发送的选择器的切换信 号。在本实施方式中,解决上述课题,通过能够进行代码插入的多循环方式的微型计算机来 实现。
[0104] (第1实施方式的结构)
[0105] 图6是表示本实施方式的微型计算机的结构的图。该图所示的微型计算机没有特 别限制,但是通过公知的半导体集成电路制造技术而形成于半导体基板(芯片)。
[0106] 如图6所示,该微型计算机1具备CPU(Central Processing Unit,中央处理器)4、 RAM (Random Access Memory,随机存取储存器)5、周边装置6、模拟输入端子9、A-D转换器 7、模拟输出端子l〇、D-A转换器8、1/0端口 11、闪存3、主要进行该闪存3的控制的闪存控 制部2、以及用于进行以上各种电路间的信号传递的主数据总线273。
[0107] CPU4控制微型计算机1的整体的处理。CPU4能够访问闪存3。
[0108] RAM5存储各种数据,并用于CPU4的工作区域等。
[0109] 周边装置6经由1/0端口 11而与外部之间收发数据。
[0110] A-D转换器7将从模拟输入端子9输入的模拟信号转换成数字信号。
[0111] D-A转换器8将数字信号转换成模拟信号,并向模拟输出端子10输出。
[0112] 闪存3是非易失性存储器,能够向半导体基板电擦除及电写入。闪存3没有特别 限制,但是存储CPU4的动作程序或各种数据。
[0113] 闪存控制部2根据来自CPU3的访问以预定的顺序进行闪存3的控制。闪存控制 部2存储有进行闪存3的擦除、写入、读取等动作控制的程序,并且也进行这些程序的执行。 该程序例如包含对闪存的改写动作的错误进行监控的命令。闪存控制部2在读取对该错误 进行监控的命令时,检查表示错误的寄存器,若存在错误则向CPU4传递错误。
[0114] 这样的对错误进行监控的命令配置在程序中的每个固定的地址,以便每隔固定的 时间间隔进行读取。该命令的执行会导致其他处理性能的劣化。因此,该程序需要以适度 的间隔进行配置。另一方面,有时存在即使牺牲处理性能的些许的劣化,也想要重视安全性 而缩短错误监控的时间间隔的情况。
[0115] 本实施方式的闪存控制部2具有向由作为预先装入的命令的源代码构成的程序 插入新的代码的功能,从而不用变更微型计算机的硬件就能够应对这样的要求。
[0116] 图7是表示第1实施方式的闪存控制部2的结构的图。
[0117] 如图7所示,该闪存控制部2具备程序计数器12、闪存控制代码用R0M13、插入代 码寄存器组块17、寄存器选择信号生成电路18、代码选择电路14、命令执行部15及接口控 制器16。
[0118] 闪存控制代码用R0M13存储作为预先装入的命令的多个源代码。闪存控制代码用 R0M13将从程序计数器12输出的地址中存储的源代码输出。在此,闪存控制代码用R0M13 内的多个源代码的地址中,程序计数器的输出的从最低位起的第2位以上的位有效。而且, 本实施方式的闪存控制代码用R0M13在功能上相当于掩模R0M,但不是所谓大容量存储器 的写入禁止状态,而假定是预先在逻辑电路等中固定地装入的结构。
[0119] 插入代码寄存器组块17具有至少1个插入代码和保持插入代码的地址的寄存器 组。插入代码寄存器组块17在所保持的插入代码的地址的除了最低位的位之外的位与程 序计数器12的地址的除了最低位的位之外的位一致时,将第1信号向程序计数器12输出 (即,将地址一致信号设定为"H"电平)。插入代码寄存器组块17在输出第1信号且程序 计数器12的地址的最低位的位为"1"时,将第2信号向代码选择电路14输出(即,将地址 完全一致信号设定为"H"电平),并将保持的插入代码作为代码寄存器输出信号而输出。
[0120] 程序计数器12通过加上第1值或第2值来对作为计数器值的地址进行更新。艮P, 程序计数器12基于地址一致信号及PC控制信号,对计数器值进行更新,将作为计数器值的 地址向内部地址总线23输出。程序计数器12在执行多循环命令时,停止地址的更新。更 具体而言,程序计数器12在接收到第1信号时对最低位的位加上" 1",在未接收到第1信号 时,对从最低位起的第2位加上" 1"。
[0121] 寄存器选择信号生成电路18向插入代码寄存器组块17供给后述的代码寄存器选 择信号〇?η及地址寄存器选择信号0?η。在将欲插入的代码和插入该代码的地址设定 于插入代码寄存器组块17时,代码寄存器选择信号0?η及地址寄存器选择信号0?η作 为选择信号而活性化。
[0122] 代码选择电路14基于与从程序计数器12输出的地址对应地变化的地址完全一致 信号,将从闪存控制代码用R0M13输出的源代码及从插入代码寄存器组块17输出的插入代 码中的某一个作为执行代码而输出到命令执行部15。更具体而言,代码选择电路14在接收 到第2信号时,选择插入代码,在未接收到第2信号时,选择源代码。
[0123] 命令执行部15取得从代码选择电路14输出的执行代码,并执行所取得的执行代 码。
[0124] 在本实施方式中,使多个源代码及插入代码中的至少1个为多循环命令。即,在闪 存3的控制中,需要多循环命令下的处理。
[0125] 接口控制器16与主数据总线273连接,接收来自闪存控制部的外部的中断,并向 命令执行部15输出中断信号。
[0126] 命令执行部15及接口控制器16经由内部数据总线21与闪存3连接。
[0127] 图8是用于说明命令执行部15和程序计数器12的功能的图。
[0128] 如图8所示,命令执行部15具备取得部35和执行部36。取得部35取得从代码 选择电路14输出的执行代码,并向执行部35输出。执行部36执行所取得的执行代码。执 行部36将表示即时值的运算结果PC、对即时值的选择进行指示的运算结果PC选择信号及 PC延迟信号等PC控制信号向程序计数器12输出。PC延迟信号在执行多循环命令时被设 定为"H"电平。
[0129] 图9是表示程序计数器12的结构的图。
[0130] 如图9所示,程序计数器12具备选择器24、加法器25、选择器26、选择器27及PC 用寄存器28。
[0131] 在从插入代码寄存器组块17输出的地址一致信号为"H"电平时,选择器24输出 "0x01",在地址一致信号为"L"电平时,选择器24输出"0x02"。
[0132] 加法器25将从PC用寄存器28输出的16位的地址与从选择器24输出的值相加。
[0133] 选择器26接收加法器25的输出和从命令执行部15输出的运算结果PC ( S卩,即时 值)。在从命令执行部15输出的运算结果PC选择信号为"H"电平时,选择器26输出运算 结果PC,在运算结果PC选择信号为"L"电平时,选择器26输出加法器25的输出。
[0134] 选择器27接收选择器26的输出和从PC用寄存器28输出的地址。在从命令执行 部15输出的PC延迟信号为"H"电平时,选择器27输出从PC用寄存器28输出的地址,在 PC延迟信号为"L"电平时,选择器27输出选择器26的输出。
[0135] PC用寄存器28对选择器27的输出进行锁存,作为闪存控制代码用R0M13的地址 向内部地址总线23输出。
[0136] 图10是表示插入代码寄存器组块17的结构的图。
[0137] 如图10所示,插入代码寄存器组块17具备保持插入的代码及插入该代码的场所 (地址)的代码插入用寄存器组29-i (i = 0?η)及逻辑电路0R1、0R2、0R3。
[0138] 代码插入用寄存器组29-i接收从程序计数器12输出的地址和在数据总线内传送 的数据,而且,从寄存器选择信号生成电路18接收代码寄存器选择信号i及地址寄存器选 择信号i,向代码选择电路14输出地址一致信号i、地址完全一致信号i及代码寄存器输出 信号i。附带而言,通过代码寄存器选择信号i及地址寄存器选择信号i来选择插入代码寄 存器组块17内的代码插入用寄存器组29-i,将从内部数据总线21传送的插入代码及地址 写入所选择的代码插入用寄存器组29-i的代码用寄存器及地址用寄存器。
[0139] 逻辑电路0R1将(n+1)个地址一致信号0?η的逻辑和作为地址一致信号而输出。 艮P,在地址一致信号0?η的至少1个为"Η"电平时,地址一致信号成为"Η"电平。
[0140] 逻辑电路0R2将(η+1)个代码寄存器输出信号0?η的逻辑和作为代码寄存器输 出信号而输出。即,在(η+1)个代码寄存器输出信号0?η的至少1个具有"Η"电平的位 时(即,输出了插入代码时),代码寄存器输出信号成为插入代码。即,在(η+1)个代码寄存 器输出信号〇?η的所有位均为"L"电平时(即,未输出插入代码时),代码寄存器输出信 号的所有位成为"L"。
[0141] 逻辑电路0R3将(η+1)个地址完全一致信号0?η的逻辑和作为地址完全一致信 号而输出。即,在(η+1)个地址完全一致信号0?η的至少1个为"Η"电平时,地址完全一 致信号成为"Η"电平。
[0142] 图11是表示代码插入用寄存器组29-0的结构的图。代码插入用寄存器组29-1? 29-η的结构也与图11的代码插入用寄存器组29-0的结构同样。
[0143] 如图11所示,代码插入用寄存器组29-0具备逻辑电路AND1、地址寄存器31、地址 比较器30、逻辑电路AND4、代码寄存器32、逻辑电路AND2及逻辑电路AND3。
[0144] 逻辑电路AND1在时钟elk和地址寄存器选择信号0均为"Η"电平时,将"Η"电平 的信号向地址寄存器31的控制端子输出。
[0145] 地址寄存器31在向控制端子的输入为"H"电平时,锁存并保持通过数据总线传送 来的15位的地址(S卩,将插入代码插入的地址)。即,与时钟elk同步地接收地址寄存器选 择信号〇,将来自数据总线的信号作为插入代码的插入目的地地址而存储到所选择的地址 寄存器31中。
[0146] 地址比较器30在从程序计数器12输出的16位的地址中的高位15位(地址[15 : 1])与保持于地址寄存器31的15位的地址一致时,将地址一致信号0设定为"H"电平。
[0147] 逻辑电路AND2在地址一致信号0为"H"电平且从程序计数器12输出的16位的 地址中最低位的位(地址[0])为"1"时,将地址完全一致信号0设定为"H"电平。在此, 闪存控制代码用R0M13内的作为多个源代码的地址而无效的最低位的位为"1"时是指指定 了闪存控制代码用R0M13内不存在的地址的时刻。
[0148] 逻辑电路AND4在时钟elk和代码寄存器选择信号0均为"H"电平时,将"H"电平 的信号向代码寄存器32的控制端子输出。
[0149] 代码寄存器32在向控制端子的输入为"H"电平时,锁存并保持通过数据总线送来 的16位的数据(即插入代码)。即,与时钟elk同步地接收代码寄存器选择信号0,将来自 数据总线的信号作为插入代码而存储到所选择的代码寄存器中。
[0150] 逻辑电路AND3接收地址完全一致信号0和代码寄存器32的输出。逻辑电路AND3 在地址完全一致信号0为"H"电平时,将保持于代码寄存器32的16位的数据(插入代码) 作为代码寄存器输出信号〇而输出。逻辑电路AND3在地址完全一致信号0为"L"电平时, 将16位的"0x0000"作为代码寄存器输出信号0而输出。
[0151] 图12是表示代码选择电路14的结构的图。
[0152] 如图12所示,代码选择电路14包含选择器33。
[0153] 选择器33接收从闪存控制代码用R0M13输出的源代码和从插入代码寄存器组块 17输出的代码寄存器输出信号(插入代码)。选择器33基于地址完全一致信号,将输入的 两个信号中的某一个输出。选择器33在地址完全一致信号为"H"电平时,将代码寄存器输 出信号(插入代码)输出,在地址完全一致信号为"L"电平时,将源代码作为执行代码而输 出。
[0154] (第1实施方式的动作例1)
[0155] 接下来,说明源代码及插入代码为单循环命令时的动作例。
[0156] 图13 (a)是表示在代码插入用寄存器组29-i (以下,称为代码插入用寄存器组#i) 的地址寄存器31中保持的值的例子的图。在该例子中,在代码插入用寄存器组#0的地址 寄存器31中保持"0x0106"的高位15位(第2位?第16位)。但是,在此,将第1位设为 LSB (Least Significant bit,最低有效位),将第X位设为比LSB高(X-1)位的位。
[0157] 另外,在代码插入用寄存器组#0的代码寄存器32中保持有插入代码"Code Reg. 0"。而且,在闪存控制代码用R0M13的地址"Ox----"中保持有源代码"R----"。
[0158] 图13(b)是图13(a)的条件下的时序图。
[0159] 在第0循环中,从程序计数器12输出的16位的地址(PC(Program Counter)值 [15 :0])为"0x0102"。而且,地址"0x0102"的高位15位与在代码插入用寄存器组#0的地 址寄存器31中保持的地址"0x0106"的高位15位不同。其结果是,地址一致信号及地址完 全一致信号成为"L"电平,代码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13 输出"0x0102"的地址的源代码即"R0102"。由于地址完全一致信号为"L"电平,因此代码 选择电路14将源代码"R0102"向命令执行部15的取得部35输出。命令执行部15的执行 部36执行在前一循环中被输出到取得部35的源代码"R0100"。
[0160] 在第1循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器12的 选择器24输出"0x02"。由此,程序计数器12的输出地址成为加上了"0x02"的"0x0104"。 而且,地址"0x0104"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的 地址"0x0106"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出"0x0104"的地址 的源代码即"R0104"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码 "R0104"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环 中被输出到取得部35的源代码"R0102"。
[0161] 在第2循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器12的 选择器24输出"0x02"。由此,程序计数器12的输出地址成为加上了 "0x02"的"0x0106"。 地址"0x0106"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x0106"的高位15位一致。其结果是,地址一致信号成为"H"电平(这是因为地址一致信 号〇成为"H"电平)。另一方面,程序计数器12的输出地址的最低位的位为"0"。其结果 是,地址完全一致信号仍为"L"电平,代码寄存器输出信号仍为"0x0000"。从闪存控制代码 用R0M13输出"0x0106"的地址的源代码即"R0106"。由于地址完全一致信号为"L"电平, 因此代码选择电路14将源代码"R0106"向命令执行部15的取得部35输出。命令执行部 15的执行部36执行在前一循环中被输出到取得部35的源代码"R0104"。
[0162] 在第3循环中,由于前一循环的地址一致信号为"H"电平,因此程序计数器12的 选择器24输出"0x01"。由此,程序计数器12的输出地址成为加上了 "0x01"的"0x0107"。 地址"0x0107"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x0106"的高位15位一致。其结果是,地址一致信号成为"H"电平(这是因为地址一致信 号0成为"Η"电平)。而且,程序计数器12的输出地址的最低位的位为"1",其结果是,地 址完全一致信号成为"H"电平(这是因为地址完全一致信号0成为"H"电平)。而且,代码 寄存器输出信号成为在代码寄存器32中保持的插入代码"Code Reg. 0"(这是因为代码寄 存器输出信号〇成为"Code Reg. 0")。由于地址完全一致信号为"H"电平,因此代码选择 电路14将插入代码"Code Reg. 0"向命令执行部15的取得部35输出。命令执行部15的 执行部36执行在前一循环中被输出到取得部35的源代码"R0106"。
[0163] 在第4循环中,由于前一循环的地址一致信号为"H"电平,因此程序计数器12的 选择器24输出"0x01"。由此,程序计数器12的输出地址成为加上了 "0x01"的"0x0108"。 地址"0x0108"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x0108"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L"电平,代 码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出"0x0108"的地址的源代 码即"R0108"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码"R0108" 向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出 到取得部35的插入代码"Code Reg. 0"。
[0164] 在第5循环以后与第4循环同样地进行动作。
[0165] (第1实施方式的动作例2)
[0166] 接下来,说明源代码的一部分为多循环命令且插入代码为单循环命令时的动作。
[0167] 图14 (a)是表示在代码插入用寄存器组29-i (以下,称为代码插入用寄存器组#i) 的地址寄存器31中保持的值的例子的图。在该例子中,在代码插入用寄存器组#0的地址 寄存器31中保持有"0x0106"的高位15位(第2位?第16位),在代码插入用寄存器组 #1的地址寄存器31中保持有"0x8000"的高位15位,在代码插入用寄存器组#2的地址寄 存器31中保持有"0x8002"的高位15位。而且,在代码插入用寄存器组#0的代码寄存器 32中保持有插入代码"Code Reg.O"。而且,在闪存控制代码用R0M13的地址"0χ· · · ·" 中保持有源代码"R· · · · "。
[0168] 如图14(b)所示,设源代码"R0106"为3循环命令、其他源代码为1循环命令、插 入代码"Code Reg. 0"为1循环命令。
[0169] 图14(c)是图14(a)及图14(b)所示的条件下的时序图。
[0170] 在第0循环中,从程序计数器12输出的16位的地址(PC值[15 :0])为"0x0102"。 而且,地址"0x0102"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的 地址"0x0106"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出"0x0102"的地址 的源代码即"R0102"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码 "R0102"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环 中被输出到取得部35的源代码"R0100"。
[0171] 在第1循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器12的 选择器24输出"0x02"。由此,程序计数器12的输出地址成为加上了 "0x02"的"0x0104"。 地址"0x0104"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x0106"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L"电平,代 码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出"0x0104"的地址的源代 码即"R0104"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码"R0104" 向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出 到取得部35的源代码"R0102"。
[0172] 在第2循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器12的 选择器24输出"0x02"。由此,程序计数器12的输出地址成为加上了 "0x02"的"0x0106"。 地址"0x0106"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x0106"的高位15位一致。其结果是,地址一致信号成为"H"电平(这是因为地址一致信 号〇成为"H"电平)。另一方面,程序计数器12的输出地址的最低位的位为"0"。其结果 是,地址完全一致信号仍为"L"电平,代码寄存器输出信号仍为"0x0000"。从闪存控制代码 用R0M13输出"0x0106"的地址的源代码即"R0106"。由于地址完全一致信号为"L"电平, 因此代码选择电路14将源代码"R0106"向命令执行部15的取得部35输出。命令执行部 15的执行部36执行在前一循环中被输出到取得部35的源代码"R0104"。
[0173] 在第3循环中,由于前一循环的地址一致信号为"H"电平,因此程序计数器12的 选择器24输出"0x01"。由此,程序计数器12的输出地址成为加上了 "0x01"的"0x0107"。 而且,地址"0x0107"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的 地址"0x0106"的高位15位一致。其结果是,地址一致信号成为"H"电平(这是因为地址 一致信号〇成为"H"电平)。程序计数器12的输出地址由于进行了"0x01"的加法运算,因 此最低位的位为"1"。其结果是,地址完全一致信号成为"H"电平(这是因为地址完全一致 信号〇成为"H"电平)。而且,代码寄存器输出信号成为在代码寄存器32中保持的插入代 码"Code Reg. 0"(这是因为代码寄存器输出信号0成为"Code Reg. 0")。由于地址完全一 致信号为"H"电平,因此代码选择电路14将插入代码"Code Reg. 0"向命令执行部15的取 得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代码 "R0106"。在此,由于源代码"R0106"为3循环命令,因此执行部36将PC延迟信号设定为 "H"电平。
[0174] 在第4循环中,由于在前一循环中PC延迟信号被设定为"H"电平,因此程序计数 器12输出与前一循环相同的地址"0x0107"。地址"0x0107"的高位15位与在代码插入用 寄存器组#〇的地址寄存器31中保持的地址"0x0106"的高位15位一致。其结果是,地址 一致信号成为"H"电平(这是因为地址一致信号0成为"H"电平)。而且,程序计数器12 的输出地址的最低位的位为"1"。其结果是,地址完全一致信号成为"H"电平(这是因为地 址完全一致信号0成为"H"电平)。而且,代码寄存器输出信号成为在代码寄存器32中保 持的插入代码"Code Reg. 0"(这是因为代码寄存器输出信号0成为"Code Reg. 0")。由 于地址完全一致信号为"Η"电平,因此代码选择电路14将插入代码"Code Reg. 0"向命令 执行部15的取得部35输出。命令执行部15的执行部36继续执行3循环命令的源代码 "R0106"(完成2循环量的执行)。
[0175] 在第5循环中,由于在前一循环中PC延迟信号被设定为"H"电平,因此程序计数器 12输出与前一循环相同的地址"0x0107"。而且,地址"0x0107"的高位15位与在代码插入 用寄存器组#〇的地址寄存器31中保持的地址"0x0106"的高位15位一致。其结果是,地 址一致信号成为"H"电平(这是因为地址一致信号0成为"H"电平)。由于程序计数器12 的输出地址的最低位的位为"1",因此地址完全一致信号成为"H"电平(这是因为地址完全 一致信号0成为"Η"电平)。而且,代码寄存器输出信号成为在代码寄存器32中保持的插 入代码"Code Reg. 0"(这是因为代码寄存器输出信号0成为"Code Reg. 0")。由于地址完 全一致信号为"H"电平,因此代码选择电路14将插入代码"Code Reg. 0"向命令执行部15 的取得部35输出。命令执行部15的执行部36继续执行3循环命令的源代码"R0106"(完 成3循环量的执行)。执行部36完成了作为3循环命令的源代码"R0106"的执行,因此将 PC延迟信号设定为"L"电平。
[0176] 在第6循环中,由于前一循环的地址一致信号为"H"电平,因此程序计数器12的 选择器24输出"0x01"。由此,程序计数器12的输出地址成为加上了 "0x01"的"0x0108"。 而且,地址"0x0108"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的 地址"0x0106"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出"0x0108"的地址 的源代码即"R0108"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码 "R0108"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环 中被输出到取得部35的插入代码"Code Reg. 0"。
[0177] 在第7循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器12的 选择器24输出"0x02"。由此,程序计数器12的输出地址成为加上了 "0x02"的"ΟχΟΙΟΑ"。 地址"ΟχΟΙΟΑ"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x0106"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L"电平,代 码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出"ΟχΟΙΟΑ"的地址的源代 码即"R010A"。由于地址完全一致信号为"L"电平,代码选择电路14因此将源代码"R010A" 向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出 到取得部35的源代码"R0108"。
[0178] 在第8循环以后与第7循环同样地进行动作。
[0179] (第1实施方式的动作例3)
[0180] 接下来,说明源代码为单循环命令且插入代码为多循环命令时的动作。
[0181] 图15(a)是表示在代码插入用寄存器组29-i(以下,称为代码插入用寄存器组 #i)的地址寄存器31中保持的值的例子的图。在该例子中,在代码插入用寄存器组#0的 地址寄存器31中保持有"0x0106"的高位15位,在代码插入用寄存器组#1的地址寄存器 31中保持有"0x8000"的高位15位,在代码插入用寄存器组#2的地址寄存器31中保持有 "0x8002"的高位15位。而且,在代码插入用寄存器组#0的代码寄存器32中保持有插入代 码"Code Reg.0"。而且,在闪存控制代码用R0M13的地址"0χ· · · ·"中保持有源代码 "R · · · ·,,。
[0182] 如图15(b)所示,设源代码"R0106"为1循环命令、其他源代码也同样为1循环命 令、插入代码"Code Reg. 0"为3循环命令。
[0183] 图15(c)是图15(a)及图15(b)所示的条件下的时序图。
[0184] 在第0循环中,从程序计数器12输出的16位的地址(PC值[15 :0])为"0x0102"。 而且,地址"0x0102"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的 地址"0x0106"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出"0x0102"的地址 的源代码即"R0102"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码 "R0102"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环 中被输出到取得部35的源代码"R0100"。
[0185] 在第1循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器12的 选择器24输出"0x02"。由此,程序计数器12的输出地址成为加上了 "0x02"的"0x0104"。 而且,地址"0x0104"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的 地址"0x0106"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出"0x0104"的地址 的源代码即"R0104"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码 "R0104"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环 中被输出到取得部35的源代码"R0102"。
[0186] 在第2循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器12的 选择器24输出"0x02"。由此,程序计数器12的输出地址成为加上了 "0x02"的"0x0106"。 地址"0x0106"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x0106"的高位15位一致。其结果是,地址一致信号成为"H"电平(这是因为地址一致信 号〇成为"H"电平)。另一方面,由于程序计数器12的输出地址的最低位的位为"0",因此 地址完全一致信号仍为"L"电平,代码寄存器输出信号仍为"0x0000"。从闪存控制代码用 R0M13输出"0x0106"的地址的源代码即"R0106"。由于地址完全一致信号为"L"电平,因 此代码选择电路14将源代码"R0106"向命令执行部15的取得部35输出。命令执行部15 的执行部36执行在前一循环中被输出到取得部35的源代码"R0104"。
[0187] 在第3循环中,由于前一循环的地址一致信号为"H"电平,因此程序计数器12的 选择器24输出"0x01"。由此,程序计数器12的输出地址成为加上了 "0x01"的"0x0107"。 地址"0x0107"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x0106"的高位15位一致。其结果是,地址一致信号成为"H"电平(这是因为地址一致信 号〇成为"H"电平)。程序计数器12的输出地址由于进行了"0x01"的加法运算,因此最低 位的位为"1"。其结果是,地址完全一致信号成为"H"电平(这是因为地址完全一致信号0 成为"H"电平)。而且,代码寄存器输出信号成为在代码寄存器32中保持的插入代码"Code Reg. 0"(这是因为代码寄存器输出信号0成为"Code Reg. 0")。由于地址完全一致信号为 "H"电平,因此代码选择电路14将插入代码"Code Reg. 0"向命令执行部15的取得部35输 出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代码"R0106"。
[0188] 在第4循环中,由于前一循环的地址一致信号为"H"电平,因此程序计数器12的 选择器24输出"0x01"。由此,程序计数器12的输出地址成为加上了 "0x01"的"0x0108"。 地址"0x0108"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x0106"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L"电平,代 码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出"0x0108"的地址的源代 码即"R0108"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码"R0108" 向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出 到取得部35的插入代码"Code Reg. 0"。在此,插入代码"Code Reg. 0"为3循环命令,因此 执行部36将PC延迟信号设定为"H"电平。
[0189] 在第5循环中,由于在前一循环中PC延迟信号被设定为"Η"电平,因此程序计数 器12输出与前一循环相同的地址"0x0108"。地址"0x0108"的高位15位与在代码插入用 寄存器组#〇的地址寄存器31中保持的地址"0x0106"的高位15位不同。其结果是,地址 一致信号及地址完全一致信号成为"L"电平,代码寄存器输出信号成为"0x0000"。命令执 行部15的执行部36继续执行3循环命令的插入代码"Code Reg. 0"(完成2循环量的执 行)。
[0190] 在第6循环中,由于在前一循环中PC延迟信号被设定为"H"电平,因此程序计数 器12输出与前一循环相同的地址"0x0108"。而且,地址"0x0108"的高位15位与在代码插 入用寄存器组#〇的地址寄存器31中保持的地址"0x0106"的高位15位不同。其结果是, 地址一致信号及地址完全一致信号成为"L"电平,代码寄存器输出信号成为"0x0000"。命 令执行部15的执行部36继续执行3循环命令的插入代码"Code Reg. 0"(完成3循环量的 执行)。执行部36完成了作为3循环命令的插入代码"Code Reg. 0"的执行,因此将PC延 迟信号设定为"L"电平。
[0191] 在第7循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器12的 选择器24输出"0x02"。由此,程序计数器12的输出地址成为加上了 "0x02"的"ΟχΟΙΟΑ"。 而且,地址"ΟχΟΙΟΑ"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的 地址"0x0106"的高位15位不同。其结果是,地址一致信号、地址完全一致信号成为"L"电 平,代码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出"ΟχΟΙΟΑ"的地址 的源代码即"R010A"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码 "R010A"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环 中被输出到取得部35的源代码"R0108"。
[0192] 在第8循环以后与第7循环同样地进行动作。
[0193] [第2实施方式]
[0194] 在本实施方式中,多个源代码的地址的从最低位起的第(k+Ι)位以上的位有效。 其中,k为1以上的自然数。
[0195] (结构)
[0196] 图16是表示第2实施方式的闪存控制部102的结构的图。
[0197] 图16的闪存控制部102与图7的闪存控制部2的区别点在于程序计数器51和插 入代码寄存器组块52。
[0198] 插入代码寄存器组块52最多保持2k_l个插入代码和插入代码的地址。插入代码 寄存器组块52在所保持的插入代码的地址的除了从最低位起的k位之外的位与程序计数 器51的地址的除了从最低位起的k位之外的位一致时,输出第1信号(即,将地址一致信 号设定为"H"电平)。
[0199] 插入代码寄存器组块52在输出第1信号且所保持的插入代码的地址的从最低位 起的k位与程序计数器51的地址的从最低位起的k位一致时,输出第2信号(即,将地址 完全一致信号设定为"H"电平),并输出与程序计数器51的地址对应的保持的插入代码。
[0200] 当连续地插入多个插入代码时,在插入代码寄存器组块52输出最后的插入代码 的情况下,插入代码寄存器组块52输出第2信号,并且同时输出表不插入末端的插入末端 信号。关于插入末端信号的产生,将在后文叙述。
[0201] 程序计数器51在接收到第1信号时,对最低位的位加上"1",在未接收到第1信号 时,对从最低位起的第(k+Ι)位加上"1"。程序计数器51在接收到插入末端信号时,即使 在接收到第1信号时,也对从最低位起的第(k+Ι)位加上"1",并将从最低位起的k位设为 "0"。
[0202] 在以下的说明中,将k设为5进行说明。
[0203] 图17是表示程序计数器51的结构的图。
[0204] 如图17所示,程序计数器51具备选择器53、加法器25、逻辑电路AND74、选择器 26、选择器27、PC用寄存器28。
[0205] 选择器53从插入代码寄存器组块52接收地址一致信号和插入末端信号。在地 址一致信号为"H"电平且插入末端信号为"L"电平时,选择器53输出"0x01"。在地址一 致信号为"H"电平且插入末端信号为"H"电平时、地址一致信号为"L"电平且插入末端信 号为"H"电平时、地址一致信号为"L"电平且插入末端信号为"L"电平时,选择器53输出 "0x20"。
[0206] 加法器25将从PC用寄存器28输出的20位的地址与从选择器53输出的值相加。
[0207] 逻辑电路AND74输出从加法器25输出的20位中的低位5位与插入末端信号的否 定的逻辑积。即,逻辑电路AND74在插入末端信号为" L"电平时,输出从加法器25输出的20 位中的低位5位。逻辑电路AND74在插入末端信号为"H"电平时,输出5位的"ObOOOOO"。 在此,"0b· ···"表示2进制显示。
[0208] 选择器26接收将从加法器25输出的20位中的高位15位设为高位15位并将从 逻辑电路AND74输出的5位的信号设为低位5位而得的信号、及从命令执行部15输出的运 算结果PC。选择器26在从命令执行部15输出的运算结果PC选择信号为"H"电平时,输出 运算结果PC,在运算结果PC选择信号为"L"电平时,输出来自加法器25及逻辑电路AND74 的信号。
[0209] 选择器27接收选择器26的输出和从PC用寄存器28输出的地址。选择器27在 从命令执行部15输出的PC延迟信号为"H"电平时,输出从PC用寄存器28输出的地址,在 PC延迟信号为"L"电平时,输出从选择器26接收的信号。
[0210] PC用寄存器28将选择器27的输出锁存,作为闪存控制用代码用ROM的地址向内 部地址总线23输出。
[0211] 图18是表示插入代码寄存器组块52的结构的图。
[0212] 如图18所示,插入代码寄存器组块52具备代码插入用寄存器组54-i (i = 0?η) 及逻辑电路 0R1、0R2、0R3、0R54。
[0213] 代码插入用寄存器组54-i接收从程序计数器51输出的地址和在数据总线内传送 的数据,而且从代码选择电路14接收代码寄存器选择信号i、地址寄存器选择信号i、地址 寄存器2选择信号i、插入末端寄存器选择信号i,并输出地址一致信号i、地址完全一致信 号i、插入末端信号i及代码寄存器输出信号i。
[0214] 逻辑电路0R1将(n+1)个地址一致信号0?η的逻辑和作为地址一致信号而输 出。即,在(η+1)个地址一致信号0?η的至少1个为"Η"电平时,地址一致信号成为"Η" 电平。
[0215] 逻辑电路0R2将(η+1)个代码寄存器输出信号0?η的逻辑和作为代码寄存器输 出信号而输出。即,在(n+1)个代码寄存器输出信号0?η的至少1个具有"Η"电平的位 时(即,输出了插入代码时),代码寄存器输出信号成为插入代码。即,在(η+1)个代码寄存 器输出信号〇?η的所有位均为"L"电平时(即,未输出插入代码时),代码寄存器输出信 号的所有位成为"L"。
[0216] 逻辑电路0R3将(η+1)个地址完全一致信号0?η的逻辑和作为地址完全一致信 号而输出。即,在(η+1)个地址完全一致信号0?η的至少1个为"Η"电平时,地址完全一 致信号成为"Η"电平。
[0217] 逻辑电路0R54将(η+1)个插入末端信号0?η的逻辑和作为插入末端信号而输 出。即,在(η+1)个插入末端信号0?η的至少1个为"Η"电平时,插入末端信号成为"Η" 电平。
[0218] 在图18中,地址一致信号0?η、地址一致信号为1位的信号。地址完全一致信 号0?η、地址完全一致信号为1位的信号。插入末端信号0?η、插入末端信号为1位的 信号。代码寄存器输出信号〇?η、代码寄存器输出信号为16位的信号。
[0219] 图19是表示代码插入用寄存器组54-0的结构的图。代码插入用寄存器组54-1? 54-η的结构也与图19的代码插入用寄存器组54-0的结构同样。
[0220] 如图19所示,代码插入用寄存器组54-0具备逻辑电路AND1、地址寄存器31、地址 比较器30、逻辑电路AND4、代码寄存器32、逻辑电路54、地址寄存器56、地址比较器57、逻 辑电路56、插入末端寄存器59、逻辑电路AND2、逻辑电路55及逻辑电路AND3。
[0221] 逻辑电路AND1在时钟elk和地址寄存器选择信号0均为"Η"电平时,将"Η"电平 的信号向地址寄存器31的控制端子输出。
[0222] 地址寄存器31在向控制端子的输入为"H"电平时,锁存并保持通过数据总线传送 来的15位的地址(S卩,将插入代码插入的地址)。
[0223] 地址比较器30在从程序计数器12输出的20位的地址中的高位15位(地址[19 : 5])与在地址寄存器31中保持的15位的地址一致时,将地址一致信号0设定为"H"电平。
[0224] 逻辑电路AND54在时钟elk和地址寄存器2选择信号0均为"H"电平时,将"H" 电平的信号向代码寄存器32的控制端子输出。
[0225] 地址寄存器56在向控制端子的输入为"H"电平时,锁存并保持通过数据总线传送 来的5位的地址。在该地址寄存器56中保持表示将多个插入代码连续地插入时的插入顺 序的地址。
[0226] 地址比较器57在从程序计数器12输出的20位的地址中的低位5位(地址[4 : 0])与在地址寄存器56中保持的5位的地址一致时,输出"H"电平的一致信号。
[0227] 逻辑电路AND2在地址一致信号0为"H"电平且从地址比较器57输出的一致信号 为"H"电平时,将地址完全一致信号0设定为"H"电平。
[0228] 逻辑电路AND56在时钟elk和插入末端寄存器选择信号0均为"H"电平时,将"H" 电平的信号向插入末端寄存器59的控制端子输出。
[0229] 插入末端寄存器59在向控制端子的输入为"H"电平时,锁存并保持通过数据总线 传送来的1位的数据(插入末端)。在代码插入用寄存器组54-0中对应的插入末端寄存器 59保持有"H"( "1")的数据的情况表示因该对应的代码插入用寄存器组的插入代码的插 入而使代码插入暂时结束。
[0230] 逻辑电路AND55接收地址完全一致信号0和插入末端寄存器59的输出。逻辑电 路AND55在地址完全一致信号0为"H"电平时,将在插入末端寄存器59中保持的1位的数 据(插入末端)作为插入末端信号〇而输出。
[0231] 逻辑电路AND4在时钟elk和代码寄存器选择信号0均为"H"电平时,将"H"电平 的信号向代码寄存器32的控制端子输出。
[0232] 代码寄存器32在向控制端子的输入为"H"电平时,锁存并保持通过数据总线传送 来的16位的数据(即插入代码)。
[0233] 逻辑电路AND3接收地址完全一致信号0和代码寄存器32的输出。逻辑电路AND3 在地址完全一致信号0为"H"电平时,将在代码寄存器32中保持的16位的数据(即插入 代码)作为代码寄存器输出信号〇而输出。逻辑电路AND3在地址完全一致信号0为"L" 电平时,将16位的"0x0000"作为代码寄存器输出信号0而输出。
[0234] 在图19中,地址一致信号0为1位的信号。地址完全一致信号0为1位的信号。 插入末端信号〇为1位的信号。代码寄存器输出信号〇为16位的信号。这些事项在其他 附图中也同样。
[0235] (第2实施方式的动作例)
[0236] 图20 (a)是表示在代码插入用寄存器组29-i (以下,称为代码插入用寄存器组#i) 的地址寄存器31中保持的值的例子的图。在该例子中,在代码插入用寄存器组#0的地址 寄存器31中保持有"0x01061"的高位15位(第6位?第20位),在地址寄存器56中保持 有"0x01061"的低位5位(第1位?第5位)。而且,在代码插入用寄存器组#0的代码寄 存器32中保持有插入代码"Code Reg. 0",在代码插入用寄存器组#0的插入末端寄存器59 中保持有插入末端"0b0"。
[0237] 在代码插入用寄存器组#1的地址寄存器31中保持有"0x01062"的高位15位,在 地址寄存器56中保持有"0x01062"的低位5位。而且,在代码插入用寄存器组#1的代码 寄存器32中保持有插入代码"Code Reg. 1",在代码插入用寄存器组#1的插入末端寄存器 59中保持有插入末端"Obi"。而且,在闪存控制代码用R0M13的地址"0χ· · · ·"中保持 有源代码"R· · · · "。
[0238] 图20(b)是图20(a)的条件下的时序图。
[0239] 在第0循环中,从程序计数器51输出的20位的地址(PC值[19 :0])为"0x01020"。 而且,地址"0x01020"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的 地址"0x01061"的高位15位不同,且与在代码插入用寄存器组#1的地址寄存器31中保 持的地址"0x01062"的高位15位也不同,因此地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x0000",插入末端信号成为"0b0"。从闪存控制代码用 R0M13输出"0x01020"的地址的源代码即"R01020"。由于地址完全一致信号为"L"电平, 因此代码选择电路14将源代码"R01020"向命令执行部15的取得部35输出。命令执行部 15的执行部36执行在前一循环中被输出到取得部35的源代码"R01000"。
[0240] 在第1循环中,前一循环的地址一致信号为"L"电平且插入末端信号为"0b0", 因此程序计数器51的选择器53输出"0x20"。由此,程序计数器51的输出地址成为加上 了 "0x20"的"0x01040"。而且,地址"0x01040"的高位15位与在代码插入用寄存器组#0 的地址寄存器31中保持的地址"0x01061"的高位15位不同,且与在代码插入用寄存器组 #1的地址寄存器31中保持的地址"0x01062"的高位15位也不同。因此,地址一致信号及 地址完全一致信号成为"L"电平,代码寄存器输出信号成为"0x0000",插入末端信号成为 "ObO"。从闪存控制代码用ROM13输出"0x01020"的地址的源代码即"R01040"。由于地址 完全一致信号为"L"电平,因此代码选择电路14将源代码"R01040"向命令执行部15的取 得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代码 "R01020"。
[0241] 在第2循环中,前一循环的地址一致信号为"L"电平且插入末端信号为"ObO", 因此程序计数器51的选择器53输出"0x20"。由此,程序计数器51的输出地址成为加上 了 "0x20"的"0x01060"。而且,地址"0x01060"的高位15位与在代码插入用寄存器组#0 的地址寄存器31中保持的地址"0x01061"的高位15位一致,且与在代码插入用寄存器组 #1的地址寄存器31中保持的地址"0x01062"的高位15位也一致。其结果是,地址一致 信号成为"H"电平(这是因为地址一致信号0及地址一致信号1成为"H"电平)。而且, 地址"0x01060"的低位5位与在代码插入用寄存器组#0的地址寄存器56中保持的地址 "0x01061"的低位5位不同,且与在代码插入用寄存器组#1的地址寄存器56中保持的地址 "0x01062"的低位5位不同。其结果是,地址完全一致信号仍为"L"电平(这是因为地址 完全一致信号0及地址完全一致信号1仍为"L"电平)。由于地址完全一致信号为"L"电 平,因此代码寄存器输出信号成为"0x0000",插入末端信号成为"ObO"。从闪存控制代码用 R0M13输出"0x01060"的地址的源代码即"R01060"。由于地址完全一致信号为"L"电平, 因此代码选择电路14将源代码"R01060"向命令执行部15的取得部35输出。命令执行部 15的执行部36执行在前一循环中被输出到取得部35的源代码"R01040"。
[0242] 在第3循环中,前一循环的地址一致信号为"H"电平且插入末端信号为"0b0",因 此程序计数器51的选择器24输出"0x01"。因此,程序计数器51的输出地址成为加上了 "0x01"的"0x01061"。而且,地址"0x01061"的高位15位与在代码插入用寄存器组#0的 地址寄存器31中保持的地址"0x01061"的高位15位一致,且与在代码插入用寄存器组#1 的地址寄存器31中保持的地址"0x01062"的高位15位一致。其结果是,地址一致信号成为 "H"电平(这是因为地址一致信号0及地址一致信号1成为"H"电平)。而且,地址"0x01061" 的低位5位与在代码插入用寄存器组#0的地址寄存器56中保持的地址"0x01061"的低位 5位一致,因此地址完全一致信号成为"H"电平(这是因为地址完全一致信号0成为"H"电 平)。由于地址完全一致信号0成为"H"电平,因此代码寄存器输出信号0成为在代码插入 用寄存器组#〇的代码寄存器32中保持的插入代码"Code Reg.0"。由此,代码寄存器输出 信号成为插入代码"Code Reg. 0"。由于地址完全一致信号0成为"H"电平,因此插入末端 信号〇成为在代码插入用寄存器组#〇的插入末端寄存器59中保持的插入末端"0b0"。由 此,插入末端信号成为"0b0"。由于地址完全一致信号为"H"电平,因此代码选择电路14将 插入代码"Code Reg. 0"向命令执行部15的取得部35输出。命令执行部15的执行部36 执行在前一循环中被输出到取得部35的源代码"R01060"。
[0243] 在第4循环中,由于前一循环的地址一致信号为"H"电平且插入末端信号为 "0b0",因此程序计数器51的选择器24输出"0x01"。因此,程序计数器51的输出地址成 为加上了 "0x01"的"0x01062"。地址"0x01062"的高位15位与在代码插入用寄存器组 #0的地址寄存器31中保持的地址"0x01061"的高位15位一致,且与在代码插入用寄存器 组#1的地址寄存器31中保持的地址"0x01062"的高位15位一致。其结果是,地址一致 信号成为"H"电平(这是因为地址一致信号0及地址一致信号1成为"H"电平)。而且, 地址"0x01062"的低位5位与在代码插入用寄存器组#1的地址寄存器56中保持的地址 "0x01062"的低位5位一致,因此地址完全一致信号成为"H"电平(这是因为地址完全一致 信号1成为"H"电平)。由于地址完全一致信号1成为"H"电平,因此代码寄存器输出信 号1成为在代码插入用寄存器组#1的代码寄存器32中保持的插入代码"Code Reg. 1"。由 此,代码寄存器输出信号成为插入代码"Code Reg. 1"。由于地址完全一致信号1成为"Η" 电平,因此插入末端信号1成为在代码插入用寄存器组#1的插入末端寄存器59中保持的 插入末端"Obi"。由此,插入末端信号成为"Obi"。由于地址完全一致信号为"Η"电平,因 此代码选择电路14将插入代码"Code Reg. 1"向命令执行部15的取得部35输出。命令执 行部15的执行部36执行在前一循环中被输出到取得部35的插入代码"Code Reg. 0"。
[0244] 在第5循环中,由于前一循环的地址一致信号为"Η"电平且插入末端信号为 "Obl",因此程序计数器51的选择器24输出"0x20"。而且,由于插入末端信号为"Obl",因 此通过逻辑电路74,加法器25的输出的低位5位成为"0"。其结果是,程序计数器51的输 出地址成为"0x01080"。地址"0x01080"的高位15位与在代码插入用寄存器组#0的地址 寄存器31中保持的地址"0x01061"的高位15位不同,且与在代码插入用寄存器组#1的地 址寄存器31中保持的地址"0x01062"的高位15位不同。其结果是,地址一致信号成为"L" 电平(这是因为地址一致信号〇及地址一致信号1成为"L"电平)。而且,地址"0x01080" 的低位5位与在代码插入用寄存器组#0的地址寄存器56中保持的地址"0x01061"的低位 5位不同,且与在代码插入用寄存器组#1的地址寄存器56中保持的地址"0x01062"的低位 5位不同。其结果是,地址完全一致信号成为"L"电平(这是因为地址完全一致信号0及地 址完全一致信号1成为"L"电平)。由于地址完全一致信号为"L"电平,因此代码寄存器输 出信号成为"0x0000",插入末端信号成为"0b0"。从闪存控制代码用R0M13输出"0x01080" 的地址的源代码即"R01080"。由于地址完全一致信号为"L"电平,因此代码选择电路14将 源代码"R01080"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在 前一循环中被输出到取得部35的插入代码"Code Reg. 1"。
[0245] 在第6循环中,由于前一循环的地址一致信号为"L"电平且插入末端信号为 "0b0",因此程序计数器51的选择器53输出"0x20"。由此,程序计数器51的输出地址成 为加上了"0x20"的"ΟχΟΙΟΑΟ"。地址"ΟχΟΙΟΑΟ"的高位15位与在代码插入用寄存器组#0 的地址寄存器31中保持的地址"0x01061"的高位15位不同,且与在代码插入用寄存器组 #1的地址寄存器31中保持的地址"0x01062"的高位15位不同。其结果是,地址一致信号 及地址完全一致信号成为"L"电平,代码寄存器输出信号成为"0x0000",插入末端信号成 为"0b0"。从闪存控制代码用R0M13输出"ΟχΟΙΟΑΟ"的地址的源代码即"R010A0"。由于地 址完全一致信号为"L"电平,因此代码选择电路14将源代码"R010A0"向命令执行部15的 取得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代 码 "R01080"。
[0246] 在第7循环以后与第6循环同样地进行动作。
[0247] 如上所述,根据本实施方式,通过程序计数器的地址的除了从最低位起的预定个 数的位以外的位来指定源代码的地址,使用从最低位起的预定个数的位来控制代码的插 入,因此能够在两个源代码之间插入1个以上的代码,且能够进行多循环命令的执行。而 且,根据第1实施方式,将程序计数器12的输出设为16位进行了说明,但是在本实施方式 中,由于插入多个命令代码,因此假定程序计数器51的输出为20位。
[0248] [第3实施方式]
[0249] (结构)
[0250] 图21是表示第3实施方式的闪存控制部312的结构的图。
[0251] 图21的闪存控制部312与图7的第1实施方式的闪存控制部2的区别点在于插 入代码寄存器组块164。
[0252] 插入代码寄存器组块164在所保持的插入代码的地址的除了最低位的位之外的 位与程序计数器12的地址的除了最低位的位之外的位一致时,输出第1信号(即,将地址 一致信号设定为"H"电平)。插入代码寄存器组块164在输出第1信号且所保持的插入代 码的地址的最低位的位与程序计数器12的地址的最低位的位一致时,输出第2信号(即, 将地址一致信号设定为"H"电平),并将所保持的插入代码输出。
[0253] 图22是表示插入代码寄存器组块164所包含的代码插入用寄存器组64-0的结构 的图。代码插入用寄存器组64-1?64-n的结构也与图22的代码插入用寄存器组64-0的 结构同样。
[0254] 图22的代码插入用寄存器组64-0与图11的第1实施方式的代码插入用寄存器 组29-0的区别点在于具备地址寄存器131和一致电路NE0R1的点。
[0255] 地址寄存器131在逻辑电路AND1的输出为"H"电平时,锁存并保持通过数据总线 传送来的16位的地址。
[0256] -致电路XN0R1在从程序计数器12输出的16位的地址中的最低位的位(地址 [0])与在地址寄存器131中保持的16位的地址中的最低位的位一致时,将一致信号设定为 "H"电平。
[0257] 逻辑电路AND2在地址一致信号0为"H"电平且从一致电路NR0R1输出的一致信 号为"H"电平时,将地址完全一致信号0设定为"H"电平。
[0258] (第3实施方式的动作例)
[0259] 说明插入前的源代码及插入代码为单循环命令时的动作例。
[0260] 图23 (a)是表示在代码插入用寄存器组64-i (以下,称为代码插入用寄存器组#i) 的地址寄存器31中保持的值的例子的图。在该例子中,在代码插入用寄存器组#0的地址 寄存器131中保持有16位的"0x0106"。而且,在代码插入用寄存器组#0的代码寄存器32 中保持有插入代码"Code Reg.O"。而且,在闪存控制代码用R0M13的地址"0χ· · · ·"中 保持有源代码"R· · · · "。
[0261] 图23(b)是图23(a)的条件下的时序图。
[0262] 在第0循环中,从程序计数器12输出的16位的地址(PC值[15 :0])为"0x0102"。 地址"0x0102"的高位15位与在地址寄存器131中保持的地址"0x0106"的高位15位不 同。其结果是,地址一致信号及地址完全一致信号成为"L"电平,代码寄存器输出信号成为 "0x0000"。从闪存控制代码用R0M13输出"0x0102"的地址的源代码即"R0102"。由于地址 完全一致信号为"L"电平,因此代码选择电路14将源代码"R0102"向命令执行部15的取 得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代码 "R0100"。
[0263] 在第1循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器12的 选择器24输出"0x02"。由此,程序计数器12的输出地址成为加上了 "0x02"的"0x0104"。 地址"0x0104"的高位15位与在地址寄存器131中保持的地址"0x0106"的高位15位不 同。其结果是,地址一致信号、地址完全一致信号成为"L"电平,代码寄存器输出信号成为 "0x0000"。从闪存控制代码用R0M13输出"0x0104"的地址的源代码即"R0104"。由于地址 完全一致信号为"L"电平,因此代码选择电路14将源代码"R0104"向命令执行部15的取 得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代码 "R0102"。
[0264] 在第2循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器12的选 择器24输出"0x02",因此程序计数器12的输出地址成为加上了 "0x02"的"0x0106"。地 址"0x0106"的高位15位与在地址寄存器131中保持的地址"0x0106"的高位15位一致, 因此地址一致信号成为"H"电平(这是因为地址一致信号0成为"H"电平)。而且,地址 "0x0106"的低位1位与在地址寄存器131中保持的地址"0x0106"的低位1位一致,因此地 址完全一致信号成为"H"电平(这是因为地址完全一致信号0成为"H"电平)。而且,代码 寄存器输出信号成为在代码寄存器32中保持的插入代码"Code Reg. 0"(这是因为代码寄 存器输出信号〇成为"Code Reg.O")。由于地址完全一致信号为"H"电平,因此代码选择 电路14将插入代码"Code Reg. 0"向命令执行部15的取得部35输出。命令执行部15的 执行部36执行在前一循环中被输出到取得部35的源代码"R0104"。
[0265] 在第3循环中,由于前一循环的地址一致信号为"H"电平,因此程序计数器12的 选择器24输出"0x01"。由此,程序计数器12的输出地址成为加上了 "0x01"的"0x0107"。 地址"0x0107"的高位15位与在地址寄存器131中保持的地址"0x0106"的高位15位一 致,因此地址一致信号成为"H"电平(这是因为地址一致信号0成为"H"电平)。而且,地 址"0x0107"的低位1位与在地址寄存器131中保持的地址"0x0106"的低位1位不同。其 结果是,地址完全一致信号成为"L"电平(这是因为地址完全一致信号0及地址完全一致 信号成为"L"电平),代码寄存器输出信号成为"0x0000"。从闪存控制代码用R0M13输出 忽略程序计数器12的输出地址"0x0107"的低位1位而相同的"0x0106"的地址的源代码 艮P "R0106"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码"R0106" 向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出 到取得部35的插入代码"Code Reg. 0"。
[0266] 在第4循环中,由于前一循环的地址一致信号为"Η"电平,因此程序计数器12的 选择器24输出"0x01"。由此,程序计数器12的输出地址成为加上了 "0x01"的"0x0108"。 地址"0x0108"的高位15位与在地址寄存器131中保持的地址"0x0106"的高位15位不 同。其结果是,地址一致信号及地址完全一致信号成为"L"电平,代码寄存器输出信号成为 "0x0000"。从闪存控制代码用R0M13输出"0x0108"的地址的源代码即"R0108"。由于地址 完全一致信号为"L"电平,因此代码选择电路14将源代码"R0108"向命令执行部15的取 得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代码 "R0106"。
[0267] 在第5循环以后与第4循环同样地进行动作。
[0268] 如上所述,根据本实施方式,与第1实施方式同样地,通过程序计数器的地址的除 了最低位的位以外的位来指定源代码的地址,使用最低位的位来控制代码的插入,因此能 够在两个源代码之间插入1个代码,且能够执行多循环命令。而且,根据本实施方式,能够 选择是在源代码之后执行插入代码的执行(后插入)还是在源代码之前执行插入代码的执 行(前插入)。
[0269] [第4实施方式]
[0270] (结构)
[0271] 图24是表示第4实施方式的闪存控制部103的结构的图。
[0272] 图24的闪存控制部103与图16的第2实施方式的闪存控制部102的区别点在于 程序计数器65。
[0273] 程序计数器65在接收到插入末端信号时,将从最低位起的k位设为"1"。
[0274] 以下,设为k = 5进行说明。
[0275] 图25是表示第4实施方式的程序计数器65的结构的图。
[0276] 如图25所示,程序计数器65具备选择器68、加法器25、逻辑电路0R68、选择器26、 选择器27、PC用寄存器28。
[0277] 选择器68从插入代码寄存器组块52接收地址一致信号。选择器68在地址一致 信号为"H"电平时,输出"0x01"。选择器68在地址一致信号为"L"电平时,输出"0x20"。
[0278] 加法器25将从PC用寄存器28输出的20位的地址" 19 :0"与从选择器68输出的 值相加。
[0279] 逻辑电路0R68输出从加法器25输出的20位中的低位5位与插入末端信号的逻 辑和。即,逻辑电路0R68在插入末端信号为"L"电平时,输出从加法器25输出的20位中 的低位5位。逻辑电路0R68在插入末端信号为"H"电平时,输出5位的"Oblllll"。
[0280] 选择器26接收将从加法器25输出的20位中的高位15位(第6位?第20位) 设为高位15位并将从逻辑电路0R68输出的5位的信号设为低位5位而得的信号、及从命 令执行部15输出的运算结果PC。选择器26在从命令执行部15输出的运算结果PC选择信 号为"H"电平时,输出运算结果PC,在运算结果PC选择信号为"L"电平时,输出加法器25 及逻辑电路58的信号。
[0281] 选择器27接收选择器26的输出和从PC用寄存器28输出的地址。选择器27在 从命令执行部15输出的PC延迟信号为"H"电平时,输出从PC用寄存器28输出的地址,在 PC延迟信号为"L"电平时,输出选择器26的输出。
[0282] PC用寄存器28将选择器27的输出锁存,作为闪存控制用代码用ROM的地址向内 部地址总线23输出。
[0283] (第4实施方式的动作例)
[0284] 图26 (a)是表示在代码插入用寄存器组54-i (以下,称为代码插入用寄存器组#i) 的地址寄存器31中保持的值的例子的图。在该例子中,在代码插入用寄存器组#0的地址 寄存器31中保持有"0x01060"的高位15位,在地址寄存器56中保持有"0x01060"的低位 5位。而且,在代码插入用寄存器组#0的代码寄存器32中保持有插入代码"Code Reg.O"。 而且,在代码插入用寄存器组#0的插入末端寄存器59中保持有插入末端"ObO"。在代码 插入用寄存器组#1的地址寄存器31中保持有"0x01061"的高位15位,在地址寄存器56 中保持有"0x01061"的低位5位。而且,在代码插入用寄存器组#01代码寄存器32中保持 有插入代码"Code Reg. 1"。而且,在代码插入用寄存器组#1的插入末端寄存器59中保持 有插入末端"〇bl"。而且,在闪存控制代码用R0M13的地址"0χ· · · ·"中保持有源代码 "R · · · ·,,。
[0285] 图26(b)是图26(a)的条件下的时序图。
[0286] 在第0循环中,从程序计数器65输出的20位的地址(PC值[19 :0])为"0x01020"。 地址"0x01020"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x01060"的高位15位不同,且与在代码插入用寄存器组#1的地址寄存器31中保持的地 址"0x01061"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x0000",插入末端信号成为"0b0"。从闪存控制代码用 R0M13输出"0x01020"的地址的源代码即"R01020"。由于地址完全一致信号为"L"电平, 因此代码选择电路14将源代码"R01020"向命令执行部15的取得部35输出。命令执行部 15的执行部36执行在前一循环中被输出到取得部35的源代码"R01000"。
[0287] 在第1循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器65的选 择器68输出"0x20"。由此,程序计数器65的输出地址成为加上了 "0x20"的"0x01040"。 地址"0x01040"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x01061"的高位15位不同,且与在代码插入用寄存器组#1的地址寄存器31中保持的 地址"0x01062"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x0000",插入末端信号成为"0b0"。从闪存控制代码用 R0M13输出"0x01040"的地址的源代码即"R01040"。由于地址完全一致信号为"L"电平, 因此代码选择电路14将源代码"R01040"向命令执行部15的取得部35输出。命令执行部 15的执行部36执行在前一循环中被输出到取得部35的源代码"R01020"。
[0288] 在第2循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器65的选 择器68输出"0x20"。由此,程序计数器65的输出地址成为加上了 "0x20"的"0x01060"。 地址"0x01060"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x01060"的高位15位一致,且与在代码插入用寄存器组#1的地址寄存器31中保持的地 址"0x01061"的高位15位一致,因此地址一致信号成为"H"电平(这是因为地址一致信号 0及地址一致信号1成为"H"电平)。而且,地址"0x01060"的低位5位与在代码插入用寄 存器组#0的地址寄存器56中保持的地址"0x01060"的低位5位一致,因此地址完全一致信 号成为"H"电平(这是因为地址完全一致信号0成为"H"电平)。由于地址完全一致信号0 成为"H"电平,因此代码寄存器输出信号0成为在代码插入用寄存器组#0的代码寄存器32 中保持的插入代码"Code Reg. 0"。由此,代码寄存器输出信号成为插入代码"Code Reg. 0"。 由于地址完全一致信号0成为"Η"电平,因此插入末端信号0成为在代码插入用寄存器组 #〇的插入末端寄存器59中保持的插入末端"0b0"。由此,插入末端信号成为"0b0"。由于 地址完全一致信号为"H"电平,因此代码选择电路14将插入代码"Code Reg. 0"向命令执 行部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部 35的源代码"R01040"。
[0289] 在第3循环中,由于前一循环的地址一致信号为"H"电平,因此程序计数器65的选 择器68输出"0x01"。由此,程序计数器65的输出地址成为加上了 "0x01"的"0x01061"。 地址"0x01061"的高位15位(第6位?第20位)与在代码插入用寄存器组#0的地址寄 存器31中保持的地址"0x01060"的高位15位一致,且与在代码插入用寄存器组#1的地址 寄存器31中保持的地址"0x01061"的高位15位一致。其结果是,地址一致信号成为"H" 电平(这是因为地址一致信号〇及地址一致信号1成为"H"电平)。而且,地址"0x01061" 的低位5位与在代码插入用寄存器组#1的地址寄存器56中保持的地址"0x01061"的低位 5位一致。其结果是,地址完全一致信号成为"H"电平(这是因为地址完全一致信号1成 为"H"电平)。由于地址完全一致信号1成为"H"电平,因此代码寄存器输出信号1成为 在代码插入用寄存器组#1的代码寄存器32中保持的插入代码"Code Reg. 1"。由此,代码 寄存器输出信号成为插入代码"Code Reg. 1"。由于地址完全一致信号1成为"H"电平,因 此插入末端信号1成为在代码插入用寄存器组#1的插入末端寄存器59中保持的插入末端 "〇bl"。由此,插入末端信号成为"Obi"。由于地址完全一致信号为"H"电平,因此代码选择 电路14将插入代码"Code Reg. 1"向命令执行部15的取得部35输出。命令执行部15的 执行部36执行在前一循环中被输出到取得部35的插入代码"Code Reg. 0"。
[0290] 在第4循环中,由于前一循环的地址一致信号为"Η"电平,因此程序计数器65的 选择器68输出"0x01"。而且,由于插入末端信号"Obl",因此通过逻辑电路0R68使从加 法器25输出的20位的地址的低位5位成为" 1"。其结果是,程序计数器65的输出地址成 为"0x0107F"。地址"0x0107F"的高位15位(第6位?第20位)与在代码插入用寄存器 组#0的地址寄存器31中保持的地址"0x01060"的高位15位一致,且与在代码插入用寄 存器组#1的地址寄存器31中保持的地址"0x01061"的高位15位一致。其结果是,地址 一致信号成为"H"电平(这是因为地址一致信号0及地址一致信号1成为"H"电平)。而 且,地址"0x0107F"的低位5位与在代码插入用寄存器组#0的地址寄存器56中保持的地 址"0x01060"的低位5位不同,且与在代码插入用寄存器组#1的地址寄存器56中保持的 地址"0x01061"的低位5位不同。其结果是,地址完全一致信号成为"L"电平(这是因为 地址完全一致信号0及地址完全一致信号成为"L"电平)。由于地址完全一致信号成为 "L"电平,因此代码寄存器输出信号成为"0x0000",插入末端信号成为"0b0"。从闪存控制 代码用R0M13输出忽略"0x0107F"的地址的低位5位而相同的地址"0x01060"的源代码即 "R01060"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码"R01060" 向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出 到取得部35的插入代码"Code Reg. 1"。
[0291] 在第5循环中,由于前一循环的地址一致信号为"Η"电平,因此程序计数器65的选 择器68输出"0x01"。而且,由于插入末端信号为"0b0",因此通过逻辑电路0R68使从加法 器25输出的20位的地址的低位5位原封不动地输出。其结果是,程序计数器65的输出地 址成为"0x01080"。而且,地址"0x01080"的高位15位与在代码插入用寄存器组#0的地址 寄存器31中保持的地址"0x01060"的高位15位不同,且与在代码插入用寄存器组#1的地 址寄存器31中保持的地址"0x01061"的高位15位不同。其结果是,地址一致信号成为"L" 电平(这是因为地址一致信号〇及地址一致信号1成为"L"电平)。而且,地址"0x01080" 的低位5位与在代码插入用寄存器组#0的地址寄存器56中保持的地址"0x01060"的低位 5位不同,且与在代码插入用寄存器组#1的地址寄存器56中保持的地址"0x01061"的低位 5位不同。其结果是,地址完全一致信号成为"L"电平(这是因为地址完全一致信号0及地 址完全一致信号1成为"L"电平)。由于地址完全一致信号为"L"电平,因此代码寄存器输 出信号成为"0x0000",插入末端信号成为"ObO"。从闪存控制代码用R0M13输出"0x01080" 的地址的源代码即"R01080"。由于地址完全一致信号为"L"电平,因此代码选择电路14将 源代码"R01080"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在 前一循环中被输出到取得部35的源代码"R01060"。
[0292] 在第6循环中,由于前一循环的地址一致信号为"L"电平,因此程序计数器65的 选择器68输出"0x20",因此程序计数器65的输出地址成为加上了 "0x20"的"ΟχΟΙΟΑΟ"。 地址"ΟχΟΙΟΑΟ"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x01060"的高位15位不同,且与在代码插入用寄存器组#1的地址寄存器31中保持的地 址"0x01061"的高位15位不同。其结果是,地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x0000",插入末端信号成为"0b0"。从闪存控制代码用 R0M13输出"ΟχΟΙΟΑΟ"的地址的源代码即"R010A0"。由于地址完全一致信号为"L"电平, 因此代码选择电路14将源代码"R010A0"向命令执行部15的取得部35输出。命令执行部 15的执行部36执行在前一循环中被输出到取得部35的源代码"R01080"。
[0293] 在第7循环以后与第6循环同样地进行动作。
[0294] 如上所述,根据本实施方式,与第2实施方式同样地,通过程序计数器的地址的除 了从最低位起的预定个数的位以外的位来指定源代码的地址,使用从最低位起的预定个数 的位来控制代码的插入,因此能够在两个源代码之间插入1个以上的代码,且能够执行多 循环命令。而且,根据本实施方式,在来自程序计数器的地址与地址寄存器的值一致的情况 下,与在源代码之前执行插入代码的执行的第2实施方式相对,在源代码之后执行插入代 码的执行。
[0295] [第5实施方式]
[0296] (结构)
[0297] 图27是表示第5实施方式的闪存控制部395的结构的图。
[0298] 图27的闪存控制部395与图7的第1实施方式的闪存控制部2的区别点在于插 入代码寄存器组块396。
[0299] 图28是表示插入代码寄存器组块396所包含的代码插入用寄存器组40-0的结构 的图。代码插入用寄存器组40-1?40-n的结构也与图28的代码插入用寄存器组40-0的 结构同样。
[0300] 图28的代码插入用寄存器组40-0与图11的第1实施方式的代码插入用寄存器 组29-0的区别点在于逻辑电路AND6、状态寄存器34、逻辑电路AND5。
[0301] 逻辑电路AND6在时钟elk和状态寄存器选择信号0均为"H"电平时,将"H"电平 的信号向状态寄存器34的控制端子输出。
[0302] 状态寄存器34在向控制端子的输入为"H"电平时,锁存并保持通过数据总线传送 来的1位的状态值。
[0303] 逻辑电路AND5将状态寄存器34的输出与地址比较器30的输出的逻辑积作为地 址一致信号0而输出。因此,在状态值被设定为"0"时,地址一致信号0、地址完全一致信号 〇始终成为"L"电平。其结果是,代码选择电路12在状态值为"0"时,无论程序计数器12 的地址如何,都选择从闪存控制代码用R0M13输出的源代码。由此,本实施方式中说明的代 码的插入功能无效。
[0304] 如上所述,根据本实施方式,根据状态值能够切换代码的插入功能的有效/无效。
[0305][第6实施方式]
[0306] (结构)
[0307] 图29是表示第6实施方式的闪存控制部423的结构的图。
[0308] 图29的闪存控制部423与图7的第1实施方式的闪存控制部102的区别点在于 插入代码寄存器组块424和程序计数器72。
[0309] 插入代码寄存器组块424在所保持的插入代码的地址的除了最高位的位之外的 位与程序计数器72的地址的除了最高位的位之外的位一致时,输出第1信号(即,将地址 一致信号设定为"H"电平)。
[0310] 插入代码寄存器组块424在输出第1信号且程序计数器72的地址的最高位的位 为" 1"时,输出第2信号(即,将地址完全一致信号设定为"H"电平),并将所保持的插入代 码输出。
[0311] 程序计数器72在接收到第1信号时,对最高位的位加上" 1",在未接收到第1信号 时,对从最低位起的第2位加上" 1"。
[0312] 图30是表示程序计数器72的结构的图。
[0313] 如图30所示,程序计数器72具备选择器73、加法器25、逻辑电路AND72、选择器 26、选择器27及PC用寄存器28。
[0314] 选择器73从插入代码寄存器组块424接收地址一致信号和地址完全一致信号。在 地址一致信号为"H"电平且地址完全一致信号为"L"电平时,选择器73输出"0x10000"。 在地址一致信号为"L"电平且地址完全一致信号为"H"电平时、地址一致信号为"L"电平 且地址完全一致信号为"L"电平时、或者地址一致信号为"H"电平且地址完全一致信号为 "H"电平时,选择器73输出"0x02"。
[0315] 加法器25将从PC用寄存器28输出的17位的地址[16 :0]与从选择器73输出 的值相加。在本实施方式中,由于插入1个命令代码,因此假定程序计数器72的输出为17 位。
[0316] 逻辑电路AND72输出从加法器25输出的17位中的最高位1位与地址完全一致信 号的否定的逻辑积。即,逻辑电路AND72在地址完全一致信号为"L"电平时,输出从加法器 25输出的17位中的最高位1位。逻辑电路AND72在地址完全一致信号为"H"电平时,输出 1 位的 "ObO"。
[0317] 选择器26接收将从加法器25输出的17位中的低位16位设为低位16位并将从 逻辑电路AND72输出的1位的信号设为最高位1位而得的信号、及从命令执行部15输出的 运算结果PC。选择器26在从命令执行部15输出的运算结果PC选择信号为"H"电平时, 输出运算结果PC,在运算结果PC选择信号为"L"电平时,输出来自加法器25及逻辑电路 AND72的信号。
[0318] 选择器27接收选择器26的输出和从PC用寄存器28输出的地址。选择器27在 从命令执行部15输出的PC延迟信号为"H"电平时,输出从PC用寄存器28输出的地址,在 PC延迟信号为"L"电平时,输出选择器26的输出。
[0319] PC用寄存器28将选择器27的输出锁存,作为闪存控制用代码用ROM的地址向内 部地址总线23输出。
[0320] 图31是表示插入代码寄存器组块424所包含的代码插入用寄存器组71-0的结构 的图。代码插入用寄存器组71-1?71-n的结构也与图31的代码插入用寄存器组71-0的 结构同样。
[0321] 如图31所示,代码插入用寄存器组71-0具备逻辑电路AND1、地址寄存器31、地址 比较器30、逻辑电路AND4、代码寄存器32及逻辑电路AND71。
[0322] 逻辑电路AND1在时钟elk和地址寄存器选择信号0均为"H"电平时,将"H"电平 的信号向地址寄存器31的控制端子输出。
[0323] 地址寄存器31在向控制端子的输入为"H"电平时,锁存并保持通过数据总线传送 来的16位的地址。
[0324] 地址比较器30在从程序计数器72输出的17位的地址中的低位16位(地址[15 : 0])与在地址寄存器31中保持的16位的地址一致时,将地址一致信号0设定为"H"电平。
[0325] 逻辑电路AND71在地址一致信号0为"H"电平且从程序计数器72输出的17位的 地址中的最高位1位(地址[16])为"1"时,将地址完全一致信号0设定为"H"电平。
[0326] 逻辑电路AND4在时钟elk和代码寄存器选择信号0均为"H"电平时,将"H"电平 的信号向代码寄存器32的控制端子输出。
[0327] 代码寄存器32在向控制端子的输入为"H"电平时,锁存并保持通过数据总线传送 来的16位的数据(即插入代码)。
[0328] (第6实施方式的动作例)
[0329] 图32 (a)是表示在代码插入用寄存器组71-i (以下,称为代码插入用寄存器组#i) 的地址寄存器31中保持的值的例子的图。在该例子中,在代码插入用寄存器组#0的地址寄 存器31中保持有"0x00106"的低位16位。而且,在代码插入用寄存器组#0的代码寄存器 32中保持有插入代码"Code Reg. 0"。而且,在闪存控制代码用R0M13的地址"Ox · · · · " 中保持有源代码"R· · · · "。
[0330] 图32(b)是图32(a)的条件下的时序图。
[0331] 在第0循环中,从程序计数器72输出的17位的地址(PC值[16 :0])为"0x00102"。 而且,地址"0x00102"的低位16位与在代码插入用寄存器组#0的地址寄存器31中保持的 地址"0x00106"的低位16位不同。其结果是,地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x00000"。从闪存控制代码用R0M13输出"0x00102"的地 址的源代码即"R00102"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代 码"R00102"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一 循环中被输出到取得部35的源代码"R00100"。
[0332] 在第1循环中,由于前一循环的地址一致信号为"L"电平且地址完全一致信号为 "L"电平,因此程序计数器72的选择器73输出"0x02"。由此,程序计数器72的输出地址 成为加上了 "0x02"的"0x00104"。地址"0x00104"的低位16位与在代码插入用寄存器组 #0的地址寄存器31中保持的地址"0x00106"的低位16位不同。其结果是,地址一致信号、 地址完全一致信号成为"L"电平,代码寄存器输出信号成为"0x00000"。从闪存控制代码用 R0M13输出"0x00104"的地址的源代码即"R00104"。由于地址完全一致信号为"L"电平, 因此代码选择电路14将源代码"R00104"向命令执行部15的取得部35输出。命令执行部 15的执行部36执行在前一循环中被输出到取得部35的源代码"R00102"。
[0333] 在第2循环中,由于前一循环的地址一致信号为"L"电平且地址完全一致信号为 "L"电平,因此程序计数器72的选择器24输出"0x02"。由此,程序计数器72的输出地址 成为加上了 "0x02"的"0x00106"。地址"0x00106"的低位16位与在代码插入用寄存器组 #0的地址寄存器31中保持的地址"0x00106"的低位16位一致。其结果是,地址一致信号 成为"H"电平(这是因为地址一致信号0成为"H"电平)。另一方面,由于程序计数器72 的输出地址的最高位的位为"0",因此地址完全一致信号仍为"L"电平,代码寄存器输出信 号仍为"0x00000"。从闪存控制代码用R0M13输出"0x00106"的地址的源代码即"R00106"。 由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码"R00106"向命令执行 部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35 的源代码"R00104"。
[0334] 在第3循环中,由于前一循环的地址一致信号为"H"电平且地址完全一致信号为 "L"电平,因此程序计数器72的选择器73输出"0x10000"。由此,程序计数器72的输出地 址成为加上了"0x10000"的"0x10106"。地址"0x10106"的低位16位与在代码插入用寄存 器组#0的地址寄存器31中保持的地址"0x00106"的低位16位一致,因此地址一致信号成 为"H"电平(这是因为地址一致信号0成为"H"电平)。由于程序计数器72的输出地址 的最高位的位为" 1",因此地址完全一致信号成为"H"电平(这是因为地址一致信号0成 为"H"电平)。而且,代码寄存器输出信号成为在代码寄存器32中保持的插入代码"Code Reg. 0"(这是因为代码寄存器输出信号0成为"Code Reg. 0")。由于地址完全一致信号为 "H"电平,因此代码选择电路14将插入代码"Code Reg. 0"向命令执行部15的取得部35输 出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代码"R00106"。
[0335] 在第4循环中,由于前一循环的地址一致信号为"H"电平且地址完全一致信号为 "H"电平,因此程序计数器72的选择器73输出"0x02"。由于地址完全一致信号为"H"电 平,因此通过逻辑电路AND72使加法器25的输出的最高位的位(第17位)成为"0"。其 结果是,程序计数器72的输出地址成为"0x00108"。地址"0x00108"的低位16位与在地 址寄存器31中保持的地址"0x00106"的低位16位不同。其结果是,地址一致信号、地址完 全一致信号成为"L"电平,代码寄存器输出信号成为"0x00000"。从闪存控制代码用R0M13 输出"0x00108"的地址的源代码即"R00108"。由于地址完全一致信号为"L"电平,因此代 码选择电路14将源代码"R00108"向命令执行部15的取得部35输出。命令执行部15的 执行部36执行在前一循环中被输出到取得部35的插入代码"Code Reg. 0"。
[0336] 在第5循环以后与第4循环同样地进行动作。
[0337] 如上所述,根据本实施方式,通过程序计数器的地址的除了最高位的位以外的位 来指定源代码的地址,使用最高位的位来控制代码的插入,因此能够在两个源代码之间插 入1个代码,且能够执行多循环命令。
[0338] 此外,在本实施方式中,多个源代码的地址的从最低位起的第2位以上的位有效, 但并不限定于此,也可以是多个源代码的地址的从最低位起的第η位以上的位有效。其中, η为1以上的自然数。这种情况下,程序计数器72在未接收到第1信号时(地址一致信号 为"L"电平时),只要对从最低位起的第η位加上" 1"即可。此外,在本实施方式以后,是不 使用最低位的位的结构,因此向各程序计数器及插入代码寄存器组的地址输入即使为[15 : 1]也不要紧,但记为[15 :0]。
[0339] [第7实施方式]
[0340] 在本实施方式中,多个源代码的地址的从最低位起的第m位以上的位有效。
[0341] 图33是表示第7实施方式的闪存控制部623的结构的图。
[0342] 图33的闪存控制部623与图16的第2实施方式的闪存控制部102的区别点在于 插入代码寄存器组块624和程序计数器74。
[0343] 插入代码寄存器组块624最多保持2k_l个插入代码和插入代码的地址。插入代 码寄存器组块624在所保持的插入代码的地址的除了从最高位起的k位之外的位与程序计 数器74的地址的除了从最高位起的k位之外的位一致时,输出第1信号(即,将地址一致 信号设定为"H"电平)。
[0344] 插入代码寄存器组块624在输出第1信号且所保持的插入代码的地址的从最高位 起的k位与程序计数器74的地址的从最高位起的k位一致时,输出第2信号(将地址完全 一致信号设定为"H"电平),并输出与程序计数器74的地址对应的保持的插入代码。
[0345] 当连续地插入多个插入代码时,在插入代码寄存器组块624输出最后的插入代码 的情况下,插入代码寄存器组块624输出第2信号,并同时输出表不插入末端的插入末端信 号。
[0346] 程序计数器74在接收到第1信号时,对从最高位起的第k位加上" 1",在未接收到 第1信号时,对从最低位起的第m位加上"1"。
[0347] 程序计数器74在接收到插入末端信号时,即使在接收到第1信号时,也对从最低 位起的第m位加上" 1",并将从最高位起的k位设为"0"。
[0348] 在本实施方式中,设为m = 2、k = 4进行说明。
[0349] 图34是表示程序计数器74的结构的图。
[0350] 如图34所示,程序计数器74具备选择器77、加法器25、逻辑电路AND74、选择器 26、选择器27及PC用寄存器28。
[0351] 选择器77从插入代码寄存器组块624接收地址一致信号和插入末端信号。在地 址一致信号为"H"电平且插入末端信号为"L"电平时,选择器77输出"0x10000"。在地址 一致信号为"L"电平且插入末端信号为"H"电平时、地址一致信号为"L"电平且插入末端 信号为"L"电平时、或者地址一致信号为"H"电平且插入末端信号为"H"电平时,选择器73 输出 "0x02"。
[0352] 加法器25将从PC用寄存器28输出的20位的地址与从选择器73输出的值相加。
[0353] 逻辑电路AND74输出从加法器25输出的20位中的高位4位与插入末端信号的否 定的逻辑积。即,逻辑电路AND74在插入末端信号为"L"电平时,输出从加法器25输出的 20位中的高位4位。逻辑电路AND74在插入末端信号为"H"电平时,输出4位的"ObOOOO"。
[0354] 选择器26接收将从加法器25输出的20位中的低位16位作为低位16位并将从 逻辑电路AND74输出的4位的信号作为高位4位而得的信号、及从命令执行部15输出的运 算结果PC。选择器26在从命令执行部15输出的运算结果PC选择信号为"H"电平时,输出 运算结果PC,在运算结果PC选择信号为"L"电平时,输出来自加法器25及逻辑电路AND74 的信号。
[0355] 选择器27接收选择器26的输出和从PC用寄存器28输出的地址。选择器27在 从命令执行部15输出的PC延迟信号为"Η"电平时,输出从PC用寄存器28输出的地址,在 PC延迟信号为"L"电平时,输出选择器26的输出。
[0356] PC用寄存器28将选择器27的输出锁存,作为闪存控制用代码用ROM的地址向内 部地址总线23输出。
[0357] 图35是表示插入代码寄存器组块624所包含的代码插入用寄存器组78-0的结构 的图。代码插入用寄存器组78-1?78-n的结构也与图35的代码插入用寄存器组78-0的 结构同样。
[0358] 如图35所示,代码插入用寄存器组78-0具备逻辑电路AND 1、地址寄存器31、地址 比较器30、逻辑电路AND4、代码寄存器32、逻辑电路54、地址寄存器156、地址比较器157、 逻辑电路56、插入末端寄存器59、逻辑电路AND2、逻辑电路55及逻辑电路AND3。
[0359] 逻辑电路AND1在时钟elk和地址寄存器选择信号0均为"H"电平时,将"H"电平 的信号向地址寄存器31的控制端子输出。
[0360] 地址寄存器31在向控制端子的输入为"H"电平时,锁存并保持通过数据总线传送 来的16位的地址。
[0361] 地址比较器30在从程序计数器74输出的20位的地址中的低位16位(地址[15 : 0])与在地址寄存器31中保持的16位的地址一致时,将地址一致信号0设定为"H"电平。
[0362] 逻辑电路AND54在时钟elk和地址寄存器2选择信号0均为"H"电平时,将"H" 电平的信号向代码寄存器32的控制端子输出。
[0363] 地址寄存器156在向控制端子的输入为"H"电平时,锁存并保持通过数据总线传 送来的4位的地址。
[0364] 地址比较器57在从程序计数器74输出的20位的地址中的高位4位(地址[19 : 16])与在地址寄存器156中保持的4位的地址一致时,输出"H"电平的一致信号。
[0365] 逻辑电路AND2在地址一致信号0为"H"电平且从地址比较器157输出的一致信 号为"H"电平时,将地址完全一致信号0设定为"H"电平。
[0366] 逻辑电路AND56在时钟elk和插入末端寄存器选择信号0均为"H"电平时,将"H" 电平的信号向插入末端寄存器59的控制端子输出。
[0367] 插入末端寄存器59在向控制端子的输入为"H"电平时,锁存并保持通过数据总线 传送来的1位的数据(插入末端)。
[0368] 逻辑电路AND55接收地址完全一致信号0和插入末端寄存器59的输出。逻辑电 路AND55在地址完全一致信号0为"H"电平时,将在插入末端寄存器59中保持的1位的数 据(插入末端)作为插入末端信号〇而输出。
[0369] 逻辑电路AND4在时钟elk和代码寄存器选择信号0均为"H"电平时,将"H"电平 的信号向代码寄存器32的控制端子输出。
[0370] 代码寄存器32在向控制端子的输入为"H"电平时,锁存并保持通过数据总线传送 来的16位的数据(即插入代码)。
[0371] 逻辑电路AND3接收地址完全一致信号0和代码寄存器32的输出。逻辑电路AND3 在地址完全一致信号0为"H"电平时,将在代码寄存器32中保持的16位的数据(即插入 代码)作为代码寄存器输出信号〇而输出。逻辑电路AND3在地址完全一致信号0为"L" 电平时,将16位的"0x0000"作为代码寄存器输出信号0而输出。
[0372] (第7实施方式的动作例)
[0373] 图36 (a)是表示在代码插入用寄存器组78-i (以下,称为代码插入用寄存器组#i) 的地址寄存器31中保持的值的例子的图。在该例子中,在代码插入用寄存器组#0的地址寄 存器31中保持有"0x10106"的低位16位,在地址寄存器156中保持有"0x10106"的高位 4位。而且,在代码插入用寄存器组#0的代码寄存器32中保持有插入代码"Code Reg. 0"。 而且,在代码插入用寄存器组#0的插入末端寄存器59中保持有插入末端"ObO"。在代码插 入用寄存器组#1的地址寄存器31中保持有"0x20106"的低位16位,在地址寄存器156中 保持有"0x20106"的高位4位。而且,在代码插入用寄存器组#01的代码寄存器32中保持 有插入代码"Code Reg. 1"。而且,在代码插入用寄存器组#1的插入末端寄存器59中保持 有插入末端"〇bl"。而且,在闪存控制代码用R0M13的地址"0χ· · · ·"中保持有源代码 "R · · · ·,,。
[0374] 图36(b)是图36(a)的条件下的时序图。
[0375] 在第0循环中,从程序计数器74输出的20位的地址(PC值[19 :0])为"0x00102"。 地址"0x00102"的高位15位与在代码插入用寄存器组#0的地址寄存器31中保持的地址 "0x10106"的低位16位不同,且与在代码插入用寄存器组#1的地址寄存器31中保持的地 址"0x20106"的低位16位不同。其结果是,地址一致信号及地址完全一致信号成为"L" 电平,代码寄存器输出信号成为"0x0000",插入末端信号成为"0b0"。从闪存控制代码用 R0M13输出"0x00102"的地址的源代码即"R00102"。由于地址完全一致信号为"L"电平, 因此代码选择电路14将源代码"R00102"向命令执行部15的取得部35输出。命令执行部 15的执行部36执行在前一循环中被输出到取得部35的源代码"R00100"。
[0376] 在第1循环中,由于前一循环的地址一致信号为"L"电平且插入末端信号为 "0b0",因此程序计数器74的选择器77输出"0x02"。程序计数器74的输出地址成为加上 了"0x02"的"0x00104"。地址"0x00104"的低位16位与在代码插入用寄存器组#0的地址 寄存器31中保持的地址"0x10106"的低位16位不同,且与在代码插入用寄存器组#1的地 址寄存器31中保持的地址"0x20106"的低位16位不同。其结果是,地址一致信号及地址完 全一致信号成为"L"电平,代码寄存器输出信号成为"0x0000",插入末端信号成为"0b0"。 从闪存控制代码用R0M13输出"0x00104"的地址的源代码即"R00104"。由于地址完全一致 信号为"L"电平,因此代码选择电路14将源代码"R00104"向命令执行部15的取得部35输 出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代码"R00102"。
[0377] 在第2循环中,由于前一循环的地址一致信号为"L"电平且插入末端信号为 "0b0",因此程序计数器74的选择器77输出"0x02"。其结果是,程序计数器74的输出地 址成为加上了 "0x02"的"0x00106"。地址"0x00106"的低位16位与在代码插入用寄存器 组#0的地址寄存器31中保持的地址"0x10106"的低位16位一致,且与在代码插入用寄存 器组#1的地址寄存器31中保持的地址"0x20106"的低位16位一致。其结果是,地址一致 信号成为"H"电平(这是因为地址一致信号0及地址一致信号1成为"H"电平)。而且, 地址"0x00106"的高位4位与在代码插入用寄存器组#0的地址寄存器156中保持的地址 "0x10106"的高位4位不同,且与在代码插入用寄存器组#1的地址寄存器156中保持的地 址"0x20106"的高位4位不同。其结果是,地址完全一致信号仍为"L"电平(这是因为地 址完全一致信号0及地址完全一致信号1仍为"L"电平)。由于地址完全一致信号为"L" 电平,因此代码寄存器输出信号成为"0x0000",插入末端信号成为"ObO"。从闪存控制代码 用R0M13输出"0x00106"的地址的源代码即"R00106"。由于地址完全一致信号为"L"电 平,因此代码选择电路14将源代码"R00106"向命令执行部15的取得部35输出。命令执 行部15的执行部36执行在前一循环中被输出到取得部35的源代码"R00104"。
[0378] 在第3循环中,由于前一循环的地址一致信号为"H"电平且插入末端信号为 "ObO",因此程序计数器74的选择器24输出"0x10000"。因此,程序计数器74的输出地址 成为加上了 "0x10000"的"0x10106"。而且,地址"0x10106"的低位16位与在代码插入用 寄存器组#0的地址寄存器31中保持的地址"0x10106"的低位16位一致,且与在代码插 入用寄存器组#1的地址寄存器31中保持的地址"0x20106"的低位16位一致,因此地址 一致信号成为"H"电平(这是因为地址一致信号0及地址一致信号1成为"H"电平)。而 且,地址"0x10106"的高位4位与在代码插入用寄存器组#0的地址寄存器156中保持的地 址"0x10106"的高位4位一致。其结果是,地址完全一致信号成为"H"电平(这是因为地 址完全一致信号0成为"H"电平)。由于地址完全一致信号0成为"H"电平,因此代码寄 存器输出信号〇成为在代码插入用寄存器组#〇的代码寄存器32中保持的插入代码"Code Reg. 0"。由此,代码寄存器输出信号成为插入代码"Code Reg. 0"。由于地址完全一致信号 〇成为"H"电平,因此插入末端信号0成为在代码插入用寄存器组#0的插入末端寄存器59 中保持的插入末端"0b0"。由此,插入末端信号成为"0b0"。由于地址完全一致信号为"H" 电平,因此代码选择电路14将插入代码"Code Reg. 0"向命令执行部15的取得部35输出。 命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代码"R00106"。
[0379] 在第4循环中,由于前一循环的地址一致信号为"H"电平且插入末端信号为 "0b0",因此程序计数器74的选择器77输出"0x10000"。因此,程序计数器74的输出地址 成为加上了 "0x10000"的"0x20106"。地址"0x20106"的低位16位与在代码插入用寄存 器组#0的地址寄存器31中保持的地址"0x10106"的低位16位一致,且与在代码插入用寄 存器组#1的地址寄存器31中保持的地址"0x20106"的低位16位一致。其结果是,地址 一致信号成为"H"电平(这是因为地址一致信号0及地址一致信号1成为"H"电平)。而 且,地址"0x20106"的高位4位与在代码插入用寄存器组#1的地址寄存器156中保持的地 址"0x20106"的高位4位一致。其结果是,地址完全一致信号成为"H"电平(这是因为地 址完全一致信号1成为"H"电平)。由于地址完全一致信号1成为"H"电平,因此代码寄 存器输出信号1成为在代码插入用寄存器组#1的代码寄存器32中保持的插入代码"Code Reg. 1"。由此,代码寄存器输出信号成为插入代码"Code Reg. 1"。由于地址完全一致信号1 成为"H"电平,因此插入末端信号1成为在代码插入用寄存器组#1的插入末端寄存器59中 保持的插入末端"〇bl"。由此,插入末端信号成为"Obi"。由于地址完全一致信号为"H"电 平,因此代码选择电路14将插入代码"Code Reg. 1"向命令执行部15的取得部35输出。命 令执行部15的执行部36执行在前一循环中被输出到取得部35的插入代码"Code Reg. 0"。
[0380] 在第5循环中,由于前一循环的地址一致信号为"Η"电平且插入末端信号为 "Obl",因此程序计数器74的选择器24输出"0x02"。而且,由于插入末端信号为"Obl",因 此通过逻辑电路AND74使加法器25的输出的高位4位(第17位?第20位)成为"0"。其 结果是,程序计数器74的输出地址成为"0x00108"。地址"0x00108"的低位16位与在代码 插入用寄存器组#〇的地址寄存器31中保持的地址"0x10106"的低位16位不同,且与在代 码插入用寄存器组#1的地址寄存器31中保持的地址"0x20106"的低位16位不同。其结果 是,地址一致信号成为"L"电平(这是因为地址一致信号0及地址一致信号1成为"L"电 平)。而且,地址"0x00108"的高位4位与在代码插入用寄存器组#0的地址寄存器156中 保持的地址"0x10106"的高位4位不同,且与在代码插入用寄存器组#1的地址寄存器156 中保持的地址"0x20106"的高位4位不同。其结果是,地址完全一致信号成为"L"电平(这 是因为地址完全一致信号0及地址完全一致信号1成为"L"电平)。由于地址完全一致信 号为"L"电平,因此代码寄存器输出信号成为"0x0000",插入末端信号成为"ObO"。从闪存 控制代码用R0M13输出"0x00108"的地址的源代码即"R00108"。由于地址完全一致信号为 "L"电平,因此代码选择电路14将源代码"R00108"向命令执行部15的取得部35输出。命 令执行部15的执行部36执行在前一循环中被输出到取得部35的插入代码"Code Reg. 1"。
[0381] 在第6循环中,由于前一循环的地址一致信号为"L"电平且插入末端信号为 "ObO",因此程序计数器74的选择器77输出"0x02"。由此,程序计数器74的输出地址成 为加上了"0x02"的"ΟχΟΟΙΟΑ"。地址"ΟχΟΟΙΟΑ"的低位16位与在代码插入用寄存器组#0 的地址寄存器31中保持的地址"0x10106"的低位16位不同,且与在代码插入用寄存器组 #1的地址寄存器31中保持的地址"0x20106"的低位16位不同。其结果是,m地址一致信 号及地址完全一致信号成为"L"电平,代码寄存器输出信号成为"0x0000",插入末端信号 成为"0b0"。从闪存控制代码用R0M13输出"ΟχΟΟΙΟΑ"的地址的源代码即"R0010A"。由于 地址完全一致信号为"L"电平,因此代码选择电路14将源代码"R0010A"向命令执行部15 的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源 代码 "R00108"。
[0382] 在第7循环以后与第6循环同样地进行动作。
[0383] 如上所述,根据本实施方式,通过程序计数器的地址的除了从最高位起的预定个 数的位以外的位来指定源代码的地址,使用从最高位起的预定个数的位来控制代码的插 入,因此能够在两个源代码之间插入1个以上的代码,且能够执行多循环命令。
[0384] [第8实施方式]
[0385] 在本实施方式中,多个源代码的地址的从最低位起的第2位以上且除了最高位的 位之外的位有效。
[0386] 图37是表示第8实施方式的闪存控制部742的结构的图。
[0387] 图37的闪存控制部742与图7的第1实施方式的闪存控制部2的区别点在于插 入代码寄存器组块743和程序计数器91。
[0388] 在保持的插入代码的地址的除了最高位的位之外的位与程序计数器91的地址的 除了最高位的位之外的位一致、且程序计数器91的地址的最高位的位为"1"时,插入代码 寄存器组块743输出第1信号(将地址完全一致信号设定为"H"电平),并输出保持的插入 代码。
[0389] 程序计数器91在接收到第1信号时,对最高位的位加上"1",在未接收到第1信号 时,对从最低位起的第2位加上" 1",且将最高位的位设为"0"。
[0390] 图38是表示程序计数器91的结构的图。
[0391] 图38的程序计数器91与图30的第6实施方式的程序计数器72的区别点在于选 择器92和逻辑电路AND92。
[0392] 选择器92从插入代码寄存器组块743接收地址完全一致信号。选择器92在地址 完全一致信号为"H"电平时,输出"0x10000"。选择器92在地址完全一致信号为"L"时,输 出 "0x02"。
[0393] 逻辑电路AND92输出从加法器25输出的17位中的最高位的位与地址完全一致信 号的逻辑积。即,逻辑电路AND92在地址完全一致信号为"H"电平时,输出从加法器25输 出的17位中的最高位的位。逻辑电路AND92在地址完全一致信号为"L"电平时,输出1位 的 "ObO"。
[0394] 图39是表示插入代码寄存器组块743的结构的图。
[0395] 如图39所示,插入代码寄存器组块743具备保持插入的代码及插入的地址的代码 插入用寄存器组88-i (i = 0?η)及逻辑电路0R88、0R89。
[0396] 代码插入用寄存器组88-i接收从程序计数器91输出的地址和在数据总线内传送 的数据,还从代码选择电路14接收代码寄存器选择信号i及地址寄存器选择信号i,并输出 地址完全一致信号i及代码寄存器输出信号i。
[0397] 逻辑电路0R88将(n+1)个代码寄存器输出信号0?η的逻辑和作为代码寄存器 输出信号而输出。即,在(η+1)个代码寄存器输出信号0?η的至少1个具有"Η"电平的 位时(即,输出了插入代码时),代码寄存器输出信号成为插入代码。即,在(n+1)个代码寄 存器输出信号〇?η的所有位均为"L"电平时(即,未输出插入代码时),代码寄存器输出 信号的所有位成为"L"。
[0398] 逻辑电路0R89将(n+1)个地址完全一致信号0?η的逻辑和作为地址完全一致 信号而输出。即,在(n+1)个地址完全一致信号0?η的至少1个为"Η"电平时,地址完全 一致信号成为"Η"电平。
[0399] 图40是表示插入代码寄存器组块743所包含的代码插入用寄存器组88-0的结构 的图。代码插入用寄存器组88-1?88-η的结构也与图35的代码插入用寄存器组88-0的 结构同样。
[0400] 图40的代码插入用寄存器组88-0与图31的第6实施方式的代码插入用寄存器 组71-0的区别点在于未从地址比较器30向外部输出地址一致信号这一点以及逻辑电路 MD88。
[0401] 在从地址比较器30输出的信号为"Η"电平且从程序计数器91输出的17位的地 址中的最高位的位(地址[16])为"0"时,逻辑电路AND88将地址完全一致信号0设定为 "Η"电平。
[0402] (第8实施方式的动作例)
[0403] 图41 (a)是表示在代码插入用寄存器组88-i (以下,称为代码插入用寄存器组#i) 的地址寄存器31中保持有的值的例子的图。在该例子中,在代码插入用寄存器组#0的地址 寄存器31中保持有"0x00106"的低位16位。而且,在代码插入用寄存器组#0的代码寄存器 32中保持有插入代码"Code Reg. 0"。而且,在闪存控制代码用R0M13的地址"Ox · · · · " 中保持有源代码"R· · · · "。
[0404] 图41 (b)是图41 (a)的条件下的时序图。
[0405] 在第0循环中,从程序计数器91输出的17位的地址(PC值[16 :0]为"0x00102"。 而且,地址"0x00102"的低位16位与在代码插入用寄存器组#0的地址寄存器31中保持的 地址"0x00106"的低位16位不同。其结果是,地址完全一致信号成为"L"电平,代码寄存 器输出信号成为"0x00000"。从闪存控制代码用ROM13输出"0x00102"的地址的源代码即 "R00102"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码"R00102" 向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出 到取得部35的源代码"R00100"。
[0406] 在第1循环中,由于前一循环的地址完全一致信号为"L"电平,因此程序计数器 91的选择器92输出"0x02"。其结果是,程序计数器91的输出地址成为加上了 "0x02"的 "0x00104"。地址"0x00104"的低位16位与在代码插入用寄存器组#0的地址寄存器31 中保持的地址"0x00106"的低位16位不同。其结果是,地址完全一致信号成为"L"电平, 代码寄存器输出信号成为"0x00000"。从闪存控制代码用R0M13输出"0x00104"的地址的 源代码即"R00104"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码 "R00104"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环 中被输出到取得部35的源代码"R00102"。
[0407] 在第2循环中,由于前一循环的地址完全一致信号为"L"电平,因此程序计数 器91的选择器92输出"0x02"。由此,程序计数器91的输出地址成为加上了 "0x02"的 "0x00106"。地址"0x00106"的低位16位与在代码插入用寄存器组#0的地址寄存器31中 保持的地址"0x0106"的低位16位一致。而且,地址"0x00106"的最高位的位(第17位: 地址[16])为"0"。其结果是,地址完全一致信号成为"H"电平(这是因为地址完全一致 信号〇成为"H"电平)。而且,代码寄存器输出信号成为在代码寄存器32中保持的插入代 码"Code Reg. 0"(这是因为代码寄存器输出信号0成为"Code Reg. 0")。由于地址完全一 致信号为"H"电平,因此代码选择电路14将插入代码"Code Reg. 0"向命令执行部15的取 得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的源代码 "R00106"。
[0408] 在第3循环中,由于前一循环的地址完全一致信号为"H"电平,因此程序计数器91 的选择器92输出"0x10000"。由此,程序计数器91的输出地址成为加上了 "0x10000"的 "0x10106"。地址"0x10106"的低位16位与在代码插入用寄存器组#0的地址寄存器31中 保持的地址"0x00106"的低位16位一致,但地址"0x10106"的最高位的位(第17位:地 址[16])为"1"。其结果是,地址完全一致信号成为"L"电平(这是因为地址完全一致信号 〇成为"L"电平)。而且,代码寄存器输出信号成为"0x00000"。从闪存控制代码用R0M13 输出将程序计数器91的输出地址"0x10106"的最高位的位(第17位)设为"0"而得的 "0x00106"的地址的源代码即"R00106"。由于地址完全一致信号为"L"电平,因此代码选 择电路14将源代码"R00106"向命令执行部15的取得部35输出。命令执行部15的执行 部36执行在前一循环中被输出到取得部35的插入代码"Code Reg. 0"。
[0409] 在第4循环中,由于前一循环的地址完全一致信号为"L"电平,因此程序计数器 91的选择器92输出"0x00002"。而且,由于地址完全一致信号为"L"电平,因此加法器25 的输出地址的最高位的位(第17位)成为"0"。其结果是,程序计数器91的输出地址成 为"0x00108"。地址"0x00108"的低位16位与在代码插入用寄存器组#0的地址寄存器31 中保持的地址"0x00106"的低位16位不同。其结果是,地址完全一致信号成为"L"电平, 代码寄存器输出信号成为"0x00000"。从闪存控制代码用R0M13输出"0x00108"的地址的 源代码即"R00108"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码 "R00108"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环 中被输出到取得部35的源代码"R00106"。
[0410] 在第5循环以后与第4循环同样地进行动作。
[0411] 如上所述,根据本实施方式,与第6实施方式同样,通过程序计数器的地址的除了 最高位的位以外的位来指定源代码的地址,使用最高位的位来控制代码的插入,因此能够 在两个源代码之间插入1个以上的代码,且能够执行多循环命令。而且,根据本实施方式, 在来自程序计数器的地址与地址寄存器的值一致时,与在源代码之后执行插入代码的执行 的第6实施方式相对,在源代码之前执行插入代码的执行。
[0412] 此外,在本实施方式中,多个源代码的地址的从最低位起的第2位以上且除了最 高位的位之外的位有效,但并不限定于此,也可以是多个源代码的地址的从最低位起的第η 位以上且除了最高位的位之外的位有效。其中,η为1以上的自然数。在该情况下,程序计 数器91在未接收到第1信号时(地址完全一致信号为"L"电平时),能够对从最低位起的 第η位加上" 1",且将最高位的位设为"0"。
[0413] [第9实施方式]
[0414] 在本实施方式中,多个源代码的地址的从最低位起的第m位以上的位有效。
[0415] 图42是表示第9实施方式的闪存控制部388的结构的图。
[0416] 图42的闪存控制部388与图16的第2实施方式的闪存控制部102的区别点在于 插入代码寄存器组块389和程序计数器94。
[0417] 插入代码寄存器组块389最多保持2k_l个插入代码和插入代码的地址。插入代 码寄存器组块389在保持的插入代码的地址的除了从最高位起的k位之外的位与程序计数 器94的地址的除了从最高位起的k位之外的位一致、且保持的插入代码的地址的从最高位 起的k位与程序计数器94的地址的从最高位起的k位一致时,输出第1信号(将地址完全 一致信号设定为"H"电平),并输出与程序计数器94的地址对应的保持的插入代码。
[0418] 程序计数器94在接收到第1信号时,对从最高位起的第k位加上" 1",在未接收到 第1信号时,对从最低位起的第m位加上" 1",并将从最高位起的k位设为"0"。
[0419] 以下,在本实施方式中,设为m = 2, k = 4进行说明。
[0420] 图43是表示程序计数器94的结构的图。
[0421] 图43的程序计数器94与图34的第7实施方式的程序计数器74的区别点在于选 择器92和逻辑电路AND94。
[0422] 选择器92从插入代码寄存器组块389接收地址完全一致信号。选择器92在地址 完全一致信号为"H"电平时,输出"0x10000"。选择器92在地址完全一致信号为"L"时,输 出 "0x02"。
[0423] 逻辑电路AND94输出从加法器25输出的20位中的高位4位(第17位?第19位) 与地址完全一致信号的逻辑积。即,逻辑电路AND94在地址完全一致信号为"H"电平时,输 出从加法器25输出的20位中的高位4位。逻辑电路AND94在地址完全一致信号为"L"电 平时,输出4位的"ObO"。
[0424] 图44是表示插入代码寄存器组块389的结构的图。
[0425] 如图44所示,插入代码寄存器组块389具备对插入的代码及插入的地址进行保持 的代码插入用寄存器组86-i (i = 0?η)及逻辑电路0R88、0R89。
[0426] 代码插入用寄存器组86-i接收从程序计数器94输出的地址和在数据总线内传送 的数据,而且从代码选择电路14接收代码寄存器选择信号i、地址寄存器选择信号i及地址 寄存器2选择信号i,输出地址完全一致信号i及代码寄存器输出信号i。
[0427] 逻辑电路0R88将(n+1)个代码寄存器输出信号0?η的逻辑和作为代码寄存器 输出信号而输出。即,在(η+1)个代码寄存器输出信号0?η的至少1个具有"Η"电平的 位时(即,输出了插入代码时),代码寄存器输出信号成为插入代码。即,在(n+1)个代码寄 存器输出信号〇?η的所有位都为"L"电平时(即,未输出插入代码时),代码寄存器输出 信号的所有位成为"L"。
[0428] 逻辑电路0R89将(n+1)个地址完全一致信号0?η的逻辑和作为地址完全一致 信号而输出。即,在(n+1)个地址完全一致信号0?η的至少1个为"Η"电平时,地址完全 一致信号成为"Η"电平。
[0429] 图45是表示插入代码寄存器组块389所包含的代码插入用寄存器组86-0的结构 的图。代码插入用寄存器组86-1?86-η的结构也与图45的代码插入用寄存器组86-0的 结构同样。
[0430] 图45的代码插入用寄存器组64-0与图35的第7实施方式的代码插入用寄存器 组78-0的区别点在于未将从地址比较器30输出的地址一致信号向外部输出这一点以及不 包含逻辑电路AND56及插入末端寄存器59这一点。
[0431] (第9实施方式的动作例)
[0432] 图46 (a)是表示在代码插入用寄存器组86-i (以下,称为代码插入用寄存器组#i) 的地址寄存器31中保持的值的例子的图。在该例子中,在代码插入用寄存器组#0的地址 寄存器31中保持有"0x00106"的低位16位,在地址寄存器156中保持有"0x00106"的高 位4位(第17位?第20位)。而且,在代码插入用寄存器组#0的代码寄存器32中保持有 插入代码"Code Reg. 0"。在代码插入用寄存器组#1的地址寄存器31中保持有"0x10106" 的低位16位,在地址寄存器156中保持有"0x10106"的高位4位(第17位?第20位)。 而且,在代码插入用寄存器组#1的代码寄存器32中保持有插入代码"Code Reg. 1"。而且, 在闪存控制代码用R0M13的地址"0χ· · · ·"中保持有源代码"R· · · ·"。
[0433] 图46(b)是图46(a)的条件下的时序图。
[0434] 在第0循环中,从程序计数器94输出的20位的地址(PC值[19 :0])为"0x00102"。 地址"0x00102"的低位16位与在代码插入用寄存器组#0的地址寄存器31中保持的地 址"0x00106"的低位16位不同。其结果是,地址完全一致信号成为"L"电平,代码寄存器 输出信号成为"0x00000"。从闪存控制代码用R0M13输出"0x00102"的地址的源代码即 "R00102"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码"R00102" 向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出 到取得部35的源代码"R00100"。
[0435] 在第1循环中,由于前一循环的地址完全一致信号为"L"电平,因此程序计数 器94的选择器92输出"0x02"。由此,程序计数器94的输出地址成为加上了 "0x02"的 "0x00104"。地址"0x00104"的低位16位与在代码插入用寄存器组#0的地址寄存器31 中保持的地址"0x00106"的低位16位不同。其结果是,地址完全一致信号成为"L"电平, 代码寄存器输出信号成为"0x00000"。从闪存控制代码用R0M13输出"0x00104"的地址的 源代码即"R00104"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码 "R00104"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一循环 中被输出到取得部35的源代码"R00102"。
[0436] 在第2循环中,由于前一循环的地址完全一致信号为"L"电平,因此程序计数 器94的选择器92输出"0x02"。由此,程序计数器94的输出地址成为加上了 "0x02"的 "0x00106"。地址"0x00106"的低位16位与在代码插入用寄存器组#0的地址寄存器31中 保持的地址"0x00106"的低位16位一致。而且,地址"0x00106"的高位4位(第17位? 第20位地址[16]?[19])与在代码插入用寄存器组#0的地址寄存器156中保持的地址 "0x0106"的高位4位一致。其结果是,地址完全一致信号成为"H"电平(这是因为地址完 全一致信号〇成为"H"电平)。而且,代码寄存器输出信号成为在代码寄存器32中保持的 插入代码"Code Reg. 0"(这是因为代码寄存器输出信号0成为"Code Reg. 0")。由于地址 完全一致信号为"H"电平,因此代码选择电路14将插入代码"Code Reg. 0"向命令执行部 15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35的 源代码"R00104"。
[0437] 在第3循环中,由于前一循环的地址完全一致信号为"H"电平,因此程序计数器94 的选择器92输出"0x10000"。由此,程序计数器94的输出地址成为加上了 "0x10000"的 "0x10106"。地址"0x10106"的低位16位与在代码插入用寄存器组#1的地址寄存器31中 保持的地址"0x10106"的低位16位一致。而且,地址"0x10106"的高位4位(第17位? 第20位地址[16]?[19])与在代码插入用寄存器组#1的地址寄存器156中保持的地址 "0x10106"的高位4位一致。其结果是,地址完全一致信号成为"H"电平(这是因为地址 完全一致信号1成为"H"电平)。而且,代码寄存器输出信号成为在代码寄存器32中保持 的插入代码"Code Reg. 1"(这是因为代码寄存器输出信号0成为"Code Reg. 1")。由于 地址完全一致信号为"Η"电平,因此代码选择电路14将插入代码"Code Reg. 1"向命令执 行部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部 35的插入代码"Code Reg. 0"。
[0438] 在第4循环中,由于前一循环的地址完全一致信号为"Η"电平,因此程序计数器94 的选择器92输出"0x10000"。由此,程序计数器94的输出地址成为加上了 "0x10000"的 "0x20106"。地址"0x20106"的低位16位与在代码插入用寄存器组#0及#1的地址寄存器 31中保持的地址"0χ00106"、"0χ10106"的低位16位一致。然而,地址"0x20106"的高位4 位(第17位?第20位地址[16]?[19])与在代码插入用寄存器组#0及#1的地址寄存 器156中保持的地址"0x00106"、"0χ10106"的高位4位不同。其结果是,地址完全一致信 号成为"L"电平(这是由于地址完全一致信号0及地址完全一致信号成为"L"电平)。而 且,代码寄存器输出信号成为"0x00000"。从闪存控制代码用R0M13输出将程序计数器94 的输出地址"0x20106"的高位4位(第17位?第20位)设为"0"而得的"0x00106"的地 址的源代码即"R00106"。由于地址完全一致信号为"L"电平,因此代码选择电路14将源代 码"R00106"向命令执行部15的取得部35输出。命令执行部15的执行部36执行在前一 循环中被输出到取得部35的插入代码"Code Reg. 1"。
[0439] 在第5循环中,由于前一循环的地址完全一致信号成为"L"电平,因此程序计数器 94的选择器92输出"0x02"。而且,由于地址完全一致信号为"L"电平,因此加法器25的 输出地址的高位4位(第17位?第20位)成为"0"。其结果是,程序计数器94的输出地 址成为"0x00108"。而且,由于地址"0x00108"的低位16位与在地址寄存器31中保持的地 址"0x00106"的低位16位不同,因此地址完全一致信号成为"L"电平,代码寄存器输出信号 成为"0x00000"。从闪存控制代码用ROM13输出"0x00108"的地址的源代码即"R00108"。 由于地址完全一致信号为"L"电平,因此代码选择电路14将源代码"R00108"向命令执行 部15的取得部35输出。命令执行部15的执行部36执行在前一循环中被输出到取得部35 的源代码"R00106"。
[0440] 在第6循环以后与第5循环同样地进行动作。
[0441] 如上所述,根据本实施方式,与第7实施方式同样地,通过程序计数器的地址的除 了从最高位起的预定个数的位以外的位来指定源代码的地址,使用从最高位起的预定个数 的位来控制代码的插入,因此能够在两个源代码之间插入1个以上的代码,且能够执行多 循环命令。而且,根据本实施方式,在来自程序计数器的地址与地址寄存器的值一致时,与 在源代码之后执行插入代码的执行的第7实施方式相对,在源代码之前执行插入代码的执 行。
[0442] (变形例)
[0443] 本发明并不固定为上述实施方式。例如,可以将代码寄存器值固定为特定的值。由 此,虽然可插入的代码种类受到限定,但能够缩小寄存器的尺寸。
[0444] 此外,可以将代码寄存器值存储于ROM或者存储于逻辑电路的组合的电路。也可 以仅能够插入特定指令(例如错误监控用指令)。
[0445] 另外,在本实施方式中,闪存控制部在通用的处理器中也可以具有同样的功能。而 且,有时通过图6所示的闪存3和闪存控制部2构成在一个半导体基板(芯片)上形成的 非易失性半导体装置。
[0446] 应考虑到本次公开的实施方式在所有点上为例示而非限制性的内容。本发明的范 围不是由已经进行的说明而是由权利要求书公开,并包含与权利要求书等同的意思及范围 内的全部变更。
[0447] 标号说明
[0448] 1微型计算机;2、102、103、312、395、423、623、742闪存控制部 ;3闪存;扣卩1 5RAM ;6周边装置;7A-D转换器;8D-A转换器;9模拟输入端子;10模拟输出端子;111/0端 口;12、51、65、72、74、91、94程序计数器;13闪存控制代码用1^ ;14代码选择电路;15命令 执行部;16接口控制器;17、52、164、396、399、424、624、743插入代码寄存器组块;18寄存 器选择信号生成电路;21内部数据总线;22、23内部地址总线;24、26、27、33、53、68、73、77、 92 选择器;25 加法器;28PC 用寄存器;29-0 ?29-n、40-0、54-0 ?54-n、64-0、71-0、78-0、 86-0?86-n、88-0?88-n代码插入用寄存器组;30、157地址比较器;31、56、156地址寄存 器;32代码寄存器;34状态寄存器;35取得部;36执行部;59插入末端寄存器;273主数据 总线;0R1、0R2、0R3、0R54、0R68、0R88、0R89、AND1、AND2、AND3、AND4、AND5、AND6、AND54、 八冊55、4冊56、4冊71、4冊72、4冊74、4冊88、4冊92逻辑电路;册(《1-致电路。
【权利要求】
1. 一种微型计算机,其特征在于, 具备:ROM,存储有多个源代码; 程序计数器,通过加上第1值或第2值来更新地址; 寄存器,保持有至少1个插入代码和所述插入代码的地址; 选择电路,根据所述程序计数器的地址,选择所述寄存器内的由所述程序计数器指定 的地址所对应的插入代码或所述ROM内的由所述程序计数器指定的地址的源代码中的某 一个;以及 命令执行部,执行由所述选择电路选择的代码, 所述多个源代码及所述插入代码中的至少1个是多循环命令, 所述程序计数器在执行多循环命令时,停止地址的更新。
2. 根据权利要求1所述的微型计算机,其中, 所述ROM内的多个源代码的地址的从最低位起的第2位以上的位有效, 所述寄存器在所述保持的插入代码的地址的除了最低位的位之外的位与所述程序计 数器的地址的除了最低位的位之外的位一致时,输出第1信号, 所述寄存器在输出所述第1信号且所述程序计数器的地址的最低位的位为" 1"时,输 出第2信号,并输出所述保持的插入代码, 所述程序计数器在接收到所述第1信号时,对最低位的位加上"1",在未接收到所述第 1信号时,对从最低位起的第2位加上" 1", 所述选择电路在接收到所述第2信号时,选择所述插入代码,在未接收到所述第2信号 时,选择所述源代码。
3. 根据权利要求1所述的微型计算机,其中, 所述ROM内的多个源代码的地址的从最低位起的第2位以上的位有效, 所述寄存器在所述保持的插入代码的地址的除了最低位的位之外的位与所述程序计 数器的地址的除了最低位的位之外的位一致时,输出第1信号, 所述寄存器在输出所述第1信号且所述保持的插入代码的地址的最低位的位与所述 程序计数器的地址的最低位的位一致时,输出第2信号,并输出所述保持的插入代码, 所述程序计数器在接收到所述第1信号时,对最低位的位加上"1",在未接收到所述第 1信号时,对从最低位起的第2位加上"1", 所述选择电路在接收到所述第2信号时,选择所述插入代码,在未接收到所述第2信号 时,选择所述源代码。
4. 根据权利要求1所述的微型计算机,其中, 所述ROM内的多个源代码的地址的从最低位起的第η位以上的位有效, 所述寄存器在所述保持的插入代码的地址的除了最高位的位之外的位与所述程序计 数器的地址的除了最高位的位之外的位一致时,输出第1信号, 所述寄存器在输出所述第1信号且所述程序计数器的地址的最高位的位为" 1"时,输 出第2信号,并输出所述保持的插入代码, 所述程序计数器在接收到所述第1信号时,对最高位的位加上"1",在未接收到所述第 1信号时,对从最低位起的第η位加上" 1", 所述选择电路在接收到所述第2信号时,选择所述插入代码,在未接收到所述第2信号 时,选择所述源代码。
5. 根据权利要求1所述的微型计算机,其中, 所述ROM内的多个源代码的地址的从最低位起的第η位以上且除了最高位的位之外的 位有效, 所述寄存器在所述保持的插入代码的地址的除了最高位的位之外的位与所述程序计 数器的地址的除了最高位的位之外的位一致、且所述程序计数器的地址的最高位的位为 "1"时,输出第1信号,并输出所述保持的插入代码, 所述程序计数器在接收到所述第1信号时,对最高位的位加上"1",在未接收到所述第 1信号时,对从最低位起的第η位加上" 1",且将最高位的位设为"0", 所述选择电路在接收到所述第1信号时,选择所述插入代码,在未接收到所述第1信号 时,选择所述源代码。
6. 根据权利要求1所述的微型计算机,其中, 所述ROM内的多个源代码的地址的从最低位起的第(η+1)位以上的位有效, 所述寄存器最多保持2η-1个插入代码和所述插入代码的地址, 所述寄存器在所述保持的插入代码的地址的除了从最低位起的η位之外的位与所述 程序计数器的地址的除了从最低位起的η位之外的位一致时,输出第1信号, 所述寄存器在输出所述第1信号且所述保持的插入代码的地址的从最低位起的η位与 所述程序计数器的地址的从最低位起的η位一致时,输出第2信号,并输出与所述程序计数 器的地址对应的所述保持的插入代码, 所述程序计数器在接收到所述第1信号时,对最低位的位加上"1",在未接收到所述第 1信号时,对从最低位起的第(η+1)位加上"1", 所述选择电路在接收到所述第2信号时,选择所述插入代码,在未接收到所述第2信号 时,选择所述源代码。
7. 根据权利要求6所述的微型计算机,其中, 当连续地插入多个插入代码时,在所述寄存器输出最后的插入代码的情况下,所述寄 存器输出所述第2信号,并且同时输出表不插入末端的插入末端信号。
8. 根据权利要求7所述的微型计算机,其中, 所述程序计数器在接收到所述插入末端信号时,即使在接收到所述第1信号时,也对 从最低位起的第(η+1)位加上"1",并将从最低位起的η位设为"0"。
9. 根据权利要求7所述的微型计算机,其中, 所述程序计数器在未接收到所述插入末端信号时,将从最低位起的η位设为" 1"。
10. 根据权利要求1所述的微型计算机,其中, 所述ROM内的多个源代码的地址的从最低位起的第m位以上的位有效, 所述寄存器最多保持2n-l个插入代码和所述插入代码的地址, 所述寄存器在所述保持的插入代码的地址的除了从最高位起的η位之外的位与所述 程序计数器的地址的除了从最高位起的η位之外的位一致时,输出第1信号, 所述寄存器在输出所述第1信号且所述保持的插入代码的地址的从最高位起的η位与 所述程序计数器的地址的从最高位起的η位一致时,输出第2信号,并输出与所述程序计数 器的地址对应的所述保持的插入代码, 所述程序计数器在接收到所述第1信号时,对从最高位起的第η位加上" 1",在未接收 到所述第1信号时,对从最低位起的第m位加上"1", 所述选择电路在接收到所述第2信号时,选择所述插入代码,在未接收到所述第2信号 时,选择所述源代码。
11. 根据权利要求10所述的微型计算机,其中, 当连续地插入多个插入代码时,在所述寄存器输出最后的插入代码的情况下,所述寄 存器输出所述第2信号,并且同时输出表不插入末端的插入末端信号。
12. 根据权利要求11所述的微型计算机,其中, 所述程序计数器在接收到所述插入末端信号时,即使在接收到所述第1信号时,也对 从最低位起的第m位加上" 1",并将从最高位起的η位设为"0"。
13. 根据权利要求1所述的微型计算机,其中, 所述ROM内的多个源代码的地址的从最低位起的第m位以上的位有效, 所述寄存器最多保持2n-l个插入代码和所述插入代码的地址, 所述寄存器在所述保持的插入代码的地址的除了从最高位起的η位之外的位与所述 程序计数器的地址的除了从最高位起的η位之外的位一致、且所述保持的插入代码的地址 的从最高位起的η位与所述程序计数器的地址的从最高位起的η位一致时,输出第1信号, 并输出与所述程序计数器的地址对应的所述保持的插入代码, 所述程序计数器在接收到所述第1信号时,对从最高位起的第η位加上" 1",在未接收 到所述第1信号时,对从最低位起的第m位加上" 1",且将从最高位起的η位设为"0", 所述选择电路在接收到所述第1信号时,选择所述插入代码,在未接收到所述第1信号 时,选择所述源代码。
14. 根据权利要求1所述的微型计算机,其中, 所述寄存器保持状态位, 所述选择电路在所述状态位的值为第1值时,无论所述程序计数器的地址如何,都选 择所述源代码。
15. -种微型计算机,其特征在于, 具备能够向半导体基板电擦除及电写入的非易失性存储器、能够访问所述非易失性存 储器的中央处理装置以及根据来自所述中央处理装置的访问以预定的顺序进行所述非易 失性存储器的控制的非易失性存储器控制电路, 所述非易失性存储器控制电路具备: ROM,将以预定的顺序执行的多个命令代码存储在通过Μ个有效位指定的地址中; Κ(>Μ)位输出的程序计数器,对用于选择存储于所述ROM的命令代码的地址进行更新; 寄存器电路,保持有向以所述预定的顺序执行的多个命令代码之间插入的插入代码和 表示所述插入代码的插入目的地的地址; 代码选择电路,根据来自所述程序计数器的地址与在所述寄存器电路中保持的表示插 入代码的插入目的地的地址的一致检测结果,选择存储于所述ROM的命令代码和保持于所 述寄存器电路的插入代码中的某一个;以及 命令执行部,执行由所述选择电路选择的代码, 所述程序计数器具备相加值选择电路,该相加值选择电路在代码插入时,将向所述Μ 个有效位中的最低位的位相加1位切换成向所述Μ个有效位之外的输出位相加1位, 所述命令执行部能够执行至少1个多循环命令,在执行所述多循环命令时,向所述程 序计数器指示地址的更新停止。
16. 根据权利要求15所述的微型计算机,其中, 保持有表示所述插入代码的插入目的地的地址的寄存器保持与所述程序计数器的输 出相同位数(Κ位)的位数据。
17. -种非易失性半导体装置,其特征在于, 具备能够向半导体基板电擦除及电写入的非易失性存储器以及以预定的顺序进行所 述非易失性存储器的控制的非易失性存储器控制电路, 所述非易失性存储器控制电路具备: ROM,将以预定的顺序执行的多个命令代码存储在通过Μ个有效位指定的地址中; Κ(>Μ)位输出的程序计数器,对用于选择存储于所述ROM的命令代码的地址进行更新; 寄存器电路,保持有向以所述预定的顺序执行的多个命令代码之间插入的插入代码和 表示所述插入代码的插入目的地的地址; 代码选择电路,根据来自所述程序计数器的地址与在所述寄存器电路中保持的表示插 入代码的插入目的地的地址的一致检测结果,选择存储于所述ROM的命令代码和保持于所 述寄存器电路的插入代码中的某一个;以及 命令执行部,执行由所述选择电路选择的代码, 所述程序计数器具备相加值选择电路,该相加值选择电路在代码插入时,将向所述Μ 个有效位中的最低位的位相加1位切换成向与所述Μ个有效位不同的输出位相加1位, 所述命令执行部能够执行至少1个多循环命令,在执行所述多循环命令时,向所述程 序计数器指示地址的更新停止。
【文档编号】G06F11/00GK104145247SQ201280071070
【公开日】2014年11月12日 申请日期:2012年3月2日 优先权日:2012年3月2日
【发明者】加藤多实结, 丸山由纪子, 和泉伸也, 中木村清, 濑口祯浩 申请人:瑞萨电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1