雙凱+蔡洪明
摘 要: 大規模可編程邏輯器件的應用已經為數字系統的設計帶來了極大的靈活性。標準化邏輯設計語言的引入,極大地改變了傳統的數字系統設計方法、設計過程和設計觀念。作為大學的技術基礎教學環節,應做出相應的調整。分別通過組合邏輯和時序邏輯設計實例比較了傳統設計方法存在的問題和現代邏輯設計方法的優勢。通過對比可以看到,現代邏輯設計技術取代傳統的數字系統設計方法而成為數字電路設計的主流,是電子技術發展的必然趨勢。
關鍵詞: 數字電路設計; 現代數字邏輯設計方法; 數字電路教學改革; 轉換真值表
中圖分類號: TN710?34; TP302.1 文獻標識碼: A 文章編號: 1004?373X(2014)07?0139?04
Research on the necessity of change in digital circuit design method
based on CPLD/FPGA
SHUANG Kai, CAI Hong?ming
(College of Geophysics and Information Engineering, China University of Petroleum (Beijing), Beijing 102249, China)
Abstract: Application of large?scale programmable logic device has brought great flexibility to digital system design. The introduction of standard logic design language has greatly changed the design method, design process and design concepts of traditional digital system. As a technical foundation teaching link in the university, it should be adjusted accordingly. The problems of the traditional design approach and advantages of modern logic design methods are compared through the combinational logic and sequential logic design examples. By contrast, the modern logic design techniques has replaced the traditional method of digital system design and become the mainstream of the digital circuit design, which is the inevitable trend of development of electronic technology.
Keyword: digital circuit design; modern digital logic design method; digital circuit teaching reform; conversion truth table
0 引 言
20世紀90年代,國際上電子和計算機技術較為先進的國家,一直在積極探索新的電子電路設計方法,并在設計方法、工具等方面進行了徹底的變革,取得了巨大成功。在電子技術設計領域,可編程邏輯器件(如CPLD、FPGA)的應用,已得到廣泛的普及,這些器件為數字系統的設計帶來了極大的靈活性。這些器件可以通過類似軟件編程的方式對其硬件結構和工作方式進行重構,從而使硬件設計像軟件設計那樣方便快捷。這就極大地改變了傳統的數字系統設計方法、設計過程和設計觀念,促進了數字邏輯電路設計技術的迅速發展。本文通過幾個設計實例的對比闡述一個道理,隨著數字電路中先進設計方法的引入,高等學校中數字電子技術的教學內容必須隨之得到改善,使之與技術進步相互適應[1?3]。
數字電路根據邏輯功能的特點,分成兩類,一類叫組合邏輯電路(簡稱組合電路),另一類是時序邏輯電路(簡稱時序電路)。組合邏輯電路在邏輯功能上的特點是任意時刻的輸出僅取決于該時刻的輸入,與電路初態無關。而時序邏輯電路任意時刻的輸出不僅取決于當時的輸入信號,還取決于電路原來的狀態。本文從這兩方面就傳統手工設計存在的問題進行討論。
1 組合邏輯設計中傳統設計方法與可編程邏輯
設計方法的對比
列真值表,邏輯關系式,邏輯化簡是組合邏輯設計的幾個重要步驟。但這一經典的組合邏輯設計步驟并不總是必須的。實現特定邏輯功能的邏輯電路也是多種多樣的。為了使邏輯電路的設計更簡潔,通過各種方法對邏輯表達式進行化簡是必要的。組合電路設計就是用最簡單的邏輯電路實現給定邏輯表達式。在滿足邏輯功能和技術要求基礎上,力求電路簡單、可靠。實現組合邏輯函數可采用基本門電路,也可采用中、大規模集成電路。
例1:三個人表決一件事情,結果按“少數服從多數”的原則決定這一邏輯問題[4?5]。在“三人表決”問題中,將三個人的意見分別設置為邏輯變量A、B、C,只能有同意或不同意兩種意見。將表決結果設置為邏輯函數F,結果也只有“通過”與“不通過”兩種情況。
傳統的邏輯設計需要由下面的4個步驟完成:
(1) 列真值表
對于邏輯變量A、B、C,設同意為邏輯1,不同意為邏輯0。對于邏輯函數F,設表決通過為邏輯1,不通過為邏輯0。
根據“少數服從多數”的原則,將輸入變量不同取值組合與函數值間的對應關系列成表,得到函數的真值表如表1所示。
表1 例1的真值表(共有23=8行)
[A\&B\&C\&F\&0\&0\&0\&0\&0\&0\&1\&0\&0\&1\&0\&0\&0\&1\&1\&1\&1\&0\&0\&0\&1\&0\&1\&1\&1\&1\&0\&1\&1\&1\&1\&1\&]
(2) 列邏輯函數表達式
三人表決器的邏輯表達式為:
[F=ABC+ABC+ABC+ABC] (1)
設N為上式中的邏輯項數,這時,共有邏輯項[N=C23+C33=4]項。
(3) 邏輯化簡
三人表決器的邏輯表達式可化簡為:
[F=BC+AC+AB]
(4) 畫出邏輯電路圖如圖1所示。
盡管上面的分析看上去沒有錯誤,但上例中的“三人表決器”設計給學生一個誤導,好像按照上述的設計步驟就可以進行組合邏輯設計了。可以推導,若表決人數用[p]來表示,邏輯表達式的項數為[Np=k=p2+1pCkp,]其中[Ckp]為邏輯項的組合數。以[p=7]為例,這時表1中的表項為27=128項,式(1)中的邏輯項數N變為[N7=C47+C57+C67+C77=64]。
圖1 例1的邏輯圖
顯然,隨著表決者數量的增加,邏輯項數急劇增加,真值表不易繪制,邏輯公式無法手工書寫,邏輯化簡也非常困難。
多數表決器的邏輯公式由于過多的項數不易采用公式法化簡。如果采用卡諾圖化簡法也會因輸入變量過多而導致傳統化簡方法失效。
標準邏輯設計語言的出現給大規模邏輯設計帶來了新的希望。硬件描述語言(HDL)的采用可以使設計者的精力集中于所設計的邏輯本身,不必過多的考慮如何實現這個邏輯以及需要用哪些定型的邏輯模塊。這在以往中小規模集成電路邏輯設計與大規模可編程邏輯設計方法上產生了本質的差別。Verilog是一種以文本形式來描述數字系統硬件結構和行為的語言,用它可以表示邏輯電路圖、邏輯表達式,還可以表示數字邏輯系統所完成的邏輯功能。在此,用Verilog設計一個“七人表決”邏輯,以考察采用現代邏輯設計方法較傳統設計方法的優勢。
在表決器的設計中,關鍵是對輸入變量中為1的表決結果進行計數,如果把全部的邏輯狀態列表分析,勢必存在冗余的設計資源。根據多數表決的性質,考慮采用加法邏輯來統計表決結果,之后再判決加法器輸出中1的個數即可實現該邏輯。Verilog設計如圖2所示。
圖2 七人表決的Verilog邏輯
在“七人表決”邏輯中,不再專注于每個邏輯變量狀態的變化,只抓住關鍵問題多數表決有效,并用條件操作符“?”設計出所需的Verilog行為邏輯,剩下的實現問題交由計算機綜合(synthesis)。可以看到,采用標準化的硬件描述語言,能有效地避開以往組合邏輯設計中逐一考察每個輸入邏輯狀態所帶來的邏輯狀態分析的爆炸,從而可以用較短的設計時間得到正確的邏輯輸出。眾所周知,加法器、比較器都是傳統的組合邏輯教學內容,但以往的教學中由于采用手工分析方法,很難把這些不同的邏輯設計內容綜合考慮進來。筆者認為,現代邏輯設計方法的引入將逐漸轉化人們對傳統邏輯設計中的關注點,勢必引起邏輯設計教學方法的更新。有必要加大邏輯功能綜合設計的內容,減少元器件級邏輯單元選型在教學中的比例。
2 時序邏輯設計中傳統設計方法與現代可編程
邏輯設計方法的對比
數字電路的另一類設計內容是時序邏輯設計。時序邏輯設計分為同步與異步時序邏輯設計。一般地,同步時序邏輯設計的難度要高于異步時序邏輯。因此,也在時序邏輯電路設計上占有較多的學時。如果在教學改革中僅把可編程邏輯設計作為傳統時序邏輯設計內容的補充,不但不能使學生體會到先進的計算機輔助邏輯設計所帶來的便捷,還可能使學生按照傳統的手工時序邏輯設計步驟去理解可編程時序邏輯,導致時序邏輯設計的復雜化,增加邏輯驗證的成本。因此,有必要探討傳統設計方法與現代邏輯設計方法之間的差別。下面根據一個典型的時序邏輯設計來說明。
例2:試設計一個序列編碼檢測器[6?7],當檢測到輸入信號出現110序列時,電路輸出1,否則輸出0。
這個序列編碼檢測器如果按照傳統的時序設計步驟,將會異常繁瑣:
(1) 由給定的邏輯功能建立原始狀態圖和原始狀態表
從給定的邏輯功能可知,電路有一個輸入信號A和一個輸出信號Y,電路功能是對輸入信號A的編碼序列進行檢測,一旦檢測到信號A出現連續編碼為110的序列時,輸出為1,檢測到其他編碼序列時,輸出為0。
設電路的初始狀態為a,如圖3中箭頭所指。在此狀態下,電路輸出[Y=0,]這時可能的輸入有[A=0]和[A=1]兩種情況。當CP脈沖相應邊沿到來時,若[A=0,]則是收到0,應保持在狀態a不變;若[A=1,]則轉向狀態[b,]表示電路收到一個1。當在狀態[b]時,若輸入[A=0,]則表明連續輸入編碼為10,不是110,則應回到初始狀態[a,]重新開始檢測;若[A=1,]則進入狀態[c,]表示已連續收到兩個1。在狀態[c]時,若A=0,表明已收到序列編碼110,則輸出[Y=1,]并進入狀態d;若[A=1,]則收到的編碼為111,應保持在狀態[c]不變,看下一個編碼輸入是否為[A=0;]由于尚未收到最后的0,故輸出仍為0。在狀態[d,]若輸入[A=0,]則應回到狀態[a,]重新開始檢測;若[A=1,]電路應轉向狀態[b,]表示在收到110之后又重新收到一個1,已進入下一輪檢測;在[d]狀態下,無論[A]為何值,輸出[Y]均為0。根據上述分析,可以得出如圖3所示的原始狀態圖和表2所示的原始狀態表。
圖3 例2的原始狀態圖
表2 例2的原始狀態表
[現態
[(Sn)]\&次態/輸出[Sn+1Y]\&現態
[(Sn)]\&次態/輸出[Sn+1Y]\&[A=0]\&[A=1]\&[A=0]\&[A=1]\&[a]
[b]\&[a/0]
[a/0]\&[b/0]
[c/0]\&[c]
[d]\&[d1]
[a/0]\&[c/0]
[b/0]\&]
(2) 狀態化簡
觀察表2現態欄中[a]和[d]兩行可以看出,當[A=0]和[A=1]時,分別具有相同的次態[a、][b]及相同的輸出0,因此,[a]和[d]是等價狀態,可以合并。最后得到化簡后的狀態表,見表3。
表3 例2經化簡的狀態表
[現態
[(Sn)]\&次態/輸出[Sn+1Y]\&現態
[(Sn)]\&次態/輸出[Sn+1Y]\&[A=0]\&[A=1]\&[A=0]\&[A=1]\&[a]
[b]\&[a/0]
[a/0]\&[b/0]
[c/0]\&[c]
\&[a1]
\&[c/0]
\&]
(3) 狀態分配
化簡后的狀態有三個,可以用2位二進制代碼組合(00,01,10,11)中的任意三個代碼表示,用兩個觸發器組成電路。觀察表3,當輸入信號A=1時,有a→b→c的變化順序,當A=0時,又存在c→a的變化。綜合兩方面考慮,這里采取00→01→11→00的變化順序,會使其中的組合電路相對簡單。于是,令a=00,b=01,c=11,得到狀態分配后的狀態圖,如圖4所示。
圖4 例2狀態分配后的狀態圖
(4) 選擇觸發器類型
這里選用邏輯功能較強的JK觸發器可以得到較簡化的組合電路。
(5) 確定激勵方程組和輸出方程組
用JK觸發器設計時序電路時,電路的激勵方程需要間接導出。表4所示的JK觸發器特性表提供了在不同現態和輸入條件下所對應的次態。而在時序電路設計時,狀態表已列出現態到次態的轉換關系,希望推導出觸發器的激勵條件。所以需將特性表做適當變換,以給定的狀態轉換為條件,列出所需求的輸入信號,稱為激勵表。根據表4建立的JK觸發器激勵表如表5所示。表中的[x]表示其邏輯值與該行的狀態轉換無關。
表4 JK觸發器特性表
[[Qn]\&[J]\&[K]\&[Qn+1]\&[Qn]\&[J]\&[K]\&[Qn+1]\&0\&0\&0\&0\&1\&0\&0\&1\&0\&0\&1\&0\&1\&0\&1\&0\&0\&1\&0\&1\&1\&1\&0\&1\&0\&1\&1\&1\&1\&1\&1\&0\&]
表5 JK觸發器的激勵表
[[Qn]\&[Qn+1]\&[J]\&[K]\&[Qn]\&[Qn+1]\&[J]\&[K]\&0\&0\&0\&[x]\&1\&0\&[x]\&1\&0\&1\&1\&[x]\&1\&1\&[x]\&0\&]
根據圖4和表5可以列出狀態轉換真值表及兩個觸發器所要求的激勵信號,見表6。
表6 例2的狀態轉換真值表及激勵信號
[[Qn1]\&[Qn0]\&[A]\&[Qn+11]\&[Qn+10]\&[Y]\& 激勵信號\&[J1]\&[K1]\&[J0]\&[K0]\&0\&0\&0\&0\&0\&0\&0\&[x]\&0\&[x]\&0\&0\&1\&0\&1\&0\&0\&[x]\&1\&[x]\&0\&1\&0\&0\&0\&0\&0\&[x]\&[x]\&1\&0\&1\&1\&1\&1\&0\&1\&[x]\&[x]\&0\&1\&1\&0\&0\&0\&1\&[x]\&1\&[x]\&1\&1\&1\&1\&1\&1\&0\&[x]\&0\&[x]\&0\&]
據此,分別畫出兩個觸發器的輸入J、K和電路輸出Y的卡諾圖,如圖5所示。圖中,不使用的狀態均以無關項x填入。
圖5 激勵信號及輸出信號的卡諾圖
化簡后得到激勵方程組和輸出方程。
[J1=Q0AK1=AJ0=AK0=AY=Q1A]
(6) 畫出邏輯圖,并檢查自啟動能力
根據激勵方程組和輸出方程畫出邏輯圖,如圖6所示。
圖6 例2的邏輯圖
如果發現所設計的電路不能自啟動,還應修改設計,直到能自啟動為止。
由上面所列舉的設計方法可以想見,繼續增加檢測位數會使邏輯設計更加復雜。
從上例可以看到,傳統的時序邏輯設計方法盡管可以用來實現時序邏輯的設計,但設計步驟不僅復雜且需要設計者大費周折。可以預見,使用傳統的時序邏輯設計方法設計復雜時序電路的難度很大。那么,采用什么方法才能使教學與現代邏輯設計技術接軌呢?
時序電路也被稱為有限狀態機(FSM)[6,8],因為它們的功能行為可以用有限的狀態個數來表示。在與可編程邏輯設計的對比分析中,這里采用FSM設計這個序列檢測器。
根據圖3的狀態轉換圖(采用圖4中化簡的狀態轉換圖亦可),給邏輯狀態[a,b,c,d]分別分配以Gray編碼(00,01,11,10)。之所以采用Gray編碼方法,是可以省掉序列檢測中的計數檢測。序列檢測器的FSM邏輯如圖7所示。經仿真驗證,符合設計要求。
圖7 例2的FSM實現
從上面的對比可以看出,傳統時序邏輯設計以人工邏輯分析為基礎,現有邏輯器件為基礎構件,歷經基本邏輯方程轉換及最后的狀態驗證等多個環節,設計周期長,僅適合設計小規模、時序簡單的邏輯單元[9];現代標準邏輯設計語言的設計方法以邏輯狀態轉換本身為要點,從邏輯門與觸發器級邏輯設計上升的行為邏輯設計,更易于用來設計復雜的現代大規模時序邏輯。
3 結 論
現代邏輯設計方法的引入將逐漸轉化人們對傳統邏輯設計的關注點,大學基礎教學中邏輯電路的設計方法也應隨著這一技術的引入更新它的內容,改變傳統邏輯設計占主導地位的現狀。可以預見,大規模可編程邏輯器件的引入將會從根本上改變數字電子技術的教學模式。現代邏輯設計概念的引入,減少手工邏輯設計方法的比重、增加現代數字電路設計方法,注重基本概念的靈活運用都是數字電路教學改革的選題。廣泛開展現代邏輯設計方法的研究,勢必帶來邏輯設計方法教學的變革。對于高等學校的教師來說,做好改革的思想準備已經是刻不容緩的了。
參考文獻
[1] 鮑家元,毛文林.數字邏輯[M].北京:高等教育出版社,2002.
[2] 呂樂,楊愛琴.談《數字電路與邏輯設計》課程教學改革[J].中國成人教育,2008(3):125?127.
[3] 李小珉,葉曉慧.深化《數字電路與邏輯設計》課程改革[J].長江大學學報:自科版,2004,1(4):124?125.
[4] 侯建軍,路而紅,熊華剛,等.數字電子技術基礎[M].2版.北京:高等教育出版社,2007.
[5] 易亞軍.《數字電子技術》教學研究[J].教育研究,2008(6):121?122.
[6] 康華光,鄒壽彬,秦臻.電子技術基礎:數字部分[M].5版.北京:高等教育出版社,2006.
[7] 鄧水先.《數字邏輯電路》課程的教改探索[J].職業教育研究,2008(8):68?69.
[8] 鄧元慶,賈鵝.數字電路與系統設計[M].西安:西安電子科技大學出版社,2003.
[9] BROWN Stephen, VRANESIC Zvonko.數字邏輯基礎與Verilog設計[M].夏宇聞,譯.2版.北京:機械工業出版社,2008.
根據圖3的狀態轉換圖(采用圖4中化簡的狀態轉換圖亦可),給邏輯狀態[a,b,c,d]分別分配以Gray編碼(00,01,11,10)。之所以采用Gray編碼方法,是可以省掉序列檢測中的計數檢測。序列檢測器的FSM邏輯如圖7所示。經仿真驗證,符合設計要求。
圖7 例2的FSM實現
從上面的對比可以看出,傳統時序邏輯設計以人工邏輯分析為基礎,現有邏輯器件為基礎構件,歷經基本邏輯方程轉換及最后的狀態驗證等多個環節,設計周期長,僅適合設計小規模、時序簡單的邏輯單元[9];現代標準邏輯設計語言的設計方法以邏輯狀態轉換本身為要點,從邏輯門與觸發器級邏輯設計上升的行為邏輯設計,更易于用來設計復雜的現代大規模時序邏輯。
3 結 論
現代邏輯設計方法的引入將逐漸轉化人們對傳統邏輯設計的關注點,大學基礎教學中邏輯電路的設計方法也應隨著這一技術的引入更新它的內容,改變傳統邏輯設計占主導地位的現狀。可以預見,大規模可編程邏輯器件的引入將會從根本上改變數字電子技術的教學模式。現代邏輯設計概念的引入,減少手工邏輯設計方法的比重、增加現代數字電路設計方法,注重基本概念的靈活運用都是數字電路教學改革的選題。廣泛開展現代邏輯設計方法的研究,勢必帶來邏輯設計方法教學的變革。對于高等學校的教師來說,做好改革的思想準備已經是刻不容緩的了。
參考文獻
[1] 鮑家元,毛文林.數字邏輯[M].北京:高等教育出版社,2002.
[2] 呂樂,楊愛琴.談《數字電路與邏輯設計》課程教學改革[J].中國成人教育,2008(3):125?127.
[3] 李小珉,葉曉慧.深化《數字電路與邏輯設計》課程改革[J].長江大學學報:自科版,2004,1(4):124?125.
[4] 侯建軍,路而紅,熊華剛,等.數字電子技術基礎[M].2版.北京:高等教育出版社,2007.
[5] 易亞軍.《數字電子技術》教學研究[J].教育研究,2008(6):121?122.
[6] 康華光,鄒壽彬,秦臻.電子技術基礎:數字部分[M].5版.北京:高等教育出版社,2006.
[7] 鄧水先.《數字邏輯電路》課程的教改探索[J].職業教育研究,2008(8):68?69.
[8] 鄧元慶,賈鵝.數字電路與系統設計[M].西安:西安電子科技大學出版社,2003.
[9] BROWN Stephen, VRANESIC Zvonko.數字邏輯基礎與Verilog設計[M].夏宇聞,譯.2版.北京:機械工業出版社,2008.
根據圖3的狀態轉換圖(采用圖4中化簡的狀態轉換圖亦可),給邏輯狀態[a,b,c,d]分別分配以Gray編碼(00,01,11,10)。之所以采用Gray編碼方法,是可以省掉序列檢測中的計數檢測。序列檢測器的FSM邏輯如圖7所示。經仿真驗證,符合設計要求。
圖7 例2的FSM實現
從上面的對比可以看出,傳統時序邏輯設計以人工邏輯分析為基礎,現有邏輯器件為基礎構件,歷經基本邏輯方程轉換及最后的狀態驗證等多個環節,設計周期長,僅適合設計小規模、時序簡單的邏輯單元[9];現代標準邏輯設計語言的設計方法以邏輯狀態轉換本身為要點,從邏輯門與觸發器級邏輯設計上升的行為邏輯設計,更易于用來設計復雜的現代大規模時序邏輯。
3 結 論
現代邏輯設計方法的引入將逐漸轉化人們對傳統邏輯設計的關注點,大學基礎教學中邏輯電路的設計方法也應隨著這一技術的引入更新它的內容,改變傳統邏輯設計占主導地位的現狀。可以預見,大規模可編程邏輯器件的引入將會從根本上改變數字電子技術的教學模式。現代邏輯設計概念的引入,減少手工邏輯設計方法的比重、增加現代數字電路設計方法,注重基本概念的靈活運用都是數字電路教學改革的選題。廣泛開展現代邏輯設計方法的研究,勢必帶來邏輯設計方法教學的變革。對于高等學校的教師來說,做好改革的思想準備已經是刻不容緩的了。
參考文獻
[1] 鮑家元,毛文林.數字邏輯[M].北京:高等教育出版社,2002.
[2] 呂樂,楊愛琴.談《數字電路與邏輯設計》課程教學改革[J].中國成人教育,2008(3):125?127.
[3] 李小珉,葉曉慧.深化《數字電路與邏輯設計》課程改革[J].長江大學學報:自科版,2004,1(4):124?125.
[4] 侯建軍,路而紅,熊華剛,等.數字電子技術基礎[M].2版.北京:高等教育出版社,2007.
[5] 易亞軍.《數字電子技術》教學研究[J].教育研究,2008(6):121?122.
[6] 康華光,鄒壽彬,秦臻.電子技術基礎:數字部分[M].5版.北京:高等教育出版社,2006.
[7] 鄧水先.《數字邏輯電路》課程的教改探索[J].職業教育研究,2008(8):68?69.
[8] 鄧元慶,賈鵝.數字電路與系統設計[M].西安:西安電子科技大學出版社,2003.
[9] BROWN Stephen, VRANESIC Zvonko.數字邏輯基礎與Verilog設計[M].夏宇聞,譯.2版.北京:機械工業出版社,2008.