韓宏峰,吳佳耕,張亦之,袁健華
摘要:本文創(chuàng)作的目的是針對本科生在數(shù)字電路設計課程中初步接觸格雷碼感到困惑,并不知道如何快速書寫格雷碼或如何與其他數(shù)制轉換的情況下,提出的以多種方式快速獲取格雷碼的方法。
關鍵詞:格雷碼;數(shù)制轉化;卡諾圖;邏輯代數(shù)
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2017)47-0160-03
正如多數(shù)教科書所述,首先列出格雷碼和對應二進制的轉換表格,簡單說明格雷碼“每次只變一位”的穩(wěn)定特性。下圖是典型的二進制格雷碼和其他數(shù)碼的轉換。
請看第二列自然二進制碼從第四行(0011)變到第五行(0100)時,電位變化了3位。我們知道,數(shù)字電路中多位數(shù)碼同時發(fā)生變化是不可能的,所以變化過程中不可避免地出現(xiàn)“粗大錯誤”:即0011可能先變?yōu)?111,然后逐漸變回0100。格雷碼因為相鄰數(shù)字只變化一位從而解決了“粗大錯誤”的問題。然而,教科書往往沒有提供具體實用的公式來獲得格雷碼?;谶@種情況,本文的作者進行了深入研究,總結并提出了三種具體獲取格雷碼的方式,使初學者能夠簡單正確地獲取格雷碼。同時,作者通過JAVA編程語言實現(xiàn)這一轉換過程[核心代碼參見III]并提供了GUI,擁有更好的用戶交互體驗,可以將任意非負整數(shù)轉換成格雷碼。本文的研究是結合概念分析(卡諾圖的原理和基本門電路的計算)和編程實現(xiàn)。
對于數(shù)字電路的初學者,常常接觸諸如二,八,十六進制,格雷碼等數(shù)字系統(tǒng)和轉化。每種編碼都有優(yōu)點和適用范圍。除格雷碼外,大部分的進制轉換規(guī)則相似,所以初學者往往對格雷碼感到陌生,不能快速準確處理格雷碼。所以本文總結了三種方法準確快速獲取格雷碼。
一、圖形觀察法:基于卡諾圖原理
對于n變量代數(shù),我們通過卡諾圖得以簡化。下面以四變量卡諾圖為例。(表格1)
通常,我們學習卡諾圖僅僅是為了進一步地簡化操作。但實際上它為我們提供了更多的信息。如果嘗試從0000按照S型順序:
0000-0001-0011-0010-0110-0111-0101-0100-1100-1101-1111-1110-1010-1011-1001-1000的方向,所得到的結果序列就是對應的十進制數(shù)字0—15。
這種方法的提出是基于概念的支持。由于格雷碼是使錯誤最小化的轉換,相鄰值僅改變1位,因此該方法從該設計理念中受益。所以這是獲取格雷碼的最簡便的方法。優(yōu)點是無須掌握額外的技能,只需要掌握卡諾圖的書寫技能。
當我們嘗試將卡諾圖拓展到五變量的時候,會發(fā)現(xiàn)雖然畫卡諾圖效率較低,但依然可以得出正確的與卡諾圖對應的十進制數(shù)字。(表格2)
這次我們效仿上述方法,直接將十進制數(shù)字按照S型填入卡諾圖,我們便可以直接獲得格雷碼和十進制數(shù)字的轉化關系。比如:格雷碼“01000”對應十進制的15,十進制的“22”對應格雷碼“11101”。
然而,繪制卡諾圖的過程降低了有效性。因此本文提供了第二種方法。
二、邏輯代數(shù):通過應用異或門電路
方法一給出的策略是簡單的,但隨著位數(shù)的增加效率會降低。因此掌握代數(shù)運算是至關重要的。
規(guī)定如下:(表格3)
Bi=Gi?茌Bi+1(n-1≥i≥0)
(G:格雷碼 B:二進制碼)
采取如下規(guī)則:給定隨機二進制碼,第一位數(shù)字保持相同,通過異或運算將第二位與第一位進行比較,為真則第二位標記1,否則標記0。同理比較第三位和第二位,直到最后一位。簡言之,我們將第(i+1)位與第i位進行比較,如果它們相同,則標記為0,如果不同則標記為1。通過此方法我們可以簡單又快速地由任意二進制數(shù)快速獲取對應的格雷碼。
現(xiàn)如今隨著計算機科學的發(fā)展,計算機逐步融入人們的生活,所以本文作者基于上述異或門電路原理通過JAVA GUI進行了開發(fā)。
三、基于Java編程語言開發(fā)的GUI界面
由于JAVA具有友好的交互界面和通用性的特點,因此采用了JAVA來實現(xiàn)編程。在圖形界面中,用戶可以通過鍵盤任意輸入一個十進制數(shù)的非負整數(shù)然后點擊轉換按鈕,界面將直接呈現(xiàn)出對應的格雷碼。
核心算法如下:
四、結論
本文總結出三種二進制碼和格雷碼的轉換方式,讀者可根據(jù)自己的理解選擇最適合自己的方法。第一種方法提供了準確的解法,第二種方法最高效,而最后的JAVA圖形界面是最實用的。希望這項研究能為初學者深入了解格雷碼打下堅實基礎。
參考文獻:
[1]John F.Wakerly,[Digital Design:Principles and Practices],F(xiàn)ourth-Edition,Pearson-Education.Inc,China Machine Press,2007.
[2]M.Morris Mano and Michael D.Ciletti,[Digital Design],F(xiàn)ourth Edition,Pearson-Education.Inc,Publishing House of Electronics Industry.
[3]胡福云.巧用卡諾圖記憶格雷碼[J].電子制作,2013,(13).
[4]胡錦.數(shù)字電路與邏輯設計[M].北京:高等教育出版,2005.