專利名稱:模擬至數字轉換器的錯誤更正編碼器的制作方法
技術領域:
本發明涉及一種編碼器,特別是涉及一種用于模擬至數字轉換器的錯誤更正編碼器。
背景技術:
請參考圖1,圖1為溫度計碼(thermometer)、N取1碼(one-of-N)、格雷碼(gray)、二進制碼(binary)以及十進制碼(decimal)的對照表。圖1中顯示十進制數字0-15的各種編碼的表示方法,其中二進制碼使用4位來表示,溫度計碼使用24-1位來表示,而十進制的數字就代表在溫度碼中出現1的次數,N取1碼則使用24位來表示,每個N取1碼中只會出現一個1,由1所在的位權重(weight)來決定這個N取1碼的大小,格雷碼也是使用4位來表示,其與二進制碼最大的不同在于格雷碼相鄰的兩個數字都只有一位不同。在已知模擬至數字轉換器的結構中,通常是先使用一模擬比較器將模擬訊號轉換成一溫度計碼,接著再使用一邏輯邊界檢測器來將該溫度計碼轉換成一N取1碼,最后使用一編碼器將該N取1碼轉換成一二進制碼。
請參考圖2,圖2為已知模擬至數字轉換器10的示意圖。模擬至數字轉換器包含一模擬比較器12、一邏輯邊界檢測器14以及一二進制編碼器16。模擬比較器12用來將VRH及VRL之間的模擬訊號與一參考電壓VR作比較而輸出由0或1所組成的一數字訊號,該數字訊號就該模擬訊號的溫度計碼。邏輯邊界檢測器14連接于模擬比較器12之后,用來檢測模擬比較器12所輸出的溫度計碼中0與1的交界處,以將溫度計碼轉成N取1碼。二進制編碼器16連接于邏輯邊界檢測器14之后,用來將邏輯邊界檢測器14所輸出的N取1碼轉換成二進制碼。圖2中所示的模擬至數字轉換器10可以將模擬訊號轉換成b0、b1、b2及b3四位所表示的二進制碼,也就是十進制數字0-15。舉例來說,一電壓經過模擬比較器12后所輸出的溫度計碼為“000000011111111”,接著邏輯邊界檢測器14就會檢測該溫度計碼中0與1的交界處,而輸出N取1碼“0000000100000000”,最后二進制編碼器16則依據N取1碼得到二進制碼“1000”。然而不幸的是氣泡錯誤(bubble error)常常會伴隨著溫度計碼出現,氣泡錯誤最可能發生在模擬比較器12的輸出端,而使得溫度計碼中一個以上的邏輯值反向,造成之后的邏輯邊界檢測器14檢測出包含超過一個1以上的N取1碼,使得二進制編碼器16轉換出錯誤的二進制碼。在上例中,如果發生氣泡錯誤,使得模擬比較器12所輸出的溫度計碼變成“000000010111111”,則邏輯邊界檢測器14檢測出的N取1碼為“0000000101000000”,由二進制編碼器16轉換的二進制碼為“1110”,也就是原本應轉換成十進制碼“8”的模擬訊號,因為氣泡錯誤的發生而使得訊號被轉換成“14”。
請參考圖3,圖3為已知使用格雷碼的模擬至數字轉換器20的結構方塊圖。模擬至數字轉換器20包含一模擬比較器22、一邏輯邊界檢測器24、一格雷碼編碼器26以及一第二編碼器28。為了使氣泡錯誤所造成的誤差減小,模擬至數字轉換器20使用格雷碼編碼器26將邏輯邊界檢測器24所輸出的N取1碼先轉換成格雷碼,再以第二編碼器28將格雷碼轉換成二進制碼,利用格雷碼相鄰的兩個數字都只有一位不同的特性來減小氣泡錯誤所造成的誤差。在上例中,若先將發生氣泡錯誤的N取1碼“0000000101000000”轉換成格雷碼“1101”,再轉換成二進制碼“1001”,對照十進制碼為“9”,則相較于圖2中的模擬至數字轉換器10直接將N取1碼轉換成二進制碼所得到的結果,使用格雷碼的模擬至數字轉換器20可以減小許多氣泡錯誤所造成的誤差。
由上述可知,氣泡錯誤會造成訊號轉換上很大的誤差,然而已知的模擬至數字轉換器10在將模擬訊號轉換為溫度計碼時卻又很難避免不發生氣泡錯誤,當氣泡錯誤發生時,若由溫度計碼所轉換的N取1碼直接轉換成二進制碼,則會產生非常大的誤差,雖然模擬至數字轉換器20會利用格雷碼的特性,先將N取1碼轉換成格雷碼,但即使是使用格雷碼也只是能減小誤差,并沒有針對氣泡錯誤來作更正,使得模擬至數字轉換器20的整體效能仍無法提升。
其他相關的技術可以參考美國專利6,433,725、美國專利4,958,157、美國專利6,034,630、美國專利5,644,312、美國專利6,388,602、美國專利6,298,459、美國專利6,396,424。
發明內容
因此本發明的主要目的是提供一模擬至數字轉換器的錯誤更正編碼器,以解決上述問題。
為了實現本發明的目的,提供了一種編碼器,用來轉換溫度計碼,該編碼器包含一第一級電路、一第二級電路以及一第三級電路。該第一級電路用來將溫度計碼中含有“00100”的位流轉換為“00000”及將溫度計碼中含有“11011”的位流轉換為“11111”。該第二級電路連接于該第一級電路,用來依據該第一級電路輸出的溫度計碼含有“000111”、“001011”或“011001”的位流的位置將該溫度計碼轉換為N取1碼。該第三級電路連接于該第二級電路,用來將該N取1碼轉換為二進制碼。
圖1為溫度計碼、N取1碼、格雷碼、二進制碼以及十進制碼的對照表;圖2為已知模擬至數字轉換器的示意圖;圖3為已知使用格雷碼的模擬至數字轉換器的結構方塊圖;圖4為本發明溫度計碼編碼器的結構方塊圖;和圖5為本發明更正的氣泡錯誤模式的示意圖。
附圖標記說明10 已知模擬至數字轉換器12 模擬比較器 14 邏輯邊界檢測器16 二進制編碼器20 已知模擬至數字轉換器22 模擬比較器 24 邏輯邊界檢測器26 格雷碼編碼器 28 第二編碼器30 本發明溫度計碼編碼器32 第一級電路 34 第二級電路36 第三級電路 38 第一邊界檢測器
40 第二邊界檢測器 42 第三邊界檢測器具體實施方式
請參考圖4,圖4為本發明溫度計碼編碼器30的結構方塊圖。在模擬至數字轉換器的結構中,溫度計編碼器30用來將溫度計碼轉換成二進制碼。隨著CMOS及數字綜合技術的發展,實現復雜的邏輯電路已經不需要很高的成本,因此本發明溫度計碼編碼器30使用數字邏輯的方式來設計,以將溫度計碼編碼器30實現于芯片之中,使得溫度計碼編碼器30可以更正錯誤,得到較好的編碼結果。如圖4所示,溫度計碼編碼器30包含一第一級電路32、一第二級電路34以及一第三級電路36。第一級電路32用來接收由模擬比較器所輸出的一溫度計碼X,并且濾除溫度計碼X中含有分離的單氣泡錯誤(single bubble error),也就是將溫度計碼X中含有“00100”的位流轉換為“00000”,以及將溫度計碼X中含有“11011”的位流轉換為“11111”。溫度計碼X經由第一級電路32更正錯誤后輸出一溫度計碼A。第二級電路34接收溫度計碼A作為輸入,其功能為邊界檢測,包含了三個并列的邊界檢測器38、40、42以及一或電路(or circuit)44,每一個邊界檢測器用來檢測不同的“01”轉換位流(bit stream)。第一邊界檢測器38檢測溫度計碼A中是否含有“000111”的位流,如果溫度計碼A中有符合的位流,則輸出一N取1碼B1,如果沒有符合的位流則N取1碼B1的所有位皆為0。第二邊界檢測器40檢測溫度計碼A中是否含有“001011”的位流,如果溫度計碼A中有符合的位流,則輸出一N取1碼B2,如果沒有符合的位流則N取1碼B2的所有位皆為0,第三邊界檢測器42檢測溫度計碼A中是否含有“011001”的位流,如果溫度計碼A中有符合的位流,則輸出一N取1碼B3,如果沒有符合的位流則N取1碼B3的所有位皆為0。溫度計碼A中僅含有“000111”、“001011”或“011001”其中一種,所以溫度計碼A經過第一、二及三邊界檢測器38、40、42所輸出的N取1碼B1、B2及B3再經由或電路44得到一理想的N取1碼B。第三級電路36接收第二級電路34所輸出的N取1碼B將其轉換成一二進制Y作為輸出。此外,若是溫度計碼A為反向,也就是如圖1中所示的溫度計碼0與1互換,則第二級電路34會檢測溫度計碼A中含有“111000”、“110100”或“100110”的位流。
本發明溫度計編碼器30的各級電路的邏輯表示法說明如下。第一級電路32中,A(n)表示溫度計碼A在第n位所代表的值,X(n+1)則表示溫度計碼X在第n+1位所代表的值,其余的類推,則A(n)={X(n)or[X(n-2)and X(n-1)and X(n+1)and X(n+2)]}and{X(n-1)or X(n-2)or X(n+1)or X(n+2)}由上述的式子可知,若X(n-2)、X(n-1)、X(n+1)及X(n+2)皆為“0”,則A(n)為“0”,也就是在溫度計碼X只要出現“00100”,在第一級電路32轉換后的溫度計碼A中就變成“00000”。同樣地,若X(n-2)、X(n-1)、X(n+1)及X(n+2)皆為“1”,則A(n)為“1”,也就是在溫度計碼X只要出現“11011”,在第一級電路32轉換后的溫度計碼A中就變成“11111”。第二級電路34中{B1(n)=“1”if[A(n+3),A(n+2),A(n+1),A(n),A(n-1),A(n-2)]=“000111”,B1(n)=“0”otherwise}{B2(n)=“1”if[A(n+3),A(n+2),A(n+1),A(n),A(n-1),A(n-2)]=“001011”,B2(n)=“0”otherwise}{B3(n)=“1”if[A(n+3),A(n+2),A(n+1),A(n),A(n-1),A(n-2)]=“011001”,B3(n)=“0”otherwise}B(n)=B1(n)or B2(n)or B3(n)由上述的式子可知,第二級電路34會對輸入的溫度計碼A中的每一個位作檢測,以找出位流中符合“000111”、“001011”或“011001”其中的一種情形。
請參考圖5,圖5為本發明更正的氣泡錯誤模式的示意圖。圖5中列舉出數個含有錯誤的溫度計碼模式來說明本發明溫度計編碼器30如何更正模式中所含有的錯誤。模式a為正確的溫度計碼模式,模式b至模式m則是含有錯誤的溫度計碼模式。模式a經過溫度計編碼器30的第一級電路32及第二級電路34后,輸出的N取1碼B為“0000000010000000”,再經過第三級電路36轉成二進制碼“0111”。模式b至模式d皆有“00100”的情況發生,經過第一級電路32后就會被修正為“00000”,接著進入第二級電路34,由第一邊界檢測器38檢測出“000111”的位置輸出N取1碼的“1”。同樣地,模式e至模式g皆有“11011”的情況發生,經過溫度計編碼器的第一級電路32后就會被修正為“11111”,接著進入第二級電路34,由第一邊界檢測器38檢測出“000111”的位置輸出N取1碼的“1”。模式h至模式m中由于含有雙氣泡錯誤(double bubble errors),溫度計編碼器30的第一級電路38并無法檢測并修正雙氣泡錯誤,所以模式h至模式m在第一級電路32的輸出值與輸入值是相同的。模式h至模式m在進入第二級電路34后,模式h至模式k由第一邊界檢測器38檢測出“000111”的位置輸出N取1碼的“1”,而忽略了模式h至模式k中所含的雙氣泡錯誤,模式1由第二邊界檢測器40檢測出“001011”的位置輸出N取1碼的“1”,模式m由第三邊界檢測器42檢測出“011001”的位置輸出N取1碼的“1”。含有錯誤的溫度計碼模式b至模式m在經過溫度計編碼器碼30的三級電路后,皆被編碼為與模式a相同的二進制碼“0111”。
相較于已知技術,本發明提供一種用于模擬至數字轉換器中的溫度計編碼器,溫度計編碼器可以更正由模擬訊號轉換成溫度計碼時所產生的氣泡錯誤。已知技術中僅例用格雷碼的特性來減小發生氣泡錯誤時所產生的誤差,并沒有更正錯誤,而本發明的溫度計編碼器則針對氣泡錯誤來作更正,提升模擬至數字轉換器的效能。溫度計編碼器先使用第一級電路將所輸入的溫度計碼中最可能為錯誤的部分如“00100”及“11011”濾除,并更正為“00000”及“11111”,再以第二級電路來判斷溫度計碼“01”的轉換位置,第二級電路包含了“000111”、“001011”以及“011001”三種邊界檢測器,而通過第一級電路及第二級電路可以更正絕大部分在溫度計碼所產生的氣泡錯誤,使得溫度計編碼器能更精準的轉換出理想的N取1碼,最后使用第三級電路直接將該N取1碼轉換成二進制碼。
以上所述僅為本發明的較佳實施例,凡依本發明權利要求所做的均等變化與修飾,皆應屬本發明專利的涵蓋范圍。
權利要求
1.一種編碼器,用來轉換溫度計碼,該編碼器包含一第一級電路,用來將溫度計碼中含有“00100”的位流轉換為“00000”及將溫度計碼中含有“11011”的位流轉換為“11111”;一第二級電路,連接于該第一級電路,用來依據該第一級電路輸出的溫度計碼含有“000111”、“001011”或“011001”的位流的位置將該溫度計碼轉換為N取1碼。
2.如權利要求1所述的編碼器,其還包含一第三級電路,連接于該第二級電路,用來將該N取1碼轉換為二進制碼。
3.如權利要求1所述的編碼器,其還包含一第三級電路,連接于該第二級電路,用來將該N取1碼轉換為格雷碼。
4.如權利要求1所述的編碼器,其連接于一模擬/數字轉換器,用來輸入該溫度計碼。
5.如權利要求1所述的編碼器,其形成于一芯片內。
6.一種轉換溫度計碼的方法,其包含下列步驟(a)提供一第一級電路以及一第二級電路;(b)使用該第一級電路將該溫度計碼中含有“00100”的位流轉換為“00000”及將該溫度計碼中含有“11011”的位流轉換為“11111”;以及(c)在執行步驟(b)后,使用該第二級電路依據該溫度計碼含有“000111”、“001011”或“011001”的位流的位置將該溫度計碼轉換為N取1碼。
7.如權利要求6所述的方法,其還包含提供一第三級電路。
8.如權利要求6所述的方法,其還包含使用該第三級電路將該N取1碼轉換為二進制碼。
9.如權利要求6所述的方法,其還包含使用該第三級電路將該N取1碼轉換為格雷碼。
10.如權利要求6所述的方法,其中該溫度計碼是由一模擬/數字轉換器輸入。
11.一種可實施權利要求6的方法的芯片。
12.一種編碼器,用來轉換溫度計碼,該編碼器包含一第一級電路,用來將溫度計碼中含有“00100”的位流轉換為“00000”及將溫度計碼中含有“11011”的位流轉換為“11111”;一第二級電路,連接于該第一級電路,用來依據該第一級電路輸出的溫度計碼含有“111000”、“110100”或“100110”的位流的位置將該溫度計碼轉換為N取1碼。
13.如權利要求12所述的編碼器,其還包含一第三級電路,連接于該第二級電路,用來將該N取1碼轉換為二進制碼。
14.如權利要求12所述的編碼器,其還包含一第三級電路,連接于該第二級電路,用來將該N取1碼轉換為格雷碼。
15.如權利要求12所述的編碼器,其連接于一模擬/數字轉換器,用來輸入該溫度計碼。
16.如權利要求12所述的編碼器,其形成于一芯片內。
17.一種轉換溫度計碼的方法,其包含下列步驟(a)提供一第一級電路以及一第二級電路;(b)使用該第一級電路將該溫度計碼中含有“00100”的位流轉換為“00000”及將該溫度計碼中含有“11011”的位流轉換為“11111”;以及(c)在執行步驟(b)后,使用該第二級電路依據該溫度計碼含有“111000”、“110100”或“100110”的位流的位置將該溫度計碼轉換為N取1碼。
18.如權利要求17所述的方法,其還包含提供一第三級電路。
19.如權利要求17所述的方法,其還包含使用該第三級電路將該N取1碼轉換為二進制碼。
20.如權利要求17所述的方法,其還包含使用該第三級電路將該N取1碼轉換為格雷碼。
21.如權利要求17所述的方法,其中該溫度計碼是由一模擬/數字轉換器輸入。
22.一種可實施權利要求17的方法的芯片。
全文摘要
一種編碼器,用來轉換溫度計碼,該編碼器包含一第一級電路、一第二級電路以及一第三級電路。該第一級電路用來將溫度計碼中含有“00100”的位流轉換為“00000”及將溫度計碼中含有“11011”的位流轉換為“11111”。該第二級電路連接于該第一級電路,用來依據該第一級電路輸出的溫度計碼含有“000111”、“001011”或“011001”的位流的位置將該溫度計碼轉換為N取1碼。該第三級電路連接于該第二級電路,用來將該N取1碼轉換為二進制碼。
文檔編號H03M13/00GK1567729SQ0314306
公開日2005年1月19日 申請日期2003年6月18日 優先權日2003年6月18日
發明者黃克強, 郭文諒, 葉有民, 廖偉豪 申請人:揚智科技股份有限公司