專利名稱:糾錯裝置的制作方法
技術領域:
本發明涉及進行伴隨于糾正在編碼數據中發生的錯誤的處理的裝置,特別涉及對由2維構成的塊碼進行高速糾錯的裝置。
背景技術:
在磁盤和光盤等作為記錄媒體的數據存儲裝置中,會由于記錄媒體上的劃傷和污漬而引起數據錯誤。為了使恢復這樣的錯誤數據成為可能,在將數據記錄到記錄媒體上時,把用于糾錯的代碼(以下稱之為“糾錯碼”或“奇偶校驗數據”)附加到數據中,在進行再現時利用糾錯碼檢測出錯誤的數據,并進行將其糾正為正確數據的處理。在這種附加糾錯碼及糾錯處理(以下將這兩種處理合稱為“伴隨糾錯的處理”)中,為了提高其糾錯能力,在大多數系統中采用Reed-Solomon碼作為糾錯碼,并采用乘積碼作為數據的構成方法。
圖1示出了乘積碼。對于由k1×k2個字節構成的信息數據,在行方向上(以下稱為“C1序列”)上附加m1字節的奇偶校驗數據,在列方向上(以下稱為“C2序列”)上附加m2字節的奇偶校驗數據。在由這些信息數據、C1個奇偶校驗數據及C2個奇偶校驗數據構成了一個作為糾錯最大單位的數據塊時,其字節數為n1×n2字節。通常,作為將信息數據和奇偶校驗數據存儲到DRAM等存儲器中的方法,使C1序列中的存儲器地址加1以便于進行存儲。由此,構成C1序列的代碼串的數據被存儲到地址連續的存儲區域中,但構成C2序列的代碼串的數據則被存儲到地址不連續的存儲區域中。構成乘積碼的各個代碼被簡稱為“數據”。
圖2示出了與C1代碼串對應的糾錯流。首先對第1行的代碼串進行糾錯。接著對第2行的代碼串進行糾錯。對全部n2行重復這樣的操作。即,在列方向上逐行進行掃描該行中的全部數據并進行糾錯的操作。所謂“掃描”就是在從存儲區域中讀出作為錯誤檢測和糾正的對象的數據時的讀出順序。并且,在“錯誤檢測”中不包含所謂的糾錯處理,但在“糾錯”中包含作為其前置處理的錯誤檢測。
圖3示出了與C2代碼串對應的糾錯流。首先對第1列的代碼串進行糾錯。接著對第2列的代碼串進行糾錯。對全部n1列重復這樣的操作。即,在行方向上逐列進行掃描該列中的全部數據并進行糾錯的操作。
圖4是沿著上述流向進行糾錯的現有糾錯裝置的構成示意圖。其中,d1到d100是100字節的信息數據,p1到p10是10字節的奇偶校驗數據,并且這些數據構成了1個代碼串。
從存儲器中讀出這些信息數據及奇偶校驗數據并順序輸入到出錯位生成裝置900中。出錯位生成裝置900在輸入一個數據時進行預定的運算,到完成了全部輸入構成1個代碼串的信息數據d1~d100和奇偶校驗數據p1~p10時為止,生成10個出錯位。在這10個出錯位中存在非零數的情況下,由于在該代碼串中發生了錯誤,所以錯誤位置·錯誤數值運算裝置901利用這些出錯位計算出錯誤位置和錯誤數值。其中,錯誤位置是表示代碼串中的第幾個數據是錯誤數據的信息,錯誤數值表示錯誤的大小。最后,錯誤數據更新裝置902通過這些錯誤位置和錯誤數值,從存儲器中讀出該代碼串中的錯誤數據,并將糾正后的數據回寫到原來的位置上。在每個代碼串中重復上述操作。
如上所述,現有的糾錯裝置通過在對C1序列進行逐行掃描和糾錯時,對C2序列進行逐列掃描和糾錯,進行對一個數據塊的全部代碼串的糾錯。
但是,隨著最近以光盤驅動器裝置為代表的數據存儲裝置對處理速度高速化的要求越來越嚴格,現有的糾錯裝置適應這樣的要求是非常困難的。
為了滿足這樣的嚴格要求,雖然考慮到在1臺數據存儲裝置內并列設計多個糾錯裝置,卻過度增大了電路規模而顯著降低了性能價格比。
發明內容
本發明鑒于上述問題,其目的是提供以較小的電路規模高速行伴隨于糾錯的處理的糾錯裝置。
為了達到上述目的,根據本發明的第一項發明,一種反復執行伴隨于對構成R行L列的塊碼的行方向及列方向的代碼串糾錯的運算的糾錯裝置,其特征在于,包括存儲裝置,用于存儲所述塊碼;運算裝置,用于以所述塊碼的1行或1列代碼串為單位進行誤碼糾正所需要的運算;傳輸裝置,具有行方向傳輸部件,用于在R1為大于2小于R的整數時,對R行分別按順序反復進行如下操作讀出存儲在所述存儲裝置中的塊碼的R1行代碼串并將其傳輸到所述運算裝置中,所述行方向傳輸部件在L1為大于2小于L的整數時,在行方向上只移位L1個代碼,反復進行R1行L1列傳輸所述R1行L1列傳輸是指按順序對所述R1行中的各行進行連續讀出并列的L1個代碼并將其傳輸到所述運算裝置中;所述運算裝置在代碼是從所述行方向傳輸部件傳送來的情況下,對傳送來的每L1個代碼并列進行對所述R1行代碼串的所述運算,來構成與所述R1行不同行的代碼串。
由此,行方向上的糾錯是對多個代碼串并列進行并在行方向上分割多行代碼串,并使得到的多個小數據塊分別按照Z字形掃描順序進行糾錯。即,按照一邊換行一邊只對各行的一部分代碼反復掃描的順序并列地進行糾錯,因此與單純的換行對各行全部代碼反復掃描的并列處理相比,雖然需要以相同的速度進行掃描和糾錯,但降低了輸入到各行的糾錯電路中的代碼的平均輸入速度,并縮小了每行的糾錯電路中所必需的隊列緩沖器等的電路規模。而且,由于各行的掃描在同一行中是連續的并且以編碼為對象,所以在塊碼被存儲在具有2維地址的DRAM等存儲區域中的情況下,可以對同一行地址中的連續列地址進行訪問,從而使高速掃描成為可能。
并且,根據本發明的第2項發明,在本發明的第1項發明的糾錯裝置中,所述塊碼為乘積碼,在構成所述塊碼的行方向及列方向的代碼串中分別包含信息代碼和糾錯碼,所述運算裝置包括用于以1行或1列代碼串為單位,檢測是否存在誤碼的錯誤檢測裝置,和用于在通過所述錯誤檢測裝置檢測出存在誤碼的情況下,將與該誤碼相當的所述存儲裝置中的代碼重寫成糾正后的值的誤碼更新裝置,
所述運算裝置在代碼是從所述行方向傳輸部件傳送來的情況下,對傳送來的每L1個代碼并列進行對所述R1行代碼串的所述運算,來構成與所述R1行不同行的代碼串。
由此,由于依據本發明的糾錯裝置能夠適用于對乘積碼糾錯中的行方向上的錯誤檢測,從而提高了光盤等的讀出裝置及數據通信中的接收裝置等執行對接收的乘積碼進行糾錯的裝置的錯誤檢測速度。
并且,根據本發明的第3項發明,在本發明的第2項發明的糾錯裝置中,在所述存儲裝置中,屬于所述塊碼同一行的代碼被存入具有連續地址的存儲區域中,所述行方向傳輸部件從所述存儲裝置的具有連續地址的存儲區域中連續讀出所述L1個代碼。
由此,為了從存儲裝置中讀出屬于同一行的代碼,增加輸出到存儲裝置中的地址,從而縮短了從存儲裝置中讀出的時間。
并且,根據本發明的第4項發明,在本發明的第3項發明的糾錯裝置中,所述存儲裝置為動態隨機存取存儲器,所述行方向傳輸部件以頁面模式從所述存儲裝置中讀出所述L1個代碼。
由此,為了從存儲裝置中讀出屬于同一行的代碼,在將1個RAS地址輸出到存儲裝置中之后連續輸出CAS地址,從而謀求DRAM的命中頁的讀出速度高速化。
并且,根據本發明的第5項發明,在本發明的第4項發明的糾錯裝置中,由所述行方向傳輸部件執行的傳輸是通過對所述存儲裝置的直接存儲器訪問而產生的傳輸。
由此,由于作為能夠在錯誤檢測裝置中并列處理的對象的全部代碼被連續從存儲裝置中讀出和輸入,從而避免了在由錯誤檢測裝置對1個較小的數據塊進行錯誤檢測時中斷代碼串的輸入,有效地實現基于流水線處理的糾錯。
并且,根據本發明的第6項發明,在本發明的第2項發明的糾錯裝置中,所述錯誤檢測裝置包括R1個用于進行對1個代碼串的錯誤檢測的單位錯誤檢測部件和用于在從所述行方向傳輸部件傳送代碼的情況下,反復進行將每次傳送的L1個代碼分別按順序分配到所述R1個單位錯誤檢測部件中的分配部件,
所述R1個單位錯誤檢測部件分別相互獨立并且與所述行方向傳輸部件所執行的傳輸并行地進行所述錯誤檢測。
由此,在行方向上的糾錯中,各個單位錯誤檢測裝置以一次L1個代碼的頻率從分配裝置輸入R1次代碼并在從分配裝置向其它單位錯誤檢測裝置輸入代碼期間進行錯誤檢測,從而減輕了對各個單位錯誤檢測裝置要求的處理能力并削減了電路規模。
并且,根據本發明的第7項發明,在本發明的第6項發明的糾錯裝置中,所述R1個單位錯誤檢測部件分別在將來自所述分配部件的L1個代碼反復進行分配的情況下,在比該重復周期短的周期內,完成對L1個代碼的錯誤檢測。
由此,在列方向上的糾錯中,對于各個單位錯誤檢測裝置來說,代碼的輸入率(在單位時間內輸入的代碼個數)在處理能力(單位時間內接受錯誤檢測處理的代碼個數)的范圍之內,從而縮小了各個單位錯誤檢測裝置的輸入段中所必需的隊列緩沖器的大小。
并且,根據本發明的第8項發明,在本發明的第7項發明的糾錯裝置中,所述R1個單位錯誤檢測部件分別具有用于對1個代碼串計算出多個出錯位的積和運算電路。
由此,依據本發明的糾錯裝置是適用于Reed-Solomon碼的裝置。
并且,根據本發明的第9項發明,在本發明的第2項發明的糾錯裝置中,在所述L除以所述L1所得的商為D、余數為E時,所述行方向傳輸部件在一邊在行方向上只移位L1個代碼一邊重復D次所述的R1行L1列傳輸之后,對所述R1行分別按順序對各行連續讀出并列的E個代碼并將其傳輸到所述錯誤檢測裝置中,所述錯誤檢測裝置在進行了預定次數的對每L1個代碼的所述錯誤檢測之后,進行對每E個代碼的所述錯誤檢測。
由此,即使構成乘積碼的行方向上的碼長是一次連續讀出的代碼數L1的倍數,直到各代碼串的結尾,都可以無問題地并列執行糾錯,從而實現了與乘積碼的大小無關的柔性糾錯裝置。
并且,根據本發明的第10項發明,在本發明的第2項發明的糾錯裝置中,所述傳輸裝置包括列方向傳輸部件,用于在L2為大于2小于L的整數時,對L列按順序反復進行如下操作讀出存儲在所述存儲裝置中的塊碼的L2列代碼串并將其傳輸到錯誤檢測裝置中,所述列方向傳輸部件在行方向上只移位L2個代碼,反復進行R行L2列傳輸所述R行L2列傳輸是指按順序對各行進行連續讀出并列的L2個代碼并將其傳輸到所述錯誤檢測裝置中,所述錯誤檢測裝置在從所述列方向傳輸部件傳送代碼的情況下,將每次傳送來的L2個代碼并列進行對所述L2列代碼串的錯誤檢測,作為屬于相對應的所述L2列代碼串的代碼。
由此,對多個代碼串并列執行方向上的糾錯和列方向上的糾錯,而且,按照換行只對各行的一部分代碼反復掃描的順序執行對列方向的糾錯。這樣,與單純的換行對各行的全部代碼反復掃描的并列處理相比,雖然需要以相同的速度進行掃描和糾錯,但降低了輸入到各行的糾錯電路中的代碼的平均輸入速度,并縮小了每行的糾錯電路中所必需的隊列緩沖器等的電路規模。
并且,根據本發明的第11項發明,在本發明的第10項發明的糾錯裝置中,所述R1和所述L2為R1=L2=j,所述錯誤檢測裝置包括j個用于進行對1個代碼串的錯誤檢測的單位錯誤檢測部件和用于在從所述行方向傳輸部件傳送代碼的情況下,反復進行將每次傳送的L1個代碼分別按順序分配到所述j個單位錯誤檢測部件中,并在從所述列方向傳輸部件傳送代碼的情況下,反復進行將傳送的L2個代碼分別分配到相對應的所述j個單位錯誤檢測部件中的分配部件,所述j個單位錯誤檢測部件分別相互獨立并且與所述行方向傳輸部件和所述列方向傳輸部件所執行的傳輸并行地進行所述錯誤檢測。
由此,作為行方向糾錯中的并列處理對象的行數與作為列方向糾錯中的并列處理對象的列數相等,從而各方向的糾錯中所需要的單位錯誤檢測裝置的個數相同,無論進行哪個方向上的糾錯,都能夠充分利用錯誤檢測裝置的能力。
并且,根據本發明的第12項發明,在本發明的第11項發明的糾錯裝置中,所述j個單位錯誤檢測部件分別在將來自所述分配部件的L1個代碼反復進行分配的情況下,在比該重復周期短的周期內,完成對L1個代碼的錯誤檢測,在將來自所述分配部件的L2個代碼中的一個反復進行分配的情況下,在比該重復周期更短的周期內,完成對所分配的1個代碼的錯誤檢測。
由此,在列方向糾錯中,對于各個單位錯誤檢測裝置來說,代碼的輸入率(在單位時間內輸入的代碼個數)在處理能力(單位時間內接受錯誤檢測處理的代碼個數)的范圍之內,從而縮小了各個單位錯誤檢測裝置的輸入段中所必需的隊列緩沖器的大小。
并且,根據本發明的第13項發明,在本發明的第12項發明的糾錯裝置中,所述R1、所述L1和所述L2為R1=L1=L2=j。
由此,在行方向及列方向中的任一方向上的糾錯中,乘積碼的讀出順序相同,從而使與對存儲裝置的訪問相關的傳輸裝置的控制電路簡單化。
并且,根據本發明的第14項發明,一種反復執行伴隨于對構成R行L列的塊碼的行方向及列方向的代碼串糾錯的運算的糾錯裝置,其特征在于,包括存儲裝置,用于存儲所述塊碼;運算裝置,用于以所述塊碼的1行或1列代碼串為單位進行誤碼糾正所需要的運算;傳輸裝置,具有列方向傳輸部件,用于在L2為大于2小于L的整數時,對L列按順序反復進行如下操作讀出存儲在所述存儲裝置中的塊碼的L2列代碼串并將其傳輸到運算裝置中,所述列方向傳輸部件在行方向上只移位L2個代碼,反復進行對所述R行分別按順序進行的R行L2列傳輸,所述R行L2列傳輸是指對各行連續讀出并列的L2個代碼并將其傳輸到所述運算裝置中;其中所述運算裝置在從所述列方向傳輸部件傳送代碼的情況下,將每次傳送來的L2個代碼并列進行對所述L2列代碼串的所述運算,作為屬于相對應的所述L2列代碼串的代碼。
由此,列方向上的糾錯是對多個代碼串并列進行并在行方向上分割多行代碼串,并使得到的多個小數據塊分別按照Z字形掃描順序進行糾錯。即,按照換行只對各行的一部分代碼反復掃描的順序并列地進行糾錯,因此與單純的換列對各列全部代碼反復掃描的并列處理相比,雖然需要以相同的速度進行掃描和糾錯,但降低了輸入到各列的糾錯電路中的代碼的平均輸入速度,并縮小了每行的糾錯電路中所必需的隊列緩沖器等的電路規模。而且,由于各行的掃描在同一行中是連續的并且以編碼為對象,所以在塊碼被存儲在具有2維地址的DRAM等存儲區域中的情況下,可以對同一行地址中的連續列地址進行訪問,從而使高速掃描成為可能。
而且,由于進行行方向糾錯的糾錯裝置所具備的上述特征構成要素也適用于列方向糾錯,所以能夠得到與行方向糾錯相關的糾錯裝置相同的效果。
而且,為了達到上述目的,根據本發明的第23項發明的一種用于在對從外部的第一裝置接收的代碼進行糾錯后輸出到外部的第二裝置的糾錯裝置,其特征在于,存儲裝置,具有用于存儲所述代碼的存儲區域;錯誤檢測裝置,用于以預定數目的代碼為單位,檢測是否存在錯誤的代碼;糾錯裝置,用于以預定數目的代碼為單位,糾正所述存儲裝置中的錯誤代碼;第一傳輸裝置,用于將從所述第一裝置輸出的代碼并行傳輸到所述存儲裝置和所述錯誤檢測裝置中,在將該代碼存入所述存儲裝置的同時,在所述錯誤檢測裝置中進行所述檢測;第二傳輸裝置,用于將通過所述錯誤檢測裝置檢測出存在錯誤代碼的所述預定數目的代碼從所述存儲裝置傳輸到所述糾錯裝置,并在所述糾錯裝置中對該代碼進行所述糾正;第三傳輸裝置,用于將通過所述錯誤檢測裝置或所述糾錯裝置檢測出不存在錯誤代碼或錯誤代碼經過糾正的預定數目的代碼從所述存儲裝置傳輸到所述第二裝置;傳輸控制裝置,用于控制所述第一至第三傳輸裝置,以使其分別排他地執行所述代碼傳輸。
由此,在從第一裝置輸出的代碼被存儲在存儲裝置中的同時接受錯誤檢測處理,從而與現有的在被暫時存入存儲裝置之后讀出并輸入到糾錯裝置中的處理順序相比,在縮短了糾錯所要求的整個處理時間的同時減少了對存儲裝置的訪問次數,并實現了高速的低功耗糾錯裝置。
并且,根據本發明的第24項發明,在本發明的第23項的發明的糾錯裝置中,所述錯誤檢測裝置具有檢測結果記錄部件,用于記錄是否存在錯誤代碼的檢測結果,所述糾錯裝置通過參照記錄在所述檢測結果記錄部件中的檢測結果,控制第二傳輸裝置以便僅僅將檢測出存在錯誤代碼的所述預定數目的代碼從所述存儲裝置中傳輸到所述糾錯裝置中。
由此,在存入存儲裝置的同時進行的錯誤檢測中,對于沒有檢測出錯誤的代碼,跳過了所謂從存儲裝置向糾錯裝置傳輸及通過糾錯裝置糾錯的兩個處理,從而在使糾錯高速化的同時,避免了對存儲裝置的無效訪問。
并且,根據本發明的第25項發明,在本發明的第24項的發明的糾錯裝置中,所述第一裝置按順序反復輸出構成R行L列塊碼的行方向代碼串,所述塊碼為乘積碼,在構成所述塊碼的行方向及列方向的代碼串中分別包含信息代碼和糾錯碼,所述糾錯裝置對行方向及列方向的代碼串進行糾錯,在對行方向的代碼串進行糾錯的情況下,通過參照記錄在所述檢測結果記錄部件中的檢測結果,控制第二傳輸裝置以便僅僅將檢測出存在錯誤代碼的行方向的代碼串從所述存儲裝置中傳輸到所述糾錯裝置中。
由此,依據本發明的糾錯裝置能夠用于要求高速執行對乘積碼的糾錯的光盤等讀出裝置和數據通信中的接收裝置中。
并且,根據本發明的第26項發明,在本發明的第25項的發明的糾錯裝置中,所述錯誤檢測裝置將對構成1個塊碼的全部行方向的代碼串的檢測結果存入并記錄到所述檢測結果記錄部件中,所述糾錯裝置在對列方向的代碼串進行糾錯的情況下,通過參照記錄在所述檢測結果記錄部件中的檢測結果,控制第二傳輸裝置以便僅僅將檢測出存在錯誤代碼的構成塊碼的列方向的代碼串從所述存儲裝置中傳輸到所述糾錯裝置中。
由此,在構成1個塊碼的行方向上的全部代碼串中,在沒有檢測出錯誤的情況下,跳過對該塊碼的列方向上的代碼串的錯誤檢測及糾錯處理,從而在從光盤等記錄媒體中連續讀出的塊碼中的錯誤發生率較小的情況下,增大了相應的平均讀出速度。
并且,根據本發明的第27項發明,在本發明的第23項的發明的糾錯裝置中,所述第二傳輸裝置具有行方向傳輸部件,用于在R1為大于2小于R的整數時,對R行按順序反復進行如下操作從所述存儲裝置中讀出檢測出存在錯誤代碼的R1行代碼串并將其傳輸到所述糾錯裝置中,所述行方向傳輸部件在L1為大于2小于L的整數時,在行方向上只移位L1個代碼,反復進行R1行L1列傳輸所述R1行L1列傳輸是指按順序對所述R1行中的各行進行連續讀出并列的L1個代碼并將其傳輸到所述糾錯裝置中;所述糾錯裝置在代碼是從所述行方向傳輸部件傳送來的情況下,對傳送來的每L1個代碼并列進行對所述R1行代碼串的糾錯,作為構成與所述R1行不同行的代碼串。
由此,對多個行方向的糾錯不僅被并列執行,而且是通過反復對較小的數據塊糾錯而進行的,從而與單純的并列執行糾錯的情況相比,雖然以同一速度進行掃描和糾錯,但降低了糾錯裝置中被要求的處理能力并縮小了電路規模。
并且,根據本發明的第28項發明,在本發明的第27項的發明的糾錯裝置中,所述第二傳輸裝置還具有列方向傳輸部件,用于在L2為大于2小于L的整數時,對L列按順序反復進行如下操作從所述存儲裝置中讀出檢測出存在錯誤代碼的塊碼的L2列代碼串并將其傳輸到所述糾錯裝置中,所述列方向傳輸部件在行方向上只移位L2個代碼,反復進行R行L2列傳輸,所述R行L2列傳輸是指按順序對所述R行中的各行進行連續讀出并列的L2個代碼并將其傳輸到所述糾錯裝置中,所述糾錯裝置在從所述列方向傳輸部件傳送代碼的情況下,將每次傳送來的L2個代碼并列進行對所述L2列代碼串的糾錯,作為屬于相對應的所述L2列代碼串的代碼。
由此,并列執行行方向上的糾錯和列方向上的糾錯,從而以較小的電路規模實現了高速的糾錯裝置。
并且,根據本發明的第29項發明,在本發明的第23項的發明的糾錯裝置中,由所述第一傳輸裝置執行的從所述第一裝置向所述存儲裝置的代碼傳輸、由所述第二傳輸裝置執行的從所述存儲裝置向所述糾錯裝置的代碼傳輸及由所述第三傳輸裝置執行的從所述存儲裝置向所述第二裝置的代碼傳輸為由對所述存儲裝置的直接存儲器訪問所執行的傳輸,
所述傳輸控制裝置,在需要執行由所述第一傳輸裝置執行的DMA傳輸的情況下,在正在執行所述第一至第三傳輸裝置的DMA傳輸中的任一個時,在完成這個執行中的DMA傳輸后執行由所述第一傳輸裝置執行的DMA傳輸,在沒有執行所述第一至第三傳輸裝置的DMA傳輸中的任一個時,立刻執行由所述第一傳輸裝置執行的DMA傳輸。
由此,最優先執行對存儲裝置的緩沖,從而在將依據本發明的糾錯裝置用于光盤驅動器等讀出裝置中的情況下,光拾取器可以連續讀出光盤上的代碼。
并且,根據本發明的第30項發明,在本發明的第29項的發明中的糾錯裝置,所述傳輸控制裝置,在需要執行由所述第二傳輸裝置執行的DMA傳輸的情況下,只有在沒有執行所述第一至第三傳輸裝置的DMA傳輸中的任一個時,才執行由所述第二傳輸裝置執行的DMA傳輸。
由此,通過考慮到由與對存儲裝置的緩沖并列的錯誤檢測而導致的糾錯高速化和由對多個代碼串進行并列處理而導致的糾錯高速化的高效調度,使對存儲裝置的排他性訪問控制成為可能。
并且,根據本發明的第31項發明,在本發明的第30項的發明的糾錯裝置中,所述糾錯裝置在根據通過所述第二傳輸裝置傳輸的代碼串確定錯誤代碼和糾正后的值之后,在所述傳輸控制裝置的控制下,將所述存儲裝置中所對應的錯誤代碼重寫成糾正后的值,所述傳輸控制裝置只有在不執行所述第一至第三傳輸裝置的DMA傳輸中的任一個時,才執行由所述糾錯裝置進行的錯誤代碼的重寫。
由此,能夠更平衡地對與1個存儲裝置資源相對應的4種訪問進行排他性控制,實現較高性能價格比的糾錯裝置。
而且,為了達到上述目的,根據本發明的第32項發明的一種用于在對從外部的第一裝置接收的代碼進行必要的糾錯后輸出到外部的第二裝置的糾錯裝置,其特征在于,存儲裝置,具有用于存儲所述代碼的存儲區域;糾錯裝置,用于以預定數目的代碼為單位,檢測錯誤代碼并糾正對應的所述存儲裝置中的錯誤代碼;代碼選擇裝置,用于選擇從所述第一裝置傳送的代碼和從所述存儲裝置傳送的代碼中的任一個,送至所述糾錯裝置中,并在所述糾錯裝置中進行所述檢測和糾正;第一傳輸裝置,用于將從所述第一裝置輸出的代碼并行傳輸到所述存儲裝置和所述代碼選擇裝置中,在將該代碼存入所述存儲裝置的同時,在所述代碼選擇裝置中進行選擇并將其送至糾錯裝置,在所述錯誤檢測裝置中對該代碼進行所述檢測和糾正;第二傳輸裝置,用于將預定數目的代碼從所述存儲裝置傳輸到所述代碼選擇裝置,在所述代碼選擇裝置中選擇該代碼并將其送至所述糾錯裝置中,在所述糾錯裝置中對該代碼進行所述檢測和糾正;第三傳輸裝置,用于將通過所述糾錯裝置檢測出不存在錯誤代碼或錯誤代碼經過糾正的預定數目的代碼從所述存儲裝置傳輸到所述第二裝置;傳輸控制裝置,用于控制所述第一至第三傳輸裝置,以使其分別排他地執行所述代碼傳輸。
由此,從第一裝置輸出的代碼在被存入存儲裝置的同時,通過選擇裝置被輸入到糾錯裝置中,從而與現有的在被暫時存入存儲裝置之后讀出并輸入到糾錯裝置中的處理順序相比,在縮短了糾錯所要求的整個處理時間的同時減少了對存儲裝置的訪問次數,并實現了高速的低功耗糾錯裝置。
并且,根據本發明的第33項發明,在本發明的第32項的發明的糾錯裝置中,所述第一裝置按順序反復輸出構成R行L列塊碼的行方向代碼串,所述塊碼為乘積碼,在構成所述塊碼的行方向及列方向的代碼串中分別包含信息代碼和糾錯碼,所述第一傳輸裝置,將從所述第一裝置輸出的代碼并行傳輸到所述存儲裝置和所述代碼選擇裝置中,在將該代碼存入所述存儲裝置的同時,在所述代碼選擇裝置中進行選擇并將其送至糾錯裝置,在所述錯誤檢測裝置中對該代碼進行所述檢測和糾正;所述第二傳輸裝置,將所述塊碼的列方向代碼串從所述存儲裝置傳輸到所述代碼選擇裝置,在所述代碼選擇裝置中選擇該代碼并將其送至所述糾錯裝置中,在所述糾錯裝置中對該代碼進行所述檢測和糾正。
由此,實現了能夠適用于要求高速執行對乘積碼的糾錯的光盤等讀出裝置和數據通信中的接收裝置等中的糾錯裝置。
并且,根據本發明的第34項發明,在本發明的第33項的發明的糾錯裝置中,所述糾錯裝置包括用于以行方向或列方向的代碼串為單位,檢測是否存在錯誤代碼的錯誤檢測部件,和用于在通過所述錯誤檢測部件檢測出存在錯誤代碼的情況下,將與該錯誤代碼相對應的所述存儲裝置中的代碼重寫成糾正后的值的代碼更新部件,所述錯誤檢測部件包括用于記錄對通過所述第一傳輸裝置從所述第一裝置傳輸來的行方向代碼串的錯誤檢測結果的行方向檢測結果記錄部件,和用于記錄對通過所述第二傳輸裝置從所述存儲裝置傳輸來的列方向代碼串的錯誤檢測結果的列方向檢測結果記錄部件,所述錯誤代碼更新部件利用記錄在所述行方向檢測結果記錄部件及所述列方向檢測結果記錄部件中的檢測結果,重寫所述存儲裝置中的代碼。
由此,將行方向的糾錯結果和列方向的糾錯結果進行單獨保存,從而利用這些結果進行后續處理的代碼更新裝置等可以以更慢的速度進行處理。
并且,根據本發明的第35項發明,在本發明的第34項的發明的糾錯裝置中,所述錯誤檢測部件在進行行方向的錯誤檢測的情況下,將對構成1個塊碼的全部行方向代碼串的檢測結果存入和記錄到所述行方向檢測結果記錄部件中,在進行列方向糾錯的情況下,通過參照記錄在所述檢測結果記錄部件中的檢測結果,控制第二傳輸裝置以便僅僅將檢測出存在錯誤代碼的構成塊碼的列方向的代碼串從所述存儲裝置中傳輸到所述糾錯裝置中。
由此,在構成1個塊碼的行方向上的全部代碼串中,在沒有檢測出錯誤的情況下,跳過對該塊碼的列方向上的代碼串的錯誤檢測及糾錯處理,增大了相應的平均讀出速度。
并且,根據本發明的第36項發明,在本發明的第35項的發明的糾錯裝置中,所述傳輸控制裝置以構成這些代碼串的部分代碼為單位切換由所述第一傳輸裝置執行的從所述第一裝置向所述代碼選擇裝置的1行代碼串的傳輸和由所述第二傳輸裝置執行的從所述存儲裝置向所述代碼選擇裝置的1列代碼串的傳輸,交互地執行,所述錯誤檢測部件通過以所述部分代碼為單位,交互地切換對由所述第一傳輸裝置從所述第一裝置傳輸來的行方向代碼串的錯誤檢測和對由所述第二傳輸裝置從所述存儲裝置傳輸來的列方向代碼串的錯誤檢測,并列進行對各代碼串的錯誤檢測,并將各自的結果記錄到行方向檢測結果記錄部件及列方向檢測結果記錄部件中,所述錯誤代碼更新部件通過順序參照記錄在所述行方向檢測結果記錄部件和所述列方向檢測結果記錄部件中的檢測結果,順序地進行行方向上的所述存儲裝置中的代碼重寫和列方向上的所述存儲裝置中的代碼重寫。
由此,代碼更新裝置可以按照并列進行行方向糾錯和列方向糾錯的順序進行操作,從而削減了電路規模。
并且,根據本發明的第37項發明,在本發明的第32項的發明的糾錯裝置中,所述第二傳輸裝置還具有列方向傳輸部件,用于在L2為大于2小于L的整數時,對L列按順序反復進行如下操作從所述存儲裝置中讀出檢測出存在錯誤代碼的塊碼的L2列代碼串并經過所述代碼選擇裝置將其傳輸到所述糾錯裝置中,所述列方向傳輸部件在行方向上只移位L2個代碼,反復進行R行L2列傳輸,所述R行L2列傳輸是指按順序對所述R行中的各行進行連續讀出并列的L2個代碼并將其傳輸到所述糾錯裝置中,所述糾錯裝置在從所述列方向傳輸部件傳送代碼的情況下,將每次傳送來的L2個代碼并列進行對所述L2列代碼串的糾錯,作為屬于相對應的所述L2列代碼串的代碼。
由此,不僅并列執行對多個行方向的糾錯,而且還反復執行對小數據塊的糾錯,從而與單純進行并列處理的情形相比,雖然需要以相同的速度進行掃描和糾錯,但是降低了糾錯裝置中所要求的處理能力,并縮小了電路規模。
而且,把向存儲器裝置的存取作為DMA,其中設置一定的優先順序來進行調度,由此能夠更平衡地對與1個存儲裝置資源相對應的4種訪問進行排他性控制,實現性能價格比較高的糾錯裝置。
圖1示出了乘積碼的數據結構。
圖2示出了按照每行的順序進行C1序列的糾錯時的處理順序。
圖3示出了按照每列的順序進行C2序列的糾錯時的處理順序。
圖4示出了現有的糾錯裝置的糾錯處理順序。
圖5是本發明第一實施例中的糾錯裝置100的構成示意圖。
圖6是裝置100的總線控制器2的詳細結構示意圖。
圖7是裝置100的數據分配器51的詳細結構示意圖。
圖8是裝置100的1個出錯位生成器52(53、54、55)的詳細結構示意圖。
圖9是裝置100中的主要處理(數據輸入、糾錯、數據輸出)的時序圖。
圖10示出了在進行C1序列的糾錯時讀出緩沖存儲器1內的乘積碼的順序。
圖11示出了在按照圖10所示的順序從緩沖存儲器1傳輸數據時,數據分配器51的操作。
圖12示出了C1序列的糾錯中通過從緩沖存儲器1向糾錯器5的數據傳輸與4個出錯位生成器52~55的積和運算時序。
圖13示出了在進行C2序列的糾錯時讀出緩沖存儲器1內的乘積碼的順序。
圖14示出了在按照圖13所示的順序從緩沖存儲器1傳輸數據時,數據分配器51的操作。
圖15示出了C2序列的糾錯中通過從緩沖存儲器1向糾錯器5的數據傳輸與4個出錯位生成器52~55的積和運算時序。
圖16示出了對C1序列的端數部分進行的處理時序。
圖17示出了對C2序列的端數部分進行的處理時序。
圖18示出了以兩列在C1方向上進行糾錯時,從緩沖存儲器讀出數據的順序。
圖19示出了以兩列在C1方向上進行糾錯時數據分配器的操作。
圖20示出了以兩列在C1方向上進行糾錯時數據傳輸與出錯位計算的時序。
圖21示出了以兩列在C2方向上進行糾錯時,從緩沖存儲器讀出數據的順序。
圖22示出了以兩列在C2方向上進行糾錯時數據分配器的操作。
圖23示出了以兩列在C2方向上進行糾錯時數據傳輸與出錯位計算的時序。
圖24是本發明第二實施例中的光盤讀取裝置2000的結構示意圖。
圖25是裝置2000的光盤控制器2100的詳細結構示意圖。
圖26是裝置2000的總線控制器2180的詳細結構示意圖。
圖27示出了通過裝置2000的總線調配控制器2182的3個排他性DMA傳輸的控制例。
圖28是裝置2000的糾錯器2130的詳細結構示意圖。
圖29是示出了光盤控制器2100內的處理過程的時序圖。
圖30是圖29所示的時序圖的更詳細的示圖。
圖31是示出了在進行C1序列的糾錯時糾錯器2130內的行單位處理過程的時序圖。
圖32示出了在糾正圖31所示的代碼串時,訪問存儲在緩沖存儲器2110中的乘積碼的順序。
圖33示出了在以4個代碼串并行對圖31所示的C1序列糾錯時,從磁盤接口2120讀出數據的順序。
圖34示出了對圖31所示的序列C1的端數部分的讀出順序。
圖35是本發明第三實施例中的光盤讀取裝置3000的結構示意圖。
圖36是裝置3000的光盤控制器3100的詳細結構示意圖。
圖37是裝置3000的糾錯器3130的詳細結構示意圖。
圖38是示出了在連續處理多個數據塊的數據時光盤控制器3100內的處理過程的時序圖。
圖39是圖38所示的時序圖的更詳細的示圖。
圖40是示出了在糾錯器2130內的行方向及列方向上的單位處理過程的時序圖。
具體實施例方式
以下,參照附圖詳細說明本發明的實施例。
(第一實施例)第一實施例涉及對行方向及列方向中的任一方向上的4個代碼串并列進行糾錯的高速糾錯裝置。
圖5是本發明第一實施例中的糾錯裝置100的構成示意圖。裝置100是包含在光盤驅動器裝置中并用于對從光盤中讀出的數據進行糾錯的裝置,由緩沖存儲器1、包含在該緩沖存儲器1中的進行訪問的3個處理塊(磁盤接口部件12、糾錯部件5及主機接口部件13)以及進行訪問的排他性控制的總線控制器2構成。圖中的箭頭表示作為糾錯對象的數據的流向。裝置100采用Reed-Solomon碼作為糾錯碼類型,采用乘積碼作為代碼結構。
緩沖存儲器1是利用二維地址(行地址和列地址)具有特定存儲區域的DRAM等半導體存儲器,具有暫時存儲多個作為糾錯對象的數據塊的存儲容量。
磁盤接口部件12是將從光盤等記錄媒體中讀出的數據接著寫入緩沖存儲器1中的接口電路。
糾錯部件5是用于順序讀出從磁盤接口部件12寫入緩沖存儲器1中的數據并檢測是否發生了錯誤,如果發現錯誤,就在緩沖存儲器1上進行糾錯的電路。具體地,糾錯部件5是對4個代碼串同時并列執行糾錯的電路,由數據分配部件51、4個出錯位生成部件52~55、錯誤位置·錯誤數值運算部件56及錯誤數據更新部件57構成。
數據分配部件51將從緩沖存儲器1傳輸來的數據分配到4個出錯位生成部件52~55中的一個中。此時,這樣進行分配以便于屬于同一代碼串中的數據被輸入到同一出錯位生成部件中。4個出錯位生成部件52~55都是相同的電路,分別在輸入了所分配的數據時就進行積和運算,當包含10個奇偶校驗數據的1個代碼串被全部輸入之后,生成10個出錯位。
錯誤位置·錯誤數值運算部件56分別對4個出錯位生成部件52~55依次判斷所生成的10個出錯位中是否存在非零數,如果存在,就利用這些出錯位計算出錯誤位置和錯誤數值。具體地,以10個出錯位為基礎,利用歐基里德算法等方法算出用于確定錯誤位置多項式和錯誤數值多項式的各項系數,然后利用鏈查尋和調用法等方法算出該錯誤位置多項式的根(錯誤位置)并利用錯誤數值多項式算出錯誤數值。
錯誤數據更新部件57根據由錯誤位置·錯誤數值運算部件56算出的錯誤位置,讀出緩沖存儲器1中的錯誤數據,計算讀出的錯誤數據與由錯誤位置·錯誤數值運算部件56算出的錯誤數值的異或邏輯和,將得出的數值回寫到緩沖存儲器2110中的原位置上。就該糾錯部件5而言,只有出錯位計算電路(出錯位生成部件52~55)被并列化,而對于與其相連的電路(錯誤位置·錯誤數值運算部件56及錯誤數據更新部件57)并沒有被并列化,關于出錯位計算,無論發生錯誤與否,對1個數據都要進行10次積和運算,但對于以后的計算處理,只要根據在1個代碼串中生成的10個出錯位進行計算就可以了,從而建設了運算次數。
主機接口部件13是用于在糾錯部件5的處理結束之后,從緩沖存儲器1讀出數據并將該數據輸出到計算機等主機中的接口電路。
總線控制器2是在緩沖存儲器1與3個處理塊12、5、13中的任一個之間,通過8位數據總線進行數據傳輸的控制電路,包括用于排他地控制對緩沖存儲器1進行訪問的總線調配控制部件22,生成并輸出用于對緩沖存儲器1進行訪問的地址的地址生成部件21,以及在磁盤接口部件12、糾錯部件5及主機接口部件13中的任一個與緩沖存儲器1之間進行總線連接并通過DMA(DirectMemory Access)進行數據傳輸的DMA通道部件23。
圖6是總線控制器2的詳細結構示意圖。在本圖中,3個DMA通道23a~23b是構成圖5所示的DMA通道部件的DMA控制器。這個總線控制器2具有排他性地許可與緩沖存儲器1相對應的3個DMA的功能。即,總線調配控制部件22在接收到來自在磁盤接口部件12、糾錯部件5及主機接口部件13的訪問緩沖存儲器1的請求時,根據預定的優先順序和調度順序,只允許其中之一的請求。
具體地,總線調配控制部件22通過啟動第一DMA通道23a,對磁盤接口部件12輸出允許進行數據傳輸的控制信號,從地址生成部件21生成緩沖存儲器1的寫入地址,進行將從磁盤接口部件12向緩沖存儲器1的“數據輸入”,即從光盤等記錄媒體讀出的數據通過磁盤接口部件12存入緩沖存儲器1中的數據傳輸。同樣地,總線調配控制部件22通過啟動第二DMA通道23b,對糾錯部件5輸出允許進行數據傳輸的控制信號,從地址生成部件21生成緩沖存儲器1中的讀出或寫入地址,進行“用于糾錯的數據傳輸”,即將存在緩沖存儲器1中數據讀出到糾錯部件5,將糾正后的數據從糾錯部件5回寫到緩沖存儲器1中的數據傳輸。而且,總線調配控制部件22通過啟動第三DMA通道23c,對主機接口部件13輸出允許進行數據傳輸的控制信號,從地址生成部件21生成緩沖存儲器1中的讀出地址,進行將從緩沖存儲器1向主機接口部件13的“數據輸出”,即存在糾錯后的緩沖存儲器1中的數據通過主機接口部件13輸出到主機等中的數據傳輸。
在這3種DMA傳輸中,地址生成部件21對緩沖存儲器1進行頁面模式下的高速訪問。具體地,在命中頁的范圍內,確定并原樣輸出對緩沖存儲器1的行地址(RAS),使列地址(CAS)增加所需要的數據個數。
圖7是數據分配部件51的詳細結構示意圖。數據分配部件51由用于將從總線控制器2傳送來的數據穿過4個出錯位生成部件52~55之一的選擇器51a和用于根據來自總線控制器2的指示,控制選擇器51a的分配的切換控制部件51b構成。切換控制部件51b通過內部的計數邏輯電路等,在數據被輸入到選擇器51a的同時將控制信號輸出到選擇器51a中,但是在進行行方向的糾錯和列方向的糾錯的情況下,如后所述,以不同的順序控制選擇器51a。
圖8是1個出錯位生成器52(53、54、55)的詳細結構示意圖。出錯位生成部件52由一次最多存儲8個輸入的數據的FIFO(First-In First-Out)形式的隊列緩沖器62和與該隊列緩沖器62并聯的10種出錯位運算部件63~65構成。各出錯位運算部件63~65是反復進行積和運算的電路,由用于存儲1個積和值的寄存器68、用于讀出存在寄存器68中的積和值,與固有的系數進行乘法運算的伽羅瓦域乘法器66以及對該乘法運算的結果和下次輸入的1個代碼進行加法運算的伽羅瓦域加法器67構成。
在從隊列緩沖器62中讀出最早輸入的1個數據d時,該數據d被并列輸入到10個出錯位運算部件63中,根本進行1次積和運算d+Sn×αn,將該結果作為新的Sn存入寄存器68中。例如,由100字節的信息數據d1~d100和10個奇偶校驗數據p1~p10構成的代碼串被順序輸入到出錯位生成部件52中,并經過隊列緩沖器62被并列地提供給10個出錯位運算部件63~65。此時,在第一出錯位運算部件63中,首先在輸入第一信息數據d1時將該d1原樣保存在寄存器68中,接著在輸入信息數據d2時進行積和運算d2+d1×α0,該結果被保存到寄存器68中。
這樣每輸入1個代碼,就進行1次積和運算,到輸入了最后的奇偶校驗數據p10時,保存在寄存器68中的數據就變成了S0出錯位。與此同時,在其它出錯位運算部件64~65中也進行著同樣的運算,因此在最后的奇偶校驗數據被輸入到這10個出錯位運算部件63~65中之后,最后同時生成了從S0到S9這10種出錯位。
下面,說明具有以上結構的糾錯裝置100的操作。
圖9是裝置100中的主要處理(數據輸入、糾錯、數據輸出)中作為處理對象的數據的時序圖。即,示出了在對利用圖1所示的乘積碼的代碼串進行連續的多個數據塊處理時的處理流向。圖中的第n數據塊與圖1所示的1個乘積碼的全部數據相對應。圖中的“數據輸入”、“糾錯”及“數據輸出”與上述總線控制器2的“數據輸入”、“用于糾錯的數據傳輸”及“數據輸出”相對應。
首先,在第1周期進行第1數據塊的數據輸入,在第2周期并列進行第2數據塊的數據輸入和第1數據塊的糾錯,在第3周期并列進行第3數據塊的數據輸入、第2數據塊的糾錯和第數據塊的數據輸出。在第4周期以后,與第3周期一樣,并列進行新數據塊的數據輸入,前一輸入數據塊的糾錯和糾錯結束后的數據塊的數據輸出。
這樣,總線控制器2控制3種數據傳輸(從磁盤接口部件12向緩沖存儲器1的數據傳輸、緩沖存儲器1與糾錯部件5之間的數據傳輸以及從緩沖存儲器1向主機接口部件13的數據傳輸)以便于對各數據塊的數據實施流水線處理。即,3種數據傳輸都以緩沖存儲器1為傳輸目的地或傳輸源,但緩沖存儲器1只有1個輸入輸出端口,因此總線控制器2通過在這3種數據傳輸中設計優先順序,而只瞬時許可數據傳輸中的一種,通過將這3種數據傳輸按時間分割進行切換,從表面上控制了3種數據傳輸的并行。
圖10示出了在進行C1序列的糾錯時讀出緩沖存儲器1內的乘積碼的順序。總線調配控制部件22在啟動第二DMA通道23b,并通知糾錯部件5傳送用于C1序列糾錯的數據之后,按照預定的順序將讀出地址從地址生成部件21輸出到緩沖存儲器1,如下所述,將存在緩沖存儲器1中的數據傳輸到糾錯部件5中。
即,總線控制器2首先從緩沖存儲器1中連續讀出第1行4個字節的數據d1~d4并傳輸到糾錯部件5中。接著連續讀出并傳輸第2行4個字節的數據d5~d8。接著連續讀出并傳輸第3行4個字節的數據d9~d12。接著連續讀出并傳輸第4行4個字節的數據d13~d16。至此再次返回第1行,同樣連續讀取和傳輸4個字節的數據d17~d20。下面通過重復同樣的讀出和傳輸,在完成從第1行到第4行的全部數據的讀出和傳輸時,對從第5行到第8行的4行數據重復同樣的處理。如此對1個數據塊的全部行重復并列讀出和傳輸4行數據的處理。
總線控制器2以DMA模式進行對行方向上連續4個字節的數據讀出和傳輸,以作為時間上不可分的處理連續進行。即,此期間禁止用于其它處理(數據輸入、數據輸出)的對緩沖存儲器1的訪問。這是由于在行方向上連續的數據通常被存儲在緩沖存儲器1的連續地址中,因而能夠利用由DRAM頁命中進行的高速訪問。
圖11示出了在按照圖10所示的順序從緩沖存儲器1傳輸數據時,糾錯部件5的數據分配器51的操作。切換控制部件51b在從總線控制器2接收開始對C1序列糾錯的指示時,通過控制選擇器51a,將從總線控制器2傳送來的數據如下進行分配。
即,數據分配部件51對最先傳輸的屬于第1行的4個字節數據d1~d4進行分配以將其輸入到出錯位生成部件52中,對接著傳輸的屬于第2行的4個字節數據d5~d8進行分配以將其輸入到出錯位生成部件53中,對接著傳輸的屬于第3行的4個字節數據d9~d12進行分配以將其輸入到出錯位生成部件54中,對接著傳輸的屬于第4行的4個字節數據d13~d16進行分配以將其輸入到出錯位生成部件55中。同樣地,再將接著傳輸的屬于第1行的數據d17~d20輸入出錯位生成部件52中。這樣,數據分配部件51在C1序列的糾錯中,一邊以4個字節為單位按照4個出錯位生成部件52~55的順序切換出錯位生成部件,一邊從緩沖存儲器1經過總線控制器2輸入反復以4個字節為單位傳送的數據。
圖12示出了C1序列的糾錯中通過從緩沖存儲器1向糾錯器5的數據傳輸與4個出錯位生成器52~55的積和運算時序。
從緩沖存儲器1讀出具有連續地址的4個字節的數據d1~d4、d5~d8等并將其傳輸到糾錯部件5中分別需要時間t1,以4個字節為單位的數據傳輸以時間t2為間隔進行重復。從完成以4個字節為單位的數據傳輸之后到開始以接著的4個字節為單位的數據傳輸,需要時間,這是因為要考慮到由于這4個字節分別屬于不同的行而在讀出新的4個字節數據時可能產生每次DRAM的頁面錯誤。即,假設在訪問4個字節中的第1字節時總線控制器2必須將新的行地址輸出到緩沖存儲器1中。
4個出錯位生成部件52~55分別進行第1行~第4行的出錯位計算,但在4×t2的時間內對輸入的4個字節的數據進行必要的4個積和運算。例如,執行第1行出錯位計算的出錯位生成部件52在4×t2的時間內對輸入的4個字節數據d1~d4進行積和運算。從出錯位生成部件52的角度出發,這是由于最先輸入的4個字節數據為d1~d4,接著輸入的4個字節數據為d17~d20,它們的時間間隔為4×t2,因而只要在這個時間內完成4個字節的積和運算就可以。然后,為了維持這樣的運算速度,在各出錯位生成部件52~55的前面所設計的隊列緩沖器62中所存儲的數據量最大為4個字節,即使在瞬間也不能超過4個字節。
這樣,各出錯位生成部件52~55只要以每1個字節t2時間的速度就可以完成積和運算,與數據傳輸速度(4字節/t2)相比,只需已1/4的速度進行出錯位計算即可。而且,由于對不同的多個代碼串,一邊以較小的節距(4個字節為單位)切換代碼串,一邊進行并列處理,所以與處理每1代碼串的方法相比,在降低了每1代碼串所要求的出錯位計算速度的同時,還縮小了隊列緩沖器的大小。換言之,這意味著能夠使從緩沖存儲器1到糾錯部件5的實際數據傳輸速度(整個糾錯速度)比原來更高速,并且與簡單地設置多個糾錯電路相比,能夠以更小的電路規模進行4列糾錯。
通過增加同一代碼串中連續讀出的數據數,可以謀求利用DRAM頁命中的數據傳輸的高速化。此時,希望增加糾錯的并列度。通過隨增加糾錯并列處理的并列度而增加存儲器地址的連續傳輸字節數,與每1代碼串的處理負荷相對應的電路規模減輕了負擔并實現了高效的糾錯并列化。
現在參照圖13~圖15說明在進行C2序列的糾錯時本裝置100的操作。
圖13示出了在進行C2序列的糾錯時讀出緩沖存儲器1內的乘積碼的順序。總線調配控制部件22在啟動第二DMA通道23b,并通知糾錯部件5傳送用于C2序列糾錯的數據之后,按照預定的順序將讀出地址從地址生成部件21輸出到緩沖存儲器1,如下所述,將存在緩沖存儲器1中的數據傳輸到糾錯部件5中。
即,總線控制器2首先從緩沖存儲器1中連續讀出第1行4個字節的數據d1~d4并傳輸到糾錯部件5中。接著連續讀出并傳輸第2行4個字節的數據d5~d8。以下,同樣地,對第1列~第4列的全部數據反復從各行讀出并傳輸4個字節的數據。由此,完成C2序列的4個代碼串的數據傳輸。同樣地,再對第5列~第8列的全部數據反復讀出并傳輸4個字節的數據。由此,對1個數據塊的全部列重復進行并列讀出并傳輸4列數據的處理。
與C1序列的數據傳輸相同,總線控制器2以DMA模式進行對行方向上連續4個字節的數據讀出和傳輸,就象連續進行時間不可分的處理一樣。即,此期間通過禁止用于其它處理(數據輸入、數據輸出)的對緩沖存儲器1的訪問而利用了根據DRAM頁命中的高速訪問。
圖14示出了在按照圖13所示的順序從緩沖存儲器1傳輸數據時,糾錯部件5的數據分配器51的操作。切換控制部件51b在從總線控制器2接收開始對C2序列糾錯的指示時,通過控制選擇器51a,將從總線控制器2傳送來的數據如下進行分配。
即,數據分配部件51對最先傳輸的屬于第1行的4個字節數據d1~d4進行分配以將各數據按照順序輸入到出錯位生成部件52~55中。具體地,將數據d1送到出錯位生成部件52中,將數據d2送到出錯位生成部件53中,將數據d3送到出錯位生成部件54中,將數據d4送到出錯位生成部件55中。對接著傳輸的屬于第2行的數據d5~d8同樣分配以將各數據按照順序輸入到出錯位生成部件52~55中。這樣,數據分配部件51在C2序列的糾錯中,重復將以4個字節為單位反復傳送的數據的各個字節分配到4個出錯位生成部件52~55中的處理。
由此,屬于第1列的數據d1、d5、...被輸入到出錯位生成部件52中,屬于第2列的數據d2、d6、...被輸入到出錯位生成部件53中,屬于第3列的數據d3、d7、...被輸入到出錯位生成部件54中,屬于第4列的數據d4、d8、...被輸入到出錯位生成部件55中。同樣,屬于第5列的數據被輸入到出錯位生成部件52中,屬于第6列的數據被輸入到出錯位生成部件53中,屬于第7列的數據被輸入到出錯位生成部件54中,屬于第8列的數據被輸入到出錯位生成部件55中。
圖15示出了C2序列的糾錯中通過從緩沖存儲器1向糾錯器5的數據傳輸與4個出錯位生成器52~55的積和運算時序。
從緩沖存儲器1讀出具有連續地址的4個字節的數據d1~d4、d5~d8等并將其傳輸到糾錯部件5中分別需要時間t1,在時間t2的間隔內重復以4個字節為單位的數據傳輸,這與圖12中所示的C1情況相同。
4個出錯位生成部件52~55分別進行第1列~第4列的出錯位計算,但在t2的時間內進行關于1個字節的數據的1次積和運算。例如,執行第1行的出錯位計算的出錯位生成部件52在t2時間內對最先輸入的1個字節數據d1進行積和運算,在t2時間內對接著輸入的1個字節數據d5進行積和運算。從出錯位生成部件52的角度出發,這是由于在時間t2中,1個字節的數據被輸入。然后,為了維持這樣的運算速度,在各出錯位生成部件52~55的前面所設計的隊列緩沖器62中所存儲的數據量最大為1個字節,即使在瞬間也不能超過1個字節。
這樣,各出錯位生成部件52~55只要以每1個字節t2時間的速度就可以完成積和運算,可以理解,這與進行C1序列的糾錯時的處理速度相同。而且,在此C2序列的糾錯中,向各個出錯位生成部件52~55的數據輸入與叢發進行的C1序列不同,是均勻進行的(通常以1字節/t2的速度輸入數據),所以沒有必要在各出錯位生成部件52~55的前面設置隊列緩沖器。
如上所述,在第一實施例中,由于糾錯部件5中的并列處理的并列度與在從緩沖存儲器1讀出具有連續地址的數據(乘積碼的同一行中的連續數據)并將其傳輸到糾錯部件5時的數據量相等,所以在C1序列和C2序列兩個方向上的糾錯中,從緩沖存儲器1讀出數據的速度與通過在各出錯位生成部件進行積和運算的速度之間的關系同等,從而縮小了在各出錯位生成部件前面所需要的隊列緩沖器的大小。由此,對于C1序列和C2序列兩個方向上的糾錯,用于充分發揮出錯位生成部件能力的總線控制器2的控制順序也被共享,實現了能夠以較小的電路規模進行高速糾錯的糾錯裝置。
即,能夠更平衡地實施C1序列的糾錯和C2序列的糾錯,削減了糾錯裝置中所需要的電路的冗余度。
雖然圖10及圖13中所示的讀出順序是以行方向上的代碼串的字節數是4的倍數為前提的,但是即使在與之不同的情況下,本裝置100也能夠進行正確的糾錯。例如,在行方向上的代碼串的長度為其字節數除4還余2的情況下,只要將緩沖存儲器1內的乘積碼的讀出順序作如下變動即可。
圖16示出了在行方向上的代碼串的長度為其字節數除4還余2的情況下,進行C1序列的糾錯時緩沖存儲器1內的乘積碼的讀出順序。總線控制器2針對4行代碼串,對除去各代碼串最后的2個字節以外的部分按照前面所述的順序重復連續4個字節的讀出和傳輸操作,而對最后的2個字節進行讀出和傳輸各代碼串的2個字節的操作。與之相伴,數據分配部件51也進行同樣的操作,即,將反復以4個字節為單位從緩沖存儲器1中傳送來數據以4個字節為單位分別分配到4個出錯位生成部件52~55中,將以2個字節為單位被傳送來的數據以2個字節為單位分別分配到4個出錯位生成部件52~55中即可。
同樣,圖17示出了在列方向上的代碼串的長度為其字節數除4還余2的情況下,進行C2序列的糾錯時緩沖存儲器1內的乘積碼的讀出順序。總線控制器2對除去最后2列的代碼串,從最先輸入的4列開始,重復4個字節的數據讀出和傳輸操作,而對最后2列代碼串,反復讀出和傳輸2個字節。與之相伴,數據分配部件51也進行同樣的操作,即,將反復以4個字節為單位從緩沖存儲器1中傳送來數據以4個字節為單位分別分配到4個出錯位生成部件52~55中,將以2個字節為單位被傳送來的數據以2個字節為單位分別分配到4個出錯位生成部件52~55中即可。
象這樣變更總線控制器2用的讀出順序以及數據分配部件51用的分配順序可以通過具體地變更總線控制器2中總線調配控制部件22用的控制順序和數據分配部件51中切換控制部件b用的控制順序容易地實現。
第一實施例是用于并列執行對應于4個代碼串的出錯位計算的糾錯裝置,但是本發明并不僅限于這樣的并列度,例如,2列和8列的糾錯裝置也是可以的。即,在第一實施例中,糾錯部件5具有4個出錯位生成部件52,但是也可以根據需要設置為2個和8個。
圖18、圖19和圖20用于說明在以2列進行糾錯的糾錯裝置中,C1序列的糾錯操作,分別示出了數據從緩沖存儲器中讀出的順序、以該順序輸入數據時的糾錯部件中的數據分配部件的操作以及該情況下進行數據傳輸和出錯位計算的時序。
同樣,圖21、圖22和圖23用于說明在以2列進行糾錯的糾錯裝置中,C2序列的糾錯操作,分別示出了數據從緩沖存儲器中讀出的順序、以該順序輸入數據時的糾錯部件中的數據分配部件的操作以及該情況下進行數據傳輸和出錯位計算的時序。
在第一實施例中,對讀取記錄在光盤等記錄媒體中的數據、從讀出的數據串中查找錯誤、進行糾正以及將糾正后的數據傳輸到主計算機中的數據流向進行了說明,但另一方面,本發明也能夠用于從主計算機輸出數據、在該數據中附加用于糾錯的奇偶校驗碼以及寫入光盤等記錄媒體中的數據流向。本發明是這樣一種技術對于暫時存儲在設置于記錄媒體和主計算機之間的數據總線中途的緩沖存儲器中的乘積碼,通過有效地讀出構成該乘積碼的全部代碼串并將其傳輸到第三裝置(除記錄媒體和主計算機之外的處理裝置),可以在第三裝置中通過高速且小規模的電路對C1序列和C2序列進行代碼處理。
具體地,可以進行如下變更將糾錯部件5中的4個出錯位生成部件52~55和錯誤位置·錯誤數值運算部件56置換為奇偶校驗數據生成電路,將錯誤數據更新部件57置換為奇偶校驗數據寫入電路。從而實現了能夠高速執行在向記錄媒體寫入數據時附加糾錯碼和在從記錄媒體中讀出數據時糾正錯誤數據的所謂“糾錯伴隨處理”的糾錯裝置。
在第一實施例中,總線控制器2通過1次DMA傳輸進行從緩沖存儲器1向糾錯部件5的4字節數據的傳輸,在這次DMA傳輸與下次DMA傳輸期間允許除對傳輸緩沖存儲器1進行訪問之外的數據傳輸,但是也可以通過1次DMA傳輸進行16字節數據的傳輸。由此,在C1序列的糾錯中,通過1次DMA傳輸可以將圖10中所示的16字節數據d1~d16從緩沖存儲器1傳輸到糾錯部件5中,在此期間禁止插入緩沖存儲器1中用于訪問的其它數據的傳輸,因而16字節數據的傳輸時間,即分別向4個出錯位生成部件52~55中的每一個提供4個字節的數據所需要的時間被大致固定,在顯著降低了出錯位計算的處理速度的情況下,避免了向糾錯部件5進行的數據傳輸成為瓶頸。
在第一實施例中,糾錯裝置100內部的數據總線寬度為8位,但也可以是32位數據總線。此時,通過1次存儲器訪問從緩沖存儲器1中讀出4字節數據并傳輸到糾錯部件5中。然后,數據分配部件51在進行C1序列的糾錯時,將32位數據按照每8位進行分割,分別分配到4個出錯位生成部件52~55中即可。
在第一實施例中,在糾錯部件5中只有出錯位計算被并列執行,但也可以對與其連接的錯誤位置·錯誤數值運算部件56和錯誤數據更新部件57進行并列化。由此,即使在出錯位計算中發生大量錯誤的情況下,也能夠確保一定的糾正處理。
(第二實施例)第二實施例涉及這樣的高速光盤讀取裝置分離錯誤檢測和糾錯,在將數據存入緩沖存儲器的同時并行執行錯誤檢測,通過將該結果反映到糾錯中,避免了從緩沖存儲器向糾錯部件傳輸沒有發生錯誤的數據。
圖24是本發明第二實施例中的光盤讀取裝置2000的結構示意圖。光盤讀取裝置2000是用于讀取記錄在光盤2010中的數據,并在對讀出的數據進行糾錯后將該數據傳輸到主計算機2070中的裝置,由光拾取器2020、放大器2030、前端處理機2040、光盤控制部件2100、旋轉電動機2050、伺服控制器2060和系統控制部件2080構成。
系統控制部件2080是用于通過光盤控制部件2100接收來自主計算機2070的數據請求的命令,解釋該命令,控制伺服控制器2060及光盤控制部件2100并實現與數據請求相應的功能的微處理器。
旋轉電動機2050用于旋轉光盤2010,伺服控制器2060用于以來自前端處理機2040的信息為基礎接收系統控制部件2080的指示,并控制旋轉電動機2050的旋轉及光拾取器2020的鏡頭位置。
光盤2010為DVD-ROM,光拾取器2020用于通過鏡頭光線的反射光讀取記錄在光盤2010中的數據并將其轉換為電信號,放大器2030用于放大光拾取器2020的輸出信號并將其輸出到前端處理機2040中。
前端處理機2040用于根據輸入的信號,在伺服控制器2060、旋轉電動機2050及光拾取器2020中進行反饋控制,將穩定的信號輸出到光盤控制部件2100中,包括均衡器、AGC(自動增益控制電路)、PLL(Phase Locked Loop)等。而且前端處理機2040輸出到光盤控制部件2100中的信號為調制數據。
光盤控制部件2100將來自主計算機2070的數據請求命令通知給系統控制部件2080,根據系統控制部件2080的控制,對從前端處理機2040輸入的信號進行解調,取出所需要的數據,進行糾錯并將數據輸出到主計算機2070中。
在圖24中,粗箭頭表示記錄在光盤2010中的數據到達主計算機2070中的流程。即,記錄在光盤2010中的數據經過光拾取器2020、放大器2030、前端處理機2040以及光盤控制部件2100而到達主計算機2070。而且,記錄在光盤2010中的數據結構與第一實施例中的數據結構相同,采用圖1所示的乘積碼并采用Reed-Solomon碼為糾錯碼。
圖25是光盤控制器2100的詳細結構示意圖。光盤控制部件2100是用于對從前端處理機2040傳送來的信號進行解調并糾錯,然后將其送到主計算機2070中的電路,包括緩沖存儲器2110、磁盤接口部件2120、糾錯部件2130、主機接口部件2140、第一傳輸部件2150、第二傳輸部件2160、第三傳輸部件2170、總線控制器2180、錯誤檢測部件2190和錯誤代碼串存儲部件2200。圖25中的粗箭頭表示在向緩沖存儲器2110的由DMA傳輸執行的數據寫入以及從緩沖存儲器2110的由DMA傳輸執行的數據讀出中的數據通路。
緩沖存儲器2110是利用二維地址(行地址和列地址)具有特定存儲區域的DRAM等半導體存儲器,具有暫時存儲多個圖1所示的乘積碼的存儲容量。
磁盤接口部件2120在對從前端處理機2040輸入的信號進行解調后,將得到的數據輸出到第一傳輸部件2150中以將數據存入緩沖存儲器2110中。在將從磁盤接口部件2120輸出的數據通過第一傳輸部件2150傳輸到緩沖存儲器2110中的同時,將該數據并行輸入到錯誤檢測部件2190中。
對于經過第一傳輸部件2150從磁盤接口部件2120傳送來的數據,錯誤檢測部件2190判斷C1序列中的每個代碼串中是否存在錯誤,在檢測出錯誤的情況下,將該代碼串的編號存入由RAM構成的錯誤代碼串存儲部件2200中。該錯誤檢測部件2190還計算出每1列代碼串中一定個數的出錯位,判斷這些出錯位中是否存在非零數,如果存在非零數,則斷定有錯誤發生。具體地,錯誤檢測部件2190由第一實施例中的糾錯部件5所具有的4個出錯位生成部件52~55之一(圖8所示的電路)和用于判斷所生成的出錯位是否全部為零的與門電路構成。
糾錯部件2130以從磁盤接口部件2120傳輸并存入緩沖存儲器2110的乘積碼中產生了錯誤的數據為對象,進行C1序列及C2序列的糾錯。具體地,糾錯部件2130參照存在錯誤代碼串存儲部件2200中的編號,只以發生了錯誤的C1序列的代碼串或發生了錯誤的數據塊的C2序列代碼串為對象,糾正緩沖存儲器2110中的錯誤數據。
主機接口部件2140是用于通過第三傳輸部件2170,從緩沖存儲器2110中讀出完成了由糾錯部件2130所執行的處理的數據并將其輸出到主計算機2070中的接口電路。
第一傳輸部件2150是DMA控制器,用于接收總線控制器2180對來自磁盤接口部件2120的傳輸請求的許可通知,同時并列進行從磁盤接口部件2120向緩沖存儲器2110的DMA數據傳輸和向錯誤檢測部件2190的同一數據的傳輸。
第二傳輸部件2160是DMA控制器,用于接收總線控制器2180對來自糾錯部件2130的傳輸請求的許可通知,進行從緩沖存儲器2110向糾錯部件2130的DMA數據傳輸。
第三傳輸部件2170是DMA控制器,用于接收總線控制器2180對來自主機接口部件2140的傳輸請求的許可通知,進行從緩沖存儲器2110向主機接口部件2140的DMA數據傳輸。
總線控制器2180按照預定優先順序,控制這3個傳輸部件2150、2160和2170,以便于排他性地執行分別由第一傳輸部件2150、第二傳輸部件2160和第三傳輸部件2170進行的DMA傳輸并控制在重寫緩沖存儲器2110中的錯誤數據時由糾錯部件2130對緩沖存儲器2110的普通(非DMA)訪問。
圖26是總線控制器2180的詳細結構示意圖。總線控制器2180由生成并輸出用于對緩沖存儲器1進行訪問的地址的地址生成部件2181、將第一傳輸部件2150、第二傳輸部件2160、第三傳輸部件2170以及糾錯部件2130中的任一個與緩沖存儲器2110進行總線連接的總線切換部件2183以及按照預定優先順序,對這3個傳輸部件2150、2160、2170及總線切換部件2183進行控制以便于排他地執行這3個傳輸部件2150、2160、2170的DMA傳輸及糾錯部件2130對緩沖存儲器2110的訪問的總線調配控制部件2182構成。
地址生成部件21在這3個DMA傳輸中,對緩沖存儲器1進行頁面模式下的高速訪問。具體地,在命中頁的范圍內,確定并原樣輸出對緩沖存儲器1的行地址(RAS),僅使列地址(CAS)增加所需要的數據個數并輸出。
圖27是表示由總線調配控制部件2182進行的3個排他的DMA傳輸的調度示例,即由第一傳輸部件2150進行的從磁盤接口部件2120向緩沖存儲器2110的DMA傳輸(DMA#1)、由第二傳輸部件2160進行的從緩沖存儲器2110向糾錯部件2130的DMA傳輸(DMA#2)以及由第三傳輸部件2170進行的從緩沖存儲器2110向主機接口部件2140的DMA傳輸(DMA#3)的時序圖。在本圖中,橫軸表示經過的時間,三角形印記表示對個DMA傳輸的請求的發生,劃有剖面線的四邊形表示DMA傳輸在執行中。
總線調配控制部件2182在最高的優先級下允許執行DMA#1,在最低的優先級下允許執行DMA#2。即,總線調配控制部件2182在沒有任何一個DMA傳輸處于執行當中的情況下,不管與各DMA相對應的請求的產生順序如何,只要產生了與DMA#1相對應的請求,就最優先地執行DMA#1,如果沒有產生與DMA#1相對應的請求,就執行DMA#3,只有在與DMA#1相對應的請求和與DMA#3相對應的請求都沒有產生時從執行DMA#2。但是,在連續產生與DMA#1相對應的請求并且還產生了其他的與DMA#2或DMA#3相對應的請求時,不連續執行DMA#1,而是執行其他的DMA#2或DMA#3。
對于糾錯部件2130在重寫緩沖存儲器2110中的錯誤數據時所進行的對緩沖存儲器2110的普通訪問,總線調配控制部件2182執行與DMA#3相同的處理。即,在與DMA#1相對應的請求和與DMA#3相對應的請求都沒有產生時,允許糾錯部件2130對緩沖存儲器2110所進行的普通訪問。
圖28是示出了與糾錯部件2130的詳細結構相關聯的其他構成部件的電路圖。糾錯部件2130是用于針對構成圖1所示的乘積碼的C1序列及C2序列中預先檢測出錯誤的代碼串,執行每1行或1列代碼串糾錯的電路,由C1代碼串傳輸請求部件2135、出錯位計算部件2131、歐基里德計算部件2132、鏈計算部件2133以及錯誤數據更新部件2134構成。
C1代碼串傳輸請求部件2135向第二傳輸部件2160提出請求以便從緩沖存儲器2110中讀出包含了存在錯誤代碼串存儲部件2200中的錯誤的C1序列的代碼串。
出錯位計算部件2131是用于在通過總線控制器2180、第二傳輸部件2160而從緩沖存儲器中取得了包含來自C1代碼串傳輸請求部件2135的請求中所具有的錯誤的C1代碼串之后,計算該代碼串的出錯位的電路,其計算結果被提供給歐基里德計算部件2132。
另外,此出錯位計算部件2131是用于計算出每1行或1列代碼串中的出錯位的電路,與第一實施例中的糾錯部件5所具有的4個出錯位生成部件52~55之一(圖8所示的電路)相同。即,在乘積碼的大小為k1=k2=100字節、m1=m2=10字節的情況下,出錯位計算部件2131由用于對輸入的數據進行暫時緩沖存儲的隊列緩沖器和10個用于分別計算出10個出錯位的積和運算電路組成,各積和運算電路由用于存儲1個積和值的寄存器、用于讀出存儲在該寄存器中的積和值并將其與固有的系數相乘的伽羅瓦域乘法器以及用于將相乘的結果與下次輸入的1個數據相加的伽羅瓦域加法器組成。
歐基里德計算部件2132是用于根據從出錯位計算部件2131中傳送來的出錯位,利用歐基里德算法,計算出用于確定錯誤位置多項式和錯誤數值多項式各項系數的電路,計算出的系數被提供給鏈計算部件2133。
鏈計算部件2133是利用來自歐基里德計算部件2132的系數,通過鏈查尋和調用法等方法算出所確定的錯誤位置多項式的根的電路,將其運算結果與來自歐基里德計算部件2132的用于確定錯誤數值多項式的系數一起提供給錯誤數據更新部件2134。
錯誤數據更新部件2134在利用來自鏈計算部件2133的錯誤位置和錯誤數值多項式,求出位于該錯誤位置上的錯誤數值之后,通過總線控制器2180讀取緩沖存儲器2110內該錯誤位置上的信息數據或奇偶校驗數據,計算它們的異或邏輯和,將得出的值回寫到緩沖存儲器2110內的原位置上。
另外,由第二傳輸部件2160進行的從緩沖存儲器2110向出錯位計算部件2131的數據傳輸是通過由DMA傳輸進行的存儲器訪問而進行的,但是緩沖存儲器2110與錯誤數據更新部件2134之間的數據傳輸是通過由總線控制器2180進行的普通(非DMA)存儲器訪問而進行的。這是由于通過糾錯而成為重寫對象的數據不受存儲在緩沖存儲器2110內的連續地址上的數據限制。而且,構成糾錯部件2130的4個電路2131~2134在分別進行同步并列處理,即進行流水線方式下的順序處理。
圖29是示出了在連續處理多個數據塊的數據的情況下,光盤控制器2100內的處理過程的時序圖。在本圖中,第1數據塊到第5數據塊是分別存儲在緩沖存儲器2110中的1個數據塊的數據。而且,“緩沖”表示由第一傳輸部件2150進行的從磁盤接口部件2120向緩沖存儲器2110的數據傳輸,“錯誤檢測”表示由第一傳輸部件2150進行的從磁盤接口部件2120向錯誤檢測部件2190的數據傳輸和在錯誤檢測部件2190中進行的錯誤檢測,“糾錯”表示由第二傳輸部件2160進行的從緩沖存儲器2110向糾錯部件2130的數據傳輸和在糾錯部件2130中進行的糾錯,“主機傳輸”表示由第三傳輸部件2170進行的從緩沖存儲器2110向主機接口部件2140的數據傳輸。
如本圖所示,將與同一數據塊相對應的緩沖及錯誤檢測、對完成了緩沖及錯誤檢測的數據塊的糾錯以及對完成了糾錯的數據塊的主機傳輸作為流水線順序且并列地執行。例如,在周期t5,在從磁盤接口部件向緩沖存儲器2110傳輸和存儲第5數據塊的同時,在錯誤檢測部件2190中進行錯誤檢測,從緩沖存儲器2110向糾錯部件2130傳輸第4數據塊并進行糾錯,從緩沖存儲器2110向主機接口部件2140傳輸第3數據塊。
另外,在本圖中,并列進行3種用于訪問緩沖存儲器2110的數據傳輸,但這是從數據塊這個大方面的數據傳輸觀點上出發而表現出來的,從構成數據塊的各數據的角度考慮(瞬時地),只能執行其中一種數據傳輸。這樣的排他性數據傳輸及上述流水線控制,如圖27中的時序圖所示,是通過按照預定的優先順序,將由3個傳輸部件2150、2160、2170進行的數據傳輸以較小的時間單位進行切換并許可而實現的。
而且,在本圖中,不對第3數據塊進行糾錯就是在錯誤檢測過程中,這個數據塊中沒有發現任何錯誤。即,由于在錯誤檢測部件2190中沒有對第3數據塊檢測出任何錯誤,所以接收該通知的糾錯部件2130不進行與對該數據塊的糾錯相關的一切處理。即,通過糾錯部件2130將上述意思通知總線控制器2180,對屬于第3數據塊的全部代碼串,不進行由第二傳輸部件2160執行的從緩沖存儲器2110向糾錯部件2130的數據傳輸。
這樣,在并列進行對同一數據塊的緩沖和錯誤檢測,并在該錯誤檢測中沒有檢測到錯誤的情況下,由于通知了糾錯部件2130,所以能夠避免糾錯部件2130對不需要糾錯的數據進行從緩沖存儲器2110讀出的所謂無效數據傳輸。即,若在現有技術中,對于從光盤讀出的全部數據,進行存入緩沖存儲器、從緩沖存儲器中讀出以進行錯誤檢測·糾正、從緩沖存儲器中讀出以將該數據輸出到主計算機的所謂3種數據傳輸,但在本第二實施例中,對于沒有發生錯誤的數據,只進行存入緩沖存儲器和從緩沖存儲器中讀出以將數據輸出到主計算機的所謂2種數據傳輸。
圖30是圖29所示的時序圖的更詳細的示圖,在與錯誤檢測和糾錯這2個處理相關的過程中分別示出了C1序列及C2序列的處理。其中,在錯誤檢測中,僅對C1序列進行,而在糾錯中,先對C1序列進行1次糾錯,接著對C2序列進行1次糾錯。
具體地,在周期T1,錯誤檢測部件2190對于通過第一傳輸部件2150從磁盤接口部件2120傳送來的第1數據塊,檢查C1序列的代碼串中是否發生錯誤。如果檢測出錯誤的發生,錯誤檢測部件2190就將發生了錯誤的代碼串的編號記錄到代碼串存儲部件2200中。
其中,錯誤檢測部件2190之所以對C1序列進行錯誤檢測,是因為從磁盤接口部件2120向緩沖存儲器2110的數據傳輸是按照從第1行到第n2行,反復在行方向上掃描乘積碼的順序而進行的,因而使C1序列的錯誤檢測變得很容易。而之所以對C2序列不進行錯誤檢測,是因為對以前的C1序列糾錯的結果如果存在1次糾錯都不能進行的代碼串,就需要執行C2序列的糾錯,因此根本沒有必要執行C2序列的錯誤檢測。
接著在周期T2,糾錯部件2130首先從緩沖存儲器2110中讀出C1序列的代碼串并對其進行糾錯。但是,糾錯部件2130通過參照存儲在錯誤代碼串存儲部件2200中的編號,從緩沖存儲器2110中只讀出檢測出錯誤的C1序列的代碼串并對其進行糾錯。然后,在完成了對全部檢測出錯誤的C1序列的代碼串的糾錯之后,在該C1序列中存在沒有進行1次糾錯的代碼串的情況下,接著從緩沖存儲器2110中順序讀出構成該數據塊的全部C2序列的代碼串并對其進行糾錯。關于C2序列,對構成數據塊的全部代碼串進行糾錯是由于錯誤檢測部件2190只對C1序列進行了錯誤檢測,而不確定C2序列的代碼串中是否有錯誤所致。
圖31是示出了在進行C1序列的糾錯時糾錯部件2130內的行單位處理過程的時序圖。其中,示出了在通過錯誤檢測部件2190在第1行、第4行、第6行及第11行中檢測錯誤時的由出錯位計算部件2131、歐基里德計算部件2132、鏈計算部件2133及錯誤數據更新部件2134執行的并列處理。
由于錯誤檢測部件2190在第2行、第3行、第5行、第8~10行的代碼串中沒有檢測出錯誤,因此不將其從緩沖存儲器2110讀到出錯位計算部件2131中,從而,不作為出錯位計算、歐基里德計算、鏈計算及錯誤數據更新的對象。
圖32示出了在糾正圖31所示的代碼串時,對存儲在緩沖存儲器2110中的乘積碼的各數據的訪問順序。其中,示出了首先執行對第1行的代碼串的糾錯,然后跳過第2行、第3行,對第4行的代碼串執行糾錯,然后跳過第5行對第6行的代碼串執行糾錯,接著對第7行的代碼串執行糾錯的流程。與圖2所示的逐行掃描不同的是只對檢測出錯誤的行進行掃描。
如上所述,在此第二實施例中,糾錯部件2130對于C1序列的糾錯,通過參照錯誤代碼串存儲部件2200,從緩沖存儲器2110中只讀出檢測出錯誤的代碼串,即需要進行糾錯的代碼串并對其進行糾錯,避免了無效地從緩沖存儲器2110中讀出不需要糾錯的代碼串。
由此,對于沒有檢測出錯誤的C1序列的代碼串,不進行所謂的3種數據傳輸將從光盤讀出的全部數據存入緩沖存儲器、從緩沖存儲器讀出數據以用于錯誤檢測·糾錯以及從緩沖存儲器中讀出數據以將數據傳送到主計算機中,而是只進行2種數據傳輸存入緩沖存儲器和從緩沖存儲器讀出數據以將其傳送到主計算機。即,減少了對緩沖存儲器2110的訪問次數,以此在提高整個光盤控制部件2100的處理速度的同時謀求降低功耗,實現更高速的低功耗光盤讀取裝置2000。
此外,在本第二實施例中,如圖32所示,糾錯部件2130反復進行逐行或逐列糾錯,但也可以象第一實施例一樣,進行每隔4行和4列等多代碼串的并列糾錯。
圖33示出了在以4個代碼串并行對圖31所示的C1序列糾錯時,從磁盤接口2120讀出數據的順序。這種讀出順序與第一實施例中圖10所示的順序基本相同,但在圖33中,與圖10所示的不同之處在于只以檢測出錯誤的行(第1行、第4行、第6行、第7行...)為對象,每隔4行代碼串并列讀出。在代碼串的長度不能被4整除的情況下,如圖34所示,先分別對檢測出錯誤的4列代碼串(第1行、第4行、第6行、第7行)反復進行4個字節的吃素,最后分別對該4列代碼串進行2個字節的傳輸即可。
第二實施例中象這樣的由糾錯部件2130對4個代碼串并列進行糾錯的變形例只要象第一實施例中的糾錯部件5一樣,在糾錯部件2130中設置4個出錯位計算部件和用于將來自緩沖存儲器2110的數據分配到4個出錯位計算部件中的數據分配部件即可。由此,就能夠得到由第一實施例中的并列化而產生的糾錯高速化和由第二實施例中的預先進行錯誤檢測而產生的糾錯高速化這兩方面的效果。
而且,在第二實施例中,在糾錯部件2130內設置了C1代碼串傳輸請求部件2135,但是也可以將C1代碼串傳輸請求部件2135或者設置在錯誤檢測部件2190內,或者與錯誤檢測部件2190和糾錯部件2130一起構成獨立的電路。
而且,錯誤檢測部件2190只通知檢測出錯誤的代碼串的編號,但是也可以同時通知由該檢測得到的出錯位。然后,糾錯部件2130也可以針對檢測出錯誤的代碼串,從錯誤檢測部件2190接收出錯位,進行歐基里德計算和鏈計算。由此,能夠避免在錯誤檢測部件2190和糾錯部件2130中進行重復的出錯位計算。
同樣地,在錯誤檢測部件2190中,也可以不僅進行錯誤檢測,還接著進行歐基里德計算和鏈計算。在這種情況下,糾錯部件2130對于檢測出錯誤的代碼串,從錯誤檢測部件2190中接收錯誤位置和錯誤數值并對緩沖存儲器2110內的錯誤數據進行糾正即可。這樣,通過在能夠確保處理時間的范圍內,在錯誤檢測部件2190中執行用于進行C1序列的糾錯的出錯位計算、歐基里德計算及鏈計算,可以使執行計算與從磁盤接口部件2120向緩沖存儲器2110的數據傳輸同時進行,并縮短糾錯部件2130進行糾錯所需要的時間。
(第三實施例)第三實施例涉及這樣的高速光盤讀取裝置通過在將數據存入緩沖存儲器中時并行執行C1序列的糾錯,同時在該C1序列的糾錯中,從緩沖存儲器中只讀出發生了錯誤的數據塊并執行C2序列的糾錯,從而削減了對緩沖存儲器的訪問次數。
圖35是本發明第三實施例中的光盤讀取裝置3000的結構示意圖。光盤讀取裝置3000是用于讀取記錄在光盤2010中的數據,并在對讀出的數據進行糾錯后將該數據傳輸到主計算機2070中的裝置,由光拾取器2020、放大器2030、前端處理機2040、光盤控制部件3100、旋轉電動機2050、伺服控制器2060和系統控制部件2080構成。
此外,光盤讀取裝置3000與第二實施例中的光盤讀取裝置2000相比,只在光盤控制部件3100方面有所不同,因此對于其它的構成部件采用與圖24所示的符號相同的符號,在此省略了對這些相同部件的說明。
圖36是光盤控制器3100的詳細結構示意圖。光盤控制部件3100是用于將來自前端處理機2040的信號解調并糾錯后傳送到主計算機2070的電路,包括緩沖存儲器3110、磁盤接口部件3120、糾錯部件3130、主機接口部件3140、第一傳輸部件3150、第二傳輸部件3160、第三傳輸部件3170、總線控制器3180及數據選擇部件3190。圖36中的粗箭頭表示在向緩沖存儲器3110的由DMA傳輸執行的數據寫入以及從緩沖存儲器3110的由DMA傳輸執行的數據讀出中的數據通路。
緩沖存儲器3110是利用二維地址(行地址和列地址)具有特定存儲區域的DRAM等半導體存儲器,具有暫時存儲多個圖1所示的乘積碼的存儲容量。
磁盤接口部件3120在對從前端處理機2040輸入的信號進行解調后,將得到的數據輸出到第一傳輸部件3150中以將數據存入緩沖存儲器3110中。在將從磁盤接口部件3120輸出的數據通過第一傳輸部件3150傳輸到緩沖存儲器3110中的同時,將該數據并行輸入到數據選擇部件3190中。
數據選擇部件3190是用于選擇作為糾錯部件3130的糾錯對象的代碼串的傳輸源的選擇器。在通過第一傳輸部件3150從磁盤接口部件3120向緩沖存儲器3110進行數據傳輸的情況下,該數據也被同時并行傳送到數據選擇部件3190中,因此對該數據進行選擇并通過數據選擇部件而到達糾錯部件3130。另一方面,在通過第二傳輸部件3160從緩沖存儲器3110傳送C2序列的代碼串的情況下,對該數據進行選擇并通過數據選擇部件而到達糾錯部件3130。另外,數據選擇部件3190還根據來自第一傳輸部件3150和第二傳輸部件3160的指示,選擇這些數據傳輸源中的一個。
糾錯部件3130一邊區分來自數據選擇部件3190的2種(C1序列和C2序列)代碼串,一邊進行糾錯。具體地,糾錯部件3130在數據選擇部件3190選擇并通過來自第一傳輸部件3150的數據(C1序列的代碼串)的情況下,執行C1序列的糾錯,另一方面,在數據選擇部件3190選擇并通過來自第二傳輸部件3160的數據(C2序列的代碼串)的情況下,執行C2序列的糾錯。
主機接口部件3140是用于通過第三傳輸部件3170,從緩沖存儲器3110中讀出完成了由糾錯部件3130所執行的處理的數據并將其輸出到主計算機2070中的接口電路。
第一傳輸部件3150同時并列執行從磁盤接口部件3120向緩沖存儲器3110的DMA數據傳輸和對同一數據的向數據選擇部件3190的DMA數據傳輸,第二傳輸部件3160執行從緩沖存儲器3110向糾錯部件3130的DMA數據傳輸,并且第三傳輸部件3170執行從緩沖存儲器3110向主機接口部件3140的DMA數據傳輸。
總線控制器3180按照預定的優先順序,控制3個傳輸部件3150、3160、3170,以便于排他地執行分別由第一傳輸部件3150、第二傳輸部件3160和第三傳輸部件3170執行的DMA傳輸,并控制在重寫緩沖存儲器3110中的成為時間時由糾錯部件3130執行的對緩沖存儲器3110的普通(非DMA)訪問。另外,總線控制器3180的詳細結構和由總線控制器3180執行的對緩沖存儲器3110的訪問的排他控制分別與第二實施例中的圖26及圖27所示的內容相同。
圖37是示出了與糾錯部件3130的詳細結構相關聯的其他構成部件的電路圖。糾錯部件3130是用于一邊時分地切換1行代碼串和1列代碼串,一邊并行糾錯的電路,由出錯位計算部件3131、歐基里德計算部件3132、鏈計算部件3133以及錯誤數據更新部件3134構成。
出錯位計算部件3131是用于一邊區分來自數據選擇部件3190的2種代碼串,一邊計算各自的出錯位的電路,包括2個暫時存儲器(輸入數據出錯位存儲部件3135和緩沖數據出錯位存儲部件3136)。輸入數據出錯位存儲部件3135是具有暫時存儲與構成1個數據塊的全部C1序列的代碼串相對應的出錯位的存儲容量的存儲器,緩沖數據出錯位存儲部件3136是具有暫時存儲與構成1個數據塊的全部C2序列的代碼串相對應的出錯位的存儲容量的存儲器。
出錯位計算部件3131在數據選擇部件3190選擇并通過了來自第一傳輸部件3150的數據(C1代碼串)時,對該C1代碼串進行出錯位計算,將得到的出錯位儲存到各代碼串中并存入輸入數據出錯位存儲部件3135中,另一方面,在數據選擇部件3190選擇并通過了來自第二傳輸部件3160的數據(C2代碼串)時,對該C2代碼串進行出錯位計算,將得到的出錯位儲存到各代碼串中并存入緩沖數據出錯位存儲部件3136中。
另外,此出錯位計算部件3131是用于瞬時計算出每1行或1列代碼串中的出錯位的電路,與第一實施例中的糾錯部件5所具有的4個出錯位生成部件52~55之一(圖8所示的電路)相同。即,在乘積碼的大小為k1=k2=100字節、m1=m2=10字節的情況下,出錯位計算部件3131由用于對輸入的數據進行暫時緩沖存儲的隊列緩沖器和10個用于分別計算出10個出錯位的積和運算電路組成,各積和運算電路由用于存儲1個積和值的寄存器、用于讀出存儲在該寄存器中的積和值并將其與固有的系數相乘的伽羅瓦域乘法器以及用于將相乘的結果與下次輸入的1個數據相加的伽羅瓦域加法器組成。
歐基里德計算部件3132是用于順序讀出分別存在出錯位計算部件3131的輸入數據出錯位存儲部件3135和緩沖數據出錯位存儲部件3136中的出錯位,計算出用于確定錯誤位置多項式和錯誤數值多項式各項系數的電路,計算出的系數被提供給鏈計算部件3133。
鏈計算部件3133是利用來自歐基里德計算部件3132的系數,通過鏈查尋和調用法等方法算出所確定的錯誤位置多項式的根的電路,將其運算結果與來自歐基里德計算部件3132的用于確定錯誤數值多項式的系數一起提供給錯誤數據更新部件3134。
錯誤數據更新部件3134在利用來自鏈計算部件3133的錯誤位置和錯誤數值多項式,求出位于該錯誤位置上的錯誤數值之后,通過總線控制器3180讀取緩沖存儲器3110內該錯誤位置上的信息數據或奇偶校驗數據,計算它們的異或邏輯和,將得出的值回寫到緩沖存儲器3110內的原位置上。
另外,由第二傳輸部件3160進行的從緩沖存儲器3110向出錯位計算部件3131的數據傳輸是通過由DMA傳輸進行的存儲器訪問而進行的,但是緩沖存儲器3110與錯誤數據更新部件3134之間的數據傳輸是通過由總線控制器3180進行的普通(非DMA)存儲器訪問而進行的。而且,構成糾錯部件3130的4個電路3131~3134在分別進行同步并列處理,即進行流水線方式下的順序處理。
圖38是示出了在連續處理多個數據塊的數據的情況下,光盤控制器3100內的處理過程的時序圖。在本圖中,第1數據塊到第5數據塊是分別存儲在緩沖存儲器3110中的1個數據塊的數據。而且,“緩沖”表示由第一傳輸部件3150進行的從磁盤接口部件3120向緩沖存儲器3110的數據傳輸,“糾錯1”表示糾錯部件3130對由第一傳輸部件3150進行的經過數據選擇部件3190從磁盤接口部件3120輸入到糾錯部件3130中的C1序列的代碼串的糾錯,“糾錯2”表示糾錯部件3130對由第二傳輸部件3160進行的經過數據選擇部件3190從緩沖存儲器3110輸入到糾錯部件3130中的C2序列的代碼串的糾錯,“主機傳輸”表示由第三傳輸部件3170進行的從緩沖存儲器3110向主機接口部件3140的數據傳輸。
如本圖所示,將與同一數據塊相對應的并列的“緩沖”及“糾錯1”、對完成了“緩沖”及“糾錯1”的數據塊的“糾錯2”以及對完成了“糾錯2”的數據塊的“主機傳輸”作為流水線順序且并列地執行。例如,在周期T5,在從磁盤接口部件向緩沖存儲器3110傳輸和存儲第5數據塊的同時,在糾錯部件3130中進行“糾錯1”(C1序列的糾錯),從緩沖存儲器3110向糾錯部件3130傳輸第4數據塊并進行“糾錯2”(C2序列的糾錯),從緩沖存儲器3110向主機接口部件3140傳輸第3數據塊。
另外,在本圖中,并列進行3種用于訪問緩沖存儲器3110的數據傳輸,但這是從數據塊這個大方面的數據傳輸觀點上出發而表現出來的,從構成數據塊的各數據的角度考慮(瞬時地),只能執行其中一種數據傳輸。這樣的排他性數據傳輸及上述流水線控制,是通過總線控制器3180按照預定的優先順序,將由3個傳輸部件3150、3160、3170進行的數據傳輸以較小的時間單位進行切換并許可而實現的。
而且,在本圖中,不對第3數據塊進行“糾錯2”(C2序列的糾錯)就是在“糾錯1”(C1序列的糾錯)中,這個數據塊中沒有發現任何錯誤。即,在糾錯部件3130的出錯位計算部件3131中為第3數據塊的C1序列的代碼串計算出全部為零的出錯位,并將其存入輸入數據出錯位存儲部件3135的情況下,或在周期T3進行的糾錯1中對C1序列的全部代碼串執行糾錯并且不存在錯誤的情況下,糾錯部件3130通過參照出錯位存儲部件3135的內容,明確了不必對第3數據塊進行C2序列的糾錯,并且不進行與對該數據塊的C2序列糾錯相關的一切處理。即,通過糾錯部件3130將上述意思通知給總線控制器3180,對第3數據塊的C2序列的全部代碼串,不進行由第二傳輸部件3160執行的從緩沖存儲器3110向糾錯部件3130的數據傳輸。
這樣,由于并列進行對同一數據塊的緩沖和“糾錯1”,并將與錯誤檢測相關的信息存儲到輸入數據出錯位存儲部件3135中,因此在C1序列的代碼串中都沒有發生錯誤的情況下,糾錯部件3130通過參照輸入數據出錯位存儲部件3135而知道了此情況,因而能夠避免從緩沖存儲器2110讀出不需要進行C2序列糾錯的數據的所謂無效數據傳輸。即,若在現有技術中,對于從光盤讀出的全部數據,要進行存入緩沖存儲器、從緩沖存儲器中讀出以進行錯誤檢測·糾正、從緩沖存儲器中讀出以將該數據輸出到主計算機的所謂3種數據傳輸,但在本第三實施例中,對于沒有發生錯誤的數據,只進行存入緩沖存儲器和從緩沖存儲器中讀出以將數據輸出到主計算機的所謂2種數據傳輸。
圖39是圖38所示的時序圖的更詳細的示圖。在與“糾錯1”和“糾錯2”這2個處理相關的過程中分別示出了對C1序列及C2序列的處理。其中,在“糾錯1”中,只進行對C1序列的糾錯,而在“糾錯2”中,只進行對C2序列的糾錯。
具體地,在周期T1,糾錯部件3130對于通過第一傳輸部件3150從磁盤接口部件3120傳送來的第1數據塊,進行對C1序列的代碼串的糾錯。此時,出錯位計算部件3131將關于C1序列的全部代碼串而得出的出錯位存儲到輸入數據出錯位存儲部件3135中。
其中,糾錯部件3130與緩沖并行進行C1序列的糾錯(“糾錯1”),是因為從磁盤接口部件3120向緩沖存儲器3110的數據傳輸是按照從第1行到第n2行的順序,反復在行方向上掃描乘積碼而進行的,因而使C1序列的糾錯變得很容易。
接著在周期T2,糾錯部件3130并列進行對第2數據塊的C1序列糾錯和對第1數據塊的C2序列糾錯。具體地,這些第2數據塊和第1數據塊的數據是時分地從數據選擇部件3190傳送來的,因此糾錯部件3130在經過數據選擇部件3190從磁盤接口部件3120輸入第2數據塊時,對其代碼串進行C1序列的糾錯,另一方面,在經過數據選擇部件3190從緩沖存儲器3110輸入第1數據塊時,對其代碼串進行C2序列的糾錯。
另外,如果在對第1數據塊進行的C1序列糾錯中,沒有檢測出錯誤,或全部錯誤被糾正以后的情況下,與第3數據塊和第4數據塊一樣,不進行對第1數據塊的C2序列糾錯。即,不進行通過第二傳輸部件3160將第1數據塊的C2序列的代碼串從緩沖存儲器3110傳輸到糾錯部件3130的操作。
圖40是示出了在糾錯器2130內的行方向及列方向上的單位處理過程的時序圖。本圖相當于圖39中所示的時序圖中的周期T2開頭部分中的“糾錯1”和“糾錯2”,示出了在糾錯部件3130中并列進行第2數據塊的C1序列糾錯(“糾錯1”)和第1數據塊的C2序列糾錯(“糾錯2”)的樣子。
在時間t1,出錯位計算部件3131并列進行對第2數據塊第1行代碼串的出錯位計算和對第1數據塊第1列代碼串的出錯位計算,并將各結果存入輸入數據出錯位存儲部件3135和緩沖數據出錯位存儲部件3136中。實際上,由于第2數據塊第1行代碼串和第1數據塊第1列代碼串是按照時間切換而從數據選擇部件3190中傳送的,因而出錯位計算部件3131在瞬時只是對其中一個代碼串進行出錯位計算。
在時間t2,出錯位計算部件3131并列進行對第2數據塊第2行代碼串的出錯位計算和對第1數據塊第2列代碼串的出錯位計算,并將各結果存入輸入數據出錯位存儲部件3135和緩沖數據出錯位存儲部件3136中。
與此并行,歐基里德計算部件3132首先讀出存在輸入數據出錯位存儲部件3135中的第2數據塊第1行代碼串的出錯位,利用它進行歐基里德計算,在將結果通知給鏈計算部件3133之后,接著進行對第1數據塊第1列代碼串的歐基里德計算,并將結果通知給鏈計算部件3133。
而且,在時間t2的后一半時間中,鏈計算部件3133根據來自歐基里德計算部件3132的通知,對第2數據塊第1行的代碼串進行鏈計算,并將結果通知給錯誤數據更新部件3134。
在時間t3,同樣地,出錯位計算部件3131并列進行對第2數據塊第3行代碼串的出錯位計算和對第1數據塊第3列代碼串的出錯位計算,與此并行,歐基里德計算部件3132在進行對第2數據塊第2行代碼串的歐基里德計算之后,接著進行對第1數據塊第2列代碼串的歐基里德計算,與此并行,鏈計算部件3133在對第1數據塊第1行的代碼串進行鏈計算之后,接著對第2數據塊第2列的代碼串進行鏈計算,與此并行,錯誤數據更新部件3134在對第2數據塊第1行代碼串進行錯誤數據的更新(緩沖存儲器3110內錯誤數據的重寫)之后,接著對第1數據塊第1列代碼串進行錯誤數據的更新。
在以后的個時間tn中,同樣地并列執行對1行代碼串和1列代碼串的出錯位計算、歐基里德計算、鏈計算及錯誤數據糾正。另外,在本圖中,雖然對全部行和列進行了歐基里德計算、鏈計算及錯誤數據糾正,但這是基于在對這些代碼串進行出錯位計算時檢測出錯誤的原因,如果不是這樣,則不進行對該代碼串的歐基里德計算、鏈計算及錯誤數據的糾正。
如上所述,在第三實施例中,在進行“緩沖”(從磁盤接口部件3120向緩沖存儲器3110的數據傳輸)的同時,并列進行對同一數據的C1序列糾錯(“糾錯1”)。由此,在將數據存入緩沖存儲器3110之后,就不需要所謂的讀出存在緩沖存儲器3110中的數據以用于C1序列糾錯的過程了。
而且,在與緩沖同時進行的糾錯中,由于一個數據塊的C1序列的錯誤檢測結果(出錯位)被記錄到輸入數據出錯位存儲部件3135中,因此在構成1個數據塊的全部C1序列代碼串中沒有發生錯誤的情況下,通過參照該記錄,能夠避免不必要的從緩沖存儲器3110讀出數據以進行C2序列糾錯的所謂無效數據傳輸。
這樣,依據第三實施例,不需要從緩沖存儲器3110讀出數據以進行C1序列糾錯和從緩沖存儲器3110中讀出數據以對沒有發生錯誤的數據塊進行C2序列糾錯,從而削減了對緩沖存儲器3110的訪問次數,并實現了更高速的低功耗光盤讀取裝置2000。
另外,在第三實施例中,糾錯部件3130反復進行逐行或逐列糾錯,但也可以象第一實施例一樣,進行每隔4行和4列等多代碼串的并列糾錯。
例如,第三實施例中象這樣的由糾錯部件3130對4個代碼串并列進行糾錯的變形例只要象第一實施例中的糾錯部件5一樣,在糾錯部件3130中設置4個出錯位計算部件和用于將來自緩沖存儲器3110的數據分配到4個出錯位計算部件中的數據分配部件即可。由此,就能夠得到由第一實施例中的并列化而產生的糾錯高速化和由第三實施例中的預先進行C1序列的糾錯而產生的糾錯高速化這兩方面的效果。
而且,在第三實施例中,通過數據選擇部件3190和出錯位計算電路3131,按時間對分別從第一傳輸部件3150和第二傳輸部件3160傳送來的代碼串進行錯誤檢測,但是也可以代替這種結構,通過將只對來自第一傳輸部件3150的代碼串進行錯誤檢測的出錯位計算電路和只對來自第二傳輸部件3160的代碼串進行錯誤檢測的出錯位計算電路設計成2個獨立的出錯位計算電路,來同時并列進行對這2個代碼串的錯誤檢測。
以上根據第一至第三實施例對本發明進行了說明,但這并不意味著本發明只限于這些實施例。
例如,在第一至第三實施例中,對于1個數據塊的糾錯,只進行1次C1序列的糾錯和接在其后的C2序列糾錯,但是也可以在進行了這些糾錯之后,繼續進行C1序列的糾錯和接在其后的C2序列糾錯。由于通過增加糾錯的次數可以提高糾錯能力,因此只要考慮發現錯誤的數據量和在其它相關處理中所容許的時間,決定對各方向反復進行糾錯的次數即可。
而且,通過組合3個實施例中各自不同的結構部件,可以實現各種不同的變形。例如,圖27中所示的第二及第三實施例中的對3種DMA傳輸的調度也可用于第一實施例中。
而且,第一至第三實施例是作為DVD-ROM等光盤的記錄媒體的磁盤驅動裝置,但是本發明涉及的糾錯裝置并不僅限于在這樣的數據存儲裝置中使用,也可以用于要求能夠對應轉播的數據高速地進行糾錯的機器,例如網絡通信中的中繼器等。
權利要求
1.一種糾錯裝置,它反復進行R行L列的塊碼中對沿著行方向和列方向的代碼序列的糾錯所需的計算,其特征在于,所述糾錯裝置包括存儲裝置,用于存儲所述塊碼;運算裝置,用于以所述塊碼的1行或1列為單位進行塊碼誤差糾正運算;以及傳輸裝置,包括列方向傳輸部件,用于反復地從所述存儲裝置讀取塊碼中的L2列上的代碼序列,這里,L2為大于等于2且小于L的整數,并將讀出的代碼序列傳輸到所述運算裝置,直到所有的L列被讀取和傳輸完;所述列方向傳輸部件通過按順序反復地讀取和傳輸R行上的L2個連續代碼段,從而從所述存儲裝置傳輸L2列中的代碼序列到所述運算裝置,在讀完L2列中的所有代碼后將讀取位置移動L2個代碼;其中,當代碼被所述列方向傳輸部件傳輸完畢時,所述運算裝置并行地對L2列中的代碼序列進行運算,把連續代碼當作屬于L2個列的不同列中的代碼序列。
2.一種糾錯裝置,它反復進行R行L列的塊碼中對沿著行方向或列方向的代碼序列的糾錯所需的計算,其特征在于,所述糾錯裝置包括存儲器,它存儲所述塊碼;運算部件,用于對所述塊碼的1行或1列的代碼進行糾錯計算;以及傳輸部件,包括行方向傳輸部件,它反復地從所述存儲器讀取塊碼中R1行上的代碼序列,這里,R1為大于等于2且小于R的整數,并將讀出的代碼序列傳輸到所述運算部件中,直到所有的R行被讀取和傳輸完;所述行方向傳輸部件通過按順序反復地讀取和傳輸R1行上的L1個連續代碼的段,這里L1為大于等于2且小于L的整數,從而從存儲器傳輸R1行上的代碼序列到運算部件,在讀完R1行中每一行的L1個連續代碼后,將讀取位置移動L1列。
3.如權利要求2所述的糾錯裝置,其特征在于,傳輸代碼的所述行方向傳輸部件和所述對R1行中的代碼序列執行運算的運算部件是并行執行的。
4.如權利要求2所述的糾錯裝置,其特征在于,當代碼被所述行方向傳輸部件傳輸時,所述運算部件通過時分方式對所述R1行的代碼序列進行運算,把接收到的代碼當作R1行中的不同行上的代碼序列的L1碼寬段。
5.如權利要求2或3所述的糾錯裝置,其特征在于,所述塊碼是乘積碼。
6.如權利要求5所述的糾錯裝置,其特征在于,組成塊碼的沿行方向和列方向的代碼序列包括信息碼和糾錯碼,所述運算部件包括錯誤檢測部件,檢測所述塊碼中一行或一列上的代碼序列中是否存在錯誤;和誤碼更新部件,用于當所述錯誤檢測部件檢測到代碼序列中的至少一個錯誤時,用校正后的值重寫對應錯誤的所述存儲器中的代碼,行方向傳輸部件,反復地向所述錯誤檢測部件傳輸代碼序列,且所述錯誤檢測部件并行地對R1行上的代碼序列進行錯誤檢測,把接收到的代碼當作在所述R1行的不同行上的代碼序列的L1碼寬段。
7.如權利要求6所述的糾錯裝置,其特征在于,所述存儲器存儲所述塊碼,以便在同一行上的代碼存儲在有連續地址的存儲區域中,且所述行方向傳輸部件連續地從存儲器中具有連續地址的存儲區域讀取L1個代碼。
8.如權利要求7所述的糾錯裝置,其特征在于,所述存儲器是動態隨機存取存儲器,且所述行方向傳輸部件利用頁面模式從所述存儲器讀取L1個代碼。
9.如權利要求8所述的糾錯裝置,其特征在于,所述行方向傳輸部件通過執行對所述存儲器的直接存儲器訪問來傳輸代碼。
10.如權利要求6所述的糾錯裝置,其特征在于,所述錯誤檢測部件包括R1個錯誤檢測部件,每個錯誤檢測部件對R1行中的一行上的代碼序列進行錯誤檢測;以及分配部件,用于將接收自所述行方向傳輸部件的代碼按順序以L1碼寬段分配到所述R1個錯誤檢測部件,其中所述R1個錯誤檢測部件彼此獨立,且每一個錯誤檢測部件與所述行方向傳輸部件的代碼傳輸并行地進行錯誤檢測。
11.如權利要求10所述的糾錯裝置,其特征在于,所述R1個錯誤檢測部件中的每一個對L1碼寬段完成錯誤檢測的時間短于由所述分配部件分配L1碼寬段給所述錯誤檢測部件的時間。
12.如權利要求11所述的糾錯裝置,其特征在于,所述R1個錯誤檢測部件中的每一個具有一個積-和運算電路,用于計算一個代碼序列的多個校正子。
13.如權利要求6所述的糾錯裝置,其特征在于,當L除以L1得到商為D、余數為E時,所述行方向傳輸部件在按順序讀出并傳輸R1行中的每一行上的E碼寬段到所述錯誤檢測部件之前,重復D次R1行上的L1碼寬段的傳輸,且所述錯誤檢測部件在對E碼寬段進行錯誤檢測之前,對L1碼寬段進行預定次數的錯誤檢測。
14.如權利要求6所述的糾錯裝置,其特征在于,傳輸部件進一步包括列方向傳輸部件,用于在L2為大于等于2且小于L的整數時,從所述存儲器讀取所述塊碼中L2列中的代碼序列并將讀出的代碼序列傳輸到所述錯誤檢測部件中,直到所有的L列被處理完;所述列方向傳輸部件通過按順序反復地讀取和傳輸R行上沿行方向的L2個連續代碼的段,從所述存儲器傳輸L2列中的所有代碼到所述運算部件,在讀完L2列中的所有代碼后,將讀取位置移動L2個代碼;以及代碼被所述列方向傳輸部件傳輸時,所述錯誤檢測部件并行地對L2列中的代碼序列進行錯誤檢測,把接收到的代碼當作一個系列,在該系列中,各個代碼對應于在L2列中的不同列中的代碼序列。
15.如權利要求14所述的糾錯裝置,其特征在于,R1和L2為R1=L2=j,且錯誤檢測部件包括j個錯誤檢測部件,每個錯誤檢測部件對一個代碼序列進行錯誤檢測;以及分配部件,用于重復地將接收自所述行的代碼的各個L1碼寬段按順序分配到選出的j個錯誤檢測部件之一,并用于重復地按順序將構成從所述列接收到的L2碼寬段一部分的每個代碼分配到所述j個錯誤檢測部件中不同的錯誤檢測部件;其中所述j個錯誤檢測部件彼此相互獨立并且每次錯誤檢測與所述行方向傳輸部件和所述列方向傳輸部件的代碼傳輸并行進行。
16.如權利要求15所述的糾錯裝置,其特征在于,所述j個錯誤檢測部件中的每一個對L1碼寬段完成錯誤檢測的時間短于由所述分配部件分配L1碼寬段給所述錯誤檢測部件的時間,并且所述R1個錯誤檢測部件中的每一個對L2碼寬段中的一個代碼完成錯誤檢測的時間短于由所述分配部件分配L2碼寬段中的代碼給所述錯誤檢測部件的時間。
17.如權利要求16所述的糾錯裝置,其特征在于,R1=L1=L2=j。
18.一種糾錯裝置,它反復進行R行L列的塊碼中對沿著行方向或列方向的代碼序列的糾錯所需的計算,其特征在于,所述糾錯裝置包括存儲器,它存儲所述塊碼;運算部件,用于對所述塊碼的1行或1列的代碼進行糾錯計算;以及傳輸部件,包括列方向傳輸部件,它反復地從所述存儲器讀取塊碼中L2行上的代碼序列,這里,L2為大于等于2且小于L的整數,并將讀出的代碼序列傳輸到所述運算部件中,直到所有的L列被讀取和傳輸完;所述列方向傳輸部件通過按順序反復地讀取和傳輸R行上的L2個連續代碼的段,從而從存儲器傳輸L2列上的代碼序列到運算部件,在讀完L2列中的所有代碼后,將讀取位置移動L2列。
19.如權利要求18所述的糾錯裝置,其特征在于,傳輸代碼的所述列方向傳輸部件和所述對L2列中的代碼序列執行運算的運算部件是并行執行的。
20.如權利要求18所述的糾錯裝置,其特征在于,當代碼被所述列方向傳輸部件傳輸時,所述運算部件通過時分方式對所述L2列的代碼序列進行運算,把連續代碼當作屬于L2列中的不同列上的代碼序列。
21.如權利要求18或19所述的糾錯裝置,其特征在于,所述塊碼是乘積碼。
22.如權利要求21所述的糾錯裝置,其特征在于,組成塊碼的沿行方向和列方向的代碼序列包括信息碼和糾錯碼,所述運算部件包括錯誤檢測部件,用于執行所述塊碼中一行或一列上的代碼序列的錯誤檢測;和誤碼更新部件,用于當所述錯誤檢測部件檢測到代碼序列中的至少一個錯誤時,用校正后的值重寫對應錯誤的所述存儲器中的代碼,列方向傳輸部件,反復地向所述錯誤檢測部件傳輸代碼序列,且所述錯誤檢測部件并行地對L2列上的代碼序列進行錯誤檢測,把接收到的代碼當作一個系列,在所述系列中,各個代碼對應于所述L2列的不同列上的一個代碼序列。
23.如權利要求22所述的糾錯裝置,其特征在于,所述存儲器存儲所述塊碼,以便在同一行上的代碼存儲在有連續地址的存儲區域中,且所述列方向傳輸部件連續地從存儲器中具有連續地址的存儲區域讀取L2個代碼。
24.如權利要求23所述的糾錯裝置,其特征在于,所述存儲器是動態隨機存取存儲器,且所述列方向傳輸部件利用頁面模式從所述存儲器讀取L1個代碼。
25.如權利要求24所述的糾錯裝置,其特征在于,所述列方向傳輸部件通過執行對所述存儲器的直接存儲器訪問來傳輸代碼。
26.如權利要求22所述的糾錯裝置,其特征在于,所述錯誤檢測部件包括L2個錯誤檢測部件,每個錯誤檢測部件對L2列中的一列上的代碼序列進行錯誤檢測;以及分配部件,用于將構成接收自所述列方向傳輸部件的L2碼寬段的一部分的各個代碼按順序分配到所述L2個錯誤檢測部件中不同的一個錯誤檢測部件,其中所述L2個錯誤檢測部件彼此獨立,且每一個錯誤檢測部件與所述列方向傳輸部件的代碼傳輸并行地進行錯誤檢測。
27.如權利要求26所述的糾錯裝置,其特征在于,所述L2個錯誤檢測部件中的每一個對L2碼寬段中的一個代碼完成錯誤檢測的時間短于所述分配部件分配L2碼寬段中的代碼給所述錯誤檢測部件的時間。
28.如權利要求27所述的糾錯裝置,其特征在于,所述L2個錯誤檢測部件中的每一個具有一個積-和運算電路,用于計算一個代碼序列的多個校正子。
29.如權利要求22所述的糾錯裝置,其特征在于,當L除以L2得到商為D、余數為E時,所述列方向傳輸部件在按順序讀出并傳輸R行中的每一行上的E碼寬段之前,重復D次R行上的L2碼寬段的傳輸,且所述錯誤檢測部件在對E碼寬段進行錯誤檢測之前,對L2碼寬段進行預定次數的錯誤檢測。
全文摘要
本發明涉及一種糾錯裝置,它反復進行R行L列的塊碼中對沿著行方向和列方向的代碼序列的糾錯所需的計算,所述糾錯裝置包括存儲裝置,用于存儲所述塊碼;運算裝置,用于以塊碼的1行或1列為單位進行塊碼誤差糾正運算;傳輸裝置,包括列方向傳輸部件,用于反復地從存儲裝置讀取塊碼L2列的代碼序列,并將讀出的代碼序列傳輸到運算裝置,直到所有L列被讀取和傳輸完;列方向傳輸部件通過按順序反復讀取和傳輸R行上L2個連續代碼段,從而從存儲裝置傳輸L2列代碼序列到運算裝置,在讀完L2列所有代碼后將讀取位置移動L2個代碼;當代碼被列方向傳輸部件傳輸完時,運算裝置并行對L2列的代碼序列進行運算,把連續代碼當作屬于L2個列的不同列的代碼序列。
文檔編號H03M13/11GK1555061SQ20041006361
公開日2004年12月15日 申請日期1999年2月24日 優先權日1998年2月25日
發明者中辻文男, 橋本祐一, 一, 中 文男 申請人:松下電器產業株式會社