專利名稱:受保護的可編程盒式存儲器及使用它們的計算機系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的來說涉及計算機體系結(jié)構(gòu),而更具體地涉及帶有可裝卸可編程盒式存儲器的計算機系統(tǒng)。該系統(tǒng)具有地址加密保護電路以防止在計算機系統(tǒng)中使用非特許盒式存儲器以及防止非特許系統(tǒng)使用盒式存儲器。
視頻圖形計算機系統(tǒng)是眾所周知的流行消費品。一個典型的系統(tǒng)包含一個連接在一臺普通電視機上用于顯示游戲圖象或其它應用的數(shù)據(jù)處理單元。該數(shù)據(jù)處理單元接受來自通常組裝成盒式的一個只讀存儲器(ROM)的控制軟件。該盒式存儲器是可卸地插入數(shù)據(jù)處理單元中的。在該數(shù)據(jù)處理單元上還連接至少一種指點設(shè)備,諸如鼠標器、操縱桿、觸摸板、開關(guān)盤或光槍等,使玩游戲的人能夠輸入位置信息供控制軟件來執(zhí)行應用程序。
該數(shù)據(jù)處理單元通過具有一個單一的中央處理單元(CPU)及相關(guān)的易失性及非易失性存儲器,其中包括所有的隨機存取存儲器(RAM)及引導只讀存儲器(引導ROM);一個電視(射頻圖象)信號發(fā)生器;以及用來與各種指點設(shè)備接口的一個輸入/輸出(I/O)處理器。這些設(shè)備是電路連通的。這種系統(tǒng)的一個顯著特點是利用一塊主板或系統(tǒng)板來將這些部件電連接在一起。
在這種計算機系統(tǒng)中,部件是通過電信號通信的;因此,許多部件必須是電路連通的,以便信號在部件之間傳遞。這些電信號通常是由系統(tǒng)部件之間的電連線傳送的。電連線的典型類型中包括印刷電路板(PCB)上的金屬跡線,多層PCB的不同層之間的通路、電鍍通孔、插頭、以及連接系統(tǒng)部件的各腳的獨立導線。通常將電信號組及傳送這些電信號的電連線組稱作“總線”。因此,所謂“總線”可以是指一組電信號、一組傳送這些電信號的電連線、或者是對一組電信號及一組傳送這些電信號的電連線兩者的合稱。
總線通常是由“總線線路”構(gòu)成的。引用一條單獨的“總線線路”可指一條總線中的一條電連線或者一條總線的一個電信號。計算機系統(tǒng)中的存儲器是分解成稱作“字節(jié)”的細小部分的。存儲器中各字節(jié)有其唯一的“地址”,這類似于個人住所的唯一地址。存儲在存儲器中的信息稱作“數(shù)據(jù)”。一個計算機系統(tǒng)通常有三條總線一條地址總線、一條數(shù)據(jù)總線、及一條控制總線。當一臺計算機從存儲器中一個特定的地址讀取一個信息時,CPU將存儲器中這一特定點的地址確定在地址總線上,然后CPU使用控制總線通過存儲芯片CPU要求訪問存儲在該地址種的信息。然后,存儲芯片將存儲在該單元上的信息確定在數(shù)據(jù)總線上。最終,CPU從數(shù)據(jù)總線上讀取數(shù)據(jù)。上述過程是非??斓?,每秒鐘可進行數(shù)百萬次之多。
在典型的基于盒式存儲器的系統(tǒng)中,地址總線、數(shù)據(jù)總線及控制總線通過接線器從數(shù)據(jù)處理單元延伸至盒式存儲器內(nèi)的電器件上。這樣,當盒式存儲器連接在數(shù)據(jù)處理單元上時,盒中的程序ROM是如數(shù)據(jù)處理單元內(nèi)的引導ROM及系統(tǒng)RAM一樣與CPU電路連通的。
這種系統(tǒng)的商業(yè)上的成功推動了其它原來不制造這種產(chǎn)品的廠商設(shè)計與制造與之競爭的盒式存儲器及數(shù)據(jù)處理單元。非特許的盒式存儲器能在特許的數(shù)據(jù)處理單元中執(zhí)行;同樣,非特許的數(shù)據(jù)處理單元能執(zhí)行特許盒式存儲器中所包含的程序。這種競爭設(shè)備不是總能夠和真正的設(shè)備“完全兼容”的,因此非特許的設(shè)備可能不正常工作。更有甚者,這些非特許設(shè)備的不兼容性可能使特許設(shè)備不正常工作,從而玷污制造特許盒式存儲器與特許數(shù)據(jù)處理單元的廠商的形象。
再者,真正的設(shè)備通常是設(shè)計與推向市場用來執(zhí)行設(shè)計完善及執(zhí)行順利的程序的。容忍他人推銷缺少相似的完善性及質(zhì)量的程序或數(shù)據(jù)處理單元會進一步玷污制造特許盒式存儲器與特許數(shù)據(jù)處理單元的廠商的形象。因此,在以盒式存儲器為基礎(chǔ)的計算機系統(tǒng)中,希望防止兩種形式的非特許使用(1)在一個特許的處理器單元中使用非特許的盒式存儲器,及(2)在一個非特許的處理器單元中使用特許的盒式存儲器。從而,希望具有鑒別用在一個數(shù)據(jù)處理單元中的一個盒式存儲器及防止盒式存儲器的非特許使用的能力。典型的已有技術(shù)設(shè)備無法提供對這一問題的經(jīng)濟實用令人滿意的解決方案。
1989年元月24日頒發(fā)給Nakaqawa的美國專利4,799,635號中提出了這種先有技術(shù)系統(tǒng)的一個實例,它是基于盒式存儲器的游戲機單元的一種鑒別技術(shù)。軟件控制的微處理器存在于各數(shù)據(jù)處理單元及盒式存儲器中,用于執(zhí)行相關(guān)算法然后比較它們的結(jié)果。當將一個盒式存儲器插入數(shù)據(jù)處理單元中對,在游戲單元接受盒式存儲器并用它操作之前必須得出滿意的比較結(jié)果。這一方法是相當復雜的并增加了制造盒式存儲器的成本,這是因為在設(shè)計盒式存儲器時必須加上一個微控制器。
因此,希望在盒式ROM上設(shè)置一個較簡單的安全電路而令主數(shù)據(jù)處理單元只接受可信的盒式存儲器并防止在非特許系統(tǒng)中使用特許的盒式存儲器。
此外,典型的先有技術(shù)系統(tǒng)具有一條單一的系統(tǒng)總線,用于在各部件之間傳送數(shù)據(jù)。只有一條系統(tǒng)總線會降低系統(tǒng)性能,因為所有的I/O設(shè)備依靠CPU來訪問存儲器。再者,典型的系統(tǒng)并未提供處理高性能視頻、圖形及聲音問題的綜合解決方法。
根據(jù)本發(fā)明,在一個程序盒式存儲器設(shè)置有一個介于CPU與盒式程序ROM之間的地址加密器及封鎖控制電路。在系統(tǒng)起動時,該地址加密器“封鎖”盒式存儲器,防止存取數(shù)據(jù)。數(shù)據(jù)處理單元為了“解鎖”該盒式程序存儲器需要向該封鎖控制電路傳送一個“密碼”,控制電路從而使地址加密器“解鎖”該盒式程序存儲器。
地址加密器通過打亂CPU與盒式存儲器中的ROM之間的地址總線的地址線路來封鎖該盒式存儲器。當?shù)刂肪€路被打亂時,CPU仍然訪問ROM中的存儲單元;然而,存儲器中的數(shù)據(jù)在存儲器中的地址就錯了,因此,在地址加密器正在打亂地址線路時,CPU不能執(zhí)行盒式ROM中的程序。從而,“封鎖”了該盒式存儲器。
為了“解鎖”盒式存儲器,CPU將一個預定的地址序列設(shè)定在地址總線上。由于程序ROM被打亂了,這一設(shè)定只是存儲器到寄存器的操作,從而防止了實際執(zhí)行程序ROM中的代碼。任何想執(zhí)行ROM中的代碼的企圖會導致系統(tǒng)崩潰,這是由于典型的指令是多字節(jié)指令而打亂字節(jié)的次序會導致不正確地執(zhí)行這些指令。
地址序列起“密碼”的作用來解鎖該盒式存儲器,封鎖控制電路監(jiān)視地址總線,等待CPU將正確的“密碼”寫在地址總線上。一旦封鎖控制電路檢測到正確的地址序列,封鎖控制電路便令地址加密器停止打亂ROM與CPU之間的地址線路。當?shù)刂肪€路不再被打亂時,CPU便能執(zhí)行盒式ROM中的程序。該盒式存儲器便“解鎖”了。
在盒式存儲器上加上地址加密器及封鎖控制電路只增加少量或不增加盒式存儲器的成本。除了ROM以外,典型的先有技術(shù)盒式存儲器中還有一眾所周知的稱作“地址譯碼器”的可編程邏輯芯片。典型的可編程邏輯芯片具有足夠的容量來實現(xiàn)地址譯碼器及本發(fā)明的地址加密器與封鎖控制電路。因此,本發(fā)明可加在盒式存儲器中而不增加任何附加的芯片,從而以少量或無附加成本增加這些功能。
因此,本發(fā)明的一個優(yōu)點為提供一種非常低成本而高效的防止非特許使用盒式存儲器與數(shù)據(jù)處理單元的方法。
除了封鎖的盒式存儲器,本發(fā)明還利用一塊大容量定作芯片來執(zhí)行實現(xiàn)高速、高分辨率聲頻/視頻系統(tǒng)所必需的多種任務。該芯片包括一個與CPU的接口、一個CPU“高速緩存”、一個存儲器控制器、一個存儲器仲裁器、一個DRAM刷新器、一個密致盤(CD)驅(qū)動控制器、一個數(shù)字信號處理器(DSP)聲音協(xié)處理器、及一個“阻擊器(blitter)”圖形協(xié)處理器。借助于這一“聲頻/視頻/CD控制器/協(xié)處理器”(“A/V/CD控制器/協(xié)處理器”),一個非常高速、高分辨率系統(tǒng)就非常低成本高效地實現(xiàn)了。整個數(shù)據(jù)處理系統(tǒng)包括一個CPU、A/V/CD控制器/協(xié)處理器、存儲器、一個TV信號發(fā)生電路、一個I/O處理器、兩個譯碼器可編程陣列邏輯設(shè)備(譯碼PAL)、兩個盒式存儲器插頭座以及一個擴展插頭座。
A/V/CD控制器/協(xié)處理器從由CPU發(fā)出的系統(tǒng)總線上形成第二系統(tǒng)總線(副系統(tǒng)總線)。系統(tǒng)存儲器(包括視頻RAM、系統(tǒng)RAM及引導ROM)是經(jīng)由該副系統(tǒng)總線接口的。盒式ROM則是經(jīng)由系統(tǒng)總線接口的;再有,處理器“高速緩存”是經(jīng)由系統(tǒng)總線接口的。這樣,當A/V/CD控制器/協(xié)處理器與系統(tǒng)存儲器執(zhí)行功能時,CPU便能存取盒式ROM及“高速緩存”,從而允許CPU與A/V/CD控制器/協(xié)處理器的并行操作。
因此,本發(fā)明的另一優(yōu)點為對設(shè)計一種高速、高分辨率計算機系統(tǒng)提供了一種多芯片解決方案。
從對本發(fā)明的詳細描述中,本發(fā)明的這些及其它優(yōu)點將更為明顯。
在結(jié)合并構(gòu)成本說明書的一部分的附圖中,示出了本發(fā)明的實施例,它們連同上面給出的發(fā)明的一般性描述及下面給出的詳細描述,用來例示本發(fā)明的原理。
圖1A與1B為本發(fā)明的系統(tǒng)的總體配置的方框圖;圖2為本發(fā)明中所使用的視頻數(shù)一模轉(zhuǎn)換器的一部分的電原理圖3為本發(fā)明的地址加密器的一種實現(xiàn)的示意圖;圖4為本發(fā)明的A/V/CD控制器/協(xié)處理器的方框圖;圖5為用于“封鎖”一個盒式程序存儲器的另一種電路的方框圖;以及圖6為用于“封鎖”一個盒式程序存儲器的第三種方案的存儲器圖。
參見圖1A與1B,其中示出了本發(fā)明的一個計算機系統(tǒng)10。如圖1A中所示,系統(tǒng)10包括一個數(shù)據(jù)處理單元12及一個可卸地連接在其上的盒式程序存儲器14。同時連接在數(shù)據(jù)處理單元12上的有一臺標準電視機(TV)16、一個供選用的鍵盤18、一個或多個供選用的控制器20a與20b、以及一個供選用的CD驅(qū)動器22。雖然在圖1A中未示出,該標準TV16可用一對揚聲器及一個接受復合視頻信號的顯示設(shè)備來代替。
處理單元12包括一個中央處理單元(CPU)30、一個聲頻/視頻/CD驅(qū)動器(A/V/CD)控制器/協(xié)處理器32、一個系統(tǒng)存儲器34、一塊第一譯碼芯片PAL1 35a、一塊第二譯碼芯片PAL2 35b(也示出在圖4中)、一個I/O處理器36、兩個盒式存儲器插頭座(其中一個一般性地示出在37a處,另一個未示出)、生成聲頻與視頻信號所需的附加電路38、以及一個擴展插頭座(一般性地在圖4中示出在39處)。這些設(shè)備是如圖1A所示的電路連通連接的。附加電路38示出在圖1B中,并在結(jié)合圖1B的文字中更詳細地討論。
CPU30發(fā)出多條總線一條數(shù)據(jù)總線31a、一條地址總線31b及一條控制總線31c,它們是本技術(shù)中眾所周知的。這三條總線集體稱作系統(tǒng)總線31。在較佳實施例中,CPU30為由英特爾公司(3065 Bowers Ave.,Santa Clara,California,95051)制造的80376。80376是著名的80386SX的一種改型,后者是本技術(shù)中眾所周知的并且也能從英特爾公司購得。80376與80376SX的不同點在于80376以32位模式起動而不是16位模式。具體地說,CRO寄存器(控制只讀寄存器)被強制置位成0011H(十六進制的0011)狀態(tài)而將位0強制置位成邏輯“1”,有效地使376在一種32位存儲器模式中操作。啟動分頁來容許虛擬386操作。
在結(jié)合圖4的文字中將詳細討論A/V/CD控制器/協(xié)處理器32。現(xiàn)在只要說明下述問題就夠了,即A/V/CD控制器/協(xié)處理器32包括下述功能塊一個存儲器刷新器、一個視頻控制器、一個“阻擊器(blitter)”圖形協(xié)處理器、一個CD驅(qū)動控制器、一個數(shù)字信號處理器(DSP)聲音協(xié)處理器、以及一個用于仲裁六個可能的總線主控器(CPU、“阻擊器(blitter)”、DSP、存儲器刷新器、視頻控制器、以及CD驅(qū)動控制器)之間對系統(tǒng)存儲器的存取的仲裁器?!白钃羝?blitter)”(阻擊器圖形協(xié)處理器)在沒有處理器干預的情況下具有傳送/移動大塊存儲內(nèi)容的塊傳輸功能。仲裁器控制這些設(shè)備的不斷變化的優(yōu)先級,如這里所描述的,并且它是與A/V/CD控制器/協(xié)處理器32中的所有設(shè)備電路連通的。例如,直到出現(xiàn)一個中斷以前,CPU30具有所有總線主控設(shè)備中最低的優(yōu)先級。從而,仲裁器既與CPU接口60電路連通又與中斷控制器68電路連通。
CPU30具有與之關(guān)聯(lián)的一條系統(tǒng)總線31。系統(tǒng)總線31是指圖1中所示的組合數(shù)據(jù)總線31a、地址總線31b及控制總線31c而言。A/V/CD控制器/協(xié)處理器32便是用于系統(tǒng)存儲器34的仲裁器;因此,A/V/CD控制器/協(xié)處理器32將系統(tǒng)總線31改變成副系統(tǒng)總線61(包括副數(shù)據(jù)總線61a、副地址總線61b及副控制總線61c)。
系統(tǒng)存儲器34包括屏幕RAM、系統(tǒng)RAM及引導ROM。系統(tǒng)存儲器34將在結(jié)合圖4的文字中更詳細地討論。
I/O處理器36將CPU30接口到許多I/O設(shè)備上,諸如鍵盤18、控制器20a與20b、一個數(shù)字化轉(zhuǎn)換器(未示出)、一個鼠標器(未示出)、一臺打印機(未示出)以及一個觸摸板(未示出)。在較佳實施例中,I/O處理器36是莫托羅拉公司(Motorola Corp,)制造的以2MHz運行的預編程的MC68HC705C8(此后稱作“68HC705”)。通過將68HC705I/O處理器36配置成一個外部設(shè)備來與CPU30接口(1)將PA0-PA7連接到數(shù)據(jù)總線31a的D0-D7上;(2)將PB7、PB1與PB2分別連接到地址總線31b與控制總線31c的GPI01(如下所述,指由A/V/CD控制器/協(xié)處理器32譯碼的一個32字節(jié)地址范圍)、A1與A2上;以及(3)將PB3、PB4與PB5分別連接到控制總線31c的ADS、READY、與W/R上。從而,I/O處理器被解碼成具有I/O空間中的4個16位地址(在這里稱作AS0、AS2、AS4與AS6)。
68HC705中的程序與CPU30的接口如下。68HC705是設(shè)計成直接掛在處理器總線上并作為對CPU30的一個I/O端口工作的。一對內(nèi)部鎖存器保持兩個處理器之間傳遞的數(shù)據(jù)直到另一個準備好接收它為止。各處理器的狀態(tài)位表示數(shù)據(jù)鎖存器的狀態(tài)。通過檢驗狀態(tài)位,各處理器能知道前面的數(shù)據(jù)是否已被讀取以及是否有數(shù)據(jù)正在等待讀取。
I/O協(xié)處理器36實現(xiàn)下述功能(1)一個50毫秒定時器,(2)輸入設(shè)備的一條串行控制器鏈路,(3)盒式存儲器感測,(4)系統(tǒng)復位,以及(5)一條用于CD驅(qū)動器22的數(shù)據(jù)/選通/確認(DSA)CD控制通信鏈路。
50毫秒定時器是利用68HC705I/O協(xié)處理器36的監(jiān)視器定時器實現(xiàn)的。當監(jiān)視器定時器到對時,I/O協(xié)處理器36用A/V/CD控制器/協(xié)處理器32的模擬中斷1(AI1)中斷CPU30。CPU30以讀取如前所述的16位I/O端口ASO來響應這一中斷,它令A/V/CD控制器/協(xié)處理器32激活I(lǐng)/O協(xié)處理器36,從而導致CPU30與I/O協(xié)處理器36之間的一次數(shù)據(jù)傳輸。
控制器20、鍵盤18及所有其它輸入設(shè)備都是經(jīng)由串行控制器鏈路連接到I/O處理器36上的??刂破鲗⒖刂圃O(shè)備的活動變換成適合于沿串行鏈路傳輸?shù)母袷???刂破鹘?jīng)由控制器串行數(shù)據(jù)鏈路將數(shù)據(jù)包送到系統(tǒng)單元。數(shù)據(jù)包隨IO設(shè)備的類型而不同。坐標型設(shè)備(鼠標器、模擬式操縱桿、觸摸板等)具有與開關(guān)閉合型設(shè)備(鍵盤、數(shù)字操縱桿、開關(guān)盤等)不同的數(shù)據(jù)包。
串行控制器鏈路由三條線路(3)構(gòu)成一條數(shù)據(jù)接收線、一條VCC(+5伏直流電)線及一條地線。68HC705用PDO/RDI腳來實現(xiàn)控制器串行鏈路的數(shù)據(jù)接收線。該腳是設(shè)計成用眾所周知的異步格式與串行設(shè)備接口的。一種時鐘同步格式也能用作替代。串行控制器鏈路用一個三導線接線器連接到外部設(shè)備上。輸入設(shè)備是菊花鏈接的,因此只有一個單一的設(shè)備物理地連接在數(shù)據(jù)處理單元12上。
盒式存儲器感測是通過令I(lǐng)/O協(xié)處理器36查詢盒式存儲器插頭座37a的一個腳來實現(xiàn)的。該腳由系統(tǒng)板上的一個上拉電阻器拉升到一個邏輯“1”,而一個準確連接的盒式存儲器則將其拉至一個邏輯“0”。
復位是通過使I/O協(xié)處理器36獲得對CPU30及A/V/CD控制器/協(xié)處理器32的復位信號的控制而實現(xiàn)的。CPU30能命令I(lǐng)/O協(xié)處理器36復位系統(tǒng)10。此外,I/O協(xié)處理器36監(jiān)視系統(tǒng)的復位開關(guān)(未示出),每當它檢測到一次開關(guān)閉合時便復位系統(tǒng)。
DSACD控制協(xié)議是使用68HC705的三個腳實現(xiàn)的。I/O協(xié)處理器36使用這一協(xié)議來對CD驅(qū)動器22傳送命令及將來自CD驅(qū)動器22的消息轉(zhuǎn)發(fā)到CPU30。
第一譯碼芯片PAL1 35a是沿地址總線31b與控制總線31c與CPU30、A/V/CD控制器/協(xié)處理器32及兩個盒式存儲器插頭座37a(另一個未示出)電路連通的,如圖1A中所示。第一譯碼芯片PAL1 35a接收兩條高位地址線作為輸入,將80376 CPU30的16兆字節(jié)地址空間譯碼成由三條芯片選擇線表示的四個4兆字節(jié)區(qū)域兩條用于盒式存儲器插頭座37a(另一個未示出),一條用于A/V/CD控制器/協(xié)處理器32。高端四兆字節(jié)及低端四兆字節(jié)是譯碼成A/V/CD控制器/協(xié)處理器芯片選擇的,而剩下的兩個4兆字節(jié)區(qū)是譯碼成兩個盒式存儲器插頭座芯片選擇的。
數(shù)據(jù)處理單元12也有一對盒式存儲器插頭座(一個示出在37a處,另一個未示出)用于將一個盒式存儲器14與CPU30及其它系統(tǒng)部件電路連通。盒式存儲器14經(jīng)由一個鍍金的70腳(兩行35個導線)邊緣卡插接件37b連接到數(shù)據(jù)處理單元12上。處理器單元12有兩個盒式存儲器插頭座37a,用于接納邊緣卡插接件37b的邊緣卡插接端。盒式存儲器14具有鍍金的卡邊緣接線端來配合插頭座37a的導線,允許盒式存儲器14插接在處理器單元12上。下述信號是經(jīng)由盒式存儲器插頭座37a(另一個未示出)傳送給外部設(shè)備的系統(tǒng)總線31信號、DSACD控制信號、12S CD數(shù)據(jù)信號、一條盒式存儲器感測線、電源、地線、模擬中斷1或2(各盒式存儲器有一唯一的中斷號)、GPI0 2或3、一條封鎖線(這是80376與80386SX系統(tǒng)總線31的典型信號)、以及一個由第一譯碼芯片PAL135a生成的盒式存儲器選擇。
此外,處理器單元12具有一單一的100腳(兩行各50腳)邊緣卡擴展插頭座(未示出在圖1A中,一般性地示出在圖4中39處),擴展插頭座39允許設(shè)備在系統(tǒng)存儲器34上增加更多的存儲器及增加各種其它性能。連接在擴展插頭座39上的設(shè)備具有鍍金的卡邊緣以便與擴展插頭座配合,而允許這些設(shè)備插接在處理器單元12上,下述信號經(jīng)由擴展插頭座39傳送至外部設(shè)備副系統(tǒng)總線信號(在結(jié)合圖4的文字中描述)、DSACD控制信號、I2S CD數(shù)據(jù)信號、一條擴展插頭座39感測線、電源、地線、CAS與RAS線、以及一個由第二譯碼芯片PAL235b生成的擴展插頭座39選擇。
圖1A的附加電路38示出在圖1b中。參見圖1b,附加電路38包括四個設(shè)備一個視頻數(shù)字至模擬轉(zhuǎn)換器(視頻DAC)40、一個NTSC/PAL(“PAL”指著名的歐洲電視信號標準)編碼器42、一個RF調(diào)制器44及一個音頻模擬至數(shù)字轉(zhuǎn)換器/數(shù)字至模擬轉(zhuǎn)換器/壓縮器/解壓縮器(ADC/DAC/CODEC)46。
A/V/CD控制器/協(xié)處理器32具有若干功能塊,它們將在結(jié)合圖4的文字中更全面地描述。現(xiàn)在只要知道其中兩塊是一個視頻控制器66及一個數(shù)字信號處理器(DSP)74就夠了。
A/V/CD控制器/協(xié)處理器32的視頻控制器66連接到一個外部視頻DAC40,后者將來自視頻控制器66的18位象素信息(紅、綠及蘭各6位)轉(zhuǎn)換成眾所周知的一個RGB信號。如圖2中所示,視頻DAC的各顏色通道(R、G與B)是用一棵R2R電阻器樹及一個2N222晶體管實現(xiàn)的。如圖所示,圖2中的設(shè)備是電路連通的。圖2中的電阻器41a-41j都是0.2 5瓦電阻器,其電阻值示出在圖中,在5%容差范圍內(nèi)。晶體管43為一個2N2222。
再參見圖1B,用NTSC/PAL編碼器42將RGB信號轉(zhuǎn)換成NTSC復合視頻信號。NTSC/PAL編碼器42接收由A/V/CD控制器/協(xié)處理器32的視頻控制器66生成的色度時鐘、HSYNC與VSYNC信號,以及由視頻DAC40生成的紅、綠與蘭視頻輸出,并以知名的NTSC或基帶視頻格式生成一個復合視頻信號。作為替代,也可生成知名的PAL(歐洲電視信號標準)格式。用一個單一的RCA凹型聲音插孔將復合視頻信號連接到外部設(shè)備上,如本技術(shù)中眾所周知的那樣。在較佳實施例中,NTSC/PAL編碼器42是一個莫托羅拉公司制造的MC1377。
RF調(diào)制器44將來自MC1377的復合視頻信號與來自聲頻ADC/DAC/CODEC46的左右聲道輸出信號合并成一個載波頻率以生成一個適于直接輸入電視機16的RF視頻信號(稱為RF視頻)。為了生成不同的PAL(歐洲電視信號標準)與NTSC格式,必須使用不同的RF調(diào)制器及晶體。RF視頻信號用一個單一個凹型F型同軸線接插件連接到外部設(shè)備上,如本技術(shù)中眾所周知的那樣。
聲頻ADC/DAC/CODEC46以符合著名的菲利浦I2S協(xié)議的串行鏈路鏈接到DSP74上。ADC/DAC/CODEC46將模擬數(shù)據(jù)轉(zhuǎn)換成數(shù)字數(shù)據(jù),或者反過來,并壓縮與解壓縮數(shù)字數(shù)據(jù)。ADC/DAC/CODEC46將來自可選用的麥克風的外部立體聲模擬數(shù)據(jù)接到A/V/CD控制器/協(xié)處理器32上,聲頻輸入是用一個標準的立體聲1/4英寸接線器連接到外部設(shè)備上的。聲頻ADC/DAC/CODEC46還通過生成左右聲道輸出信號將來自A/V/CD控制器/協(xié)處理器的數(shù)字數(shù)據(jù)接到外部設(shè)備上,這些信號是用兩個凹形RCA聽筒插孔連接到諸如揚聲器等選用的外部設(shè)備上的,這是在本技術(shù)中眾所周知的。如前所述,這些聲頻線信號還加到RF視頻信號上。
在本較佳實施例中,該ADC/DAC/CODEC46為晶體半導體(Crysta1 Semiconductor)公司制造的CS4216。這一部件包含帶有可編程增益的麥克風輸入,以及帶有可編程衰減器的輸出。增益與衰減兩者都是由DSP74可編程控制的。
作為替代品,可用一個菲利浦制造的TDA1311來替代ADC/DAC/CODEC46。如果使用了這種芯片,則得不到ADC與CODEC功能。
最后,數(shù)據(jù)處理單元12具有一個用于實現(xiàn)擴展插頭座39的芯片選擇的第二譯碼器芯片PAL2 35b。譯碼芯片PAL235b是沿副系統(tǒng)總線61與A/V/CD控制器/協(xié)處理器32及擴展插頭座39電路連通的。第二譯碼芯片PAL2 35b只允許A/V/CD控制器/協(xié)處理器32譯碼從F20000H起始的一個128K的系統(tǒng)ROM1塊。從F40000H至FFFFFFH的范圍是由PAL2 35b譯碼,用于擴展插頭座39的。譯碼芯片PAL2 35b所譯碼的ROM的這一塊是用于經(jīng)由擴展插頭座39將ROM增加到系統(tǒng)10上的。
如圖1A中所示,盒式程序存儲器14包括一個程序ROM50及一個封鎖電路52。程序ROM50中包含以只讀存儲器格式的適合于在CPU30上執(zhí)行的代碼。在替代品中,諸如蓄電池后備的RAM等其它存儲器類型可用作盒式存儲器14中的存儲設(shè)備。如圖1A所示,程序ROM50是與CPU30電路連通的。在本較佳實施例中,封鎖電路52包括一個存儲器控制電路,例如一個地址加密器54,以及一個封鎖控制電路56。
地址加密器54沿地址總線31b介于程序ROM50與CPU30之間。它發(fā)出一條加密時第三地址總線55,如圖1A與3中所示。如圖所示,地址加密器54不需要每一條地址線都作為一個輸入端。地址加密器54可實現(xiàn)為只需要打亂n位地址總線31b中的m條地址線,在圖3中,地址線Ao至Am被打亂而生成Ao′至Am′,將它們輸入程序ROM50。兩條低位地址線中的至少一條應加以打亂以充分加密數(shù)據(jù)。如圖1A與3中所示,地址加密器54還生成一個典型的ROM50的芯片選擇信號57,正如本技術(shù)中所共知的。
在本較佳實施例中,地址總線31b中的三條地址線A0、A1與A2被打亂而形成第三地址總線55;地址總線31b中其余的地址線與第三地址總線55相同。地址總線31b的線A0換到第三地址總線55的線A2上。地址總線31b的線A2換到第三地址總線55的線A1上。最后,地址總線31b的線A1換到第三地址總線55的線A0上。這便有效地加密了ROM50中的數(shù)據(jù)使之不能執(zhí)行。此外,ROM50中的各數(shù)據(jù)字節(jié)仍具有唯一的地址,而容許在試圖解鎖盒式存儲器之前,計算ROM50的校驗和(將所有字節(jié)加在一起,不考慮進位)。
整個封鎖電路52可在本技術(shù)中熟知的一個可編程邏輯陣列(PAL)、一個可編程邏輯器件(PLD)、一個專用的集成電路(ASIC)或一個現(xiàn)場可編程門陣列(FPGA)上實現(xiàn)。封鎖控制電路56包括若干與一個同步狀態(tài)機電路連通的比較器。該狀態(tài)機初始化成一種“封鎖的”狀態(tài),令地址加密器54打亂地址線。不正確的地址將狀態(tài)機保持在該封鎖狀態(tài)中。當在地址總線上確立了正確地址序列中的各地址時,適當?shù)谋容^器指明該地址的出現(xiàn),而令狀態(tài)機轉(zhuǎn)換到下一狀態(tài)。如果正確的地址以正確的次序出現(xiàn),則狀態(tài)機進入“解鎖”狀態(tài),而令地址加密器54停止打亂地址線,在加密器54“解鎖”前任何時刻,一個不正確的地址使封鎖控制電路56返回到初始“封鎖”狀態(tài)。一旦封鎖控制電路56解鎖了加密器54,封鎖控制電路56便將加密器54保持在解鎖狀態(tài)中直到機器復位或再次啟動系統(tǒng)電源為止。
在另一種可選方案中,封鎖控制電路56可配置成在出現(xiàn)一個或多個預先選定的事件時重新進入封鎖狀態(tài),令地址加密器54重新打亂地址線直到在地址總線上以正確的次序確立正確的地址序列。還有一種方案,封鎖控制電路56設(shè)計成不必要求地址以正確的序列出現(xiàn)。而是,狀態(tài)機可設(shè)計成只要求確定所有預先選擇的地址,而不考慮正確的次序。
系統(tǒng)加電時,封鎖控制電路56令地址加密器54打亂一條或多條從CPU30到程序ROM50的地址線。此外,封鎖控制電路也能設(shè)計成令地址加密器54響應其它事件而打亂地址線,諸如系統(tǒng)復位、或者一個單穩(wěn)多諧振蕩器的到時,這便要求CPU周期性地將正確的組合確定在地址總線31b上。打亂地址可采取交換兩條或兩條以上地址線的方式(例如,將地址線A3與地址線A6交換)或者將一條或多條地址線反映在一條或多條其它地址線上(例如,令出現(xiàn)在地址線A3上的信號同時出現(xiàn)在地址線A3、A4、及A5上)。在本較佳實施例中,地址總線傳導路徑并不實際打亂(如果使用機電繼電器來打亂地址線時便是實際打亂的);而是電子地交換地址總線傳導路徑上的信號。再者,在替用品中的地址加密器54可采用隨機選擇的多種打亂模式。
這樣,盒式存儲器便被“封鎖”而不能用于非特許的設(shè)備。此外,存儲器控制電路不限于一個地址加密器54。也可用一個數(shù)據(jù)總線31a加密器或一個控制總線31c加密器或任何數(shù)據(jù)總線31a、地址總線31b或控制總線31c的打亂的組合或排列來達到封鎖效果。因此地址總線加密器54不一定非打亂地址總線31b線路不可,因為一個更廣義的“總線加密器”可用于實現(xiàn)存儲器控制電路。
地址加密器54可實現(xiàn)為一個多路轉(zhuǎn)換器,它響應來自封鎖控制電路56的輸出,在正確地址與打亂的地址之間切換。
由于程序ROM50正在輸出的數(shù)據(jù)將不對應于正確序列中的可執(zhí)行代碼,因此對于非特許的設(shè)備,盒式程序存儲器14是“封鎖”的。交換或者映射地址線將具有替換各自地址的作用從而達到攪亂代碼的次序的效果。因此,當?shù)刂芳用芷?4正在打亂地址時,企圖讀取盒式存儲器14內(nèi)的程序ROM的任何非特許的設(shè)備將讀出被擾亂了的操作碼與操作數(shù),它們非??赡苁菬o意義的。在任何情況下,當?shù)刂肪€被擾亂時,應用程序不會像所期望的那樣執(zhí)行。
為了“解鎖”盒式存儲器,CPU30以一種特定的次序訪問地址31b總線上的一個或多個地址。封鎖控制電路56監(jiān)視地址總線31b。一旦適當?shù)牡刂沸蛄谐霈F(xiàn)在地址總線31b上,封鎖控制電路便令地址加密器54停止打亂將程序ROM50連接到CPU30上的地址線。一旦地址加密器54停止打亂地址線,CPU30便能訪問程序ROM30中的代碼并執(zhí)行其中的程序。
在盒式存儲器14中加入地址加密器54及封鎖控制電路56,只在盒式程序存儲器14上增加極少的成本(如果真有增加的話)。通常,盒式存儲器利用盒式存儲器14內(nèi)的一個地址譯碼器來對地址總線31b的全寬度譯碼以適用于程序ROM50的存儲量。例如,一兆字節(jié)的ROM有20條地址線;然而,CPU30的整個地址總線31b是引出到盒式存儲器14上的。如果CPU30為一個80376或80376SX,則地址總線31b為24位寬;因此,要求存儲器譯碼器將24位地址空間譯碼到一個20位區(qū)域中。因此,一個盒式存儲器14通常需要一個內(nèi)部地址譯碼器。
地址譯碼器通常是一個可編程陣列邏輯(PAL)或可編程邏輯設(shè)備(PLD)。一種適用的PAL便是本技術(shù)中公知的并且是由多家制造廠商(諸如AMD公司)制造的16V8。16V8除了提供所需要的地址譯碼器以外,還提供實現(xiàn)地址加密器54及封鎖控制電路56的足夠內(nèi)部邏輯,因此,可以只增加極少的或不增加單位附加成本而在盒式存儲器14中實現(xiàn)本發(fā)明的封鎖電路52。
地址加密器54提供一種防止在非特許的系統(tǒng)中使用盒式程序存儲器14的“封鎖”方法。此外,本發(fā)明的系統(tǒng)10提供一種防止在本發(fā)明的特許系統(tǒng)10中使用非特許的盒式存儲器的方法。
相對于未打亂的存儲空間,打亂地址總線31b的線具有在存儲空間中交換與/或復制字節(jié)的效果。從而,以下述方法檢測一個非特許的盒式存儲器(1)CPU30從程序ROM中讀取一個打亂了的存儲塊,并將其值保存在系統(tǒng)存儲器34的系統(tǒng)RAM中;(2)然后CPU330在地址總線331b上確定N個地址的正確序列令盒式存儲器中的封鎖控制電路(如果有的話)使地址加密器(如果有的話)停止打亂地址線;(3)CPU30像步驟(1)中那樣從程序ROM中同一位置處讀取一個未打亂的存儲塊;以及(4)CPU30比較打亂的與未打亂的存儲塊。
上述方法中的“N”應適當選擇以防止被地址的順序讀取所誤解鎖,這種順序讀取通常是作為校驗和計算或程序執(zhí)行的一個部分而執(zhí)行的。N=2為最小值并且只有當這些值不連續(xù)時才能接受。在較佳實施例中,將采用大約6個地址(N=6)的一個序列。所采用的地址的準確數(shù)量為鎖存器的數(shù)量及用于實現(xiàn)地址解碼器/加密器54的可編程部分中可利用的輸入腳的個數(shù)的一個直接函數(shù)。鎖存器及可利用的輸入腳越多,實現(xiàn)封鎖控制電路56的狀態(tài)機就越大。
如果這兩個塊中包含完全相同的數(shù)據(jù),那么該盒式存儲器沒有地址加密器54,因而是一個非特許的盒式存儲器,而CPU便能采取相應的行動(例如,停機、顯示一則消息然后停機、進入一個死循環(huán)等)。反之,如果從存儲器中完全相同的單元中讀出不同的數(shù)據(jù)塊,則該盒式存儲器的確有一個地址加密器54而認為該盒式存儲器為一個特許的盒式程序存儲器。
測試塊可具有任何大小。合適的塊大小是16位。此外,每次系統(tǒng)10校驗一個特許盒式存儲器時,不一定非測試同一存儲塊不可。再者,可以將封鎖控制電路56設(shè)計成在地址總線31b上確立一個不正確地址時不令狀態(tài)機進入封鎖狀態(tài)。從而使被測試的地址能與解鎖系統(tǒng)的地址混合。
再參見圖1A,其中示出了密致盤驅(qū)動器22與數(shù)據(jù)處理單元12之間的接口。兩條總線控制CD驅(qū)動器22(1)一條用于控制CD驅(qū)動器22的DSA總線及(2)一條I2S CD數(shù)據(jù)總線。DSA總線是由I/O協(xié)處理器3-6生成的而I2S CD數(shù)據(jù)總線則是由A/V/CD控制器/協(xié)處理器32生成的。
參見圖4,聲頻/視頻/CD驅(qū)動器控制器/協(xié)處理器(A/V/CD控制器/協(xié)處理器)32電子設(shè)備是大部分包含在一塊稱作一個ASIC的定制的大規(guī)模邏輯芯片中的(ASIC是專用的集成電路)。符合這里的描述的一個A/V/CD控制器/協(xié)處理器32可從MSU有限公司(270Upper 4th Streect,WitanGate West,Central Milton Keynes,MK9 1DP England)購得。A/V/CD控制器/協(xié)處理器32包含一個處理器接口60、一個處理器高速緩存62、一個存儲器接口/刷新器64、一個視頻控制器62、一個中斷控制器68、一個視頻阻擊器(blitter)70、一個CD驅(qū)動控制器72、一個數(shù)字信號處理器(DSP)74及一個DSP存儲器76。處理器接口60、存儲器接口/刷新器64及視頻控制器66合起來稱作視頻/存儲器控制器67。系統(tǒng)存儲器34、中央處理單元30及其它設(shè)備位于A/V/CD控制器/協(xié)處理器32外面。
副系統(tǒng)總線61將各種設(shè)備電連接到系統(tǒng)存儲器34上。六個可能的總線主控器(分別從最高優(yōu)先級到最低優(yōu)先級的次序)共享副系統(tǒng)總線61存儲器刷新器54、視頻控制器66、CD驅(qū)動控制器72、DSP74、阻擊器(blitter)70及CPU30(通過處理器接口60)。在任何一個時刻只有總線主控器中的一個可控制到系統(tǒng)總線61(A/V/CD控制器/協(xié)處理器32與系統(tǒng)存儲器34之間的副數(shù)據(jù)總線61a、副地址總線61b及副控制總線61c)。
視頻/存儲器控制器67控制副系統(tǒng)總線61,并將存儲器定時信號(諸如CAS、RAS允許寫入等)提供給連接在副系統(tǒng)總線61上的存儲設(shè)備,如本技術(shù)中眾所周知的。它還需要占用存儲器周期(需要視頻存儲器周期來從系統(tǒng)RAM中讀取視頻數(shù)據(jù);由于視頻是由這一過程實時生成的,在需要視頻數(shù)據(jù)時,視頻邏輯必須訪問存儲器),并且在副系統(tǒng)總線61上實際上具有最高優(yōu)先級,如前所述。視頻線取出視頻數(shù)據(jù)及刷新動態(tài)RAM(DRAM)的短時間間隔內(nèi),它暫??偩€主控器的操作。它同時控制與CPU30的接口。
DSP74是一個單片的用于聲音合成的甚高速處理器,可以以高達每秒33兆條指令(MIP)的速度遠行。它能夠經(jīng)由一個DSP DMA控制器(未示出)訪問副系統(tǒng)總線61,該控制器允許它將字節(jié)或字讀出或?qū)懭胂到y(tǒng)存儲器34。這些傳送是以短脈沖串方式進行,并在DSP程序的控制下。DSP74實際執(zhí)行程序,并將數(shù)據(jù)存儲在本身的私用高速存儲器76中。
CD控制器72的密致盤讀取DMA通道允許系統(tǒng)將CD讀取數(shù)據(jù)傳送到系統(tǒng)存儲器34中而不需要任何軟件開銷。它可以直接傳送數(shù)據(jù),它還包含一個CD塊譯碼器。
中斷控制器68將6種內(nèi)部中斷送至CPU30,視頻中斷(最高優(yōu)先級)、模擬中斷1(AI1)、模擬中斷2(AI2)、模擬中斷3(AI3)、CD塊譯碼器中斷、及DSP中斷(最低優(yōu)先級)。在CPU30執(zhí)行中斷確認周期時,中斷控制器自動清除該中斷。每一個中斷可利用一個屏蔽位。
阻擊器(blitter)70是一個用于快速屏幕更新與動畫的一個圖形處理器,用作CPU30或DSP74的一個硬件圖形子例程。在阻擊器(blitter)程序操作中它將成為總線主控器,因此可以在相當長的時間間隔中擁有副系統(tǒng)總線61。然而,對于CPU30,它的優(yōu)先級并不絕對;在出現(xiàn)中斷時,可要求它將副系統(tǒng)總線61放棄給CPU30。在系統(tǒng)級上,CPU30是最低優(yōu)先級的總線主控器,然而,它能夠完全控制其它硬件,因此,副系統(tǒng)總線61的使用完全在CPU30程序的控制下。
A/V/CD控制器/協(xié)處理器32有四個主要模塊一個視頻/存儲器控制器67、一個密致盤讀取DMA72、一個阻擊器(blitter)圖形協(xié)處理器70及一個DSP74聲頻協(xié)處理器。CPU30的地址空間被譯碼成A/V/CD控制器/協(xié)處理器32中一組8位寄存器。所有內(nèi)部存儲單元是在偶數(shù)地址邊界上的;在適當時可執(zhí)行字寬度的I/O讀與寫。在這一特定實施例中,可以不在字寬度的寄存器上執(zhí)行字節(jié)寬度的寫,而I/O周期也可不用于存取奇地址。
除了上述寄存器,A/V/CD控制器/協(xié)處理器32還生成三條來自系統(tǒng)總線31的備用通用I/O譯碼器線(GPI01、GPI02及GPI03)。每條線提供一個32位地址范圍。通用譯碼器可以用于向A/V/CD控制器/協(xié)處理器32以外的設(shè)備提供三種低電平有效的芯片啟動信號。在數(shù)據(jù)處理單元12中,通用譯碼器把地址范圍譯碼到I/O協(xié)處理器36(GPI01)及兩個盒式存儲器插頭座37a(GPI02與GPI03),對此上面已更全面地說明了。
視頻/存儲器控制器67執(zhí)行四種功能視頻定時、中斷處理、視頻顯示生成、及存儲器配置、刷新和定時。
視頻/存儲器控制器67具有一個可編程為能適應不同標準的電視及高達640×480VGA標準的監(jiān)視器的靈活的視頻定時發(fā)生器。同步脈沖的位置、消隱、顯示區(qū)域、有效視頻(當A/V/CD控制器/協(xié)處理器32正從存儲器中取數(shù)據(jù)時)是在水平范圍內(nèi)以時鐘周期并在垂直方向上以行號編程的。視頻定時分成兩個部分。水平定時是以時鐘周期定義的并且是由若干個十一位寄存器確定的。垂直定時是以顯示行定義的并由若干個十位寄存器確定。
共有九個水平寄存器水平周期、水平同步、水平消隱結(jié)束、水平消隱開始、水平顯示開始、水平顯示結(jié)束、水平取出開始、水平取出結(jié)束及水平垂直同步。寫入水平周期寄存器的值確定以時鐘周期表示的水平行長度。在一個實施例中,行長度比寫入水平周期寄存器中的數(shù)大一。所需數(shù)字的公式為水平周期=(行長度×時鐘頻率)-1。
寫入水平同步寄存器中的值確定水平同步脈沖的寬度。以時鐘周期表示的水平同步寬度由水平周期寄存器與水平同步寄存器之間的差給定。所需的數(shù)字的公式為水平同步=水平周期-(水平同步寬度×時鐘頻率)。水平消隱結(jié)束寄存器確定何時水平消隱結(jié)束并且是以時鐘周期表示的后沿的寬度。水平消隱開始寄存器確定水平消隱開始位置。所需的數(shù)字的公式為水平消隱開始=水平周期-((水平同步寬度+前沿寬度)×時鐘頻率)。
水平顯示開始寄存器指定以時鐘周期表示的水平同步脈沖后沿之后生成視頻的時間。如果水平顯示開始寄存器大于水平消隱結(jié)束寄存器,視頻/存儲器控制器67在它們之間輸出邊界色。寫入這一寄存器的值通常應選擇為將畫面放置在電視屏面的中央。做到這一點的寄存器數(shù)字的公式為水平顯示開始=(水平消隱結(jié)束+水平消隱開始-(有效顯示寬度×時鐘頻率))/2。
水平顯示結(jié)束寄存器指定顯示結(jié)束位置,從而以象素表示視頻顯示的寬度。它應以下述數(shù)字來編程水平顯示結(jié)束=水平顯示開始+(象素數(shù)×每一象素時鐘數(shù))。如果水平消隱開始大于水平顯示結(jié)束,則輸出邊界色直到消隱開始為止。
水平取出開始寄存器確定行上第一次視頻取出的位置。這一寄存器應編程為在顯示開始時正好填充完十六字節(jié)象素緩沖存儲區(qū)。在實踐中,這意味著水平取出開始寄存器中的值是由水平顯示開始寄存器中的值,減去一個取決于顯示模式的常數(shù)后的差給定的。下表中包含在每一象素對應的位數(shù)與每一象素對應的時鐘數(shù)的各種組合下這一常數(shù)的值。例如,如果每一象素為四位而每一象素為五個時鐘,則常數(shù)為160。類似地,如果每一象素為四位而每一象素為一個時鐘,則常數(shù)為32。注意,如果每一象素為16位且每一象素為一個時鐘,則沒有可用的常數(shù)。
每一象素時鐘數(shù)5 4 3 2 1每一象素位數(shù)4 160128 96 64328 80 64 48 32161640 32 24 16無水平取出結(jié)束寄存器確定行上視頻取出結(jié)束的位置。原則上,這便是水平顯示結(jié)束的值減去上述常數(shù)。然而,水平取出開始應當這樣取值,使得水平取出結(jié)束寄存器減去水平取出開始寄存器的差為上述常數(shù)的倍數(shù)。
水平垂直同步被確定為出現(xiàn)在若干行上的較寬的同步脈沖。這些脈沖的寬度是由水平垂直同步寄存器確定的,該寄存器應編程為水平垂直同步=水平周期-(垂直同步寬度×時鐘頻率)。
視頻/存儲器控制器67也有大量垂直寄存器垂直周期寄存器、垂直同步寄存器、垂直消隱結(jié)束寄存器、垂直消隱開始寄存器、垂直顯示開始寄存器、垂直顯示結(jié)束寄存器、視頻中斷寄存器及光筆寄存器。垂直周期寄存器指定每一個場中的視頻行數(shù)。垂直同步寄存器確定生成垂直同步的行數(shù)。它應編程如下垂直同步=垂直周期-垂直同步行數(shù)。
垂直消隱結(jié)束寄存器確定一次垂直同步后消隱多少行。垂直消隱開始寄存器確定垂直同步前消隱多少行。它應編程如下垂直消隱開始=垂直同步-垂直同步前消隱行數(shù)。
垂直顯示開始寄存器確定有效視頻的第一行。如果這一寄存器大于垂直消隱結(jié)束寄存器,則其間的行顯示邊界色。為了將有效區(qū)定位在屏面的中央,這一寄存器應編程如下垂直顯示開始=(垂直消隱結(jié)束+垂直消隱開始-有效行數(shù))/2。垂直顯示結(jié)束寄存器確定有效電視的最后一行。如果這一寄存器小于垂直消隱開始寄存器,則其向的行顯示邊界色。為了將有效區(qū)定位在屏面的中央,這一寄存器應編程如下垂直顯示結(jié)束=(垂直消隱結(jié)束+垂直消隱開始+有效行數(shù))/2。
視頻中斷寄存器確定在其中生成視頻中斷的視頻行。這一中斷可通過INT寄存器允許或禁止。當視頻機制停止在顯示行的末尾上時,便發(fā)生該中斷。處理器可用它來改變顯示模式或執(zhí)行束同步動作。該寄存器可在一個場內(nèi)重新編程,以提供每一個場多次中斷。
A/V/CD控制器/協(xié)處理器32有一個光筆(或光槍)輸入。在這一輸入的每個場的第一上升沿上,分別將水平計數(shù)與垂直計數(shù)傳送到寄存器LP0與LP2中。這些值能轉(zhuǎn)換成所指向象素的X與Y坐標。如果在這一場中出現(xiàn)了光筆輸入的上升沿,便對寄存器STAT的位1置位,緊接垂直同步之前,應讀取這一寄存器位。
下表中提供所示的各種顯示格式的上述寄存器的典型值。將下面的值加載在寄存器中之后,便通過設(shè)置寄存器MODE2中的VIDEN位而啟動視頻定時發(fā)生器。
<p>視頻/存儲器控制器67有三種可資利用的彩色分辨率每一象素4位、每一象素8位及每一象素16位。在4與8位模式中,象素為邏輯色,它是存儲在調(diào)色板中的18位物理彩色的索引。在16位模式中,該象素為一個物理彩色,其中位0至4為蘭色、位5至10為綠色而位11至15為紅色。由于綠色有6位,但蘭色與紅色只有5位,所以從芯片輸出的蘭色與紅色的最低位在16位模式中永遠為邏輯0。邊界彩色是作為一個16位象素來顯示的一個16位寄存器。
在8位模式中,該象素尋址整個256×18調(diào)色板。在4位模式中,該象素尋址調(diào)色板中的16個表目,在這一情況中,地址的高4位由變址寄存器提供。
8位模式可利用兩種變型。在彩色保持模式中,如果該象素取值0,則顯示前一象素的顏色。這可以用于通過設(shè)定最左面的象素而填充大面積的彩色。
在可變分辨率模式中,最高位象素確定該象素作為一個7位象素還是兩個三位象素顯示。如果該位是清除的,則該象素作為一個7位象素顯示;如果該位是設(shè)置的,則首先顯示位0至2,隨后顯示位4至6。在這一情況中,兩個高分辨率象素尋址調(diào)色板的8個表目。地址的5個高位是由變址寄存器提供的??勺兎直媛誓J綄τ谠诜直媛瘦^低但色彩更豐富的背景中顯示高分辨率文字的小區(qū)域是有用的。這一模式不能在每一象素一個時鐘分辨率模式中使用。
在8位模式中,可以犧牲任何一位用于其它目的。例如,第一位可用于沖突檢測中來確定“熱點”(hot spot)。另外,某幾位可用于編碼圖象“深度”從而一個圖象可以移到另一個圖象的前方或后方。為了犧牲一位,在一個屏蔽寄存器中相同的位被置位,而來自變址寄存器中的對應位取代掉該位。
有五種象素寬度一個時鐘、兩個時鐘、三個時鐘、四個時鐘及五個時鐘。這些時鐘對應于圍繞24MHz、12MHz與6MHz的基本時鐘(dot clock)。最高基本時鐘可以不用于每一象素16位顯示模式。另外兩種組合一個時鐘8位及兩個時鐘16位只能用于配備了32位DRAM的情況。如果配備了外部硬件,A/V/CD控制器/協(xié)處理器32能夠同步鎖定(GEN-LOCK)一個外部視頻源并以象素挨象素的原則將本地視頻與外部視頻混合(包在外面)。
屏幕的存儲器映象不受視頻顯示器寬度的限制而是可以獨立定義的。屏幕的基地址可位于系統(tǒng)存儲器34中位何位置上。屏幕存儲器的寬度為從128至2048字節(jié)的2的冪。屏幕的高度為從32K至2兆字節(jié)的2的冪。同一行上的視頻地址在較小的邊界內(nèi)卷動。這一配置允許屏幕放置在一個較大的虛擬屏幕中并在其中掃視與滾動。
多個寄存器控制上面討論的視頻模式。視頻模式寄存器控制上面列出的特征。位0與1確定每一象素的位數(shù)。位2與3確定以時鐘周期表示的象素寬度。位4至6確定視頻地址中的第一間隙,從而決定以字節(jié)表示的顯示器寬度。位7至9確定視頻地址中的第二間隙,從而決定以字節(jié)表示的顯示器高度。位10將同步輸出轉(zhuǎn)換到輸入,它能復位水平與垂直定時器,用于快速鎖定在一個外部視頻源上。位11控制“結(jié)殼”(encrustation),“結(jié)殼”即使用一個外部視頻多路轉(zhuǎn)換器疊加一個外部視頻源。該多路轉(zhuǎn)換器是由A/V/CD控制器/協(xié)處理器的“INC”腳控制的。色彩中選擇若干位用于控制結(jié)殼。位12控制邊界結(jié)殼,它與位11相同,但只作用在邊界色彩上。位13設(shè)定可變分辨率模式。位14設(shè)定色彩保持模式,其中彩色0由當前掃描行中的前面的非0色彩替代。位15根據(jù)位2、3與15啟動3與5個時鐘寬度的象素的模式,如下表中所示。
視頻/存儲器控制器67還有一個象素屏蔽寄存器及一個調(diào)色板索引寄存器。對于在屏蔽寄存器中設(shè)置的每一位,象素中的對應位被來自變址寄存器的位所取代。變址寄存器中的高位構(gòu)成四位象素的調(diào)色板地址的高位部分。邊界彩色寄存器是一個定義邊界色彩的15位寄存器。這一色彩是以與16位象素相同的方式顯示的位0至4為蘭色、位5至10為綠色而位11至15為紅色。
視頻/存儲器控制器67還有兩個定義系統(tǒng)存儲器34中的24位屏幕基地址的屏幕地址寄存器。這便是屏幕上左上角象素的地址。
視頻/存儲器控制器67還有一個輔助視頻模式寄存器MODE2,它提供對視頻與各種測試邏輯的附加控制。位0啟動光筆寄存器以便能讀取水平與垂直計數(shù)器。位2啟動視頻定時器,位3與4確定刷新頻率,1表示時鐘/128的刷新頻率,2表示時鐘/256的刷新頻率而3則表示時鐘/512的刷新頻率。大多數(shù)DRAM要求64KHz或以上的刷新頻率。刷新控制器一直等到需要8個或8個以上刷新周期為止,然后請求副系統(tǒng)總線61并在RAS周期以前進行所需要的數(shù)目的CAS。當設(shè)置了位6時,視頻模式為雙重緩存的并且只能在消隱期間改變。CPU30設(shè)置此位用于在分離屏幕操作中的清楚的模式改變。位7反轉(zhuǎn)垂直同步的極性。位8反轉(zhuǎn)水平同步的極性而位9則不使用。
調(diào)色板為在RAM F10000H-F103FFH處的一個256×18位的塊。各項包含綠、紅與蘭中每一種的6位。每一項延伸通過兩個字。蘭與綠的位出現(xiàn)在高位字上。紅色的位出現(xiàn)在低位字上。高位字的位2至7為蘭色;高位字的位10至15為綠色而低位字的位2至7為紅色。為了在調(diào)色板中寫入一個項,CPU30必須首先將紅色位寫入低位字中,然后將綠色與蘭色位寫入高位字中。CPU30只能在電視上出現(xiàn)邊界或消隱或斑點時才能寫入調(diào)色板。
高速緩存62不是本義上的為CPU30預取指令的一個高速緩存。實際上,高速緩存62是位于F14000H至F143FFH的一個512×16位靜態(tài)RAM,它能被CPU30用于變量、棧或程序代碼來加速程序的執(zhí)行。它由靜態(tài)RAM構(gòu)成但不會頁面出錯。將數(shù)據(jù)、?;虺绦虼a放在高速緩存62中能加快存取并減少頁面出錯。在本實施例中,高速緩存是小的并且不允許在高速緩存區(qū)中寫入字節(jié)。中斷服務側(cè)程也不許壓字節(jié)進棧。
視頻/存儲器控制器67支持6個中斷源視頻輸入中斷、三種模擬中斷、CD塊譯碼器中斷、及一個DSP74中斷。模擬中斷允許實現(xiàn)簡單的模數(shù)轉(zhuǎn)換器。由一個二極管、一個電容器及一個電位計實現(xiàn)一個單穩(wěn)態(tài)振蕩器。電容器由垂直同步放電,并以取決于電位計的設(shè)定的一種速率開始充電。當電容器上的電壓達到對A/V/CD控制器/協(xié)處理器32的輸入閾值時,便生成一個中斷。然后,處理器便能讀取垂直計數(shù)器以得到電容器的充電速度,從而得到電位計的設(shè)定值。
視頻/存儲器控制器67還有一個中斷允許寄存器,允許獨立地允許或禁止所有六種中斷。在中斷確認寫寄存器的任何一位中寫入一個邏輯“1”便清除了對應的中斷。中斷讀寄存器反映所有等待中的中斷。
視頻/存儲器控制器67將80376CPU30的16兆字節(jié)地址范圍譯碼成下述存儲器映象8兆字節(jié)DRAMO(0H-7FFFFFH),7兆字節(jié)DRAM1(800000H-EFFFFFH),64K字節(jié)ROM0(F00000H-F0FFFFH),64K內(nèi)部存儲器(F10000-F1FFFFH),以及一個896K的ROM1(F20000H-FFFFFFH)。64K字節(jié)內(nèi)部存儲器中包括調(diào)色板RAM、阻擊器(blitter)寄存器、及DSP寄存器與存儲器。調(diào)色板地址范圍上面已指出。阻擊器寄存器位于范圍F10400H至F107F H中。DSP存儲器位于F10800H至F18000H。
板上屏幕RAM及系統(tǒng)RAM是512K的DRAM。包括屏幕/系統(tǒng)RAM的板上DRAM可以是16位或32位寬的。適用的DRAM為東芝公司制造的TCS14170BJ256千字節(jié)×16位存儲器芯片。DRAM的大小是由A/V/CD控制器/協(xié)處理器32在復位時確定的,但并不直接影響CPU30。
然而為其它候選總線主控器留下較多可利用的帶寬可使視頻/存儲器控制器67操作得更快。某些顯示器與阻擊器模式只可能用于32位存儲器??梢赃B接兩個DRAM體,如上所述。如果連接少量的DRAM,則它們在上面所示的整個存儲器映象中重復。
引導ROM總是16位寬的。引導ROM包括兩塊由許多廠家制造的27C512可擦除可編程只讀存儲器,從而給出128K的引導ROM。在一次復位后,包含ROM與內(nèi)部存儲器的從F00000H至FFFFFFH的一兆字節(jié)窗口在整個16兆字節(jié)地址范圍內(nèi)重復。這使得多種處理器能用A/V/CD控制器/協(xié)處理器32來引導。上述存儲器映象是CPU30寫入存儲器式寄存器時第一次采用的。視頻/存儲器控制器67可能時便在系統(tǒng)存儲器34上執(zhí)行頁式周期。它比正常的存儲器周期更快,并且在連續(xù)的讀與寫出現(xiàn)在同一頁中時發(fā)生。視頻/存儲器控制器67需要知道編程在存儲器式寄存器中的DRAM的列數(shù)。在存儲器式寄存器中,位0與1確定DRAM中的列數(shù),0表示256列,1表示512列,2表示1024列,而3則表示2048列。
視頻/存儲器控制器67支持7種傳輸一個正常的DRAM周期(4個時鐘),一個頁式DRAM周期(兩個時鐘),ROM周期(6個時鐘),內(nèi)部存儲器(2個時鐘),外部I/O(6個時鐘),中斷確認(2個時鐘),及內(nèi)部I/O(2個時鐘)。CPU30以比實際傳輸多一個時鐘周期的周期循環(huán)。內(nèi)部總線主控器能以傳輸時間為周期循環(huán)。
視頻/存儲器控制器67使用一個2X(兩倍速度)CPU30時鐘并且是電視彩色副載波頻率的倍數(shù)的一個晶體的晶體振蕩器。這一晶體時鐘被緩存并輸出到CPU30。將同一時鐘除以2并將其作為主系統(tǒng)時鐘輸出。這一時鐘是通過一個獨立的管腳輸入到A/V/CD控制器/協(xié)處理器32的。這樣輸出與輸入時鐘的理由在于這樣便能通過在兩條路徑之一上加上小的延時而在一個方向或另一方向上調(diào)整CPU2X時鐘與主系統(tǒng)時鐘之間的相對時滯。晶體頻率還由一個可編程分頻器分頻,它能用一個1與15之間的整數(shù)分頻晶體頻率,并生成一個帶有均勻占空比的輸出波形。這是用作電視彩色副載波的。
色度分頻器寄存器是定義電視彩色副載波(色度)對2X晶體頻率之比的一個4位寄存器。它應編程如下色度=2X晶體頻率/色度頻率-1。
視頻/存儲器控制器67還有一個狀態(tài)寄存器。如果設(shè)置了狀態(tài)寄存器位0,則應將視頻定時設(shè)定為PAL(歐洲電視信號標準)。如果清除了狀態(tài)寄存器的位0,則視頻定時應設(shè)定為NTSC。如果設(shè)置了狀態(tài)寄存器的位1,則當前場中有一次光筆輸入。這一位是由光筆設(shè)置而由垂直同步清除的。
在復位時,可將視頻/存儲器控制器置于這樣一種模式,此后它只響應兩個字寬的I/O單元及64K存儲器單元。I/O單元的實際位置由一個芯片選擇輸入確定,從而這些單元可從外部確定。這種“窺孔”模式允許A/V/CD控制器/協(xié)處理器32只占用系統(tǒng)10的I/O與地址寄存器映象中的小的間隔。
寄存器是32位寬的,因此必須作為兩次16位存取來存取。為了尋址A/V/CD控制器/協(xié)處理器32中的所有I/O寄存器,首先將所需的寄存器的正常I/O地址寫入低位字(a [1]低)中,然后便可在高位字(a[1]高)中讀取或?qū)懭朐摷拇嫫鳌榱藢ぶ稟/V/CD控制器/協(xié)處理器32內(nèi)部與外部的所有存儲器,可將64K窗口移動到16兆地址空間中的任何64K邊界上,這16兆地址空間通常是由視頻/存儲器控制器67通過寫入存儲體寄存器來譯碼的。存儲體寄存器是一個8位寄存器,它在窺孔模式中尋址存儲器時提供最高的8位。例如,為了訪問原先在F10000H的調(diào)色板,CPU30必須在存儲體寄存器中寫入0F1H,然后在由外部芯片選擇所確定的窺孔位置的底部讀與寫。
阻擊器(blitter)70是一個圖形協(xié)處理器,其目的為盡可能快速地執(zhí)行圖形建立與動畫(受存儲器帶寬的限制)。它執(zhí)行由CPU30與DSP74寫入存儲器的命令。通過從系統(tǒng)存儲器34中讀取新的命令,它能執(zhí)行任意長度的圖形操作序列。當它正在執(zhí)行圖形操作時,阻擊器70便成為一個副系統(tǒng)總線61主控器,而拒絕CPU30的一切總線活動。這是合理的,因為阻擊器70正在用于執(zhí)行本應由CPU30執(zhí)行的操作,并且因此而加快程序操作。這還消除了阻擊器操作對任何同步控制編程的需要,以及對阻擊器70中任何中斷生成硬件的需要。然而,為了允許其它兩個處理器(DSP74與密致盤DMA)之一的實時編程,阻擊器70可暫停其操作并將副總線61授予DSP74,或密致盤DMA通道,如果它們需要DMA傳輸?shù)脑挕T诔霈F(xiàn)中斷時,它還將掛起自己,并將副系統(tǒng)總線61放棄給CPU30。在這些傳輸?shù)娜魏我淮沃?,當前的操作被掛起,但在中斷信號變成不活躍或者在DSP74的DMA存取完成時將會重新啟動。
最好將阻擊器70的操作看成是一個簡單的程序從存儲器讀取命令for n=O to outer_count從存儲器讀參數(shù)for m=O to inner_countif SRCEN then從存儲器讀源if DSTEN then從存儲器讀目的地將目的地寫入存儲器next mnext nCPU30或DSP74將命令與操作數(shù)寫入存儲器中。
阻擊器70在A/V/CD控制器/協(xié)處理器32的I/O空間中有若干寄存器(1)兩個可寫的阻擊器程序地址寄存器,它們與兩個可讀的阻擊器目的地寄存器共享同一個I/O地址;(2)一個可寫的阻擊器命令寄存器,它與第一可讀的阻擊器源地址寄存器共享同一個I/O地址;(3)一個可寫的阻擊器控制寄存器,它與第二可讀的阻擊器源地址寄存器共享同一I/O地址;(4)一個可讀的內(nèi)部計數(shù)寄存器;(5)第一個可寫的阻擊器診斷寄存器,它與一個可讀的阻擊器外部計數(shù)寄存器共享同一I/O地址;(6)第二個可寫的阻擊器診斷寄存器,它與一個可讀的阻擊器狀態(tài)寄存器共享同一個I/O地址;以及(7)第三個可寫的阻擊器診斷寄存器。
阻擊器70可以以多種模式操作來執(zhí)行圖形與塊傳送操作。阻擊器70具有一種分成三大獨立塊的內(nèi)部體系結(jié)構(gòu)數(shù)據(jù)路徑、地址發(fā)生器及定序器。數(shù)據(jù)路徑包含三個數(shù)據(jù)寄存器源數(shù)據(jù)寄存器、目的地數(shù)據(jù)寄存器及模式數(shù)據(jù)寄存器。數(shù)據(jù)路徑還包含一個多功能比較器來允許智能的阻擊操作,及一個邏輯功能單元(LFU)以生成輸出數(shù)據(jù)。
地址發(fā)生器包含三個地址寄存器它們是用于取阻擊器命令的程序地址寄存器、源寄存器與目的地址寄存器。它還包含一個帶有用來更新地址的相關(guān)聯(lián)的步長寄存器的算術(shù)邏輯單元(ALU)及一個用于生成輸出地址的多路轉(zhuǎn)換器。
定序器從軟件方面說就是阻擊器70所運行的程序,它帶有兩個循環(huán)(一個內(nèi)循環(huán)及一個外循環(huán))及若干過程,如上面以簡單的程序所例示的。雖然其操作的各部分是根據(jù)阻擊器命令寄存器中的標志有條件地執(zhí)行的并且循環(huán)計數(shù)也是命令的一部分,但該程序是固定的。
數(shù)據(jù)路徑包含三個數(shù)據(jù)寄存器及兩個數(shù)據(jù)操縱塊能夠以多種有用的方法組合數(shù)據(jù)寄存器的內(nèi)容以生成輸出數(shù)據(jù)的邏輯功能單元,以及能夠在數(shù)據(jù)上執(zhí)行某些比較來禁止寫操作,及有選擇地停止阻擊器操作的比較器。
數(shù)據(jù)路徑能夠處理四種寬度的數(shù)據(jù)32位、16位、8位與4位。長字(32位寬)用于執(zhí)行快速塊傳送及填充。象素(4、8或16位寬)可使用所有的阻擊器模式操縱,諸如繪線型、多平面操作、字符繪制等。
大多數(shù)數(shù)據(jù)路徑是16位寬的,它是最大的屏幕象素大小。然而,源數(shù)據(jù)寄存器是32位寬的,而且不論邏輯功能單元的模式如何,源數(shù)據(jù)寄存器的高16位是用于生成32位模式中寫入的數(shù)據(jù)的高16位的。從而,有兩個16位寬的寄存器(模式數(shù)據(jù)與目的地數(shù)據(jù))及一個32位寬的數(shù)據(jù)寄存器(源數(shù)據(jù)寄存器)。源與目的地數(shù)據(jù)寄存器是在內(nèi)循環(huán)中啟動對應的讀周期時,從系統(tǒng)存儲器34中的源與目的地址中加載的。然而,所有這三個數(shù)據(jù)寄存器都是在阻擊器操作開始時帶有模式數(shù)據(jù)加載的,它可用作生成輸出數(shù)據(jù)中或比較器中的附加數(shù)據(jù)源。例如,模式數(shù)據(jù)寄存器中的數(shù)據(jù)可以是一個屏蔽、一個用于寫入的模式或者一個參照值。模型數(shù)據(jù)是加載進源數(shù)據(jù)寄存器中的兩個字中的。
邏輯功能單元生成寫入系統(tǒng)存儲器34中的目的地中的輸出數(shù)據(jù)。它能執(zhí)行源與目的地寄存器象素的任何組合。“源數(shù)據(jù)象素”可選自源數(shù)據(jù)寄存器或數(shù)據(jù)模式數(shù)據(jù)寄存器二者之一。LFU選擇來自數(shù)據(jù)寄存器的兩組輸入數(shù)的四種布爾小項(A&B、A&B、A&B與A&B)中任何一個,并生成兩個所選擇小項的邏輯“或”。這便允許輸入數(shù)據(jù)的任何邏輯組合;從而存在著16種功能的可能性。
在32位模式中,LFU通常是設(shè)置為生成源數(shù)據(jù)的,這是因為它只有16位寬。在一個長字寫入中寫入的高16位永遠是從源寄存器的高16位中導出的。
比較器能在源、目的地、與模式數(shù)據(jù)寄存器中的數(shù)據(jù)上執(zhí)行各種比較。如果滿足了其比較條件,它便生成一個禁止信號。該禁止信號用于禁止一個寫入操作,并且可以選擇用于停止阻擊器操作。比較器也可用于為沖突檢測及系統(tǒng)存儲器34的搜索操作提供象素位面效果以給出透明彩色,并作為字符繪制的一種幫助。
可以通過賦予每一個象素一個位面號來支持多位面操作。這一模式只適用于4與8位象素。在8位象素模式中,8位中的兩位(位6與7)用于給定兩或四個位面;而在4位(半字節(jié))象素模式中,四位中的一位(兩個半字節(jié)中的位3與位7)用于給定兩個平面。如果目的地數(shù)據(jù)的位面號不等于或大于源數(shù)據(jù)的平面位,或者它們的任何組合,比較器能生成一個禁止輸出。這意味著正在寫在屏幕上的數(shù)據(jù)是被已經(jīng)出現(xiàn)在另一位面上的數(shù)據(jù)屏蔽的。
如果整個源象素等于或不等于目的地象素時,比較器能生成禁止輸出。例如,這可用于在系統(tǒng)存儲器34中搜索一個特定的值,而更重要的是,用于指定一種色彩是透明的并將該透明的色彩值保持在一個數(shù)據(jù)寄存器中。這適用于16、8或4位象素。
阻擊器70還有一個比較器的位至象素擴展模式操作,這一比較器操作允許諸如用于字符繪制的數(shù)據(jù)的位至象索擴展。在這一模式中,比較器根據(jù)內(nèi)計數(shù)器的值從源字節(jié)中選取一位并且在該位為邏輯“0”時禁止寫操作。
阻擊器70作好處理三種象素分辨事模式的準備。它們是每一個字對應于一個象素的16位模式,每一個字節(jié)對應于一個象素的8位模式,及每一個字節(jié)對應于兩個象素的4位模式。在8與16位象素模式中,數(shù)據(jù)路徑每次處理一個象素,而操作是直截了當?shù)摹H欢?,?位象素模式中,只有從系統(tǒng)存儲器中讀出或?qū)懭胂到y(tǒng)存儲器的半個字節(jié)是當前的象素,因此,在數(shù)據(jù)路徑上加上一定的附加要求。在一次4位模式的寫操作中,不變的目的地數(shù)據(jù)寫入不對應于當前象素的半個數(shù)據(jù)字節(jié)中。從而,在4位模式中必須一直啟動目的地讀取(將控制位DSTEN置位)。因為沒有在主存儲器中寫入小于一個字節(jié)的方法,所以才必須這樣做。
源4位象素地址與目的地4位象素地址也可能指向RAM中對應的字節(jié)的不同的一半。如果這樣的話,一個移位器交換源數(shù)據(jù)中的兩半。在4位模式中,模式字節(jié)的兩個半字節(jié)(半個字節(jié);4位)通常必須設(shè)置成相同的值。注意,阻擊器70中的程序中的象素不必要與顯示寬度匹配,并且傳送大量數(shù)據(jù)的最有效方式是32位模式?;叵胍幌逻@種模式的傳送必須是長字對齊的并且該系統(tǒng)必須裝有32位的RAM。
阻擊器70還有一個地址發(fā)生器。該地址發(fā)生器包含三個地址寄存器,一個增量或步長寄存器、一個地址加法器、及一個地址輸出多路轉(zhuǎn)換器。這三個地址寄存器中保存源地址、目的地址及程序地址。這些寄存器中每一個都是允許阻擊器70尋址16兆字節(jié)的24位寄存器。此外,源與目的地地址寄存器包含用于4位象素模式的半字節(jié)位。程序地址寄存器保存取出的程序的地址,并且每當用它執(zhí)行了一個存儲周期時便將它增加一個字。這一寄存器總是偶數(shù)的,從而位0必須總是邏輯“0”。
源與目的地址每經(jīng)過一個周期之后便能更新,而在其余時間,則使用一個加法器而使它們對它們所指的目標具有相當?shù)撵`活性。所有的源與目的地址更新都可以有選擇地在地址寄存器的低16至19位上執(zhí)行。這說明阻擊器70將有效地操作在64K、128K、256K或512K頁中。在這一模式中,如果一個地址在一頁中溢出,它將環(huán)繞而使上溢或下溢消失。
阻擊器70還有一個地址加法器,它是一個用于更新地址的25位寬加法器。它允許將一個常數(shù)值0.5、1、或2或者存儲在步長寄存器之一中的一個變量加在一個地址值上。它也能減去同樣的值。第25位便是上面所述的地址的半字節(jié)部分。取決于當前的屏幕分辨率的設(shè)置,一個象素的增加在地址上具有不同的效果。
所有地址寄存器都是在適當?shù)拇鎯χ芷诮Y(jié)束時自動更新的;源地址寄存器在“源讀取”周期,而目的地址寄存器則在“目的地寫”周期??墒褂米钃羝髅钪械腟WRAP與DWRAP位使地址垂直環(huán)繞,以及使用阻擊器控制寄存器中的SLWRAP與DLWRAP值水平環(huán)繞。
地址輸出多路轉(zhuǎn)換器向系統(tǒng)存儲器34提供外部地址。它提供三種地址源地址、目的地址及程序地址。這些地址是直接從對應的地址寄存器中導出的。
當阻擊器70正在繪線時,地址寄存器是以與正常方式不同的方式使用的。目的地址寄存器用作繪線地址,而源地址寄存器與步長寄存器則分別用作δ1與δ2。在繪線中,從δ1減去δ2,所產(chǎn)生的借位輸出判定在目的地址寄存器上加上什么。進一步的細節(jié)請參閱下面有關(guān)繪線的部分。
阻擊器70還有一個控制阻擊器70的操作的定序器??刂屏髯詈迷趦杉壣蟻砜紤]。外循環(huán)管理總的控制流而內(nèi)循環(huán)則執(zhí)行實際的阻擊(blitter)或繪線操作。外循環(huán)中的三部分為命令讀取過程、參數(shù)讀取過程及內(nèi)循環(huán)。
內(nèi)循環(huán)執(zhí)行實際的阻擊或繪線操作。一個內(nèi)循環(huán)周期可包含多達三個存儲周期。它們是從源地址中讀取、從目的地址中讀取及寫入目的地址。所有三個周期都是可選的。如果該循環(huán)中包含一個源讀取、或者一個源讀取與目的讀取,則在目的地寫入出現(xiàn)之前先測試比較器禁止機制。這使得在滿足比較器禁止條件時能夠繞過寫周期。當滿足比較器禁止條件時,便有可能令當前的操作停止并將控制返回給CPU30。然后,程序可以檢測地址寄存器來判定出現(xiàn)禁止的位置,從而可執(zhí)行沖突檢測。然后,CPU30可判定是否要恢復操作或放棄它。內(nèi)循環(huán)執(zhí)行操作一直到內(nèi)循環(huán)計數(shù)器到達零為止。內(nèi)循環(huán)計數(shù)器是一個10位計數(shù)器,因此,內(nèi)循環(huán)能重復1至1024中任何次數(shù)。
在出現(xiàn)比較器寫禁止時阻擊器70通過允許操作停止來為沖突檢測作準備。當這一情況出現(xiàn)時,控制便返回給CPU30,然后CPU30檢驗阻擊器70的內(nèi)部狀態(tài)來判定什么事件導致了這一沖突。在這一點上,CPU30可選擇允許阻擊器70恢復其正在執(zhí)行的操作,或者可將其復位到其空閑狀態(tài)。在阻擊器70可用于其它操作之前,必須發(fā)布一條復位或恢復命令。注意,當阻擊器70處于暫停狀態(tài)中時,一個新的值可能被寫入命令寄存器中,從而禁止沖突停止機制。
參數(shù)讀取過程是一個非常直接的序列,它將一組新的參數(shù)加載到內(nèi)循環(huán)中。它順序地從存儲器中讀取內(nèi)循環(huán)計數(shù)器值、步長寄存器值、以及用于預制數(shù)據(jù)寄存器的模式值。內(nèi)計數(shù)實際成為內(nèi)循環(huán)執(zhí)行的次數(shù)。步長寄存器用于地址增量,而模式寄存器則用于數(shù)據(jù)操縱。
參數(shù)讀取過程是在阻擊操作開始時作為命令讀取過程的一部分調(diào)用的,并且也在阻擊操作需要時調(diào)用,如由PARRD控制位所確定的。額外的參數(shù)讀取出現(xiàn)在內(nèi)循環(huán)的傳送之間以允許參數(shù)迭代,從而允許諸如不規(guī)則形狀涂色及行程編碼數(shù)據(jù)的解壓縮等操作。
命令讀取過程用于啟動一個新的阻擊操作。阻擊器70從一種不活躍的復位狀態(tài)啟動,該狀態(tài)表示阻擊器70的正常的非活躍狀態(tài)。從這一狀態(tài)執(zhí)行一個命令寄存器寫入來啟動阻擊器70,在這之前通常是對程序地址寄存器寫入一次。將一整組操作參數(shù)從自動增量的程序計數(shù)地址裝入,并將控制從命令讀取循環(huán)中轉(zhuǎn)出。在完成了一次阻擊操作時,便從程序計數(shù)地址讀取一條新的命令,而如果這一命令將阻擊器70留在運行模式中時,則加載一組新的參數(shù)并啟動另一次操作。否則阻擊器70進入其停止狀態(tài)并將副系統(tǒng)總線61返回給CPU30。上述機制使阻擊器70能夠執(zhí)行任意長度的圖形命令而不需要任何處理器介入。這是極為有用的,因為與阻擊器存儲器讀取相比,處理I/O寫周期是相對地比較慢的。
外循環(huán)的正常操作在從命令讀取循環(huán)退出時開始。然后進入?yún)?shù)讀取循環(huán)來讀取第一組參數(shù),并在操作開始前在內(nèi)計數(shù)器加載了其初始值后進入內(nèi)循環(huán)。然后將外計數(shù)器減一,并當它為零時進入命令讀取循環(huán)。然后,用步長寄存器的內(nèi)容更新寄存的源地址與目的地址兩者或其中之一。然后在再度進入內(nèi)循環(huán)之前,有選擇地進入?yún)?shù)讀取循環(huán)來更新各種內(nèi)循環(huán)參數(shù)。這兩種循環(huán)使阻擊器70能夠以二維屏幕結(jié)構(gòu)來不斷進行操作,外循環(huán)地址寄存器的更新將屏幕地址指針移至下一行的結(jié)構(gòu)的起始點上。使屏幕結(jié)構(gòu)參數(shù)能在逐行的基礎(chǔ)上加以改變,參數(shù)讀取循環(huán)提高了靈活性。
阻擊器70還有一個存儲器接口狀態(tài)機,它控制所有存儲器周期的周期定時生成及總線仲裁。阻擊器70在一個阻擊器命令序列的持續(xù)時間中從CPU30接管副系統(tǒng)總線61的控制權(quán)。這會造成上面所討論的總線交接的等待時間,但一旦阻擊器70接管了副系統(tǒng)總線61,便立即開始操作。在較佳實施例中,當A/V/CD控制器/協(xié)處理器中的任何設(shè)備具有了對副系統(tǒng)總線61的控制時,阻擊器70便允許CPU30訪問盒式ROM50及高速緩存62。然而為了簡化,作為替代,當CPU30不再是副系統(tǒng)總線61的主控設(shè)備時,阻擊器70也能使CPU30停機。
存儲器接口在DSP74或密致盤讀取通道之一請求副系統(tǒng)總線61時,并在完成任何當前的存儲器周期之后便立即將副系統(tǒng)總線放棄給它們中的一個。
除非在阻擊器控制寄存器中受到屏蔽,中斷也將使阻擊器70暫停操作。阻擊器70檢測中斷線本身并用它來暫停操作。一旦中斷線恢復到其原先的狀態(tài),便立即恢復操作,這出現(xiàn)在CPU30寫入確認端口時。這不一定是中斷服務例程的結(jié)束。因此,程序員必須謹防堆?;靵y,并且在一個服務例程中通常應保持禁止中斷。一旦中斷線被清零且無來自CPU30的介入,阻擊器70便立即恢復操作。阻擊器70只響應內(nèi)部中斷源(視頻中斷、模擬輸入中斷與密致盤中斷)。任何外部CPU中斷源對阻擊器70沒有影響。
阻擊器70具有多種操作模式。阻擊器70執(zhí)行的最簡單操作涉及將一塊系統(tǒng)存儲器34復制到另一塊上以及用一個預定的值來填充一塊系統(tǒng)存儲器34。這些操作可在系統(tǒng)存儲器34的線性部分上及在任意的屏幕矩形上執(zhí)行。如果這是一次復制操作,則目的地數(shù)據(jù)寄存器用作被修改的系統(tǒng)存儲器34的地址,而源地址寄存器則用作被復制的數(shù)據(jù)的地址。
當操作要在存儲器的線性區(qū)域上執(zhí)行時,大多數(shù)地址控制位將被設(shè)置為零。不使用步長寄存器,唯一的要求是適當?shù)卦O(shè)置DSIGN與SSIGN來確定用地址增加還是地址減小來進行復制。注意,如果未設(shè)置符號位,則放置在地址寄存器中的初始值應為在其上執(zhí)行操作的區(qū)域的底部,而當設(shè)置了符號位時,更應為頂部。在這兩種情況中,讀出或?qū)懭氲牡谝粋€象素將是針對第一個地址。操作長度將放置在內(nèi)計數(shù)器中,而外計數(shù)器則設(shè)定為一。
如果正在其上操作的塊非常之大,則可能有必要使用內(nèi)循環(huán)與外循環(huán)計數(shù)器兩者,而在其上操作的象素的數(shù)目則將由內(nèi)外兩個計數(shù)器值的積給出。當源與目的地數(shù)據(jù)兩者或其中之一為矩形而不是線性區(qū)域時,則內(nèi)循環(huán)計數(shù)器中包含矩形寬度而外循環(huán)計數(shù)器中則為矩形高度。
將適當?shù)牟介L寄存器設(shè)置為從矩形的右側(cè)繞到下一行的左側(cè)的地址增量。根據(jù)源或目的地是否為矩形來設(shè)定SRCUP與DSTUP位。在每一象素8位或8位以上的模式中,既不用SRCEN也不用DSTEN來填充存儲器,對于存儲器復制應設(shè)置SCRCEN位。在4位象素模式中,一直必須設(shè)置DSTEN,從而執(zhí)行一個目的地讀取而防止破壞其它象素。注意,使用這一方將比不用時為慢。
阻擊器70根據(jù)著名的數(shù)字微分分析器(DDA)算法繪線。這一算法的基礎(chǔ)是,對于一條給定的線,對于每一個給出的象素,其X地址或Y地址中的一個總是增加的,而當滿足適當?shù)乃阈g(shù)條件時,則另一個也是增加的。阻擊器70通過重復地從一個工作值中減去dx或dy中的較小值并在出現(xiàn)下溢時加上較大值這種方法來計算導致有條件增量的算術(shù)條件,實際上使用除法來計算斜率。記號“dx”表示該線段所對應的X軸上的長度并且是由|(x1-x2|給出的,其中x1與2為兩點的X坐標,而豎道則表示它們之差的大小即絕對值。從而,如果從(x1,y1)畫一條線到(x2,y2),則dx=|(x1-x2)|而dy=|(y1-y2)|。從它們中,D1(上面稱作δ1)由dx與dy中的較大者給出,而D2(上面稱作δ2)則由較小者給出。則對于所繪的每一個象素,從初始設(shè)定為D1/2的工作值中減去D2,而這一減法的結(jié)果的符號(指示下溢)便是屏幕地址更新的條件部分的算術(shù)條件。當這一下溢出現(xiàn)時,便在工作值上加上D1的原來值。可以看出dx對dy之比將給出這一下溢與回加的出現(xiàn)次數(shù)。當然,它們之間的比便是該線的斜率。
在阻擊器命令中設(shè)置用于建立一條線的繪制的值的方法如下該線的起點便是目的地址,將D1放置在源地址寄存器的位10至19中,并將D1/2放置在位0至9中。雖然在要給出該線的兩個端點時應當使用D1加1,但D1也是內(nèi)計數(shù)器的值。D2是放置在目的地步長寄存器中的。如果DX大于DY則設(shè)置YFRAC標志,否則將其清零。SSIGN給出X地址更新的符號,DSIGN給出Y地址更新的符號。
在繪線時,在計算線地址時占用了地址部分中的所有寄存器;因此在繪線時,阻擊器不能夠從其它任何地方移動數(shù)據(jù)。因此,寫在線地址上的數(shù)據(jù)必須是根據(jù)邏輯功能單元直接由模式數(shù)據(jù)給定的或者是由模式寄存器及已經(jīng)在那里的數(shù)據(jù)組合而成的。因此,不要設(shè)置SRCEN,否則阻擊器可能生成看起來隨機的數(shù)據(jù)。在繪線時,內(nèi)計數(shù)器是設(shè)置成線的長度的,而外計數(shù)器則設(shè)置為1。在每一象素8或8位以上的模式中,除非用于讀-改-寫操作,不需要設(shè)置DSTEN。在每一象素4位的模式中,則必須一直設(shè)置DSTEN,以免目的地讀取時破壞其它象素。
阻擊器70還具有在一次單一的操作中在屏幕上繪制字符的能力。就阻擊器70而論,字符繪制涉及繪制寬達8個象素及任意高度的一個矩形區(qū)域。在這一區(qū)域中的象素根據(jù)一種位模式或者寫入或者保持不變。這一模式不限于字符繪制,也可用于放大作為一個單色位面存儲的任何圖形。
在字符繪制中,源寄存器尋址通常作為字型的一部分的位模式,其中各字節(jié)對應于字符的一行。從而,阻擊器字體可以寬達8個象素,然而也可采用更寬的字體,只是繪制一個字符需要一次以上的阻擊器繪制操作而已。字符繪制主要是將一個塊從位于系統(tǒng)存儲器34中的字符字型傳送到目的地址。
數(shù)據(jù)是這樣排列的,對應于最左邊的象素的位在最低有效位中,而一個字符的頂部在最低地址上。如果數(shù)據(jù)寬度小于8個象素,則不使用字體數(shù)據(jù)的最低有效位。
目的地址寄存器用于尋址要繪制字符的屏幕區(qū)域。通常這一區(qū)域已被上一次阻擊器操作清成所要求的背景顏色。將目的地址初始化成字符的左上角。要繪制的字符為一個矩形,因此,相應地對目的地址進行編程。將內(nèi)計數(shù)器設(shè)置成字符的寬度,而將外計數(shù)器設(shè)置成其高度。目的地步長寄存器設(shè)置成屏幕寬度減去字符寬度。DSTUP位用于允許每次通過內(nèi)循環(huán)時更新目的地址。
設(shè)置內(nèi)循環(huán)控制位DSTEN與SRCENF,SRCENF存在的原因便是字符繪制。這使得每一行的字型字節(jié)只讀出一次。比較器用于控制象素的繪制,因此置位CMPBIT控制位來啟動其位至字節(jié)的擴展機制。
要涂的彩色是作為模式設(shè)置的,并且它通常保存在模式數(shù)據(jù)寄存器中。在4位象素模式中,置位DSTEN,并且目的地數(shù)據(jù)寄存器將保存讀取的值,從而使該字節(jié)的另一半可以不受干擾地寫回去。源數(shù)據(jù)寄存器保存字體模式,如上所述。
阻擊器旋轉(zhuǎn)與比例模式使用描影(shadinq)ALU,但不是生成三個基于DDA的數(shù)據(jù)值,而是生成兩個基于DDA的地址值X與Y。通常這兩個值用于在任意角度與比率上橫切一個源數(shù)據(jù)域,從而使目的數(shù)據(jù)對應于一個成比例縮放與/或旋轉(zhuǎn)過的變體。
紅色值發(fā)生器給出X值,而綠色值發(fā)生器給出Y值。不使用蘭色值發(fā)生器,顯然描影不能結(jié)合這一模式使用。因為旋轉(zhuǎn)要求比描影更高的精確度,所以在X與Y值上加上4個附加的整數(shù)位。這些位設(shè)在旋轉(zhuǎn)寄存器0和旋轉(zhuǎn)寄存器1中。所有的計算都是執(zhí)行到10位精度的。
如描影一樣,在內(nèi)循環(huán)中畫完每一個象素之后將δ值加到X與Y上。在外循環(huán)中加上步長值,并且為了加上它們而必須設(shè)置SRCUP與DSTUP標志。δ與步長值可以是正的或負的,并且與描影模式不同,不會出現(xiàn)加或飽和。
通常,轉(zhuǎn)動與比例是通過將目的地址指針設(shè)置為在目的矩形上執(zhí)行正常光柵掃描而進行的,同時使源指針以一個適當?shù)男甭逝c比率橫切源數(shù)據(jù)。這保證目的數(shù)據(jù)是連續(xù)的,并且不要求不必要的阻擊(阻擊器操作)。如果目標區(qū)域不是矩形的,則源數(shù)據(jù)應當用一種透明的顏色包圍。
一條阻擊器命令是作為存儲器中的一個數(shù)據(jù)表給出的。阻擊器70將表的內(nèi)容加載在其寄存器中并執(zhí)行指定的操作。阻擊器70將接收相繼的命令組直到將一條停止指令讀入命令寄存器為止。
阻擊器程序地址必須在發(fā)出命令字之前設(shè)定,阻擊器程序地址是由程序地址寄存器給出的,它們在一起形成完整的24位地址。程序必須位于字邊界上。
一個完整的阻擊器命令數(shù)據(jù)表以一個命令字開始。然而,一個序列中的第一條阻擊器命令的命令字是由CPU30的一個I/O周期寫入命令寄存器的;從而,阻擊器命令從第二個字開始讀取命令數(shù)據(jù)。同樣,最后一條阻擊器命令要求由運行位清零的不多于一個命令字構(gòu)成。
一條阻擊器命令的形式為許多命令位與控制位、一個24位源地址、一個24位目的地址、一個10位外計數(shù)值、一個10位內(nèi)計數(shù)值、一個12位帶符號的源步長、一個12位帶符號的目的步長、及一個15位模式值。如果設(shè)置了SHADE(涂色)位,則取出9個附加的字紅、綠與蘭初始值(6個整數(shù)位及10個小數(shù)位),紅、綠與蘭δ值(同上)以及紅、綠與蘭步長值(同上)。
命令位如下。設(shè)置運行(RUN)位令阻擊器70開始操作。它用于寫入作為一個I/O端口的命令寄存器來啟動阻擊器70讀取一條命令時。如果阻擊器70加載了一條作為所讀取的命令的一部分的運行位被清零的命令,操作便停止。如果出現(xiàn)沖突(寫禁止)便設(shè)置COLST位令操作停止。從此時起,CPU30可恢復或中斷印刷操作,并可讀取多種內(nèi)部寄存器。每當從內(nèi)循環(huán)中退出而外循環(huán)尚未到達零時,設(shè)置PARRD位要求阻擊器70從程序計數(shù)器地址讀出一組新的參數(shù)。從內(nèi)循環(huán)中退出而外計數(shù)尚未到達零時,設(shè)置SRCUP位要求將步長寄存器的內(nèi)容加到源地址上。從內(nèi)循環(huán)中退出而外計數(shù)尚未到達零時,設(shè)置DSTUP位要求將步長寄存器的內(nèi)容加到目的地址上。設(shè)置SRCEN位在內(nèi)循環(huán)中啟動源地址讀取。這也令源地址寄存器按象素大小增加。設(shè)置DSTEN位在內(nèi)循環(huán)中啟動目的地址讀取。這并不影響目的地址寄存器,它是作為目的地寫周期的一部分而增加的。當?shù)谝淮芜M入內(nèi)循環(huán)而不是以后進入內(nèi)循環(huán)時,設(shè)置SRCENF位令源地址被讀取。這是一種特殊情況的SRCEN,并且與字符繪制模式相關(guān),如上所述。如果設(shè)置了SRCEN則SRCENF便沒有影響。兩位PSIZE0與PSIZE1選擇象素大小,0至3分別對應于4、8、16與32位。如上所述,32位只用于32位系統(tǒng)中的數(shù)據(jù)移動。兩位WIDTH0與WIDTH1選擇以字節(jié)為單位的屏幕寬度,0至3分別對應于256、512、1024與2048字節(jié)。設(shè)置LINDR將阻擊器70置于線繪制模式中。這一模式使用源與目的地址寄存器來生成線繪制地址,它可用于讀與寫兩者。設(shè)置YFRAC位指示阻擊器70其X與Y地址在線繪制模式中具有小數(shù)增量。如果Y地址具有小數(shù)增量便設(shè)置它。設(shè)置PATSEL位選擇模式數(shù)據(jù)寄存器來替代源數(shù)據(jù)寄存器作為對邏輯功能單元的源輸入。這一位是與字符繪制相關(guān)的,其中源數(shù)據(jù)寄存器中包含字體數(shù)據(jù),而模式數(shù)據(jù)寄存器中包含印色顏色。設(shè)置涂色位啟動從涂色ALU的輸出作為寫入數(shù)據(jù)。這一位只在8與16位象素中有效。
阻擊器70有若干種控制位源控制位、目的地控制位、邏輯功能控制位、及比較器控制位。阻擊器70具有幾個源控制位。設(shè)置SWRAP位令源地址更新在一個可編程的邊界上卷回,這是與線性通過存儲器不同的。位SWRAP0與SWRAP1控制SWRAP功能的規(guī)模,它使源地址指針垂直地卷回,0至3分別對應于64K、128K、256K與512K屏幕。設(shè)置SRCCMP位選擇源數(shù)據(jù)寄存器作為對比較器的源輸入。如果它被清零,則使用模式數(shù)據(jù)寄存器。設(shè)置SLWRAP寄存器使源指針在行寬度內(nèi)卷回以用于內(nèi)循環(huán)更新。設(shè)置SSIGN位設(shè)置了在更新源地址時所采用的符號。設(shè)置它令源地址減小而不是增加。這一位在線繪制中使X成為負的。
阻擊器70還有若干目的地控制位。設(shè)置DWRAP位令目的地址更新在一個可編程的邊界上卷回,這是與線性地通過存儲器不同的。位DWRAP0與DWRAP1控制DWRAP功能的規(guī)模,它使源地址指針垂直地卷回,0至3分別對應于64K、128K、256K與512K屏幕。設(shè)置DSTCMP位選擇源數(shù)據(jù)寄存器作為對比較器的源輸入。如果將它清零,則使用模式數(shù)據(jù)寄存器。設(shè)置DLWRAP寄存器使源指針在行寬度內(nèi)卷回,用于內(nèi)循環(huán)更新。設(shè)置DSIGN位設(shè)定了更新源地址時所采用的符號。設(shè)置它時令源地址減小而不是增加。這一位在線繪制中使Y成為負的。
阻擊器70還有邏輯功能單元控制位。邏輯功能單元控制在一個目的地寫入周期中寫入的數(shù)據(jù)。LFU(邏輯功能單元)允許源與目的數(shù)據(jù)的任何邏輯組合。這是通過用LFU位LFU0至LFU3中每一個選擇小項之一來達到的,而輸出則是由所選擇的項的邏輯“或”來給出的。一個“0”值對應于“非”源與“非”目的地,“1”對應于“非”源與目的地,“2”對應于源與“非”目的地,而“3”則對應于源與目的地。因此,一共有十六種可能性。
阻擊器70還有若干比較器控制位。設(shè)置CMPPLN起動位面模式,其中三個比較器功能操作在位面號位上,而不是在整個象素上。設(shè)置CMPEQ位,則如果在位面模式中目的地象素的優(yōu)先級等于源象素的位面優(yōu)先級,或者如果不在位面模式中整個象素是相同的時,令比較器禁止內(nèi)循環(huán)寫。設(shè)置CMPNE位,則如果在位面模式中,目的地象素的優(yōu)先級不等于源象素的位面優(yōu)先級,或者如果不在位面模式中,整個象素不相同時,便令比較器禁止內(nèi)循環(huán)寫。設(shè)置CMPGT位只在位面模式中適用,并且如果目的地象素的位面優(yōu)先級大于源象素的位面優(yōu)先級時,則令比較器禁止寫。設(shè)置CMPBIT給出一種位到字節(jié)擴展方式。它通過使用一個內(nèi)計數(shù)器選擇源數(shù)據(jù)寄存器中的一位而令比較器生成一個禁止,并且如果所選擇的那一位是“0”時生成一個禁止。內(nèi)計數(shù)器中給出8時選擇位0,7時選擇位1,6選擇位2,以此類推。
程序地址寄存器指向阻擊器操作命令的源。從其中順序向上由存儲器中讀取數(shù)據(jù)。它必須總是偶的(即阻擊器操作必須位于字邊界上)。寄存器0對應于地址位0至15,而寄存器1對應于地址位16至23及位0至7。
上述阻擊器寄存器中的某些是在CPU30的I/O空間中可見的。此外,CPU30是可以訪問某些阻擊器狀態(tài)及控制位的。如上所述,阻擊器70有7個字寬讀取寄存器及4個字寬寫入寄存器。寫入寄存器中任何未使用的位應寫入“0”。I/O寄存器從I/O地址40H開始。這些寄存器原則上也可在存儲器映象中得到,因此DSP74能夠訪問它們,從與I/O相同的位移開始,但在基地址F10400H上(即,減去40H及加上F10400H來得到存儲器地址)。第一阻擊器目的寄存器對應于目的地址寄存器的位0至15。第二阻擊器目的寄存器的位0至7對應于目的地址寄存器的位16至23。而第二阻擊器目的寄存器的位15對應于目的地址寄存器的目的地址半字節(jié)部分。第一阻擊器源寄存器對應于源地址寄存器的位0至15。第二阻擊器源寄存器的位0至7對應于源地址寄存器的位16至23,而第二阻擊器源寄存器的位15對應于源地址半字節(jié)部分。阻擊器內(nèi)計數(shù)器的位0至9對應于內(nèi)計數(shù)器值。阻擊器外計數(shù)器的位0至9對應于外計數(shù)器值。阻擊器狀態(tài)寄存器給出各種阻擊器狀態(tài)信息。位0指示滿足比較器位面優(yōu)選級大于條件。位1指示滿足比較器位面優(yōu)先級等于條件。位2指示滿足比較器位面優(yōu)先級不等于條件。位3指示滿足比較器象素相等條件。位4指示滿足比較器象素不等于條件。位5指示滿足比較器位到象素條件。位13對應于運行位,它說明阻擊器當前是活躍的,還是操作被一個CPU中斷或沖突停止所暫停的。位14指示阻擊器為一個CPU中斷所停止。位15指示阻擊器由于一個沖突檢測而停止。阻擊器程序地址寄存器加載有阻擊器程序地址的位O至15?;叵胍幌拢捎谧钃羝鞒绦虮仨毼挥谧诌吔缟?,所以該寄存器的位0總是0。第二阻擊器程序地址寄存器位0至7中加載有阻擊器程序地址的位16至23。其余8位為0。阻擊器命令寄存器對應于阻擊器命令的字0,并用于在啟動阻擊器時建立命令。然后,阻擊器DMA從命令的第一個字開始。
阻擊器控制寄存器有三位位0為屏蔽來自阻擊器的總線控制單元的中斷的一個中斷停止屏蔽,當設(shè)置了這一位時其結(jié)果是在出現(xiàn)中斷時阻擊器將不停止;位1在一次沖突之后令阻擊器恢復操作并用于在檢測出一次沖突之后重新起動阻擊器?;叵胍幌拢斣O(shè)置了COLST位時便檢測到一次沖突。阻擊器恢復被暫停的操作。注意,當阻擊器在沖突停止狀態(tài)中時,有可能重新編程阻擊器命令寄存器,因此COLST位與其它位一樣可被改變;而位2則在沖突之后將阻擊器復位到靜止狀態(tài)并用于中斷出現(xiàn)沖突停止時阻擊器正在執(zhí)行的操作。注意,在出現(xiàn)一次阻擊器沖突停止之后,必須向阻擊器發(fā)送一個恢復或一個復位命令。阻擊器70還有三個轉(zhuǎn)動寄存器。位0至3對應于X地址的整數(shù)部分的高4位,該10位值中的低6位為紅色值的整數(shù)部分。位4至7對應于X增量的整數(shù)部分的高四位,這一10位值的低6位紅色值的整數(shù)部分。位8至11對應于X步長的整數(shù)部分的高4位,這一10位值的低6位為紅色值的整數(shù)部分。第二旋轉(zhuǎn)寄存器的位0至3對應于Y地址的整數(shù)部分的高4位,這一10位值的低6位為綠色整數(shù)值的整數(shù)部分。位4至7對應于Y增量的整數(shù)部分的高4位,這一10位什的低6位為綠色整數(shù)值的整數(shù)部分。位8至11對應于Y步長的整數(shù)部分的高4位,這一10位值的低6位為綠色整數(shù)值的整數(shù)部分。在第三旋轉(zhuǎn)寄存器中,設(shè)置位0令轉(zhuǎn)動地址取代目的地地址。設(shè)置位1令旋轉(zhuǎn)地址取代源地址。設(shè)置位2設(shè)定旋轉(zhuǎn)模式,這與描影模式不同。而位10至15對應于旋轉(zhuǎn)地址的高位。
DSP74聲頻協(xié)處理器是一個具有足夠能力來實現(xiàn)一個高性能音樂合成器的通用算術(shù)協(xié)處理器。它提供了同步串行輸出以生成具有16位精度的立體聲聲頻信號,給出一種通常與密致盤技術(shù)相關(guān)聯(lián)的音質(zhì)。DSP74是可以從主CPU30編制微程序的,并且其指令集是充分靈活的,使用戶能夠?qū)⒃撛O(shè)備編程為完成許多與“音樂合成器”十分不同的多種不同功能。這些應用中可包含算法語音生成,使用快速傅里葉變換技術(shù)的聲頻分析,以及三維圖形旋轉(zhuǎn)。 DSP74使用哈佛體系結(jié)構(gòu)(單獨的程序與數(shù)據(jù)總線)以求得到最大的數(shù)據(jù)吞吐量。DSP74有一個算術(shù)邏輯單元(ALU)。
ALU具有以16位X16位硬件乘法/累加硬件結(jié)構(gòu)以及加法、減法與邏輯功能。還有一個獨立的串行除法單元,它每一節(jié)拍生成一個商數(shù)值。來自加法器/減法器的進位存儲在一個獨立的鎖存器中,并能用于為多精度算術(shù)運算傳播進位或者能用于條件指令??梢允顾兄噶钜蕾囉谶@一位的設(shè)置。該設(shè)備內(nèi)的數(shù)據(jù)傳送都是16位寬的,只有乘法器/累加器內(nèi)的內(nèi)部事務處理是例外。
DSP74是一個主要旨在用于聲音合成的非常簡單、非??焖俚奶幚砥鳎材芡瓿缮鲜銎渌嬎闳蝿?。它以一個處理器周期執(zhí)行所有的指令;這些指令是以系統(tǒng)時鐘速度(通常20至23兆赫)執(zhí)行的。在聲音合成中,DSP74的定時由聲頻數(shù)模轉(zhuǎn)換器(DAC)接口中的定時器控制。這些DAC是雙緩存的,并且當一個DAC寫快要導致溢出時,便暫停操作直到緩沖器變空為止。只要軟件以采樣速率執(zhí)行循環(huán),以及只要平均循環(huán)時間小于采樣周期,則偶爾的循環(huán)可以延長到兩倍。因為循環(huán)中可能包含較程序RAM中能容納的更多的指令,DSP74有一種變址尋址模式,它允許相同的代碼片作用在若干語音上。
DSP74一個哈佛(Harvard)體系結(jié)構(gòu)設(shè)備,從而程序RAM與數(shù)據(jù)RAM是分離的,同時在兩個RAM塊上出現(xiàn)周期信號。采用了一條單周期的流水線;因此,在每一個時鐘周期中發(fā)生兩個事件取出一條指令,以及發(fā)生與前一條指令相關(guān)聯(lián)的數(shù)據(jù)傳送。這在執(zhí)行一條跳轉(zhuǎn)后的指令時會有奇怪的效果。DSP74有兩個算術(shù)邏輯單元(ALU,未示出)一個典型的ALU及一個乘法/累加ALU,若干寄存器一個X操作數(shù)寄存器、第二操作數(shù)寄存器、一個AZ寄存器(它保存來自ALU的結(jié)果),以及一個MZ寄存器(它保存來自乘法/累加寄存器的結(jié)果)。DSP74還有一條DMA通道及一個除法器。
DSP74的操作是相當簡單的。在一條指令的執(zhí)行的第一個時鐘節(jié)拍信號中,從程序RAM中將操作碼讀入指令譯碼器中。在第二個時鐘節(jié)拍信號中,當從程序RAM中讀取下一條指令時,根據(jù)第一條指令執(zhí)行從系統(tǒng)存儲器34至一個寄存器或者從一個寄存器至系統(tǒng)存儲器34的一次數(shù)據(jù)傳送。
DSP74內(nèi)的ALU為一個16位算術(shù)邏輯單元,它具有本技術(shù)中眾所周知的與德克薩斯儀器公司的74181相同的功能。普通的算術(shù)運算是作為指令編碼的;不尋常的指令可通過直接設(shè)定ALU模式位用通用算術(shù)指令(GAI)來執(zhí)行。
DSP74還有一個乘法器/累加器,它是用于執(zhí)行16×16帶符號/不帶符號的乘法并產(chǎn)生32位結(jié)果的第二ALU。除此以外,它也可執(zhí)行乘法/累加運算,其中將乘得的積加在前面的結(jié)果上。結(jié)果累加到36位并容許溢出。乘法器運算實際上要用兩個時鐘節(jié)拍,雖然乘法指令本身是在一個時鐘節(jié)拍中完成的。這意味著,乘法或乘法累加后面的指令不得涉及MZ寄存器或X寄存器。
DSP74還有一個除法器。除法單元呈現(xiàn)為DSP74內(nèi)部空間中的一組寄存器。它能對16或32位操作數(shù)執(zhí)行無符號除法,并生成一個商及一個余數(shù)。
DSP74還有一條DMA通道。該DMA通道呈現(xiàn)為DSP74數(shù)據(jù)存儲器空間中的一組寄存器。它們是兩個地址寄存器與一個數(shù)據(jù)寄存器。一個DMA傳送是由在兩個地址寄存器中的第一個中寫入一個地址而啟動的。DMA傳送具有一個等待時間間隔,它必須在執(zhí)行進一步DMA之前消耗掉。DMA狀態(tài)機負責請求副系統(tǒng)總線61,并且當它被授權(quán)時才執(zhí)行傳送,此后便釋放副系統(tǒng)總線61。
作為替代,可在兩個地址寄存器中的第二個中寫入設(shè)置了的一個保持位的一個字。這將請求副系統(tǒng)總線61并一直保持它直到該保持位被清零為止。這種DMA傳送在執(zhí)行連續(xù)的多次傳送中是高效的,但對于單個的傳送通常比較低效,因為DSP74程序不能判定何時授予副系統(tǒng)總線61,因此必須等待最長的可能等待時間。DSP74存儲器通常在DSP的內(nèi)部數(shù)據(jù)地址基址與主地址基址中是可見的。
DSP74具有一個與之相關(guān)聯(lián)的DSP存儲器76。DSP存儲器76包括程序RAM、數(shù)據(jù)RAM、一個寄存器/常數(shù)表及一個正弦ROM(都未示出)。DSP存儲器76通常在DSP的內(nèi)部地址空間及系統(tǒng)存儲器34的地址空間中可以訪問。DSP程序RAM為512個18位字。這些單元只能由CPU30寫入,而對于DSP74來說只程序可讀。程序RAM并不出現(xiàn)在DSP內(nèi)部地址空間中。在DSP74正在運行時,主機是不能訪問程序RAM的。每一條DSP指令有一個7位操作碼及一個11位地址矢量。所有微碼的指令(除乘法或乘法/累加操作之外)都在185毫微秒周期內(nèi)完成。所有的指令都是系統(tǒng)存儲器34至寄存器的傳送或者寄存器至寄存器的傳送;立即值是不允許的。從而,如果一條給定的指令需要一個常數(shù),它不能從常數(shù)表中得到,而必須為該值留出一個數(shù)據(jù)RAM單元。DSP74也允許條件指令及變址。如果設(shè)置了指令碼的位12,則只有同時設(shè)置了ALU中的進位位時才能執(zhí)行該指令。如果設(shè)置了指令碼中的位11,則將指令碼中的9位地址矢量加在變址寄存器中的9位值上以生成該指令在其上操作的地址與數(shù)據(jù)存儲器。附加的兩位是通過將值加載在一個附加位寄存器中然后將該字寫入所要求的單元中而編程的。
DSP74具有許多移動命令,它們在寄存器內(nèi)、存儲器內(nèi)、存儲器與寄存器之間傳送數(shù)據(jù),還有一些其它命令,其中包括加、減、“與”、“或”、帶進位的加、NOP操作(空操作)、上述GAI及一條INTRUDE(侵入)命令,該命令允許CPU30訪問DSP存儲器76。
正弦ROM為256個16位字的一個完整的正弦波的2的補碼正弦波值。
數(shù)據(jù)RAM為512個16位字。
數(shù)據(jù)可以在DSP74的控制下或者在主CPU30的控制下,在CPU30與DSP74之間傳送。
DMA傳送機制是基于DSP74成為副系統(tǒng)總線61的總線主控器并訪問系統(tǒng)存儲器34的。DSP74是最高優(yōu)先級總線主控器之一,因此,當當前總線主控器能夠放棄副系統(tǒng)總線61時,它便立即將副系統(tǒng)總線61授予DSP74。放棄副系統(tǒng)總線61的最壞情況便是當CPU30為總線主控器的情況,因為80376或80386SX處理器可能需要可觀的時間量來釋放副系統(tǒng)總線61。DMA傳送是由寫入第一DMA地址寄存器來啟動的,如上所述。狀態(tài)信息及高地址部分的傳送應當已經(jīng)寫入第二DMA地址寄存器中;在寫傳送情況中,類似的寫入數(shù)據(jù)應當已經(jīng)寫入DMA數(shù)據(jù)寄存器中。在啟動一次傳送時,DSP74請求副系統(tǒng)總線61并在將副系統(tǒng)總線61授予了DSP 4時,DSP74便執(zhí)行傳送,然后釋放副系統(tǒng)總線61??梢圆樵冞@一操作的完成,或者程序員可以選擇在使用讀取數(shù)據(jù)與/或啟動另一次傳送之前允許經(jīng)過最大可能等待時間。
可以使用兩個DMA地址寄存器中的第二個的保持位來執(zhí)行第二種總線捕獲技術(shù)以請求副系統(tǒng)總線61。如果DSP74希望連續(xù)地執(zhí)行多次傳送時,這將是更為高效的,因為在傳送之間是不釋放副系統(tǒng)總線的。在DSP74將要釋放副系統(tǒng)總線61之前,必須先將第二DMA地址寄存器中的保持位清零。一般不推薦這一機制,因為DSP74將控制副系統(tǒng)總線61相當長的時間間隔而無所事事,這會浪費總體存儲器總線帶寬并可能潛在地干擾CD DMA傳送。如果使用第二種技術(shù),DSP74在執(zhí)行任何DMA傳送之前必須首先請求副系統(tǒng)總線61。它無法檢測是否已獲得副系統(tǒng)總線61,因此必須等待最大數(shù)量的總線指令。一旦DSP74得到了副系統(tǒng)總線61的擁有權(quán),然后它便可以進入執(zhí)行總線周期。它可執(zhí)行任意序列的讀與/或?qū)懼芷?,而在結(jié)束這些周期時必須放棄對副系統(tǒng)總線61的控制。
數(shù)據(jù)傳送也可在主CPU30的控制下在CPU30與DSP74之間執(zhí)行。DSP74的所有內(nèi)部存儲器都映射到主地址空間中。當DSP74處于停止模式中時,主CPU30可以象對正常的系統(tǒng)存儲器34中那樣寫入程序存儲器單元中。然而,當DSP74正在運行時,主CPU30是不能訪問程序存儲器的。DSP74數(shù)據(jù)存儲器只能被INTRUDE(侵入)機制獲得。為了保證DSP74的操作在任何情況下不受干擾,數(shù)據(jù)事務處理只能在DSP74正在執(zhí)行INTRUDE指令時進行。當DSP74停止時,便認為它實際上正在繼續(xù)不斷地執(zhí)行INTRUDE指令。
只有當DSP74不運行時,才能使用阻擊器70執(zhí)行CPU30至DSP程序RAM76的傳送。同樣,當DSP74正在運行時,阻擊器70不能訪問DSP數(shù)據(jù)RAM。簡言之,只有當DSP74執(zhí)行一條INTRUDE指令時,阻擊器70與CPU30才能修改DSP程序RAM76。
DSP74能令阻擊器70執(zhí)行從系統(tǒng)RAM至DSP程序RAM的非常快速的DSP代碼的塊移動。從而,DSP74與阻擊器70能夠合作來有效地向DSP74提供比實際能夠得到的更多的程序RAM。
DSP74還有一個串行聲頻數(shù)模轉(zhuǎn)換器(DAC)接口,串行DAC接口允許DSP74驅(qū)動一個同步串行(I2S或類似的)DAC,以及從諸如CD驅(qū)動器之類的同步串行數(shù)據(jù)源輸入數(shù)據(jù)。如果沒有連接輸入設(shè)備,則接口定時可以內(nèi)部生成,但是如果存在一個數(shù)據(jù)源,則必須用它來確定定時。一個內(nèi)部溢出檢測器防止在前面輸出的數(shù)據(jù)全部輸出之前DSP74寫入DAC。這是通過寫入兩個DAC寄存器中的第一個來管理的。因此,DAC傳送應采取下述方式寫入第一DAC寄存器,寫入第二DAC寄存器,讀取輸入值。它們必須緊密連接地執(zhí)行(少于16條指令)。沒有下溢檢測,如果出現(xiàn)下溢時,則再次輸出前面輸出的值。DAC值是雙緩存的,因而雖然聲頻碼是在小于或等于采樣周期的平均速率上循環(huán)的,它可能偶而采用多達兩個采樣周期來通過該循環(huán)。這對于異常處理是有用的。
DSP74包含一個與德克薩斯儀器公司的74181設(shè)備兼容的算術(shù)邏輯單元(ALU)。
A/V/CD控制器/協(xié)處理器32還有一個密致盤DMA控制器。這一CD控制器包含下述功能塊一個簡單的同步串行接口(用于I2S和與之類似的)、一個CD ROM塊解碼器及一條DMA通道。該機構(gòu)允許向系統(tǒng)存儲器34傳送一個串行數(shù)據(jù)流,或者直接地,或者首先通過一個塊解碼器。在內(nèi)部塊解碼器出現(xiàn)問題或喪失能力時,允許使用一個外部塊解碼器。在完成了一次傳送而使傳送長度計數(shù)器到達零時,可以生成一個中斷。
密致盤控制器同步串行接口支持著名的菲利浦數(shù)據(jù)格式。菲利浦數(shù)據(jù)格式中有一個時鐘信號、一條字選擇線及一條數(shù)據(jù)線。字選擇比數(shù)據(jù)領(lǐng)先一個時鐘節(jié)拍,并且數(shù)據(jù)是與一個32位數(shù)據(jù)的最高位(MSB)對齊的。字選擇線上的低電平表示左數(shù)據(jù)而字選擇線上的高電平則表示右數(shù)據(jù)。同步串行接口還支持菲利浦塊解碼器輸出公式。其中位的次序是顛倒的,并且第一位是與數(shù)據(jù)的第一位對齊的。字選擇格式可以是菲利浦數(shù)據(jù)格式、索尼數(shù)據(jù)格式或Matsushita數(shù)據(jù)格式之一。
CD驅(qū)動控制器72還有一個塊解碼器。該塊解碼器與2352字節(jié)扇區(qū)的起始點同步,執(zhí)行解密、并計算EDC(錯誤檢測碼)以檢測錯誤。它在兩種模式中操作在首部以后傳送2048個數(shù)據(jù)字節(jié)的短模式,或者在傳送同步模式以后的2340字節(jié)的長模式。這樣允許必要時讀取首部與糾錯數(shù)據(jù)。首部的大小可編程為4或12字節(jié)以支持CD驅(qū)動器模式1及CDI/XA模式2格式1,但首部匹配只在主要的4字節(jié)首部上執(zhí)行。模式2格式只在長模式中操作及抽取所需要的數(shù)據(jù)時受到支持。首部匹配是在傳送的第一個扇區(qū)上執(zhí)行的,以保證正在讀取的是正確的數(shù)據(jù)。所要求的首部值必須編程進首部寄存器中。如果所執(zhí)行的是一次多扇區(qū)傳送,則在第一扇區(qū)之后不再發(fā)生匹配。
通常,正常的傳送是以短模式執(zhí)行的,而在檢測到錯誤時則采用長模式,以便操作軟件能試圖糾正它。多扇區(qū)傳送是通過給出要傳送的長字的總數(shù)的一個計數(shù)來加以支持的。錯誤會放棄多扇區(qū)傳送。錯誤可以有下述形式不可靠的數(shù)據(jù)、EDC錯誤、及無同步。有可能查詢解碼器來確定其當前狀態(tài)。CD驅(qū)動控制器還有一個DMA接口。該DMA接口每次能將2個16位字傳送進系統(tǒng)存儲器34。它能取來自內(nèi)部塊解碼器的輸出,或者來自同步串行接口的輸出。它有一個向上通過系統(tǒng)存儲器34的地址計數(shù)器。DMA接口有一個用于從串行接口直接傳送的傳送長度計數(shù)器。在“永久性模式”中,DMA地址寄存器在一個32千字節(jié)緩沖器內(nèi)環(huán)繞,并忽視計數(shù)器。這對于CD聲頻數(shù)據(jù)或者諸如“全動作視頻”解壓縮之類的實時與數(shù)據(jù)處理可能是有用的。每當?shù)刂分羔槶h(huán)繞緩沖器一次,便生成一個CPU30中斷。
參見圖5,其中示出了“封鎖”一個盒式存儲器的一種替代方法。如前所述,圖1A與3的地址加密器54提供了一種防止非授權(quán)使用程序盒式存儲器14的“封鎖”方法。另一種方法是在盒式存儲器中放置一個音調(diào)發(fā)生微控制器100,如圖5所示。盒式存儲器中包含一個程序ROM50(這在上面結(jié)合圖1A的文字中已描述過)、一個地址解碼器102(在描述地址加密器54的文字中已一般性地描述過)及微控制器100。
地址解碼器與典型的盒式存儲器中的地址解碼器非常相似,只是加上了該地址解碼器102只在微控制器100經(jīng)由一條啟動線103啟動地址解碼器102時才生成一個芯片選擇57信號到程序ROM50。微控制器100通過禁止地址解碼器102來“封鎖”盒式存儲器14。
微控制器100是與CPU30及地址解碼器102電路連通的,如圖5中所示。系統(tǒng)復位時,微控制器100禁止地址解碼器102,借此“封鎖”盒式存儲器。微控制器100監(jiān)視地址總線31b或另一條總線上的一個地址或地址序列。當微控制器100檢測到地址的正確序列時,它便啟動地址解碼器102,借此“解鎖”盒式存儲器。
微控制器100通過生成一序列音符來確認正確的地址序列,這些音符是用戶可以聽到并且由CPU30檢測到的。試按任何一個鍵都會使微控制器100產(chǎn)生一個音調(diào)。系統(tǒng)單元以下述數(shù)種方法之一便能檢測該音調(diào)可用分立的音調(diào)檢測電路(象一般電話機電路中所用的DTMF音調(diào)解碼器)來檢測該音調(diào),或者用一個A/D轉(zhuǎn)換器數(shù)字化該音調(diào)再用FFT算法加以分析來檢測所生成的音調(diào)簽名。在后一種情況中,DSP74執(zhí)行分析并通知CPU30已播放了正確的音調(diào)或音調(diào)組,指出盒式存儲器現(xiàn)已解鎖。
參見圖6,其中示出了用于“封鎖”一個盒式存儲器的第三替代方案。圖1A與3的地址加密器54及圖5的微控制器100提供了兩種用硬件操縱地址與數(shù)據(jù)線來“封鎖”存儲設(shè)備的不同方法。然而,并非所有存儲設(shè)備都是以這一方法與系統(tǒng)接口而能用硬件來保護各個程序的。例如,某些存儲設(shè)備具有可拆卸的存儲介質(zhì)。從而,需要一種不同的方法來“封鎖”沒有地址與數(shù)據(jù)線的存儲設(shè)備,諸如一塊預編程的軟盤或一塊預編程的CD驅(qū)動器盤。這種設(shè)備沒有地址或數(shù)據(jù)線;因此它們不能用地址加密器或選擇性封鎖的芯片選擇加以封鎖。
封鎖這種設(shè)備的一種技術(shù)便是利用本發(fā)明的系統(tǒng)10的CPU30及DSP74操作碼不兼容這一事實。即編譯成在CPU30上執(zhí)行的代碼不能直接在DSP74上執(zhí)行,反之亦然。
圖6中示出了利用不兼容的操作碼的一種封鎖設(shè)備。圖6示出包含至少兩塊數(shù)據(jù)的一個程序ROM的存儲器映象200,這兩塊為(1)一塊能夠在DSP74上執(zhí)行但不能在CPU30上執(zhí)行的可執(zhí)行代碼(圖6中的BLOCK1 202),以及(2)一塊能在CPU30上執(zhí)行但是經(jīng)過壓縮或加密,不首先解壓縮或解密也不能在CPU30上執(zhí)行的代碼(圖6中BLOCK2 204)。這兩塊代碼可放置在任何類型的存儲設(shè)備中;程序盒式存儲器14、或預編程的軟盤、或預編程的CD驅(qū)動器軟盤,諸如此類。
第一代碼塊BLOCK1 202是一小塊可在DSP74上執(zhí)行的代碼。它是一個只有四種功能的小程序(1)確認一個存儲設(shè)備的存在,(2)將第二數(shù)據(jù)塊從存儲設(shè)備加載進系統(tǒng)RAM34,(3)解壓縮或解密第二存儲塊BLOCK2 204成可由CPU30執(zhí)行的格式,以及(4)令CPU執(zhí)行該可執(zhí)行的代碼。步驟(2)與(3)可以通過讀取一小節(jié)數(shù)據(jù)、解壓縮或解密之、將得出的代碼寫入存儲器,而并行地執(zhí)行。
第二塊代碼BLOCK2 204是一能在CPU30中執(zhí)行的較大的應用代碼塊,但是代碼是已經(jīng)壓縮或加密的。因此,在加載進第二塊BLOCK2 204時,它是不能被DSP74或CPU30執(zhí)行的。將可執(zhí)行代碼置入著名的運行長度編碼(RLE)格式是壓縮與加密第二塊代碼BLOCK2 204中的數(shù)據(jù)的一種方法,只加密第二塊的一種方法是對數(shù)據(jù)執(zhí)行著名的篩格密碼(picket fence cipher),從而以可以解密的方法交換數(shù)據(jù)中的字節(jié)。加密數(shù)據(jù)可以簡單到只將一個字節(jié)的上半字節(jié)與下半字節(jié)交換或者復雜到用任何一種著名的加密方法,使得用正常的順序方式訪問時,代碼是讀不懂的。這與上文中描述的打亂地址線,而由于一條指令的長度是一個字節(jié)以上而打斷一個正常的順序取代碼操作的方法不同。
不需要壓縮或加密整個的第二代碼塊BLOCK2 204;足夠的代碼必須加以壓縮或加密以防止非特許的設(shè)備執(zhí)行該應用程序。其余未壓縮與未加密的數(shù)據(jù)可放置在可選的BLOCK3 206中。例如圖形數(shù)據(jù)不需要壓縮。作為另一個例子,如果高層程序執(zhí)行代碼完全加密了,則所有的子例程便不需要壓縮。
圖1A與1B的系統(tǒng)能夠解鎖上述三個盒式存儲器。然而,帶有兼容的CPU而沒有兼容的DSP的系統(tǒng)是不能執(zhí)行該應用程序的,這是因為CPU不能執(zhí)行存儲設(shè)備上的每一塊代碼第一塊BLOCK1 202具有完全與CPU30不兼容的操作碼,而第二塊BLOCK2 204則已經(jīng)被壓縮或加密使之不能執(zhí)行。從而,“封鎖”了存儲器設(shè)備。
圖1A與1B的系統(tǒng)以下述方法“解鎖”存儲器設(shè)備。首先,CPU30初始化系統(tǒng)10并檢驗是否存在一個存儲器設(shè)備,諸如一個CD驅(qū)動器22。如果檢測到一個存儲器設(shè)備,CPU30便將第一塊BLOCK1 202從存儲器設(shè)備加載到系統(tǒng)RAM34中。然后,CPU30令DSP74執(zhí)行從存儲器設(shè)備傳送到系統(tǒng)RAM34的代碼。執(zhí)行第一塊代碼BLOCK1 202導致DSP74通過在該設(shè)備上執(zhí)行檢驗和而保證一個存儲器設(shè)備的存在,將第二塊存儲器BLOCK2 204從該存儲器設(shè)備復制到系統(tǒng)RAM34中,并將第二塊數(shù)據(jù)BLOCK2 204解壓縮或解密成可在CPU30上執(zhí)行的格式,最后,DSP74令CPU去執(zhí)行從第二塊數(shù)據(jù)BLOCK2 204變化來的可執(zhí)行代碼,從而啟動應用程序。
這一方法的優(yōu)點是存儲器設(shè)備中不需要附加的硬件;只需要象上面所述那樣將第一與第二塊數(shù)據(jù)放入存儲器設(shè)備即可。因此,這種兩塊法適用于程序盒式存儲器14以及預編程的軟盤及CD驅(qū)動器盤。
在替代的方法中,BLOCK2 204可以是可執(zhí)行的,但是具有必須以特殊的方式加載的格式。這種格式的一個例子便是著名的。EXE格式的可執(zhí)行文件。這種數(shù)據(jù)塊是可執(zhí)行的,但只有在可執(zhí)行部分是正確地加載進存儲器的前提下。實現(xiàn)這一“封鎖”要求將一個只能在DSP74上執(zhí)行的加載程序放在BLOCK1202中。這一加載程序訪問BLOCK2 204,加其加載進存儲器34中,定位可執(zhí)行部分,然后將控制傳遞給CPU30。
雖然本發(fā)明已通過對其實施例的描述說明了本發(fā)明,而且雖然已經(jīng)相當詳盡地描述了這些實施例,但申請人的意圖并非想用這些細節(jié)來限制所附的權(quán)利要求書的范圍。對于熟悉本技術(shù)的人員而言,其它的優(yōu)點與改型已是顯而易見的了。例如,圖3的地址加密器54可以與上面討論的兩塊封鎖法結(jié)合使用。此外,圖1A的封鎖控制電路56可與圖5的一般地址解碼器102組合而不需要音調(diào)生成微控制器100。因此,本發(fā)明在廣義上不限于特定的細節(jié)、代表裝置及方法,以及所示出與描述的示例性實例。從而,可以拋開這些細節(jié)而不脫離申請人的總的創(chuàng)造性概念的精神或范圍。
權(quán)利要求
1.一種盒式存儲器,具有一個可讀存儲器,并用于一個計算機系統(tǒng)中;該計算機系統(tǒng)具有一個帶有至少一條與之相關(guān)聯(lián)的總線的中央處理單元(CPU),并且該總線具有至少一條總線線路,該盒式存儲器的特征在于包括與所述存儲器電路連通的一個存儲器控制電路;與所述存儲器控制電路電路連通的一個封鎖控制電路;以及與所述存儲器、所述存儲器控制電路及用于連接所述存儲器的所述封鎖控制電路電路連通的一個連接器,所述存儲器控制電路及所述封鎖控制電路是與CPU可拆卸地電路連通的;所述存儲器控制電路有兩種狀態(tài)一種解鎖狀態(tài),其特征在于與所述存儲器的交至作用,使得當CPU訪問所述存儲器時,對于一個給定的地址的由所述存儲器讀入CPU的結(jié)果對應于存儲在所述存儲器中該地址上的值;以及一種封鎖狀態(tài),其特征在于與所述存儲器的交互作用,當CPU訪問所述存儲器時,使得對于一個給定的地址讀入CPU的所述存儲器的結(jié)果對應于不是存儲在所述存儲器中該地址上的值。所述存儲器控制電路配置成響應來自所述封鎖控制電路的輸入,從所述封鎖狀態(tài)切換到所述解鎖狀態(tài);以及所述封鎖控制電路配置成響應第一組預先選定的事件的出現(xiàn),令所述存儲器控制電路進入所述封鎖狀態(tài),并且所述控制電路進一步配置成響應第二組預先選定的事件的出現(xiàn),令所述存儲器控制電路進入所述解鎖狀態(tài)。
2.一種盒式存儲器,具有一個可讀存儲器,并用于一個計算機系統(tǒng)中;該計算機系統(tǒng)具有一個帶有至少一條與之相關(guān)聯(lián)的總線,并且該總線具有至少一條總線線路,該盒式存儲器的特征在于包括與所述存儲器進行電路連通的一個總線線路加密器;與所述總線線路加密器進行電路連通的一個封鎖控制電路;與所述存儲器、所述總線線路加密器及用于連接所述存儲器的所述封鎖控制電路電路連通的一個連接器,所述總線線路加密器及所述封鎖控制電路與CPU可拆卸地電路連通;所述封鎖控制電路配置成使所述封鎖控制電路響應第一組預先選定的事件的出現(xiàn)而令所述總線線路加密器打亂所述至少一條總線的所述至少一條總線線路;以及所述封鎖控制電路進一步配置成使所述封鎖控制電路響應第二組預先選定的事件的出現(xiàn)而令所述總線線路加密器停止打亂所述至少一條總線線路。
3.一種盒式存儲器,具有一個可讀存儲器,并用于一個計算機系統(tǒng)中;該計算機系統(tǒng)具有一個帶有與之相關(guān)聯(lián)的至少一條總線的中央處理單元(CPU),并且該總線具有至少一條總線線路,該盒式存儲器包括與所述存儲器進行電路連通的一個總線線路解碼器;與所述總線線路解碼器進行電路連通的一個封鎖控制電路;與所述存儲器、所述總線線路解碼器及用于連接所述存儲器的所述封鎖控制電路電路連通的一個連接器,所述總線線路解碼器及所述封鎖控制電路與該CPU可拆卸地電路連通;所述封鎖控制電路配置成使所述封鎖控制電路響應第一組預先選定的事件的出現(xiàn)而令所述總線線路解碼器停止解碼所述至少一條總線;以及所述封鎖控制電路進一步配置成使所述封鎖控制電路響應第二組預先選定的事件的出現(xiàn)而令所述總線線路解碼器解碼所述至少一條總線。
4.根據(jù)權(quán)利要求3的盒式存儲器,其特征在于還包括一個音調(diào)生成電路,它響應第三組預先選定的事件中至少一個事件的出現(xiàn)而生成一個音調(diào)。
5.一種保證一個具有一個可讀存儲器的盒式存儲器特許用在一個計算機系統(tǒng)中的方法,該計算機系統(tǒng)包括有經(jīng)由具有至少一條總線線路的至少一條總線,與該可讀存儲器電路連通的中央處理單元(CPU),所述方法包括下述步驟打亂所述至少一條總線的所述至少一條總線線路;檢測一組預先選定的事件;以及響應一組預先選定的事件的檢測,不打亂所述至少一條總線的所述至少一條總線線路。
6.根據(jù)權(quán)利要求5的方法,其特征在于所述檢測一組預先選定的事件的步驟包含檢測確定在所述至少一條總線上的至少一個總線值。
7.一種用于判定一個盒式存儲器是否特許用在一個計算機系統(tǒng)中的鑒別系統(tǒng),其特征在于包括具有至少一條與之相關(guān)聯(lián)的總線的一個中央處理單元(CPU),以及其中所述至少一條總線包含至少一條總線線路;與所述CPU可拆卸地電路連通的一個可尋址的盒式存儲器,包括(ⅰ)與所述CPU電路連通的可讀存儲器;(ⅱ)沿所述一條總線介于所述CPU與所述存儲器之間并與所述CPU及所述存儲器電路連通的一個總線線路加密器;以及(ⅲ)與所述CPU及所述總線線路加密器電路連通的一個封鎖控制電路;所述封鎖控制電路配置成使所述封鎖控制電路響應第一組預先選定的事件的出現(xiàn)令所述總線線路加密器打亂所述至少一條總線的所述至少一條總線線路;以及所述封鎖控制電路進一步配置成使所述封鎖控制電路響應第二組預先選定的事件的出現(xiàn)令所述總線線路加密器停止打亂所述至少一條總線線路。
8.一種用于判定一個盒式存儲器是否特許用在一個計算機系統(tǒng)中的鑒別系統(tǒng),其特征在于包括一個具有至少一條與之相關(guān)聯(lián)的總線的中央處理單元(CPU),所述至少一條總線包含至少一條總線線路;與所述CPU可拆卸地電路連通的一個可尋址的盒式存儲器,包括(ⅰ)與所述CPU電路連通的一個可讀存儲器;(ⅱ)沿所述一條總線介于所述CPU與所述存儲器之間的,并與所述CPU及所述存儲器電路連通的一個總線線路加密器;以及(ⅲ)與所述CPU及所述總線線路加密器電路連通的一個封鎖控制電路;所述總線線路加密器具有兩種狀態(tài)一種加密狀態(tài),其特征在于所述總線線路加密器打亂所述至少一條總線的所述至少一條總線線路;及一種非加密狀態(tài),其特征在于所述總線線路加密器不打亂所述至少一條總線的所述至少一條總線線路;所述總線線路加密器配置成響應來自所述封鎖控制電路的輸入將所述加密狀態(tài)切換到所述非加密狀態(tài);以及所述封鎖控制電路配置成使所述封鎖控制電路響應第一組預先選定的事件的出現(xiàn)令所述總線線路加密器進入所述加密狀態(tài),并且所述封鎖控制電路進一步配置成使所述封鎖控制電路響應第二組預先選定的事件的出現(xiàn)令所述總線線路加密器進入所述非加密狀態(tài)。
9.根據(jù)權(quán)利要求7或8的系統(tǒng),其特征在于所述預先選定的事件包括系統(tǒng)加電。
10.根據(jù)權(quán)利要求7或8的系統(tǒng),其特征在于所述預先選定的事件包括系統(tǒng)復位。
11.根據(jù)權(quán)利要求5的方法,其特征在于所述預先選定的事件組之一包括在所述至少一條總線上確定的至少一個總線值。
12.一種用在一個其存儲器的第一區(qū)映射到第一個可尋址存儲設(shè)備并且存儲器的第二區(qū)映射到第二個可尋址存儲設(shè)備的計算機系統(tǒng)中的鑒別方法,其特征在于包括下述步驟執(zhí)行來自存儲區(qū)中的第一區(qū)的代碼;確定存儲器中第二區(qū)中的地址,而不執(zhí)行第二存儲設(shè)備內(nèi)與對應的地址相關(guān)聯(lián)的代碼;執(zhí)行來自存儲器中第二區(qū)中的代碼。
13.根據(jù)權(quán)利要求12的一種方法,其特征在于包括下述步驟;執(zhí)行來自存儲器中第一區(qū)中的代碼;確定對應于存儲器中的第二區(qū)的地址,而不執(zhí)行第二存儲設(shè)備中與對應的地址相關(guān)聯(lián)的代碼;從存儲器的第二區(qū)中復制一個存儲器塊到一個RAM中;執(zhí)行從存儲器中第二區(qū)復制的所述代碼。
14.一種保證具有一個可讀存儲器的存儲設(shè)備特許用在具有與該可讀存儲器電路連通的第一中央處理單元(CPU)及第二中央處理單元、并具有與第一與第二CPU電路連通的一個隨機存取存儲器(RAM)的一個計算機系統(tǒng)中的方法,其特征在于包括下述步驟用第一CPU從可讀存儲器中將一個可在第二CPU上執(zhí)行的第一程序復制到RAM中;用第二CPU執(zhí)行所述第一程序;用所述第二CPU將一個不能在第一CPU上執(zhí)行的一個存儲器塊復制到RAM中;將所述存儲器塊變換成能夠在所述第一CPU上執(zhí)行的第二程序;以及在所述第一CPU上執(zhí)行所述第二程序。
15.根據(jù)權(quán)利要求14的方法,其特征在于所述變換所述存儲器塊的步驟包含解壓縮所述存儲器塊的步驟。
16.根據(jù)權(quán)利要求14的方法,其特征在于變換所述存儲器塊的所述步驟中包含解密所述存儲器塊的步驟。
17.根據(jù)權(quán)利要求14的方法,其特征在于變換所述存儲器塊的所述步驟中包含定位所述存儲器塊的一個可執(zhí)行部分并通知所述第一CPU所述存儲器塊的所述可執(zhí)行部分的位置的步驟。
18.一種計算機系統(tǒng),具有經(jīng)由第一系統(tǒng)總線與一個聲頻/視頻/CD驅(qū)動控制器/協(xié)處理器電路連通的一個中央處理單元(CPU);以及經(jīng)由第二系統(tǒng)總線與所述聲頻/視頻/CD驅(qū)動控制器/協(xié)處理器電路連通的一個系統(tǒng)存儲器;其特征在于所述A/V/CD控制器/協(xié)處理器包含一個仲裁器,用于在所述第二系統(tǒng)總線、一個存儲器接口、一個圖形協(xié)處理器、一個數(shù)字信號處理器、一個密致盤控制器及一個視頻控制器之間進行仲裁控制,所有這些設(shè)備都是與所述CPU及所述系統(tǒng)存儲器電路連通的,并且各配置成使所述CPU、所述圖形協(xié)處理器、所述數(shù)字信號處理器、所述密致盤控制器及所述視頻控制器中任何一個都可成為所述第二系統(tǒng)總線的總線主控設(shè)備。
19.根據(jù)權(quán)利要求18的計算機系統(tǒng),其特征在于包括一個中斷控制器,用于將中斷連接到響應所述中斷控制器的所述CPU及所述仲裁器,使得直到所述中斷控制器檢測到出現(xiàn)一個中斷為止,所述CPU并沒有控制所述第二系統(tǒng)總線的最高優(yōu)先級。
20.根據(jù)權(quán)利要求7或8的系統(tǒng),其特征在于包括經(jīng)由所述至少一條總線與所述CPU電路連通的一個聲頻/視頻/CD驅(qū)動控制器/協(xié)處理器;以及經(jīng)由第二總線與所述聲頻/視頻/CD驅(qū)動器/協(xié)處理器電路連通的一個系統(tǒng)存儲器;所述A/V/CD控制器/協(xié)處理器包含一個仲裁器,用于仲裁控制所述系統(tǒng)總線、一個存儲器接口、一個圖形協(xié)處理器、一個數(shù)字信號處理器、一個密致盤控制器及一個視頻控制器,所有這些設(shè)備都是與所述CPU及所述系統(tǒng)存儲器電路連通的,并且各配置成使所述CPU、所述圖形協(xié)處理器、所述數(shù)字信號處理器、所述密致盤控制器及所述視頻控制器中任何一個都可成為所述第二總線的總線主控設(shè)備。
21.根據(jù)權(quán)利要求7或8的系統(tǒng),其特征在于包括經(jīng)由所述至少一條總線與所述CPU電路連通的一個聲頻/視頻/CD驅(qū)動控制器/協(xié)處理器;經(jīng)由一條第二系統(tǒng)總線與所述聲頻/視頻/CD驅(qū)動控制器/協(xié)處理器電路連通的一個系統(tǒng)存儲器;所述A/V/CD控制器/協(xié)處理器包含一個仲裁器,用于仲裁控制所述第二總線、一個存儲器接口、一個圖形協(xié)處理器、一個數(shù)字信號處理器、一個密致盤控制器及一個視頻控制器,所有這些設(shè)備都是與所述CPU及所述系統(tǒng)存儲器電路連通的,并且各配置成使所述CPU、所述圖形協(xié)處理器、所述數(shù)字信號處理器、所述密致盤控制器及所述視頻控制器中任何一個都可成為所述第二總線的總線主控設(shè)備;以及還包括一個中斷控制器,用于將中斷連接到響應所述中斷控制器的所述CPU及所述仲裁器,使直到所述中斷控制器檢測到出現(xiàn)一個中斷為止,所述CPU并不具有控制所述第二系統(tǒng)總線的最高優(yōu)先級。
全文摘要
一個封鎖的盒式存儲器中的連接器允許存儲器、存儲器控制電路及封鎖控制電路可插接地與CPU電路連通。存儲器控制電路打亂某些總線線路,從而在復位時打亂存儲器中的數(shù)據(jù),并響應來自封鎖控制電路的輸入停止打亂總線線路。封鎖控制電路監(jiān)視總線,等待在總線上確定一個總線值的正確組合,此時,封鎖控制電路令存儲器控制電路停止打亂總線線路。
文檔編號G06F1/00GK1115058SQ9411791
公開日1996年1月17日 申請日期1994年11月11日 優(yōu)先權(quán)日1993年12月16日
發(fā)明者J·L·康斯 申請人:國際商業(yè)機器公司