受保护的可编程盒式存储器及使用它们的计算机系统的制作方法

文档序号:6408148阅读:314来源:国知局
专利名称:受保护的可编程盒式存储器及使用它们的计算机系统的制作方法
技术领域
本发明总的来说涉及计算机体系结构,而更具体地涉及带有可装卸可编程盒式存储器的计算机系统。该系统具有地址加密保护电路以防止在计算机系统中使用非特许盒式存储器以及防止非特许系统使用盒式存储器。
视频图形计算机系统是众所周知的流行消费品。一个典型的系统包含一个连接在一台普通电视机上用于显示游戏图象或其它应用的数据处理单元。该数据处理单元接受来自通常组装成盒式的一个只读存储器(ROM)的控制软件。该盒式存储器是可卸地插入数据处理单元中的。在该数据处理单元上还连接至少一种指点设备,诸如鼠标器、操纵杆、触摸板、开关盘或光枪等,使玩游戏的人能够输入位置信息供控制软件来执行应用程序。
该数据处理单元通过具有一个单一的中央处理单元(CPU)及相关的易失性及非易失性存储器,其中包括所有的随机存取存储器(RAM)及引导只读存储器(引导ROM);一个电视(射频图象)信号发生器;以及用来与各种指点设备接口的一个输入/输出(I/O)处理器。这些设备是电路连通的。这种系统的一个显著特点是利用一块主板或系统板来将这些部件电连接在一起。
在这种计算机系统中,部件是通过电信号通信的;因此,许多部件必须是电路连通的,以便信号在部件之间传递。这些电信号通常是由系统部件之间的电连线传送的。电连线的典型类型中包括印刷电路板(PCB)上的金属迹线,多层PCB的不同层之间的通路、电镀通孔、插头、以及连接系统部件的各脚的独立导线。通常将电信号组及传送这些电信号的电连线组称作“总线”。因此,所谓“总线”可以是指一组电信号、一组传送这些电信号的电连线、或者是对一组电信号及一组传送这些电信号的电连线两者的合称。
总线通常是由“总线线路”构成的。引用一条单独的“总线线路”可指一条总线中的一条电连线或者一条总线的一个电信号。计算机系统中的存储器是分解成称作“字节”的细小部分的。存储器中各字节有其唯一的“地址”,这类似于个人住所的唯一地址。存储在存储器中的信息称作“数据”。一个计算机系统通常有三条总线一条地址总线、一条数据总线、及一条控制总线。当一台计算机从存储器中一个特定的地址读取一个信息时,CPU将存储器中这一特定点的地址确定在地址总线上,然后CPU使用控制总线通过存储芯片CPU要求访问存储在该地址种的信息。然后,存储芯片将存储在该单元上的信息确定在数据总线上。最终,CPU从数据总线上读取数据。上述过程是非常快的,每秒钟可进行数百万次之多。
在典型的基于盒式存储器的系统中,地址总线、数据总线及控制总线通过接线器从数据处理单元延伸至盒式存储器内的电器件上。这样,当盒式存储器连接在数据处理单元上时,盒中的程序ROM是如数据处理单元内的引导ROM及系统RAM一样与CPU电路连通的。
这种系统的商业上的成功推动了其它原来不制造这种产品的厂商设计与制造与之竞争的盒式存储器及数据处理单元。非特许的盒式存储器能在特许的数据处理单元中执行;同样,非特许的数据处理单元能执行特许盒式存储器中所包含的程序。这种竞争设备不是总能够和真正的设备“完全兼容”的,因此非特许的设备可能不正常工作。更有甚者,这些非特许设备的不兼容性可能使特许设备不正常工作,从而玷污制造特许盒式存储器与特许数据处理单元的厂商的形象。
再者,真正的设备通常是设计与推向市场用来执行设计完善及执行顺利的程序的。容忍他人推销缺少相似的完善性及质量的程序或数据处理单元会进一步玷污制造特许盒式存储器与特许数据处理单元的厂商的形象。因此,在以盒式存储器为基础的计算机系统中,希望防止两种形式的非特许使用(1)在一个特许的处理器单元中使用非特许的盒式存储器,及(2)在一个非特许的处理器单元中使用特许的盒式存储器。从而,希望具有鉴别用在一个数据处理单元中的一个盒式存储器及防止盒式存储器的非特许使用的能力。典型的已有技术设备无法提供对这一问题的经济实用令人满意的解决方案。
1989年元月24日颁发给Nakaqawa的美国专利4,799,635号中提出了这种先有技术系统的一个实例,它是基于盒式存储器的游戏机单元的一种鉴别技术。软件控制的微处理器存在于各数据处理单元及盒式存储器中,用于执行相关算法然后比较它们的结果。当将一个盒式存储器插入数据处理单元中对,在游戏单元接受盒式存储器并用它操作之前必须得出满意的比较结果。这一方法是相当复杂的并增加了制造盒式存储器的成本,这是因为在设计盒式存储器时必须加上一个微控制器。
因此,希望在盒式ROM上设置一个较简单的安全电路而令主数据处理单元只接受可信的盒式存储器并防止在非特许系统中使用特许的盒式存储器。
此外,典型的先有技术系统具有一条单一的系统总线,用于在各部件之间传送数据。只有一条系统总线会降低系统性能,因为所有的I/O设备依靠CPU来访问存储器。再者,典型的系统并未提供处理高性能视频、图形及声音问题的综合解决方法。
根据本发明,在一个程序盒式存储器设置有一个介于CPU与盒式程序ROM之间的地址加密器及封锁控制电路。在系统起动时,该地址加密器“封锁”盒式存储器,防止存取数据。数据处理单元为了“解锁”该盒式程序存储器需要向该封锁控制电路传送一个“密码”,控制电路从而使地址加密器“解锁”该盒式程序存储器。
地址加密器通过打乱CPU与盒式存储器中的ROM之间的地址总线的地址线路来封锁该盒式存储器。当地址线路被打乱时,CPU仍然访问ROM中的存储单元;然而,存储器中的数据在存储器中的地址就错了,因此,在地址加密器正在打乱地址线路时,CPU不能执行盒式ROM中的程序。从而,“封锁”了该盒式存储器。
为了“解锁”盒式存储器,CPU将一个预定的地址序列设定在地址总线上。由于程序ROM被打乱了,这一设定只是存储器到寄存器的操作,从而防止了实际执行程序ROM中的代码。任何想执行ROM中的代码的企图会导致系统崩溃,这是由于典型的指令是多字节指令而打乱字节的次序会导致不正确地执行这些指令。
地址序列起“密码”的作用来解锁该盒式存储器,封锁控制电路监视地址总线,等待CPU将正确的“密码”写在地址总线上。一旦封锁控制电路检测到正确的地址序列,封锁控制电路便令地址加密器停止打乱ROM与CPU之间的地址线路。当地址线路不再被打乱时,CPU便能执行盒式ROM中的程序。该盒式存储器便“解锁”了。
在盒式存储器上加上地址加密器及封锁控制电路只增加少量或不增加盒式存储器的成本。除了ROM以外,典型的先有技术盒式存储器中还有一众所周知的称作“地址译码器”的可编程逻辑芯片。典型的可编程逻辑芯片具有足够的容量来实现地址译码器及本发明的地址加密器与封锁控制电路。因此,本发明可加在盒式存储器中而不增加任何附加的芯片,从而以少量或无附加成本增加这些功能。
因此,本发明的一个优点为提供一种非常低成本而高效的防止非特许使用盒式存储器与数据处理单元的方法。
除了封锁的盒式存储器,本发明还利用一块大容量定作芯片来执行实现高速、高分辨率声频/视频系统所必需的多种任务。该芯片包括一个与CPU的接口、一个CPU“高速缓存”、一个存储器控制器、一个存储器仲裁器、一个DRAM刷新器、一个密致盘(CD)驱动控制器、一个数字信号处理器(DSP)声音协处理器、及一个“阻击器(blitter)”图形协处理器。借助于这一“声频/视频/CD控制器/协处理器”(“A/V/CD控制器/协处理器”),一个非常高速、高分辨率系统就非常低成本高效地实现了。整个数据处理系统包括一个CPU、A/V/CD控制器/协处理器、存储器、一个TV信号发生电路、一个I/O处理器、两个译码器可编程阵列逻辑设备(译码PAL)、两个盒式存储器插头座以及一个扩展插头座。
A/V/CD控制器/协处理器从由CPU发出的系统总线上形成第二系统总线(副系统总线)。系统存储器(包括视频RAM、系统RAM及引导ROM)是经由该副系统总线接口的。盒式ROM则是经由系统总线接口的;再有,处理器“高速缓存”是经由系统总线接口的。这样,当A/V/CD控制器/协处理器与系统存储器执行功能时,CPU便能存取盒式ROM及“高速缓存”,从而允许CPU与A/V/CD控制器/协处理器的并行操作。
因此,本发明的另一优点为对设计一种高速、高分辨率计算机系统提供了一种多芯片解决方案。
从对本发明的详细描述中,本发明的这些及其它优点将更为明显。
在结合并构成本说明书的一部分的附图中,示出了本发明的实施例,它们连同上面给出的发明的一般性描述及下面给出的详细描述,用来例示本发明的原理。


图1A与1B为本发明的系统的总体配置的方框图;图2为本发明中所使用的视频数一模转换器的一部分的电原理图3为本发明的地址加密器的一种实现的示意图;图4为本发明的A/V/CD控制器/协处理器的方框图;图5为用于“封锁”一个盒式程序存储器的另一种电路的方框图;以及图6为用于“封锁”一个盒式程序存储器的第三种方案的存储器图。
参见图1A与1B,其中示出了本发明的一个计算机系统10。如图1A中所示,系统10包括一个数据处理单元12及一个可卸地连接在其上的盒式程序存储器14。同时连接在数据处理单元12上的有一台标准电视机(TV)16、一个供选用的键盘18、一个或多个供选用的控制器20a与20b、以及一个供选用的CD驱动器22。虽然在图1A中未示出,该标准TV16可用一对扬声器及一个接受复合视频信号的显示设备来代替。
处理单元12包括一个中央处理单元(CPU)30、一个声频/视频/CD驱动器(A/V/CD)控制器/协处理器32、一个系统存储器34、一块第一译码芯片PAL1 35a、一块第二译码芯片PAL2 35b(也示出在图4中)、一个I/O处理器36、两个盒式存储器插头座(其中一个一般性地示出在37a处,另一个未示出)、生成声频与视频信号所需的附加电路38、以及一个扩展插头座(一般性地在图4中示出在39处)。这些设备是如图1A所示的电路连通连接的。附加电路38示出在图1B中,并在结合图1B的文字中更详细地讨论。
CPU30发出多条总线一条数据总线31a、一条地址总线31b及一条控制总线31c,它们是本技术中众所周知的。这三条总线集体称作系统总线31。在较佳实施例中,CPU30为由英特尔公司(3065 Bowers Ave.,Santa Clara,California,95051)制造的80376。80376是著名的80386SX的一种改型,后者是本技术中众所周知的并且也能从英特尔公司购得。80376与80376SX的不同点在于80376以32位模式起动而不是16位模式。具体地说,CRO寄存器(控制只读寄存器)被强制置位成0011H(十六进制的0011)状态而将位0强制置位成逻辑“1”,有效地使376在一种32位存储器模式中操作。启动分页来容许虚拟386操作。
在结合图4的文字中将详细讨论A/V/CD控制器/协处理器32。现在只要说明下述问题就够了,即A/V/CD控制器/协处理器32包括下述功能块一个存储器刷新器、一个视频控制器、一个“阻击器(blitter)”图形协处理器、一个CD驱动控制器、一个数字信号处理器(DSP)声音协处理器、以及一个用于仲裁六个可能的总线主控器(CPU、“阻击器(blitter)”、DSP、存储器刷新器、视频控制器、以及CD驱动控制器)之间对系统存储器的存取的仲裁器。“阻击器(blitter)”(阻击器图形协处理器)在没有处理器干预的情况下具有传送/移动大块存储内容的块传输功能。仲裁器控制这些设备的不断变化的优先级,如这里所描述的,并且它是与A/V/CD控制器/协处理器32中的所有设备电路连通的。例如,直到出现一个中断以前,CPU30具有所有总线主控设备中最低的优先级。从而,仲裁器既与CPU接口60电路连通又与中断控制器68电路连通。
CPU30具有与之关联的一条系统总线31。系统总线31是指图1中所示的组合数据总线31a、地址总线31b及控制总线31c而言。A/V/CD控制器/协处理器32便是用于系统存储器34的仲裁器;因此,A/V/CD控制器/协处理器32将系统总线31改变成副系统总线61(包括副数据总线61a、副地址总线61b及副控制总线61c)。
系统存储器34包括屏幕RAM、系统RAM及引导ROM。系统存储器34将在结合图4的文字中更详细地讨论。
I/O处理器36将CPU30接口到许多I/O设备上,诸如键盘18、控制器20a与20b、一个数字化转换器(未示出)、一个鼠标器(未示出)、一台打印机(未示出)以及一个触摸板(未示出)。在较佳实施例中,I/O处理器36是莫托罗拉公司(Motorola Corp,)制造的以2MHz运行的预编程的MC68HC705C8(此后称作“68HC705”)。通过将68HC705I/O处理器36配置成一个外部设备来与CPU30接口(1)将PA0-PA7连接到数据总线31a的D0-D7上;(2)将PB7、PB1与PB2分别连接到地址总线31b与控制总线31c的GPI01(如下所述,指由A/V/CD控制器/协处理器32译码的一个32字节地址范围)、A1与A2上;以及(3)将PB3、PB4与PB5分别连接到控制总线31c的ADS、READY、与W/R上。从而,I/O处理器被解码成具有I/O空间中的4个16位地址(在这里称作AS0、AS2、AS4与AS6)。
68HC705中的程序与CPU30的接口如下。68HC705是设计成直接挂在处理器总线上并作为对CPU30的一个I/O端口工作的。一对内部锁存器保持两个处理器之间传递的数据直到另一个准备好接收它为止。各处理器的状态位表示数据锁存器的状态。通过检验状态位,各处理器能知道前面的数据是否已被读取以及是否有数据正在等待读取。
I/O协处理器36实现下述功能(1)一个50毫秒定时器,(2)输入设备的一条串行控制器链路,(3)盒式存储器感测,(4)系统复位,以及(5)一条用于CD驱动器22的数据/选通/确认(DSA)CD控制通信链路。
50毫秒定时器是利用68HC705I/O协处理器36的监视器定时器实现的。当监视器定时器到对时,I/O协处理器36用A/V/CD控制器/协处理器32的模拟中断1(AI1)中断CPU30。CPU30以读取如前所述的16位I/O端口ASO来响应这一中断,它令A/V/CD控制器/协处理器32激活I/O协处理器36,从而导致CPU30与I/O协处理器36之间的一次数据传输。
控制器20、键盘18及所有其它输入设备都是经由串行控制器链路连接到I/O处理器36上的。控制器将控制设备的活动变换成适合于沿串行链路传输的格式。控制器经由控制器串行数据链路将数据包送到系统单元。数据包随IO设备的类型而不同。坐标型设备(鼠标器、模拟式操纵杆、触摸板等)具有与开关闭合型设备(键盘、数字操纵杆、开关盘等)不同的数据包。
串行控制器链路由三条线路(3)构成一条数据接收线、一条VCC(+5伏直流电)线及一条地线。68HC705用PDO/RDI脚来实现控制器串行链路的数据接收线。该脚是设计成用众所周知的异步格式与串行设备接口的。一种时钟同步格式也能用作替代。串行控制器链路用一个三导线接线器连接到外部设备上。输入设备是菊花链接的,因此只有一个单一的设备物理地连接在数据处理单元12上。
盒式存储器感测是通过令I/O协处理器36查询盒式存储器插头座37a的一个脚来实现的。该脚由系统板上的一个上拉电阻器拉升到一个逻辑“1”,而一个准确连接的盒式存储器则将其拉至一个逻辑“0”。
复位是通过使I/O协处理器36获得对CPU30及A/V/CD控制器/协处理器32的复位信号的控制而实现的。CPU30能命令I/O协处理器36复位系统10。此外,I/O协处理器36监视系统的复位开关(未示出),每当它检测到一次开关闭合时便复位系统。
DSACD控制协议是使用68HC705的三个脚实现的。I/O协处理器36使用这一协议来对CD驱动器22传送命令及将来自CD驱动器22的消息转发到CPU30。
第一译码芯片PAL1 35a是沿地址总线31b与控制总线31c与CPU30、A/V/CD控制器/协处理器32及两个盒式存储器插头座37a(另一个未示出)电路连通的,如图1A中所示。第一译码芯片PAL1 35a接收两条高位地址线作为输入,将80376 CPU30的16兆字节地址空间译码成由三条芯片选择线表示的四个4兆字节区域两条用于盒式存储器插头座37a(另一个未示出),一条用于A/V/CD控制器/协处理器32。高端四兆字节及低端四兆字节是译码成A/V/CD控制器/协处理器芯片选择的,而剩下的两个4兆字节区是译码成两个盒式存储器插头座芯片选择的。
数据处理单元12也有一对盒式存储器插头座(一个示出在37a处,另一个未示出)用于将一个盒式存储器14与CPU30及其它系统部件电路连通。盒式存储器14经由一个镀金的70脚(两行35个导线)边缘卡插接件37b连接到数据处理单元12上。处理器单元12有两个盒式存储器插头座37a,用于接纳边缘卡插接件37b的边缘卡插接端。盒式存储器14具有镀金的卡边缘接线端来配合插头座37a的导线,允许盒式存储器14插接在处理器单元12上。下述信号是经由盒式存储器插头座37a(另一个未示出)传送给外部设备的系统总线31信号、DSACD控制信号、12S CD数据信号、一条盒式存储器感测线、电源、地线、模拟中断1或2(各盒式存储器有一唯一的中断号)、GPI0 2或3、一条封锁线(这是80376与80386SX系统总线31的典型信号)、以及一个由第一译码芯片PAL135a生成的盒式存储器选择。
此外,处理器单元12具有一单一的100脚(两行各50脚)边缘卡扩展插头座(未示出在图1A中,一般性地示出在图4中39处),扩展插头座39允许设备在系统存储器34上增加更多的存储器及增加各种其它性能。连接在扩展插头座39上的设备具有镀金的卡边缘以便与扩展插头座配合,而允许这些设备插接在处理器单元12上,下述信号经由扩展插头座39传送至外部设备副系统总线信号(在结合图4的文字中描述)、DSACD控制信号、I2S CD数据信号、一条扩展插头座39感测线、电源、地线、CAS与RAS线、以及一个由第二译码芯片PAL235b生成的扩展插头座39选择。
图1A的附加电路38示出在图1b中。参见图1b,附加电路38包括四个设备一个视频数字至模拟转换器(视频DAC)40、一个NTSC/PAL(“PAL”指著名的欧洲电视信号标准)编码器42、一个RF调制器44及一个音频模拟至数字转换器/数字至模拟转换器/压缩器/解压缩器(ADC/DAC/CODEC)46。
A/V/CD控制器/协处理器32具有若干功能块,它们将在结合图4的文字中更全面地描述。现在只要知道其中两块是一个视频控制器66及一个数字信号处理器(DSP)74就够了。
A/V/CD控制器/协处理器32的视频控制器66连接到一个外部视频DAC40,后者将来自视频控制器66的18位象素信息(红、绿及兰各6位)转换成众所周知的一个RGB信号。如图2中所示,视频DAC的各颜色通道(R、G与B)是用一棵R2R电阻器树及一个2N222晶体管实现的。如图所示,图2中的设备是电路连通的。图2中的电阻器41a-41j都是0.2 5瓦电阻器,其电阻值示出在图中,在5%容差范围内。晶体管43为一个2N2222。
再参见图1B,用NTSC/PAL编码器42将RGB信号转换成NTSC复合视频信号。NTSC/PAL编码器42接收由A/V/CD控制器/协处理器32的视频控制器66生成的色度时钟、HSYNC与VSYNC信号,以及由视频DAC40生成的红、绿与兰视频输出,并以知名的NTSC或基带视频格式生成一个复合视频信号。作为替代,也可生成知名的PAL(欧洲电视信号标准)格式。用一个单一的RCA凹型声音插孔将复合视频信号连接到外部设备上,如本技术中众所周知的那样。在较佳实施例中,NTSC/PAL编码器42是一个莫托罗拉公司制造的MC1377。
RF调制器44将来自MC1377的复合视频信号与来自声频ADC/DAC/CODEC46的左右声道输出信号合并成一个载波频率以生成一个适于直接输入电视机16的RF视频信号(称为RF视频)。为了生成不同的PAL(欧洲电视信号标准)与NTSC格式,必须使用不同的RF调制器及晶体。RF视频信号用一个单一个凹型F型同轴线接插件连接到外部设备上,如本技术中众所周知的那样。
声频ADC/DAC/CODEC46以符合著名的菲利浦I2S协议的串行链路链接到DSP74上。ADC/DAC/CODEC46将模拟数据转换成数字数据,或者反过来,并压缩与解压缩数字数据。ADC/DAC/CODEC46将来自可选用的麦克风的外部立体声模拟数据接到A/V/CD控制器/协处理器32上,声频输入是用一个标准的立体声1/4英寸接线器连接到外部设备上的。声频ADC/DAC/CODEC46还通过生成左右声道输出信号将来自A/V/CD控制器/协处理器的数字数据接到外部设备上,这些信号是用两个凹形RCA听筒插孔连接到诸如扬声器等选用的外部设备上的,这是在本技术中众所周知的。如前所述,这些声频线信号还加到RF视频信号上。
在本较佳实施例中,该ADC/DAC/CODEC46为晶体半导体(Crysta1 Semiconductor)公司制造的CS4216。这一部件包含带有可编程增益的麦克风输入,以及带有可编程衰减器的输出。增益与衰减两者都是由DSP74可编程控制的。
作为替代品,可用一个菲利浦制造的TDA1311来替代ADC/DAC/CODEC46。如果使用了这种芯片,则得不到ADC与CODEC功能。
最后,数据处理单元12具有一个用于实现扩展插头座39的芯片选择的第二译码器芯片PAL2 35b。译码芯片PAL235b是沿副系统总线61与A/V/CD控制器/协处理器32及扩展插头座39电路连通的。第二译码芯片PAL2 35b只允许A/V/CD控制器/协处理器32译码从F20000H起始的一个128K的系统ROM1块。从F40000H至FFFFFFH的范围是由PAL2 35b译码,用于扩展插头座39的。译码芯片PAL2 35b所译码的ROM的这一块是用于经由扩展插头座39将ROM增加到系统10上的。
如图1A中所示,盒式程序存储器14包括一个程序ROM50及一个封锁电路52。程序ROM50中包含以只读存储器格式的适合于在CPU30上执行的代码。在替代品中,诸如蓄电池后备的RAM等其它存储器类型可用作盒式存储器14中的存储设备。如图1A所示,程序ROM50是与CPU30电路连通的。在本较佳实施例中,封锁电路52包括一个存储器控制电路,例如一个地址加密器54,以及一个封锁控制电路56。
地址加密器54沿地址总线31b介于程序ROM50与CPU30之间。它发出一条加密时第三地址总线55,如图1A与3中所示。如图所示,地址加密器54不需要每一条地址线都作为一个输入端。地址加密器54可实现为只需要打乱n位地址总线31b中的m条地址线,在图3中,地址线Ao至Am被打乱而生成Ao′至Am′,将它们输入程序ROM50。两条低位地址线中的至少一条应加以打乱以充分加密数据。如图1A与3中所示,地址加密器54还生成一个典型的ROM50的芯片选择信号57,正如本技术中所共知的。
在本较佳实施例中,地址总线31b中的三条地址线A0、A1与A2被打乱而形成第三地址总线55;地址总线31b中其余的地址线与第三地址总线55相同。地址总线31b的线A0换到第三地址总线55的线A2上。地址总线31b的线A2换到第三地址总线55的线A1上。最后,地址总线31b的线A1换到第三地址总线55的线A0上。这便有效地加密了ROM50中的数据使之不能执行。此外,ROM50中的各数据字节仍具有唯一的地址,而容许在试图解锁盒式存储器之前,计算ROM50的校验和(将所有字节加在一起,不考虑进位)。
整个封锁电路52可在本技术中熟知的一个可编程逻辑阵列(PAL)、一个可编程逻辑器件(PLD)、一个专用的集成电路(ASIC)或一个现场可编程门阵列(FPGA)上实现。封锁控制电路56包括若干与一个同步状态机电路连通的比较器。该状态机初始化成一种“封锁的”状态,令地址加密器54打乱地址线。不正确的地址将状态机保持在该封锁状态中。当在地址总线上确立了正确地址序列中的各地址时,适当的比较器指明该地址的出现,而令状态机转换到下一状态。如果正确的地址以正确的次序出现,则状态机进入“解锁”状态,而令地址加密器54停止打乱地址线,在加密器54“解锁”前任何时刻,一个不正确的地址使封锁控制电路56返回到初始“封锁”状态。一旦封锁控制电路56解锁了加密器54,封锁控制电路56便将加密器54保持在解锁状态中直到机器复位或再次启动系统电源为止。
在另一种可选方案中,封锁控制电路56可配置成在出现一个或多个预先选定的事件时重新进入封锁状态,令地址加密器54重新打乱地址线直到在地址总线上以正确的次序确立正确的地址序列。还有一种方案,封锁控制电路56设计成不必要求地址以正确的序列出现。而是,状态机可设计成只要求确定所有预先选择的地址,而不考虑正确的次序。
系统加电时,封锁控制电路56令地址加密器54打乱一条或多条从CPU30到程序ROM50的地址线。此外,封锁控制电路也能设计成令地址加密器54响应其它事件而打乱地址线,诸如系统复位、或者一个单稳多谐振荡器的到时,这便要求CPU周期性地将正确的组合确定在地址总线31b上。打乱地址可采取交换两条或两条以上地址线的方式(例如,将地址线A3与地址线A6交换)或者将一条或多条地址线反映在一条或多条其它地址线上(例如,令出现在地址线A3上的信号同时出现在地址线A3、A4、及A5上)。在本较佳实施例中,地址总线传导路径并不实际打乱(如果使用机电继电器来打乱地址线时便是实际打乱的);而是电子地交换地址总线传导路径上的信号。再者,在替用品中的地址加密器54可采用随机选择的多种打乱模式。
这样,盒式存储器便被“封锁”而不能用于非特许的设备。此外,存储器控制电路不限于一个地址加密器54。也可用一个数据总线31a加密器或一个控制总线31c加密器或任何数据总线31a、地址总线31b或控制总线31c的打乱的组合或排列来达到封锁效果。因此地址总线加密器54不一定非打乱地址总线31b线路不可,因为一个更广义的“总线加密器”可用于实现存储器控制电路。
地址加密器54可实现为一个多路转换器,它响应来自封锁控制电路56的输出,在正确地址与打乱的地址之间切换。
由于程序ROM50正在输出的数据将不对应于正确序列中的可执行代码,因此对于非特许的设备,盒式程序存储器14是“封锁”的。交换或者映射地址线将具有替换各自地址的作用从而达到搅乱代码的次序的效果。因此,当地址加密器54正在打乱地址时,企图读取盒式存储器14内的程序ROM的任何非特许的设备将读出被扰乱了的操作码与操作数,它们非常可能是无意义的。在任何情况下,当地址线被扰乱时,应用程序不会像所期望的那样执行。
为了“解锁”盒式存储器,CPU30以一种特定的次序访问地址31b总线上的一个或多个地址。封锁控制电路56监视地址总线31b。一旦适当的地址序列出现在地址总线31b上,封锁控制电路便令地址加密器54停止打乱将程序ROM50连接到CPU30上的地址线。一旦地址加密器54停止打乱地址线,CPU30便能访问程序ROM30中的代码并执行其中的程序。
在盒式存储器14中加入地址加密器54及封锁控制电路56,只在盒式程序存储器14上增加极少的成本(如果真有增加的话)。通常,盒式存储器利用盒式存储器14内的一个地址译码器来对地址总线31b的全宽度译码以适用于程序ROM50的存储量。例如,一兆字节的ROM有20条地址线;然而,CPU30的整个地址总线31b是引出到盒式存储器14上的。如果CPU30为一个80376或80376SX,则地址总线31b为24位宽;因此,要求存储器译码器将24位地址空间译码到一个20位区域中。因此,一个盒式存储器14通常需要一个内部地址译码器。
地址译码器通常是一个可编程阵列逻辑(PAL)或可编程逻辑设备(PLD)。一种适用的PAL便是本技术中公知的并且是由多家制造厂商(诸如AMD公司)制造的16V8。16V8除了提供所需要的地址译码器以外,还提供实现地址加密器54及封锁控制电路56的足够内部逻辑,因此,可以只增加极少的或不增加单位附加成本而在盒式存储器14中实现本发明的封锁电路52。
地址加密器54提供一种防止在非特许的系统中使用盒式程序存储器14的“封锁”方法。此外,本发明的系统10提供一种防止在本发明的特许系统10中使用非特许的盒式存储器的方法。
相对于未打乱的存储空间,打乱地址总线31b的线具有在存储空间中交换与/或复制字节的效果。从而,以下述方法检测一个非特许的盒式存储器(1)CPU30从程序ROM中读取一个打乱了的存储块,并将其值保存在系统存储器34的系统RAM中;(2)然后CPU330在地址总线331b上确定N个地址的正确序列令盒式存储器中的封锁控制电路(如果有的话)使地址加密器(如果有的话)停止打乱地址线;(3)CPU30像步骤(1)中那样从程序ROM中同一位置处读取一个未打乱的存储块;以及(4)CPU30比较打乱的与未打乱的存储块。
上述方法中的“N”应适当选择以防止被地址的顺序读取所误解锁,这种顺序读取通常是作为校验和计算或程序执行的一个部分而执行的。N=2为最小值并且只有当这些值不连续时才能接受。在较佳实施例中,将采用大约6个地址(N=6)的一个序列。所采用的地址的准确数量为锁存器的数量及用于实现地址解码器/加密器54的可编程部分中可利用的输入脚的个数的一个直接函数。锁存器及可利用的输入脚越多,实现封锁控制电路56的状态机就越大。
如果这两个块中包含完全相同的数据,那么该盒式存储器没有地址加密器54,因而是一个非特许的盒式存储器,而CPU便能采取相应的行动(例如,停机、显示一则消息然后停机、进入一个死循环等)。反之,如果从存储器中完全相同的单元中读出不同的数据块,则该盒式存储器的确有一个地址加密器54而认为该盒式存储器为一个特许的盒式程序存储器。
测试块可具有任何大小。合适的块大小是16位。此外,每次系统10校验一个特许盒式存储器时,不一定非测试同一存储块不可。再者,可以将封锁控制电路56设计成在地址总线31b上确立一个不正确地址时不令状态机进入封锁状态。从而使被测试的地址能与解锁系统的地址混合。
再参见图1A,其中示出了密致盘驱动器22与数据处理单元12之间的接口。两条总线控制CD驱动器22(1)一条用于控制CD驱动器22的DSA总线及(2)一条I2S CD数据总线。DSA总线是由I/O协处理器3-6生成的而I2S CD数据总线则是由A/V/CD控制器/协处理器32生成的。
参见图4,声频/视频/CD驱动器控制器/协处理器(A/V/CD控制器/协处理器)32电子设备是大部分包含在一块称作一个ASIC的定制的大规模逻辑芯片中的(ASIC是专用的集成电路)。符合这里的描述的一个A/V/CD控制器/协处理器32可从MSU有限公司(270Upper 4th Streect,WitanGate West,Central Milton Keynes,MK9 1DP England)购得。A/V/CD控制器/协处理器32包含一个处理器接口60、一个处理器高速缓存62、一个存储器接口/刷新器64、一个视频控制器62、一个中断控制器68、一个视频阻击器(blitter)70、一个CD驱动控制器72、一个数字信号处理器(DSP)74及一个DSP存储器76。处理器接口60、存储器接口/刷新器64及视频控制器66合起来称作视频/存储器控制器67。系统存储器34、中央处理单元30及其它设备位于A/V/CD控制器/协处理器32外面。
副系统总线61将各种设备电连接到系统存储器34上。六个可能的总线主控器(分别从最高优先级到最低优先级的次序)共享副系统总线61存储器刷新器54、视频控制器66、CD驱动控制器72、DSP74、阻击器(blitter)70及CPU30(通过处理器接口60)。在任何一个时刻只有总线主控器中的一个可控制到系统总线61(A/V/CD控制器/协处理器32与系统存储器34之间的副数据总线61a、副地址总线61b及副控制总线61c)。
视频/存储器控制器67控制副系统总线61,并将存储器定时信号(诸如CAS、RAS允许写入等)提供给连接在副系统总线61上的存储设备,如本技术中众所周知的。它还需要占用存储器周期(需要视频存储器周期来从系统RAM中读取视频数据;由于视频是由这一过程实时生成的,在需要视频数据时,视频逻辑必须访问存储器),并且在副系统总线61上实际上具有最高优先级,如前所述。视频线取出视频数据及刷新动态RAM(DRAM)的短时间间隔内,它暂停总线主控器的操作。它同时控制与CPU30的接口。
DSP74是一个单片的用于声音合成的甚高速处理器,可以以高达每秒33兆条指令(MIP)的速度远行。它能够经由一个DSP DMA控制器(未示出)访问副系统总线61,该控制器允许它将字节或字读出或写入系统存储器34。这些传送是以短脉冲串方式进行,并在DSP程序的控制下。DSP74实际执行程序,并将数据存储在本身的私用高速存储器76中。
CD控制器72的密致盘读取DMA通道允许系统将CD读取数据传送到系统存储器34中而不需要任何软件开销。它可以直接传送数据,它还包含一个CD块译码器。
中断控制器68将6种内部中断送至CPU30,视频中断(最高优先级)、模拟中断1(AI1)、模拟中断2(AI2)、模拟中断3(AI3)、CD块译码器中断、及DSP中断(最低优先级)。在CPU30执行中断确认周期时,中断控制器自动清除该中断。每一个中断可利用一个屏蔽位。
阻击器(blitter)70是一个用于快速屏幕更新与动画的一个图形处理器,用作CPU30或DSP74的一个硬件图形子例程。在阻击器(blitter)程序操作中它将成为总线主控器,因此可以在相当长的时间间隔中拥有副系统总线61。然而,对于CPU30,它的优先级并不绝对;在出现中断时,可要求它将副系统总线61放弃给CPU30。在系统级上,CPU30是最低优先级的总线主控器,然而,它能够完全控制其它硬件,因此,副系统总线61的使用完全在CPU30程序的控制下。
A/V/CD控制器/协处理器32有四个主要模块一个视频/存储器控制器67、一个密致盘读取DMA72、一个阻击器(blitter)图形协处理器70及一个DSP74声频协处理器。CPU30的地址空间被译码成A/V/CD控制器/协处理器32中一组8位寄存器。所有内部存储单元是在偶数地址边界上的;在适当时可执行字宽度的I/O读与写。在这一特定实施例中,可以不在字宽度的寄存器上执行字节宽度的写,而I/O周期也可不用于存取奇地址。
除了上述寄存器,A/V/CD控制器/协处理器32还生成三条来自系统总线31的备用通用I/O译码器线(GPI01、GPI02及GPI03)。每条线提供一个32位地址范围。通用译码器可以用于向A/V/CD控制器/协处理器32以外的设备提供三种低电平有效的芯片启动信号。在数据处理单元12中,通用译码器把地址范围译码到I/O协处理器36(GPI01)及两个盒式存储器插头座37a(GPI02与GPI03),对此上面已更全面地说明了。
视频/存储器控制器67执行四种功能视频定时、中断处理、视频显示生成、及存储器配置、刷新和定时。
视频/存储器控制器67具有一个可编程为能适应不同标准的电视及高达640×480VGA标准的监视器的灵活的视频定时发生器。同步脉冲的位置、消隐、显示区域、有效视频(当A/V/CD控制器/协处理器32正从存储器中取数据时)是在水平范围内以时钟周期并在垂直方向上以行号编程的。视频定时分成两个部分。水平定时是以时钟周期定义的并且是由若干个十一位寄存器确定的。垂直定时是以显示行定义的并由若干个十位寄存器确定。
共有九个水平寄存器水平周期、水平同步、水平消隐结束、水平消隐开始、水平显示开始、水平显示结束、水平取出开始、水平取出结束及水平垂直同步。写入水平周期寄存器的值确定以时钟周期表示的水平行长度。在一个实施例中,行长度比写入水平周期寄存器中的数大一。所需数字的公式为水平周期=(行长度×时钟频率)-1。
写入水平同步寄存器中的值确定水平同步脉冲的宽度。以时钟周期表示的水平同步宽度由水平周期寄存器与水平同步寄存器之间的差给定。所需的数字的公式为水平同步=水平周期-(水平同步宽度×时钟频率)。水平消隐结束寄存器确定何时水平消隐结束并且是以时钟周期表示的后沿的宽度。水平消隐开始寄存器确定水平消隐开始位置。所需的数字的公式为水平消隐开始=水平周期-((水平同步宽度+前沿宽度)×时钟频率)。
水平显示开始寄存器指定以时钟周期表示的水平同步脉冲后沿之后生成视频的时间。如果水平显示开始寄存器大于水平消隐结束寄存器,视频/存储器控制器67在它们之间输出边界色。写入这一寄存器的值通常应选择为将画面放置在电视屏面的中央。做到这一点的寄存器数字的公式为水平显示开始=(水平消隐结束+水平消隐开始-(有效显示宽度×时钟频率))/2。
水平显示结束寄存器指定显示结束位置,从而以象素表示视频显示的宽度。它应以下述数字来编程水平显示结束=水平显示开始+(象素数×每一象素时钟数)。如果水平消隐开始大于水平显示结束,则输出边界色直到消隐开始为止。
水平取出开始寄存器确定行上第一次视频取出的位置。这一寄存器应编程为在显示开始时正好填充完十六字节象素缓冲存储区。在实践中,这意味着水平取出开始寄存器中的值是由水平显示开始寄存器中的值,减去一个取决于显示模式的常数后的差给定的。下表中包含在每一象素对应的位数与每一象素对应的时钟数的各种组合下这一常数的值。例如,如果每一象素为四位而每一象素为五个时钟,则常数为160。类似地,如果每一象素为四位而每一象素为一个时钟,则常数为32。注意,如果每一象素为16位且每一象素为一个时钟,则没有可用的常数。
每一象素时钟数5 4 3 2 1每一象素位数4 160128 96 64328 80 64 48 32161640 32 24 16无水平取出结束寄存器确定行上视频取出结束的位置。原则上,这便是水平显示结束的值减去上述常数。然而,水平取出开始应当这样取值,使得水平取出结束寄存器减去水平取出开始寄存器的差为上述常数的倍数。
水平垂直同步被确定为出现在若干行上的较宽的同步脉冲。这些脉冲的宽度是由水平垂直同步寄存器确定的,该寄存器应编程为水平垂直同步=水平周期-(垂直同步宽度×时钟频率)。
视频/存储器控制器67也有大量垂直寄存器垂直周期寄存器、垂直同步寄存器、垂直消隐结束寄存器、垂直消隐开始寄存器、垂直显示开始寄存器、垂直显示结束寄存器、视频中断寄存器及光笔寄存器。垂直周期寄存器指定每一个场中的视频行数。垂直同步寄存器确定生成垂直同步的行数。它应编程如下垂直同步=垂直周期-垂直同步行数。
垂直消隐结束寄存器确定一次垂直同步后消隐多少行。垂直消隐开始寄存器确定垂直同步前消隐多少行。它应编程如下垂直消隐开始=垂直同步-垂直同步前消隐行数。
垂直显示开始寄存器确定有效视频的第一行。如果这一寄存器大于垂直消隐结束寄存器,则其间的行显示边界色。为了将有效区定位在屏面的中央,这一寄存器应编程如下垂直显示开始=(垂直消隐结束+垂直消隐开始-有效行数)/2。垂直显示结束寄存器确定有效电视的最后一行。如果这一寄存器小于垂直消隐开始寄存器,则其向的行显示边界色。为了将有效区定位在屏面的中央,这一寄存器应编程如下垂直显示结束=(垂直消隐结束+垂直消隐开始+有效行数)/2。
视频中断寄存器确定在其中生成视频中断的视频行。这一中断可通过INT寄存器允许或禁止。当视频机制停止在显示行的末尾上时,便发生该中断。处理器可用它来改变显示模式或执行束同步动作。该寄存器可在一个场内重新编程,以提供每一个场多次中断。
A/V/CD控制器/协处理器32有一个光笔(或光枪)输入。在这一输入的每个场的第一上升沿上,分别将水平计数与垂直计数传送到寄存器LP0与LP2中。这些值能转换成所指向象素的X与Y坐标。如果在这一场中出现了光笔输入的上升沿,便对寄存器STAT的位1置位,紧接垂直同步之前,应读取这一寄存器位。
下表中提供所示的各种显示格式的上述寄存器的典型值。将下面的值加载在寄存器中之后,便通过设置寄存器MODE2中的VIDEN位而启动视频定时发生器。
<p>视频/存储器控制器67有三种可资利用的彩色分辨率每一象素4位、每一象素8位及每一象素16位。在4与8位模式中,象素为逻辑色,它是存储在调色板中的18位物理彩色的索引。在16位模式中,该象素为一个物理彩色,其中位0至4为兰色、位5至10为绿色而位11至15为红色。由于绿色有6位,但兰色与红色只有5位,所以从芯片输出的兰色与红色的最低位在16位模式中永远为逻辑0。边界彩色是作为一个16位象素来显示的一个16位寄存器。
在8位模式中,该象素寻址整个256×18调色板。在4位模式中,该象素寻址调色板中的16个表目,在这一情况中,地址的高4位由变址寄存器提供。
8位模式可利用两种变型。在彩色保持模式中,如果该象素取值0,则显示前一象素的颜色。这可以用于通过设定最左面的象素而填充大面积的彩色。
在可变分辨率模式中,最高位象素确定该象素作为一个7位象素还是两个三位象素显示。如果该位是清除的,则该象素作为一个7位象素显示;如果该位是设置的,则首先显示位0至2,随后显示位4至6。在这一情况中,两个高分辨率象素寻址调色板的8个表目。地址的5个高位是由变址寄存器提供的。可变分辨率模式对于在分辨率较低但色彩更丰富的背景中显示高分辨率文字的小区域是有用的。这一模式不能在每一象素一个时钟分辨率模式中使用。
在8位模式中,可以牺牲任何一位用于其它目的。例如,第一位可用于冲突检测中来确定“热点”(hot spot)。另外,某几位可用于编码图象“深度”从而一个图象可以移到另一个图象的前方或后方。为了牺牲一位,在一个屏蔽寄存器中相同的位被置位,而来自变址寄存器中的对应位取代掉该位。
有五种象素宽度一个时钟、两个时钟、三个时钟、四个时钟及五个时钟。这些时钟对应于围绕24MHz、12MHz与6MHz的基本时钟(dot clock)。最高基本时钟可以不用于每一象素16位显示模式。另外两种组合一个时钟8位及两个时钟16位只能用于配备了32位DRAM的情况。如果配备了外部硬件,A/V/CD控制器/协处理器32能够同步锁定(GEN-LOCK)一个外部视频源并以象素挨象素的原则将本地视频与外部视频混合(包在外面)。
屏幕的存储器映象不受视频显示器宽度的限制而是可以独立定义的。屏幕的基地址可位于系统存储器34中位何位置上。屏幕存储器的宽度为从128至2048字节的2的幂。屏幕的高度为从32K至2兆字节的2的幂。同一行上的视频地址在较小的边界内卷动。这一配置允许屏幕放置在一个较大的虚拟屏幕中并在其中扫视与滚动。
多个寄存器控制上面讨论的视频模式。视频模式寄存器控制上面列出的特征。位0与1确定每一象素的位数。位2与3确定以时钟周期表示的象素宽度。位4至6确定视频地址中的第一间隙,从而决定以字节表示的显示器宽度。位7至9确定视频地址中的第二间隙,从而决定以字节表示的显示器高度。位10将同步输出转换到输入,它能复位水平与垂直定时器,用于快速锁定在一个外部视频源上。位11控制“结壳”(encrustation),“结壳”即使用一个外部视频多路转换器叠加一个外部视频源。该多路转换器是由A/V/CD控制器/协处理器的“INC”脚控制的。色彩中选择若干位用于控制结壳。位12控制边界结壳,它与位11相同,但只作用在边界色彩上。位13设定可变分辨率模式。位14设定色彩保持模式,其中彩色0由当前扫描行中的前面的非0色彩替代。位15根据位2、3与15启动3与5个时钟宽度的象素的模式,如下表中所示。
视频/存储器控制器67还有一个象素屏蔽寄存器及一个调色板索引寄存器。对于在屏蔽寄存器中设置的每一位,象素中的对应位被来自变址寄存器的位所取代。变址寄存器中的高位构成四位象素的调色板地址的高位部分。边界彩色寄存器是一个定义边界色彩的15位寄存器。这一色彩是以与16位象素相同的方式显示的位0至4为兰色、位5至10为绿色而位11至15为红色。
视频/存储器控制器67还有两个定义系统存储器34中的24位屏幕基地址的屏幕地址寄存器。这便是屏幕上左上角象素的地址。
视频/存储器控制器67还有一个辅助视频模式寄存器MODE2,它提供对视频与各种测试逻辑的附加控制。位0启动光笔寄存器以便能读取水平与垂直计数器。位2启动视频定时器,位3与4确定刷新频率,1表示时钟/128的刷新频率,2表示时钟/256的刷新频率而3则表示时钟/512的刷新频率。大多数DRAM要求64KHz或以上的刷新频率。刷新控制器一直等到需要8个或8个以上刷新周期为止,然后请求副系统总线61并在RAS周期以前进行所需要的数目的CAS。当设置了位6时,视频模式为双重缓存的并且只能在消隐期间改变。CPU30设置此位用于在分离屏幕操作中的清楚的模式改变。位7反转垂直同步的极性。位8反转水平同步的极性而位9则不使用。
调色板为在RAM F10000H-F103FFH处的一个256×18位的块。各项包含绿、红与兰中每一种的6位。每一项延伸通过两个字。兰与绿的位出现在高位字上。红色的位出现在低位字上。高位字的位2至7为兰色;高位字的位10至15为绿色而低位字的位2至7为红色。为了在调色板中写入一个项,CPU30必须首先将红色位写入低位字中,然后将绿色与兰色位写入高位字中。CPU30只能在电视上出现边界或消隐或斑点时才能写入调色板。
高速缓存62不是本义上的为CPU30预取指令的一个高速缓存。实际上,高速缓存62是位于F14000H至F143FFH的一个512×16位静态RAM,它能被CPU30用于变量、栈或程序代码来加速程序的执行。它由静态RAM构成但不会页面出错。将数据、栈或程序代码放在高速缓存62中能加快存取并减少页面出错。在本实施例中,高速缓存是小的并且不允许在高速缓存区中写入字节。中断服务侧程也不许压字节进栈。
视频/存储器控制器67支持6个中断源视频输入中断、三种模拟中断、CD块译码器中断、及一个DSP74中断。模拟中断允许实现简单的模数转换器。由一个二极管、一个电容器及一个电位计实现一个单稳态振荡器。电容器由垂直同步放电,并以取决于电位计的设定的一种速率开始充电。当电容器上的电压达到对A/V/CD控制器/协处理器32的输入阈值时,便生成一个中断。然后,处理器便能读取垂直计数器以得到电容器的充电速度,从而得到电位计的设定值。
视频/存储器控制器67还有一个中断允许寄存器,允许独立地允许或禁止所有六种中断。在中断确认写寄存器的任何一位中写入一个逻辑“1”便清除了对应的中断。中断读寄存器反映所有等待中的中断。
视频/存储器控制器67将80376CPU30的16兆字节地址范围译码成下述存储器映象8兆字节DRAMO(0H-7FFFFFH),7兆字节DRAM1(800000H-EFFFFFH),64K字节ROM0(F00000H-F0FFFFH),64K内部存储器(F10000-F1FFFFH),以及一个896K的ROM1(F20000H-FFFFFFH)。64K字节内部存储器中包括调色板RAM、阻击器(blitter)寄存器、及DSP寄存器与存储器。调色板地址范围上面已指出。阻击器寄存器位于范围F10400H至F107F H中。DSP存储器位于F10800H至F18000H。
板上屏幕RAM及系统RAM是512K的DRAM。包括屏幕/系统RAM的板上DRAM可以是16位或32位宽的。适用的DRAM为东芝公司制造的TCS14170BJ256千字节×16位存储器芯片。DRAM的大小是由A/V/CD控制器/协处理器32在复位时确定的,但并不直接影响CPU30。
然而为其它候选总线主控器留下较多可利用的带宽可使视频/存储器控制器67操作得更快。某些显示器与阻击器模式只可能用于32位存储器。可以连接两个DRAM体,如上所述。如果连接少量的DRAM,则它们在上面所示的整个存储器映象中重复。
引导ROM总是16位宽的。引导ROM包括两块由许多厂家制造的27C512可擦除可编程只读存储器,从而给出128K的引导ROM。在一次复位后,包含ROM与内部存储器的从F00000H至FFFFFFH的一兆字节窗口在整个16兆字节地址范围内重复。这使得多种处理器能用A/V/CD控制器/协处理器32来引导。上述存储器映象是CPU30写入存储器式寄存器时第一次采用的。视频/存储器控制器67可能时便在系统存储器34上执行页式周期。它比正常的存储器周期更快,并且在连续的读与写出现在同一页中时发生。视频/存储器控制器67需要知道编程在存储器式寄存器中的DRAM的列数。在存储器式寄存器中,位0与1确定DRAM中的列数,0表示256列,1表示512列,2表示1024列,而3则表示2048列。
视频/存储器控制器67支持7种传输一个正常的DRAM周期(4个时钟),一个页式DRAM周期(两个时钟),ROM周期(6个时钟),内部存储器(2个时钟),外部I/O(6个时钟),中断确认(2个时钟),及内部I/O(2个时钟)。CPU30以比实际传输多一个时钟周期的周期循环。内部总线主控器能以传输时间为周期循环。
视频/存储器控制器67使用一个2X(两倍速度)CPU30时钟并且是电视彩色副载波频率的倍数的一个晶体的晶体振荡器。这一晶体时钟被缓存并输出到CPU30。将同一时钟除以2并将其作为主系统时钟输出。这一时钟是通过一个独立的管脚输入到A/V/CD控制器/协处理器32的。这样输出与输入时钟的理由在于这样便能通过在两条路径之一上加上小的延时而在一个方向或另一方向上调整CPU2X时钟与主系统时钟之间的相对时滞。晶体频率还由一个可编程分频器分频,它能用一个1与15之间的整数分频晶体频率,并生成一个带有均匀占空比的输出波形。这是用作电视彩色副载波的。
色度分频器寄存器是定义电视彩色副载波(色度)对2X晶体频率之比的一个4位寄存器。它应编程如下色度=2X晶体频率/色度频率-1。
视频/存储器控制器67还有一个状态寄存器。如果设置了状态寄存器位0,则应将视频定时设定为PAL(欧洲电视信号标准)。如果清除了状态寄存器的位0,则视频定时应设定为NTSC。如果设置了状态寄存器的位1,则当前场中有一次光笔输入。这一位是由光笔设置而由垂直同步清除的。
在复位时,可将视频/存储器控制器置于这样一种模式,此后它只响应两个字宽的I/O单元及64K存储器单元。I/O单元的实际位置由一个芯片选择输入确定,从而这些单元可从外部确定。这种“窥孔”模式允许A/V/CD控制器/协处理器32只占用系统10的I/O与地址寄存器映象中的小的间隔。
寄存器是32位宽的,因此必须作为两次16位存取来存取。为了寻址A/V/CD控制器/协处理器32中的所有I/O寄存器,首先将所需的寄存器的正常I/O地址写入低位字(a [1]低)中,然后便可在高位字(a[1]高)中读取或写入该寄存器。为了寻址A/V/CD控制器/协处理器32内部与外部的所有存储器,可将64K窗口移动到16兆地址空间中的任何64K边界上,这16兆地址空间通常是由视频/存储器控制器67通过写入存储体寄存器来译码的。存储体寄存器是一个8位寄存器,它在窥孔模式中寻址存储器时提供最高的8位。例如,为了访问原先在F10000H的调色板,CPU30必须在存储体寄存器中写入0F1H,然后在由外部芯片选择所确定的窥孔位置的底部读与写。
阻击器(blitter)70是一个图形协处理器,其目的为尽可能快速地执行图形建立与动画(受存储器带宽的限制)。它执行由CPU30与DSP74写入存储器的命令。通过从系统存储器34中读取新的命令,它能执行任意长度的图形操作序列。当它正在执行图形操作时,阻击器70便成为一个副系统总线61主控器,而拒绝CPU30的一切总线活动。这是合理的,因为阻击器70正在用于执行本应由CPU30执行的操作,并且因此而加快程序操作。这还消除了阻击器操作对任何同步控制编程的需要,以及对阻击器70中任何中断生成硬件的需要。然而,为了允许其它两个处理器(DSP74与密致盘DMA)之一的实时编程,阻击器70可暂停其操作并将副总线61授予DSP74,或密致盘DMA通道,如果它们需要DMA传输的话。在出现中断时,它还将挂起自己,并将副系统总线61放弃给CPU30。在这些传输的任何一次中,当前的操作被挂起,但在中断信号变成不活跃或者在DSP74的DMA存取完成时将会重新启动。
最好将阻击器70的操作看成是一个简单的程序从存储器读取命令for n=O to outer_count从存储器读参数for m=O to inner_countif SRCEN then从存储器读源if DSTEN then从存储器读目的地将目的地写入存储器next mnext nCPU30或DSP74将命令与操作数写入存储器中。
阻击器70在A/V/CD控制器/协处理器32的I/O空间中有若干寄存器(1)两个可写的阻击器程序地址寄存器,它们与两个可读的阻击器目的地寄存器共享同一个I/O地址;(2)一个可写的阻击器命令寄存器,它与第一可读的阻击器源地址寄存器共享同一个I/O地址;(3)一个可写的阻击器控制寄存器,它与第二可读的阻击器源地址寄存器共享同一I/O地址;(4)一个可读的内部计数寄存器;(5)第一个可写的阻击器诊断寄存器,它与一个可读的阻击器外部计数寄存器共享同一I/O地址;(6)第二个可写的阻击器诊断寄存器,它与一个可读的阻击器状态寄存器共享同一个I/O地址;以及(7)第三个可写的阻击器诊断寄存器。
阻击器70可以以多种模式操作来执行图形与块传送操作。阻击器70具有一种分成三大独立块的内部体系结构数据路径、地址发生器及定序器。数据路径包含三个数据寄存器源数据寄存器、目的地数据寄存器及模式数据寄存器。数据路径还包含一个多功能比较器来允许智能的阻击操作,及一个逻辑功能单元(LFU)以生成输出数据。
地址发生器包含三个地址寄存器它们是用于取阻击器命令的程序地址寄存器、源寄存器与目的地址寄存器。它还包含一个带有用来更新地址的相关联的步长寄存器的算术逻辑单元(ALU)及一个用于生成输出地址的多路转换器。
定序器从软件方面说就是阻击器70所运行的程序,它带有两个循环(一个内循环及一个外循环)及若干过程,如上面以简单的程序所例示的。虽然其操作的各部分是根据阻击器命令寄存器中的标志有条件地执行的并且循环计数也是命令的一部分,但该程序是固定的。
数据路径包含三个数据寄存器及两个数据操纵块能够以多种有用的方法组合数据寄存器的内容以生成输出数据的逻辑功能单元,以及能够在数据上执行某些比较来禁止写操作,及有选择地停止阻击器操作的比较器。
数据路径能够处理四种宽度的数据32位、16位、8位与4位。长字(32位宽)用于执行快速块传送及填充。象素(4、8或16位宽)可使用所有的阻击器模式操纵,诸如绘线型、多平面操作、字符绘制等。
大多数数据路径是16位宽的,它是最大的屏幕象素大小。然而,源数据寄存器是32位宽的,而且不论逻辑功能单元的模式如何,源数据寄存器的高16位是用于生成32位模式中写入的数据的高16位的。从而,有两个16位宽的寄存器(模式数据与目的地数据)及一个32位宽的数据寄存器(源数据寄存器)。源与目的地数据寄存器是在内循环中启动对应的读周期时,从系统存储器34中的源与目的地址中加载的。然而,所有这三个数据寄存器都是在阻击器操作开始时带有模式数据加载的,它可用作生成输出数据中或比较器中的附加数据源。例如,模式数据寄存器中的数据可以是一个屏蔽、一个用于写入的模式或者一个参照值。模型数据是加载进源数据寄存器中的两个字中的。
逻辑功能单元生成写入系统存储器34中的目的地中的输出数据。它能执行源与目的地寄存器象素的任何组合。“源数据象素”可选自源数据寄存器或数据模式数据寄存器二者之一。LFU选择来自数据寄存器的两组输入数的四种布尔小项(A&amp;B、A&amp;B、A&amp;B与A&amp;B)中任何一个,并生成两个所选择小项的逻辑“或”。这便允许输入数据的任何逻辑组合;从而存在着16种功能的可能性。
在32位模式中,LFU通常是设置为生成源数据的,这是因为它只有16位宽。在一个长字写入中写入的高16位永远是从源寄存器的高16位中导出的。
比较器能在源、目的地、与模式数据寄存器中的数据上执行各种比较。如果满足了其比较条件,它便生成一个禁止信号。该禁止信号用于禁止一个写入操作,并且可以选择用于停止阻击器操作。比较器也可用于为冲突检测及系统存储器34的搜索操作提供象素位面效果以给出透明彩色,并作为字符绘制的一种帮助。
可以通过赋予每一个象素一个位面号来支持多位面操作。这一模式只适用于4与8位象素。在8位象素模式中,8位中的两位(位6与7)用于给定两或四个位面;而在4位(半字节)象素模式中,四位中的一位(两个半字节中的位3与位7)用于给定两个平面。如果目的地数据的位面号不等于或大于源数据的平面位,或者它们的任何组合,比较器能生成一个禁止输出。这意味着正在写在屏幕上的数据是被已经出现在另一位面上的数据屏蔽的。
如果整个源象素等于或不等于目的地象素时,比较器能生成禁止输出。例如,这可用于在系统存储器34中搜索一个特定的值,而更重要的是,用于指定一种色彩是透明的并将该透明的色彩值保持在一个数据寄存器中。这适用于16、8或4位象素。
阻击器70还有一个比较器的位至象素扩展模式操作,这一比较器操作允许诸如用于字符绘制的数据的位至象索扩展。在这一模式中,比较器根据内计数器的值从源字节中选取一位并且在该位为逻辑“0”时禁止写操作。
阻击器70作好处理三种象素分辨事模式的准备。它们是每一个字对应于一个象素的16位模式,每一个字节对应于一个象素的8位模式,及每一个字节对应于两个象素的4位模式。在8与16位象素模式中,数据路径每次处理一个象素,而操作是直截了当的。然而,在4位象素模式中,只有从系统存储器中读出或写入系统存储器的半个字节是当前的象素,因此,在数据路径上加上一定的附加要求。在一次4位模式的写操作中,不变的目的地数据写入不对应于当前象素的半个数据字节中。从而,在4位模式中必须一直启动目的地读取(将控制位DSTEN置位)。因为没有在主存储器中写入小于一个字节的方法,所以才必须这样做。
源4位象素地址与目的地4位象素地址也可能指向RAM中对应的字节的不同的一半。如果这样的话,一个移位器交换源数据中的两半。在4位模式中,模式字节的两个半字节(半个字节;4位)通常必须设置成相同的值。注意,阻击器70中的程序中的象素不必要与显示宽度匹配,并且传送大量数据的最有效方式是32位模式。回想一下这种模式的传送必须是长字对齐的并且该系统必须装有32位的RAM。
阻击器70还有一个地址发生器。该地址发生器包含三个地址寄存器,一个增量或步长寄存器、一个地址加法器、及一个地址输出多路转换器。这三个地址寄存器中保存源地址、目的地址及程序地址。这些寄存器中每一个都是允许阻击器70寻址16兆字节的24位寄存器。此外,源与目的地地址寄存器包含用于4位象素模式的半字节位。程序地址寄存器保存取出的程序的地址,并且每当用它执行了一个存储周期时便将它增加一个字。这一寄存器总是偶数的,从而位0必须总是逻辑“0”。
源与目的地址每经过一个周期之后便能更新,而在其余时间,则使用一个加法器而使它们对它们所指的目标具有相当的灵活性。所有的源与目的地址更新都可以有选择地在地址寄存器的低16至19位上执行。这说明阻击器70将有效地操作在64K、128K、256K或512K页中。在这一模式中,如果一个地址在一页中溢出,它将环绕而使上溢或下溢消失。
阻击器70还有一个地址加法器,它是一个用于更新地址的25位宽加法器。它允许将一个常数值0.5、1、或2或者存储在步长寄存器之一中的一个变量加在一个地址值上。它也能减去同样的值。第25位便是上面所述的地址的半字节部分。取决于当前的屏幕分辨率的设置,一个象素的增加在地址上具有不同的效果。
所有地址寄存器都是在适当的存储周期结束时自动更新的;源地址寄存器在“源读取”周期,而目的地址寄存器则在“目的地写”周期。可使用阻击器命令中的SWRAP与DWRAP位使地址垂直环绕,以及使用阻击器控制寄存器中的SLWRAP与DLWRAP值水平环绕。
地址输出多路转换器向系统存储器34提供外部地址。它提供三种地址源地址、目的地址及程序地址。这些地址是直接从对应的地址寄存器中导出的。
当阻击器70正在绘线时,地址寄存器是以与正常方式不同的方式使用的。目的地址寄存器用作绘线地址,而源地址寄存器与步长寄存器则分别用作δ1与δ2。在绘线中,从δ1减去δ2,所产生的借位输出判定在目的地址寄存器上加上什么。进一步的细节请参阅下面有关绘线的部分。
阻击器70还有一个控制阻击器70的操作的定序器。控制流最好在两级上来考虑。外循环管理总的控制流而内循环则执行实际的阻击(blitter)或绘线操作。外循环中的三部分为命令读取过程、参数读取过程及内循环。
内循环执行实际的阻击或绘线操作。一个内循环周期可包含多达三个存储周期。它们是从源地址中读取、从目的地址中读取及写入目的地址。所有三个周期都是可选的。如果该循环中包含一个源读取、或者一个源读取与目的读取,则在目的地写入出现之前先测试比较器禁止机制。这使得在满足比较器禁止条件时能够绕过写周期。当满足比较器禁止条件时,便有可能令当前的操作停止并将控制返回给CPU30。然后,程序可以检测地址寄存器来判定出现禁止的位置,从而可执行冲突检测。然后,CPU30可判定是否要恢复操作或放弃它。内循环执行操作一直到内循环计数器到达零为止。内循环计数器是一个10位计数器,因此,内循环能重复1至1024中任何次数。
在出现比较器写禁止时阻击器70通过允许操作停止来为冲突检测作准备。当这一情况出现时,控制便返回给CPU30,然后CPU30检验阻击器70的内部状态来判定什么事件导致了这一冲突。在这一点上,CPU30可选择允许阻击器70恢复其正在执行的操作,或者可将其复位到其空闲状态。在阻击器70可用于其它操作之前,必须发布一条复位或恢复命令。注意,当阻击器70处于暂停状态中时,一个新的值可能被写入命令寄存器中,从而禁止冲突停止机制。
参数读取过程是一个非常直接的序列,它将一组新的参数加载到内循环中。它顺序地从存储器中读取内循环计数器值、步长寄存器值、以及用于预制数据寄存器的模式值。内计数实际成为内循环执行的次数。步长寄存器用于地址增量,而模式寄存器则用于数据操纵。
参数读取过程是在阻击操作开始时作为命令读取过程的一部分调用的,并且也在阻击操作需要时调用,如由PARRD控制位所确定的。额外的参数读取出现在内循环的传送之间以允许参数迭代,从而允许诸如不规则形状涂色及行程编码数据的解压缩等操作。
命令读取过程用于启动一个新的阻击操作。阻击器70从一种不活跃的复位状态启动,该状态表示阻击器70的正常的非活跃状态。从这一状态执行一个命令寄存器写入来启动阻击器70,在这之前通常是对程序地址寄存器写入一次。将一整组操作参数从自动增量的程序计数地址装入,并将控制从命令读取循环中转出。在完成了一次阻击操作时,便从程序计数地址读取一条新的命令,而如果这一命令将阻击器70留在运行模式中时,则加载一组新的参数并启动另一次操作。否则阻击器70进入其停止状态并将副系统总线61返回给CPU30。上述机制使阻击器70能够执行任意长度的图形命令而不需要任何处理器介入。这是极为有用的,因为与阻击器存储器读取相比,处理I/O写周期是相对地比较慢的。
外循环的正常操作在从命令读取循环退出时开始。然后进入参数读取循环来读取第一组参数,并在操作开始前在内计数器加载了其初始值后进入内循环。然后将外计数器减一,并当它为零时进入命令读取循环。然后,用步长寄存器的内容更新寄存的源地址与目的地址两者或其中之一。然后在再度进入内循环之前,有选择地进入参数读取循环来更新各种内循环参数。这两种循环使阻击器70能够以二维屏幕结构来不断进行操作,外循环地址寄存器的更新将屏幕地址指针移至下一行的结构的起始点上。使屏幕结构参数能在逐行的基础上加以改变,参数读取循环提高了灵活性。
阻击器70还有一个存储器接口状态机,它控制所有存储器周期的周期定时生成及总线仲裁。阻击器70在一个阻击器命令序列的持续时间中从CPU30接管副系统总线61的控制权。这会造成上面所讨论的总线交接的等待时间,但一旦阻击器70接管了副系统总线61,便立即开始操作。在较佳实施例中,当A/V/CD控制器/协处理器中的任何设备具有了对副系统总线61的控制时,阻击器70便允许CPU30访问盒式ROM50及高速缓存62。然而为了简化,作为替代,当CPU30不再是副系统总线61的主控设备时,阻击器70也能使CPU30停机。
存储器接口在DSP74或密致盘读取通道之一请求副系统总线61时,并在完成任何当前的存储器周期之后便立即将副系统总线放弃给它们中的一个。
除非在阻击器控制寄存器中受到屏蔽,中断也将使阻击器70暂停操作。阻击器70检测中断线本身并用它来暂停操作。一旦中断线恢复到其原先的状态,便立即恢复操作,这出现在CPU30写入确认端口时。这不一定是中断服务例程的结束。因此,程序员必须谨防堆栈混乱,并且在一个服务例程中通常应保持禁止中断。一旦中断线被清零且无来自CPU30的介入,阻击器70便立即恢复操作。阻击器70只响应内部中断源(视频中断、模拟输入中断与密致盘中断)。任何外部CPU中断源对阻击器70没有影响。
阻击器70具有多种操作模式。阻击器70执行的最简单操作涉及将一块系统存储器34复制到另一块上以及用一个预定的值来填充一块系统存储器34。这些操作可在系统存储器34的线性部分上及在任意的屏幕矩形上执行。如果这是一次复制操作,则目的地数据寄存器用作被修改的系统存储器34的地址,而源地址寄存器则用作被复制的数据的地址。
当操作要在存储器的线性区域上执行时,大多数地址控制位将被设置为零。不使用步长寄存器,唯一的要求是适当地设置DSIGN与SSIGN来确定用地址增加还是地址减小来进行复制。注意,如果未设置符号位,则放置在地址寄存器中的初始值应为在其上执行操作的区域的底部,而当设置了符号位时,更应为顶部。在这两种情况中,读出或写入的第一个象素将是针对第一个地址。操作长度将放置在内计数器中,而外计数器则设定为一。
如果正在其上操作的块非常之大,则可能有必要使用内循环与外循环计数器两者,而在其上操作的象素的数目则将由内外两个计数器值的积给出。当源与目的地数据两者或其中之一为矩形而不是线性区域时,则内循环计数器中包含矩形宽度而外循环计数器中则为矩形高度。
将适当的步长寄存器设置为从矩形的右侧绕到下一行的左侧的地址增量。根据源或目的地是否为矩形来设定SRCUP与DSTUP位。在每一象素8位或8位以上的模式中,既不用SRCEN也不用DSTEN来填充存储器,对于存储器复制应设置SCRCEN位。在4位象素模式中,一直必须设置DSTEN,从而执行一个目的地读取而防止破坏其它象素。注意,使用这一方将比不用时为慢。
阻击器70根据著名的数字微分分析器(DDA)算法绘线。这一算法的基础是,对于一条给定的线,对于每一个给出的象素,其X地址或Y地址中的一个总是增加的,而当满足适当的算术条件时,则另一个也是增加的。阻击器70通过重复地从一个工作值中减去dx或dy中的较小值并在出现下溢时加上较大值这种方法来计算导致有条件增量的算术条件,实际上使用除法来计算斜率。记号“dx”表示该线段所对应的X轴上的长度并且是由|(x1-x2|给出的,其中x1与2为两点的X坐标,而竖道则表示它们之差的大小即绝对值。从而,如果从(x1,y1)画一条线到(x2,y2),则dx=|(x1-x2)|而dy=|(y1-y2)|。从它们中,D1(上面称作δ1)由dx与dy中的较大者给出,而D2(上面称作δ2)则由较小者给出。则对于所绘的每一个象素,从初始设定为D1/2的工作值中减去D2,而这一减法的结果的符号(指示下溢)便是屏幕地址更新的条件部分的算术条件。当这一下溢出现时,便在工作值上加上D1的原来值。可以看出dx对dy之比将给出这一下溢与回加的出现次数。当然,它们之间的比便是该线的斜率。
在阻击器命令中设置用于建立一条线的绘制的值的方法如下该线的起点便是目的地址,将D1放置在源地址寄存器的位10至19中,并将D1/2放置在位0至9中。虽然在要给出该线的两个端点时应当使用D1加1,但D1也是内计数器的值。D2是放置在目的地步长寄存器中的。如果DX大于DY则设置YFRAC标志,否则将其清零。SSIGN给出X地址更新的符号,DSIGN给出Y地址更新的符号。
在绘线时,在计算线地址时占用了地址部分中的所有寄存器;因此在绘线时,阻击器不能够从其它任何地方移动数据。因此,写在线地址上的数据必须是根据逻辑功能单元直接由模式数据给定的或者是由模式寄存器及已经在那里的数据组合而成的。因此,不要设置SRCEN,否则阻击器可能生成看起来随机的数据。在绘线时,内计数器是设置成线的长度的,而外计数器则设置为1。在每一象素8或8位以上的模式中,除非用于读-改-写操作,不需要设置DSTEN。在每一象素4位的模式中,则必须一直设置DSTEN,以免目的地读取时破坏其它象素。
阻击器70还具有在一次单一的操作中在屏幕上绘制字符的能力。就阻击器70而论,字符绘制涉及绘制宽达8个象素及任意高度的一个矩形区域。在这一区域中的象素根据一种位模式或者写入或者保持不变。这一模式不限于字符绘制,也可用于放大作为一个单色位面存储的任何图形。
在字符绘制中,源寄存器寻址通常作为字型的一部分的位模式,其中各字节对应于字符的一行。从而,阻击器字体可以宽达8个象素,然而也可采用更宽的字体,只是绘制一个字符需要一次以上的阻击器绘制操作而已。字符绘制主要是将一个块从位于系统存储器34中的字符字型传送到目的地址。
数据是这样排列的,对应于最左边的象素的位在最低有效位中,而一个字符的顶部在最低地址上。如果数据宽度小于8个象素,则不使用字体数据的最低有效位。
目的地址寄存器用于寻址要绘制字符的屏幕区域。通常这一区域已被上一次阻击器操作清成所要求的背景颜色。将目的地址初始化成字符的左上角。要绘制的字符为一个矩形,因此,相应地对目的地址进行编程。将内计数器设置成字符的宽度,而将外计数器设置成其高度。目的地步长寄存器设置成屏幕宽度减去字符宽度。DSTUP位用于允许每次通过内循环时更新目的地址。
设置内循环控制位DSTEN与SRCENF,SRCENF存在的原因便是字符绘制。这使得每一行的字型字节只读出一次。比较器用于控制象素的绘制,因此置位CMPBIT控制位来启动其位至字节的扩展机制。
要涂的彩色是作为模式设置的,并且它通常保存在模式数据寄存器中。在4位象素模式中,置位DSTEN,并且目的地数据寄存器将保存读取的值,从而使该字节的另一半可以不受干扰地写回去。源数据寄存器保存字体模式,如上所述。
阻击器旋转与比例模式使用描影(shadinq)ALU,但不是生成三个基于DDA的数据值,而是生成两个基于DDA的地址值X与Y。通常这两个值用于在任意角度与比率上横切一个源数据域,从而使目的数据对应于一个成比例缩放与/或旋转过的变体。
红色值发生器给出X值,而绿色值发生器给出Y值。不使用兰色值发生器,显然描影不能结合这一模式使用。因为旋转要求比描影更高的精确度,所以在X与Y值上加上4个附加的整数位。这些位设在旋转寄存器0和旋转寄存器1中。所有的计算都是执行到10位精度的。
如描影一样,在内循环中画完每一个象素之后将δ值加到X与Y上。在外循环中加上步长值,并且为了加上它们而必须设置SRCUP与DSTUP标志。δ与步长值可以是正的或负的,并且与描影模式不同,不会出现加或饱和。
通常,转动与比例是通过将目的地址指针设置为在目的矩形上执行正常光栅扫描而进行的,同时使源指针以一个适当的斜率与比率横切源数据。这保证目的数据是连续的,并且不要求不必要的阻击(阻击器操作)。如果目标区域不是矩形的,则源数据应当用一种透明的颜色包围。
一条阻击器命令是作为存储器中的一个数据表给出的。阻击器70将表的内容加载在其寄存器中并执行指定的操作。阻击器70将接收相继的命令组直到将一条停止指令读入命令寄存器为止。
阻击器程序地址必须在发出命令字之前设定,阻击器程序地址是由程序地址寄存器给出的,它们在一起形成完整的24位地址。程序必须位于字边界上。
一个完整的阻击器命令数据表以一个命令字开始。然而,一个序列中的第一条阻击器命令的命令字是由CPU30的一个I/O周期写入命令寄存器的;从而,阻击器命令从第二个字开始读取命令数据。同样,最后一条阻击器命令要求由运行位清零的不多于一个命令字构成。
一条阻击器命令的形式为许多命令位与控制位、一个24位源地址、一个24位目的地址、一个10位外计数值、一个10位内计数值、一个12位带符号的源步长、一个12位带符号的目的步长、及一个15位模式值。如果设置了SHADE(涂色)位,则取出9个附加的字红、绿与兰初始值(6个整数位及10个小数位),红、绿与兰δ值(同上)以及红、绿与兰步长值(同上)。
命令位如下。设置运行(RUN)位令阻击器70开始操作。它用于写入作为一个I/O端口的命令寄存器来启动阻击器70读取一条命令时。如果阻击器70加载了一条作为所读取的命令的一部分的运行位被清零的命令,操作便停止。如果出现冲突(写禁止)便设置COLST位令操作停止。从此时起,CPU30可恢复或中断印刷操作,并可读取多种内部寄存器。每当从内循环中退出而外循环尚未到达零时,设置PARRD位要求阻击器70从程序计数器地址读出一组新的参数。从内循环中退出而外计数尚未到达零时,设置SRCUP位要求将步长寄存器的内容加到源地址上。从内循环中退出而外计数尚未到达零时,设置DSTUP位要求将步长寄存器的内容加到目的地址上。设置SRCEN位在内循环中启动源地址读取。这也令源地址寄存器按象素大小增加。设置DSTEN位在内循环中启动目的地址读取。这并不影响目的地址寄存器,它是作为目的地写周期的一部分而增加的。当第一次进入内循环而不是以后进入内循环时,设置SRCENF位令源地址被读取。这是一种特殊情况的SRCEN,并且与字符绘制模式相关,如上所述。如果设置了SRCEN则SRCENF便没有影响。两位PSIZE0与PSIZE1选择象素大小,0至3分别对应于4、8、16与32位。如上所述,32位只用于32位系统中的数据移动。两位WIDTH0与WIDTH1选择以字节为单位的屏幕宽度,0至3分别对应于256、512、1024与2048字节。设置LINDR将阻击器70置于线绘制模式中。这一模式使用源与目的地址寄存器来生成线绘制地址,它可用于读与写两者。设置YFRAC位指示阻击器70其X与Y地址在线绘制模式中具有小数增量。如果Y地址具有小数增量便设置它。设置PATSEL位选择模式数据寄存器来替代源数据寄存器作为对逻辑功能单元的源输入。这一位是与字符绘制相关的,其中源数据寄存器中包含字体数据,而模式数据寄存器中包含印色颜色。设置涂色位启动从涂色ALU的输出作为写入数据。这一位只在8与16位象素中有效。
阻击器70有若干种控制位源控制位、目的地控制位、逻辑功能控制位、及比较器控制位。阻击器70具有几个源控制位。设置SWRAP位令源地址更新在一个可编程的边界上卷回,这是与线性通过存储器不同的。位SWRAP0与SWRAP1控制SWRAP功能的规模,它使源地址指针垂直地卷回,0至3分别对应于64K、128K、256K与512K屏幕。设置SRCCMP位选择源数据寄存器作为对比较器的源输入。如果它被清零,则使用模式数据寄存器。设置SLWRAP寄存器使源指针在行宽度内卷回以用于内循环更新。设置SSIGN位设置了在更新源地址时所采用的符号。设置它令源地址减小而不是增加。这一位在线绘制中使X成为负的。
阻击器70还有若干目的地控制位。设置DWRAP位令目的地址更新在一个可编程的边界上卷回,这是与线性地通过存储器不同的。位DWRAP0与DWRAP1控制DWRAP功能的规模,它使源地址指针垂直地卷回,0至3分别对应于64K、128K、256K与512K屏幕。设置DSTCMP位选择源数据寄存器作为对比较器的源输入。如果将它清零,则使用模式数据寄存器。设置DLWRAP寄存器使源指针在行宽度内卷回,用于内循环更新。设置DSIGN位设定了更新源地址时所采用的符号。设置它时令源地址减小而不是增加。这一位在线绘制中使Y成为负的。
阻击器70还有逻辑功能单元控制位。逻辑功能单元控制在一个目的地写入周期中写入的数据。LFU(逻辑功能单元)允许源与目的数据的任何逻辑组合。这是通过用LFU位LFU0至LFU3中每一个选择小项之一来达到的,而输出则是由所选择的项的逻辑“或”来给出的。一个“0”值对应于“非”源与“非”目的地,“1”对应于“非”源与目的地,“2”对应于源与“非”目的地,而“3”则对应于源与目的地。因此,一共有十六种可能性。
阻击器70还有若干比较器控制位。设置CMPPLN起动位面模式,其中三个比较器功能操作在位面号位上,而不是在整个象素上。设置CMPEQ位,则如果在位面模式中目的地象素的优先级等于源象素的位面优先级,或者如果不在位面模式中整个象素是相同的时,令比较器禁止内循环写。设置CMPNE位,则如果在位面模式中,目的地象素的优先级不等于源象素的位面优先级,或者如果不在位面模式中,整个象素不相同时,便令比较器禁止内循环写。设置CMPGT位只在位面模式中适用,并且如果目的地象素的位面优先级大于源象素的位面优先级时,则令比较器禁止写。设置CMPBIT给出一种位到字节扩展方式。它通过使用一个内计数器选择源数据寄存器中的一位而令比较器生成一个禁止,并且如果所选择的那一位是“0”时生成一个禁止。内计数器中给出8时选择位0,7时选择位1,6选择位2,以此类推。
程序地址寄存器指向阻击器操作命令的源。从其中顺序向上由存储器中读取数据。它必须总是偶的(即阻击器操作必须位于字边界上)。寄存器0对应于地址位0至15,而寄存器1对应于地址位16至23及位0至7。
上述阻击器寄存器中的某些是在CPU30的I/O空间中可见的。此外,CPU30是可以访问某些阻击器状态及控制位的。如上所述,阻击器70有7个字宽读取寄存器及4个字宽写入寄存器。写入寄存器中任何未使用的位应写入“0”。I/O寄存器从I/O地址40H开始。这些寄存器原则上也可在存储器映象中得到,因此DSP74能够访问它们,从与I/O相同的位移开始,但在基地址F10400H上(即,减去40H及加上F10400H来得到存储器地址)。第一阻击器目的寄存器对应于目的地址寄存器的位0至15。第二阻击器目的寄存器的位0至7对应于目的地址寄存器的位16至23。而第二阻击器目的寄存器的位15对应于目的地址寄存器的目的地址半字节部分。第一阻击器源寄存器对应于源地址寄存器的位0至15。第二阻击器源寄存器的位0至7对应于源地址寄存器的位16至23,而第二阻击器源寄存器的位15对应于源地址半字节部分。阻击器内计数器的位0至9对应于内计数器值。阻击器外计数器的位0至9对应于外计数器值。阻击器状态寄存器给出各种阻击器状态信息。位0指示满足比较器位面优选级大于条件。位1指示满足比较器位面优先级等于条件。位2指示满足比较器位面优先级不等于条件。位3指示满足比较器象素相等条件。位4指示满足比较器象素不等于条件。位5指示满足比较器位到象素条件。位13对应于运行位,它说明阻击器当前是活跃的,还是操作被一个CPU中断或冲突停止所暂停的。位14指示阻击器为一个CPU中断所停止。位15指示阻击器由于一个冲突检测而停止。阻击器程序地址寄存器加载有阻击器程序地址的位O至15。回想一下,由于阻击器程序必须位于字边界上,所以该寄存器的位0总是0。第二阻击器程序地址寄存器位0至7中加载有阻击器程序地址的位16至23。其余8位为0。阻击器命令寄存器对应于阻击器命令的字0,并用于在启动阻击器时建立命令。然后,阻击器DMA从命令的第一个字开始。
阻击器控制寄存器有三位位0为屏蔽来自阻击器的总线控制单元的中断的一个中断停止屏蔽,当设置了这一位时其结果是在出现中断时阻击器将不停止;位1在一次冲突之后令阻击器恢复操作并用于在检测出一次冲突之后重新起动阻击器。回想一下,当设置了COLST位时便检测到一次冲突。阻击器恢复被暂停的操作。注意,当阻击器在冲突停止状态中时,有可能重新编程阻击器命令寄存器,因此COLST位与其它位一样可被改变;而位2则在冲突之后将阻击器复位到静止状态并用于中断出现冲突停止时阻击器正在执行的操作。注意,在出现一次阻击器冲突停止之后,必须向阻击器发送一个恢复或一个复位命令。阻击器70还有三个转动寄存器。位0至3对应于X地址的整数部分的高4位,该10位值中的低6位为红色值的整数部分。位4至7对应于X增量的整数部分的高四位,这一10位值的低6位红色值的整数部分。位8至11对应于X步长的整数部分的高4位,这一10位值的低6位为红色值的整数部分。第二旋转寄存器的位0至3对应于Y地址的整数部分的高4位,这一10位值的低6位为绿色整数值的整数部分。位4至7对应于Y增量的整数部分的高4位,这一10位什的低6位为绿色整数值的整数部分。位8至11对应于Y步长的整数部分的高4位,这一10位值的低6位为绿色整数值的整数部分。在第三旋转寄存器中,设置位0令转动地址取代目的地地址。设置位1令旋转地址取代源地址。设置位2设定旋转模式,这与描影模式不同。而位10至15对应于旋转地址的高位。
DSP74声频协处理器是一个具有足够能力来实现一个高性能音乐合成器的通用算术协处理器。它提供了同步串行输出以生成具有16位精度的立体声声频信号,给出一种通常与密致盘技术相关联的音质。DSP74是可以从主CPU30编制微程序的,并且其指令集是充分灵活的,使用户能够将该设备编程为完成许多与“音乐合成器”十分不同的多种不同功能。这些应用中可包含算法语音生成,使用快速傅里叶变换技术的声频分析,以及三维图形旋转。 DSP74使用哈佛体系结构(单独的程序与数据总线)以求得到最大的数据吞吐量。DSP74有一个算术逻辑单元(ALU)。
ALU具有以16位X16位硬件乘法/累加硬件结构以及加法、减法与逻辑功能。还有一个独立的串行除法单元,它每一节拍生成一个商数值。来自加法器/减法器的进位存储在一个独立的锁存器中,并能用于为多精度算术运算传播进位或者能用于条件指令。可以使所有指令依赖于这一位的设置。该设备内的数据传送都是16位宽的,只有乘法器/累加器内的内部事务处理是例外。
DSP74是一个主要旨在用于声音合成的非常简单、非常快速的处理器,但也能完成上述其它计算任务。它以一个处理器周期执行所有的指令;这些指令是以系统时钟速度(通常20至23兆赫)执行的。在声音合成中,DSP74的定时由声频数模转换器(DAC)接口中的定时器控制。这些DAC是双缓存的,并且当一个DAC写快要导致溢出时,便暂停操作直到缓冲器变空为止。只要软件以采样速率执行循环,以及只要平均循环时间小于采样周期,则偶尔的循环可以延长到两倍。因为循环中可能包含较程序RAM中能容纳的更多的指令,DSP74有一种变址寻址模式,它允许相同的代码片作用在若干语音上。
DSP74一个哈佛(Harvard)体系结构设备,从而程序RAM与数据RAM是分离的,同时在两个RAM块上出现周期信号。采用了一条单周期的流水线;因此,在每一个时钟周期中发生两个事件取出一条指令,以及发生与前一条指令相关联的数据传送。这在执行一条跳转后的指令时会有奇怪的效果。DSP74有两个算术逻辑单元(ALU,未示出)一个典型的ALU及一个乘法/累加ALU,若干寄存器一个X操作数寄存器、第二操作数寄存器、一个AZ寄存器(它保存来自ALU的结果),以及一个MZ寄存器(它保存来自乘法/累加寄存器的结果)。DSP74还有一条DMA通道及一个除法器。
DSP74的操作是相当简单的。在一条指令的执行的第一个时钟节拍信号中,从程序RAM中将操作码读入指令译码器中。在第二个时钟节拍信号中,当从程序RAM中读取下一条指令时,根据第一条指令执行从系统存储器34至一个寄存器或者从一个寄存器至系统存储器34的一次数据传送。
DSP74内的ALU为一个16位算术逻辑单元,它具有本技术中众所周知的与德克萨斯仪器公司的74181相同的功能。普通的算术运算是作为指令编码的;不寻常的指令可通过直接设定ALU模式位用通用算术指令(GAI)来执行。
DSP74还有一个乘法器/累加器,它是用于执行16×16带符号/不带符号的乘法并产生32位结果的第二ALU。除此以外,它也可执行乘法/累加运算,其中将乘得的积加在前面的结果上。结果累加到36位并容许溢出。乘法器运算实际上要用两个时钟节拍,虽然乘法指令本身是在一个时钟节拍中完成的。这意味着,乘法或乘法累加后面的指令不得涉及MZ寄存器或X寄存器。
DSP74还有一个除法器。除法单元呈现为DSP74内部空间中的一组寄存器。它能对16或32位操作数执行无符号除法,并生成一个商及一个余数。
DSP74还有一条DMA通道。该DMA通道呈现为DSP74数据存储器空间中的一组寄存器。它们是两个地址寄存器与一个数据寄存器。一个DMA传送是由在两个地址寄存器中的第一个中写入一个地址而启动的。DMA传送具有一个等待时间间隔,它必须在执行进一步DMA之前消耗掉。DMA状态机负责请求副系统总线61,并且当它被授权时才执行传送,此后便释放副系统总线61。
作为替代,可在两个地址寄存器中的第二个中写入设置了的一个保持位的一个字。这将请求副系统总线61并一直保持它直到该保持位被清零为止。这种DMA传送在执行连续的多次传送中是高效的,但对于单个的传送通常比较低效,因为DSP74程序不能判定何时授予副系统总线61,因此必须等待最长的可能等待时间。DSP74存储器通常在DSP的内部数据地址基址与主地址基址中是可见的。
DSP74具有一个与之相关联的DSP存储器76。DSP存储器76包括程序RAM、数据RAM、一个寄存器/常数表及一个正弦ROM(都未示出)。DSP存储器76通常在DSP的内部地址空间及系统存储器34的地址空间中可以访问。DSP程序RAM为512个18位字。这些单元只能由CPU30写入,而对于DSP74来说只程序可读。程序RAM并不出现在DSP内部地址空间中。在DSP74正在运行时,主机是不能访问程序RAM的。每一条DSP指令有一个7位操作码及一个11位地址矢量。所有微码的指令(除乘法或乘法/累加操作之外)都在185毫微秒周期内完成。所有的指令都是系统存储器34至寄存器的传送或者寄存器至寄存器的传送;立即值是不允许的。从而,如果一条给定的指令需要一个常数,它不能从常数表中得到,而必须为该值留出一个数据RAM单元。DSP74也允许条件指令及变址。如果设置了指令码的位12,则只有同时设置了ALU中的进位位时才能执行该指令。如果设置了指令码中的位11,则将指令码中的9位地址矢量加在变址寄存器中的9位值上以生成该指令在其上操作的地址与数据存储器。附加的两位是通过将值加载在一个附加位寄存器中然后将该字写入所要求的单元中而编程的。
DSP74具有许多移动命令,它们在寄存器内、存储器内、存储器与寄存器之间传送数据,还有一些其它命令,其中包括加、减、“与”、“或”、带进位的加、NOP操作(空操作)、上述GAI及一条INTRUDE(侵入)命令,该命令允许CPU30访问DSP存储器76。
正弦ROM为256个16位字的一个完整的正弦波的2的补码正弦波值。
数据RAM为512个16位字。
数据可以在DSP74的控制下或者在主CPU30的控制下,在CPU30与DSP74之间传送。
DMA传送机制是基于DSP74成为副系统总线61的总线主控器并访问系统存储器34的。DSP74是最高优先级总线主控器之一,因此,当当前总线主控器能够放弃副系统总线61时,它便立即将副系统总线61授予DSP74。放弃副系统总线61的最坏情况便是当CPU30为总线主控器的情况,因为80376或80386SX处理器可能需要可观的时间量来释放副系统总线61。DMA传送是由写入第一DMA地址寄存器来启动的,如上所述。状态信息及高地址部分的传送应当已经写入第二DMA地址寄存器中;在写传送情况中,类似的写入数据应当已经写入DMA数据寄存器中。在启动一次传送时,DSP74请求副系统总线61并在将副系统总线61授予了DSP 4时,DSP74便执行传送,然后释放副系统总线61。可以查询这一操作的完成,或者程序员可以选择在使用读取数据与/或启动另一次传送之前允许经过最大可能等待时间。
可以使用两个DMA地址寄存器中的第二个的保持位来执行第二种总线捕获技术以请求副系统总线61。如果DSP74希望连续地执行多次传送时,这将是更为高效的,因为在传送之间是不释放副系统总线的。在DSP74将要释放副系统总线61之前,必须先将第二DMA地址寄存器中的保持位清零。一般不推荐这一机制,因为DSP74将控制副系统总线61相当长的时间间隔而无所事事,这会浪费总体存储器总线带宽并可能潜在地干扰CD DMA传送。如果使用第二种技术,DSP74在执行任何DMA传送之前必须首先请求副系统总线61。它无法检测是否已获得副系统总线61,因此必须等待最大数量的总线指令。一旦DSP74得到了副系统总线61的拥有权,然后它便可以进入执行总线周期。它可执行任意序列的读与/或写周期,而在结束这些周期时必须放弃对副系统总线61的控制。
数据传送也可在主CPU30的控制下在CPU30与DSP74之间执行。DSP74的所有内部存储器都映射到主地址空间中。当DSP74处于停止模式中时,主CPU30可以象对正常的系统存储器34中那样写入程序存储器单元中。然而,当DSP74正在运行时,主CPU30是不能访问程序存储器的。DSP74数据存储器只能被INTRUDE(侵入)机制获得。为了保证DSP74的操作在任何情况下不受干扰,数据事务处理只能在DSP74正在执行INTRUDE指令时进行。当DSP74停止时,便认为它实际上正在继续不断地执行INTRUDE指令。
只有当DSP74不运行时,才能使用阻击器70执行CPU30至DSP程序RAM76的传送。同样,当DSP74正在运行时,阻击器70不能访问DSP数据RAM。简言之,只有当DSP74执行一条INTRUDE指令时,阻击器70与CPU30才能修改DSP程序RAM76。
DSP74能令阻击器70执行从系统RAM至DSP程序RAM的非常快速的DSP代码的块移动。从而,DSP74与阻击器70能够合作来有效地向DSP74提供比实际能够得到的更多的程序RAM。
DSP74还有一个串行声频数模转换器(DAC)接口,串行DAC接口允许DSP74驱动一个同步串行(I2S或类似的)DAC,以及从诸如CD驱动器之类的同步串行数据源输入数据。如果没有连接输入设备,则接口定时可以内部生成,但是如果存在一个数据源,则必须用它来确定定时。一个内部溢出检测器防止在前面输出的数据全部输出之前DSP74写入DAC。这是通过写入两个DAC寄存器中的第一个来管理的。因此,DAC传送应采取下述方式写入第一DAC寄存器,写入第二DAC寄存器,读取输入值。它们必须紧密连接地执行(少于16条指令)。没有下溢检测,如果出现下溢时,则再次输出前面输出的值。DAC值是双缓存的,因而虽然声频码是在小于或等于采样周期的平均速率上循环的,它可能偶而采用多达两个采样周期来通过该循环。这对于异常处理是有用的。
DSP74包含一个与德克萨斯仪器公司的74181设备兼容的算术逻辑单元(ALU)。
A/V/CD控制器/协处理器32还有一个密致盘DMA控制器。这一CD控制器包含下述功能块一个简单的同步串行接口(用于I2S和与之类似的)、一个CD ROM块解码器及一条DMA通道。该机构允许向系统存储器34传送一个串行数据流,或者直接地,或者首先通过一个块解码器。在内部块解码器出现问题或丧失能力时,允许使用一个外部块解码器。在完成了一次传送而使传送长度计数器到达零时,可以生成一个中断。
密致盘控制器同步串行接口支持著名的菲利浦数据格式。菲利浦数据格式中有一个时钟信号、一条字选择线及一条数据线。字选择比数据领先一个时钟节拍,并且数据是与一个32位数据的最高位(MSB)对齐的。字选择线上的低电平表示左数据而字选择线上的高电平则表示右数据。同步串行接口还支持菲利浦块解码器输出公式。其中位的次序是颠倒的,并且第一位是与数据的第一位对齐的。字选择格式可以是菲利浦数据格式、索尼数据格式或Matsushita数据格式之一。
CD驱动控制器72还有一个块解码器。该块解码器与2352字节扇区的起始点同步,执行解密、并计算EDC(错误检测码)以检测错误。它在两种模式中操作在首部以后传送2048个数据字节的短模式,或者在传送同步模式以后的2340字节的长模式。这样允许必要时读取首部与纠错数据。首部的大小可编程为4或12字节以支持CD驱动器模式1及CDI/XA模式2格式1,但首部匹配只在主要的4字节首部上执行。模式2格式只在长模式中操作及抽取所需要的数据时受到支持。首部匹配是在传送的第一个扇区上执行的,以保证正在读取的是正确的数据。所要求的首部值必须编程进首部寄存器中。如果所执行的是一次多扇区传送,则在第一扇区之后不再发生匹配。
通常,正常的传送是以短模式执行的,而在检测到错误时则采用长模式,以便操作软件能试图纠正它。多扇区传送是通过给出要传送的长字的总数的一个计数来加以支持的。错误会放弃多扇区传送。错误可以有下述形式不可靠的数据、EDC错误、及无同步。有可能查询解码器来确定其当前状态。CD驱动控制器还有一个DMA接口。该DMA接口每次能将2个16位字传送进系统存储器34。它能取来自内部块解码器的输出,或者来自同步串行接口的输出。它有一个向上通过系统存储器34的地址计数器。DMA接口有一个用于从串行接口直接传送的传送长度计数器。在“永久性模式”中,DMA地址寄存器在一个32千字节缓冲器内环绕,并忽视计数器。这对于CD声频数据或者诸如“全动作视频”解压缩之类的实时与数据处理可能是有用的。每当地址指针环绕缓冲器一次,便生成一个CPU30中断。
参见图5,其中示出了“封锁”一个盒式存储器的一种替代方法。如前所述,图1A与3的地址加密器54提供了一种防止非授权使用程序盒式存储器14的“封锁”方法。另一种方法是在盒式存储器中放置一个音调发生微控制器100,如图5所示。盒式存储器中包含一个程序ROM50(这在上面结合图1A的文字中已描述过)、一个地址解码器102(在描述地址加密器54的文字中已一般性地描述过)及微控制器100。
地址解码器与典型的盒式存储器中的地址解码器非常相似,只是加上了该地址解码器102只在微控制器100经由一条启动线103启动地址解码器102时才生成一个芯片选择57信号到程序ROM50。微控制器100通过禁止地址解码器102来“封锁”盒式存储器14。
微控制器100是与CPU30及地址解码器102电路连通的,如图5中所示。系统复位时,微控制器100禁止地址解码器102,借此“封锁”盒式存储器。微控制器100监视地址总线31b或另一条总线上的一个地址或地址序列。当微控制器100检测到地址的正确序列时,它便启动地址解码器102,借此“解锁”盒式存储器。
微控制器100通过生成一序列音符来确认正确的地址序列,这些音符是用户可以听到并且由CPU30检测到的。试按任何一个键都会使微控制器100产生一个音调。系统单元以下述数种方法之一便能检测该音调可用分立的音调检测电路(象一般电话机电路中所用的DTMF音调解码器)来检测该音调,或者用一个A/D转换器数字化该音调再用FFT算法加以分析来检测所生成的音调签名。在后一种情况中,DSP74执行分析并通知CPU30已播放了正确的音调或音调组,指出盒式存储器现已解锁。
参见图6,其中示出了用于“封锁”一个盒式存储器的第三替代方案。图1A与3的地址加密器54及图5的微控制器100提供了两种用硬件操纵地址与数据线来“封锁”存储设备的不同方法。然而,并非所有存储设备都是以这一方法与系统接口而能用硬件来保护各个程序的。例如,某些存储设备具有可拆卸的存储介质。从而,需要一种不同的方法来“封锁”没有地址与数据线的存储设备,诸如一块预编程的软盘或一块预编程的CD驱动器盘。这种设备没有地址或数据线;因此它们不能用地址加密器或选择性封锁的芯片选择加以封锁。
封锁这种设备的一种技术便是利用本发明的系统10的CPU30及DSP74操作码不兼容这一事实。即编译成在CPU30上执行的代码不能直接在DSP74上执行,反之亦然。
图6中示出了利用不兼容的操作码的一种封锁设备。图6示出包含至少两块数据的一个程序ROM的存储器映象200,这两块为(1)一块能够在DSP74上执行但不能在CPU30上执行的可执行代码(图6中的BLOCK1 202),以及(2)一块能在CPU30上执行但是经过压缩或加密,不首先解压缩或解密也不能在CPU30上执行的代码(图6中BLOCK2 204)。这两块代码可放置在任何类型的存储设备中;程序盒式存储器14、或预编程的软盘、或预编程的CD驱动器软盘,诸如此类。
第一代码块BLOCK1 202是一小块可在DSP74上执行的代码。它是一个只有四种功能的小程序(1)确认一个存储设备的存在,(2)将第二数据块从存储设备加载进系统RAM34,(3)解压缩或解密第二存储块BLOCK2 204成可由CPU30执行的格式,以及(4)令CPU执行该可执行的代码。步骤(2)与(3)可以通过读取一小节数据、解压缩或解密之、将得出的代码写入存储器,而并行地执行。
第二块代码BLOCK2 204是一能在CPU30中执行的较大的应用代码块,但是代码是已经压缩或加密的。因此,在加载进第二块BLOCK2 204时,它是不能被DSP74或CPU30执行的。将可执行代码置入著名的运行长度编码(RLE)格式是压缩与加密第二块代码BLOCK2 204中的数据的一种方法,只加密第二块的一种方法是对数据执行著名的筛格密码(picket fence cipher),从而以可以解密的方法交换数据中的字节。加密数据可以简单到只将一个字节的上半字节与下半字节交换或者复杂到用任何一种著名的加密方法,使得用正常的顺序方式访问时,代码是读不懂的。这与上文中描述的打乱地址线,而由于一条指令的长度是一个字节以上而打断一个正常的顺序取代码操作的方法不同。
不需要压缩或加密整个的第二代码块BLOCK2 204;足够的代码必须加以压缩或加密以防止非特许的设备执行该应用程序。其余未压缩与未加密的数据可放置在可选的BLOCK3 206中。例如图形数据不需要压缩。作为另一个例子,如果高层程序执行代码完全加密了,则所有的子例程便不需要压缩。
图1A与1B的系统能够解锁上述三个盒式存储器。然而,带有兼容的CPU而没有兼容的DSP的系统是不能执行该应用程序的,这是因为CPU不能执行存储设备上的每一块代码第一块BLOCK1 202具有完全与CPU30不兼容的操作码,而第二块BLOCK2 204则已经被压缩或加密使之不能执行。从而,“封锁”了存储器设备。
图1A与1B的系统以下述方法“解锁”存储器设备。首先,CPU30初始化系统10并检验是否存在一个存储器设备,诸如一个CD驱动器22。如果检测到一个存储器设备,CPU30便将第一块BLOCK1 202从存储器设备加载到系统RAM34中。然后,CPU30令DSP74执行从存储器设备传送到系统RAM34的代码。执行第一块代码BLOCK1 202导致DSP74通过在该设备上执行检验和而保证一个存储器设备的存在,将第二块存储器BLOCK2 204从该存储器设备复制到系统RAM34中,并将第二块数据BLOCK2 204解压缩或解密成可在CPU30上执行的格式,最后,DSP74令CPU去执行从第二块数据BLOCK2 204变化来的可执行代码,从而启动应用程序。
这一方法的优点是存储器设备中不需要附加的硬件;只需要象上面所述那样将第一与第二块数据放入存储器设备即可。因此,这种两块法适用于程序盒式存储器14以及预编程的软盘及CD驱动器盘。
在替代的方法中,BLOCK2 204可以是可执行的,但是具有必须以特殊的方式加载的格式。这种格式的一个例子便是著名的。EXE格式的可执行文件。这种数据块是可执行的,但只有在可执行部分是正确地加载进存储器的前提下。实现这一“封锁”要求将一个只能在DSP74上执行的加载程序放在BLOCK1202中。这一加载程序访问BLOCK2 204,加其加载进存储器34中,定位可执行部分,然后将控制传递给CPU30。
虽然本发明已通过对其实施例的描述说明了本发明,而且虽然已经相当详尽地描述了这些实施例,但申请人的意图并非想用这些细节来限制所附的权利要求书的范围。对于熟悉本技术的人员而言,其它的优点与改型已是显而易见的了。例如,图3的地址加密器54可以与上面讨论的两块封锁法结合使用。此外,图1A的封锁控制电路56可与图5的一般地址解码器102组合而不需要音调生成微控制器100。因此,本发明在广义上不限于特定的细节、代表装置及方法,以及所示出与描述的示例性实例。从而,可以抛开这些细节而不脱离申请人的总的创造性概念的精神或范围。
权利要求
1.一种盒式存储器,具有一个可读存储器,并用于一个计算机系统中;该计算机系统具有一个带有至少一条与之相关联的总线的中央处理单元(CPU),并且该总线具有至少一条总线线路,该盒式存储器的特征在于包括与所述存储器电路连通的一个存储器控制电路;与所述存储器控制电路电路连通的一个封锁控制电路;以及与所述存储器、所述存储器控制电路及用于连接所述存储器的所述封锁控制电路电路连通的一个连接器,所述存储器控制电路及所述封锁控制电路是与CPU可拆卸地电路连通的;所述存储器控制电路有两种状态一种解锁状态,其特征在于与所述存储器的交至作用,使得当CPU访问所述存储器时,对于一个给定的地址的由所述存储器读入CPU的结果对应于存储在所述存储器中该地址上的值;以及一种封锁状态,其特征在于与所述存储器的交互作用,当CPU访问所述存储器时,使得对于一个给定的地址读入CPU的所述存储器的结果对应于不是存储在所述存储器中该地址上的值。所述存储器控制电路配置成响应来自所述封锁控制电路的输入,从所述封锁状态切换到所述解锁状态;以及所述封锁控制电路配置成响应第一组预先选定的事件的出现,令所述存储器控制电路进入所述封锁状态,并且所述控制电路进一步配置成响应第二组预先选定的事件的出现,令所述存储器控制电路进入所述解锁状态。
2.一种盒式存储器,具有一个可读存储器,并用于一个计算机系统中;该计算机系统具有一个带有至少一条与之相关联的总线,并且该总线具有至少一条总线线路,该盒式存储器的特征在于包括与所述存储器进行电路连通的一个总线线路加密器;与所述总线线路加密器进行电路连通的一个封锁控制电路;与所述存储器、所述总线线路加密器及用于连接所述存储器的所述封锁控制电路电路连通的一个连接器,所述总线线路加密器及所述封锁控制电路与CPU可拆卸地电路连通;所述封锁控制电路配置成使所述封锁控制电路响应第一组预先选定的事件的出现而令所述总线线路加密器打乱所述至少一条总线的所述至少一条总线线路;以及所述封锁控制电路进一步配置成使所述封锁控制电路响应第二组预先选定的事件的出现而令所述总线线路加密器停止打乱所述至少一条总线线路。
3.一种盒式存储器,具有一个可读存储器,并用于一个计算机系统中;该计算机系统具有一个带有与之相关联的至少一条总线的中央处理单元(CPU),并且该总线具有至少一条总线线路,该盒式存储器包括与所述存储器进行电路连通的一个总线线路解码器;与所述总线线路解码器进行电路连通的一个封锁控制电路;与所述存储器、所述总线线路解码器及用于连接所述存储器的所述封锁控制电路电路连通的一个连接器,所述总线线路解码器及所述封锁控制电路与该CPU可拆卸地电路连通;所述封锁控制电路配置成使所述封锁控制电路响应第一组预先选定的事件的出现而令所述总线线路解码器停止解码所述至少一条总线;以及所述封锁控制电路进一步配置成使所述封锁控制电路响应第二组预先选定的事件的出现而令所述总线线路解码器解码所述至少一条总线。
4.根据权利要求3的盒式存储器,其特征在于还包括一个音调生成电路,它响应第三组预先选定的事件中至少一个事件的出现而生成一个音调。
5.一种保证一个具有一个可读存储器的盒式存储器特许用在一个计算机系统中的方法,该计算机系统包括有经由具有至少一条总线线路的至少一条总线,与该可读存储器电路连通的中央处理单元(CPU),所述方法包括下述步骤打乱所述至少一条总线的所述至少一条总线线路;检测一组预先选定的事件;以及响应一组预先选定的事件的检测,不打乱所述至少一条总线的所述至少一条总线线路。
6.根据权利要求5的方法,其特征在于所述检测一组预先选定的事件的步骤包含检测确定在所述至少一条总线上的至少一个总线值。
7.一种用于判定一个盒式存储器是否特许用在一个计算机系统中的鉴别系统,其特征在于包括具有至少一条与之相关联的总线的一个中央处理单元(CPU),以及其中所述至少一条总线包含至少一条总线线路;与所述CPU可拆卸地电路连通的一个可寻址的盒式存储器,包括(ⅰ)与所述CPU电路连通的可读存储器;(ⅱ)沿所述一条总线介于所述CPU与所述存储器之间并与所述CPU及所述存储器电路连通的一个总线线路加密器;以及(ⅲ)与所述CPU及所述总线线路加密器电路连通的一个封锁控制电路;所述封锁控制电路配置成使所述封锁控制电路响应第一组预先选定的事件的出现令所述总线线路加密器打乱所述至少一条总线的所述至少一条总线线路;以及所述封锁控制电路进一步配置成使所述封锁控制电路响应第二组预先选定的事件的出现令所述总线线路加密器停止打乱所述至少一条总线线路。
8.一种用于判定一个盒式存储器是否特许用在一个计算机系统中的鉴别系统,其特征在于包括一个具有至少一条与之相关联的总线的中央处理单元(CPU),所述至少一条总线包含至少一条总线线路;与所述CPU可拆卸地电路连通的一个可寻址的盒式存储器,包括(ⅰ)与所述CPU电路连通的一个可读存储器;(ⅱ)沿所述一条总线介于所述CPU与所述存储器之间的,并与所述CPU及所述存储器电路连通的一个总线线路加密器;以及(ⅲ)与所述CPU及所述总线线路加密器电路连通的一个封锁控制电路;所述总线线路加密器具有两种状态一种加密状态,其特征在于所述总线线路加密器打乱所述至少一条总线的所述至少一条总线线路;及一种非加密状态,其特征在于所述总线线路加密器不打乱所述至少一条总线的所述至少一条总线线路;所述总线线路加密器配置成响应来自所述封锁控制电路的输入将所述加密状态切换到所述非加密状态;以及所述封锁控制电路配置成使所述封锁控制电路响应第一组预先选定的事件的出现令所述总线线路加密器进入所述加密状态,并且所述封锁控制电路进一步配置成使所述封锁控制电路响应第二组预先选定的事件的出现令所述总线线路加密器进入所述非加密状态。
9.根据权利要求7或8的系统,其特征在于所述预先选定的事件包括系统加电。
10.根据权利要求7或8的系统,其特征在于所述预先选定的事件包括系统复位。
11.根据权利要求5的方法,其特征在于所述预先选定的事件组之一包括在所述至少一条总线上确定的至少一个总线值。
12.一种用在一个其存储器的第一区映射到第一个可寻址存储设备并且存储器的第二区映射到第二个可寻址存储设备的计算机系统中的鉴别方法,其特征在于包括下述步骤执行来自存储区中的第一区的代码;确定存储器中第二区中的地址,而不执行第二存储设备内与对应的地址相关联的代码;执行来自存储器中第二区中的代码。
13.根据权利要求12的一种方法,其特征在于包括下述步骤;执行来自存储器中第一区中的代码;确定对应于存储器中的第二区的地址,而不执行第二存储设备中与对应的地址相关联的代码;从存储器的第二区中复制一个存储器块到一个RAM中;执行从存储器中第二区复制的所述代码。
14.一种保证具有一个可读存储器的存储设备特许用在具有与该可读存储器电路连通的第一中央处理单元(CPU)及第二中央处理单元、并具有与第一与第二CPU电路连通的一个随机存取存储器(RAM)的一个计算机系统中的方法,其特征在于包括下述步骤用第一CPU从可读存储器中将一个可在第二CPU上执行的第一程序复制到RAM中;用第二CPU执行所述第一程序;用所述第二CPU将一个不能在第一CPU上执行的一个存储器块复制到RAM中;将所述存储器块变换成能够在所述第一CPU上执行的第二程序;以及在所述第一CPU上执行所述第二程序。
15.根据权利要求14的方法,其特征在于所述变换所述存储器块的步骤包含解压缩所述存储器块的步骤。
16.根据权利要求14的方法,其特征在于变换所述存储器块的所述步骤中包含解密所述存储器块的步骤。
17.根据权利要求14的方法,其特征在于变换所述存储器块的所述步骤中包含定位所述存储器块的一个可执行部分并通知所述第一CPU所述存储器块的所述可执行部分的位置的步骤。
18.一种计算机系统,具有经由第一系统总线与一个声频/视频/CD驱动控制器/协处理器电路连通的一个中央处理单元(CPU);以及经由第二系统总线与所述声频/视频/CD驱动控制器/协处理器电路连通的一个系统存储器;其特征在于所述A/V/CD控制器/协处理器包含一个仲裁器,用于在所述第二系统总线、一个存储器接口、一个图形协处理器、一个数字信号处理器、一个密致盘控制器及一个视频控制器之间进行仲裁控制,所有这些设备都是与所述CPU及所述系统存储器电路连通的,并且各配置成使所述CPU、所述图形协处理器、所述数字信号处理器、所述密致盘控制器及所述视频控制器中任何一个都可成为所述第二系统总线的总线主控设备。
19.根据权利要求18的计算机系统,其特征在于包括一个中断控制器,用于将中断连接到响应所述中断控制器的所述CPU及所述仲裁器,使得直到所述中断控制器检测到出现一个中断为止,所述CPU并没有控制所述第二系统总线的最高优先级。
20.根据权利要求7或8的系统,其特征在于包括经由所述至少一条总线与所述CPU电路连通的一个声频/视频/CD驱动控制器/协处理器;以及经由第二总线与所述声频/视频/CD驱动器/协处理器电路连通的一个系统存储器;所述A/V/CD控制器/协处理器包含一个仲裁器,用于仲裁控制所述系统总线、一个存储器接口、一个图形协处理器、一个数字信号处理器、一个密致盘控制器及一个视频控制器,所有这些设备都是与所述CPU及所述系统存储器电路连通的,并且各配置成使所述CPU、所述图形协处理器、所述数字信号处理器、所述密致盘控制器及所述视频控制器中任何一个都可成为所述第二总线的总线主控设备。
21.根据权利要求7或8的系统,其特征在于包括经由所述至少一条总线与所述CPU电路连通的一个声频/视频/CD驱动控制器/协处理器;经由一条第二系统总线与所述声频/视频/CD驱动控制器/协处理器电路连通的一个系统存储器;所述A/V/CD控制器/协处理器包含一个仲裁器,用于仲裁控制所述第二总线、一个存储器接口、一个图形协处理器、一个数字信号处理器、一个密致盘控制器及一个视频控制器,所有这些设备都是与所述CPU及所述系统存储器电路连通的,并且各配置成使所述CPU、所述图形协处理器、所述数字信号处理器、所述密致盘控制器及所述视频控制器中任何一个都可成为所述第二总线的总线主控设备;以及还包括一个中断控制器,用于将中断连接到响应所述中断控制器的所述CPU及所述仲裁器,使直到所述中断控制器检测到出现一个中断为止,所述CPU并不具有控制所述第二系统总线的最高优先级。
全文摘要
一个封锁的盒式存储器中的连接器允许存储器、存储器控制电路及封锁控制电路可插接地与CPU电路连通。存储器控制电路打乱某些总线线路,从而在复位时打乱存储器中的数据,并响应来自封锁控制电路的输入停止打乱总线线路。封锁控制电路监视总线,等待在总线上确定一个总线值的正确组合,此时,封锁控制电路令存储器控制电路停止打乱总线线路。
文档编号G06F1/00GK1115058SQ9411791
公开日1996年1月17日 申请日期1994年11月11日 优先权日1993年12月16日
发明者J·L·康斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1