褚馨怡 辛佳宇 秦嘉琦 劉峰良
(南昌大學理學院物理系 江西省南昌市 330031)
當今是高度信息化的時代,信息化與國民經(jīng)濟生活和工業(yè)生產(chǎn)的各個領域進行了深度融合。數(shù)字技術是信息化的關鍵技術,數(shù)字電路是數(shù)字技術的基礎課程,是數(shù)字技術從業(yè)人才專業(yè)知識的啟蒙課程,是構建信息化創(chuàng)新人才專業(yè)知識體系的基石。因而,在數(shù)字電路教學中開展教學改革創(chuàng)新,夯實理論基礎,強化實驗動手能力,增強理論聯(lián)系實踐的自主創(chuàng)新設計能力成為了新時代高校數(shù)字電路課程教學與改革的關鍵[1]。南昌大學理學院物理系教師劉峰良自2020年秋開展應用物理學本科專業(yè)課程《數(shù)字電路》教學改革研究,注重一體化理論知識體系構建,注重課程理論與項目設計實踐相結合,引入了課程項目設計,充分發(fā)揮學生的自主性和創(chuàng)造性,鼓勵學生根據(jù)自身興趣開展課程項目設計。在完成門電路、組合邏輯電路、時序邏輯電路等基礎知識學習后,學生在授課教師指導下自主開展了BCD 碼-余三碼轉(zhuǎn)換電路設計,系統(tǒng)性研究并設計了采用不同數(shù)字電路模塊進行BCD 碼-余三碼碼制轉(zhuǎn)換電路的方法并結合具體電路設計與測試開展了電路復雜度和電路功耗分析。
人們在日常生活中常采用十進制計數(shù),而電腦系統(tǒng)多采用二進制計數(shù)系統(tǒng)[2]。在進行人機交流中,許多設備不能直接輸入和顯示十進制數(shù),需進行碼制轉(zhuǎn)換。這是通訊系統(tǒng)設計過程中經(jīng)常遇到的一種信息處理方式,其中常常借助BCD 碼(一種用4 位二進制碼表示的十進數(shù),常用于匯編程序的開發(fā)和人機交流)[3]。會計系統(tǒng)中也大多采用BCD 碼對大量多位數(shù)據(jù)進行存儲計算;相較于浮點數(shù)計數(shù)法,BCD 碼的運用不僅能保存數(shù)值的精確度,還能縮短電腦運算時間;而對于其他需要高精確度的計算,BCD 編碼也大有用處[3]。但是在BCD 碼的運算電路中,BCD 碼難以進位,通常需要借助余三碼。余三碼的運算能自動進位,可以正確產(chǎn)生進位信號,而且還給減法運算帶來了方便[4]。BCD 碼與余三碼的轉(zhuǎn)換將便利數(shù)制轉(zhuǎn)換和計算,提高工作效率與準確度[5]。
BCD 碼是十進制代碼中最常用的一種,由于代碼中從左到右的每位數(shù)碼權值分別為8、4、2、1,所以也稱這種代碼為8421 碼,8421 碼中每一位的權值是固定不變的,它屬于恒權代碼[6]。
余三碼是由BCD 碼加上0011 形成的一種無權碼。由于它的數(shù)值要比它所表示的十進制碼多3,故稱為余三碼[4]。余3 碼的每一位在不同代碼中并不代表固定數(shù)值,其主要特點是相鄰的兩個代碼之間僅有一位的狀態(tài)不同[5]。
門電路是最基本的數(shù)字電路單元。常用的門電路有與門、或門、非門、與非門、或非門、異或門和同或門。非門是單輸入門電路,其他邏輯門電路有多個輸入端口:分為兩輸入、三輸入,少部分有四輸入。在實現(xiàn)相同邏輯功能條件下,輸入端口越多,電路的輸入寄生參數(shù)越大,延時相對越大;輸入端口多,相對而言,所需的電路級數(shù)較少,電路復雜度更低[7]。因此,在電路設計中,需要根據(jù)實際情況協(xié)調(diào)輸入端口扇入系數(shù)和電路級數(shù),以協(xié)調(diào)電路延時、功耗和復雜度等問題。四輸入門電路輸入端口多,實現(xiàn)多輸入門電路邏輯相對簡單,但是帶來的扇入系數(shù)大、延時大也成為制約性因素,因此一般設計中用的比較少,而兩輸入和三輸入邏輯門比較常用。在此原則指導下,我們采用兩輸入與非門74LS00、三輸入與非門74LS10、四輸入與非門74LS20 芯片完成了門電路的相應設計。
根據(jù)BCD 碼-余三碼轉(zhuǎn)換原理和門電路功能的實現(xiàn)方式,采用真值表和卡諾圖化簡的方法,進行邏輯化簡,得到每一位的邏輯表達式,再利用德摩根定理,結合邏輯與門和非門功能,將表達式轉(zhuǎn)換成與非形式(A,B,C,D 依次對應余三碼由高位至低位,B8,B4,B2,B1 依次對應BCD 碼由高位至低位):
根據(jù)化簡的與非表達式,選擇相對應的輸出端口連接到與非門的輸入端口,即可完成每一位電路設計,實現(xiàn)BCD 碼到余三碼的轉(zhuǎn)換。
組合邏輯電路是數(shù)字電路的重要模塊,是由一定數(shù)量(幾十到幾百)的基本門電路構成的能夠?qū)崿F(xiàn)一定功能的邏輯模塊[8]。因其邏輯模塊多、功能各異、設計方法也有較大區(qū)別,集數(shù)字邏輯化簡基本功和邏輯設計技巧于一體,因而組合邏輯電路教學也是數(shù)字電路教學的難點。常用的組合邏輯電路包括譯碼器、數(shù)據(jù)選擇器、半加器和全加器,其中全加器又分為串行進位加法器和超前進位加法器。組合邏輯設計部分教學與課程設計實踐要充分考慮到不同組合電路模塊的差異,在理論教學中充分講清楚各個組合邏輯模塊的差異與聯(lián)系,及其功能演化關聯(lián);并且,通過課程項目設計將理論知識充分融入到項目實踐中。我們在授課教師指導下探索嘗試了采用幾種不同組合邏輯電路完成BCD 碼-余三碼轉(zhuǎn)換電路設計。下面將分別簡要介紹采用譯碼器、數(shù)據(jù)選擇器、串行進位加法器和超前進位加法器設計實現(xiàn)BCD 碼-余三碼轉(zhuǎn)換電路的方法。
2.2.1 基于譯碼器的BCD碼-余三碼轉(zhuǎn)換電路設計
譯碼器是能夠?qū)崿F(xiàn)特定碼制轉(zhuǎn)換輸出的一種基本組合邏輯電路,常用的譯碼器有2-4 譯碼器和3-8 譯碼器;以此為基礎還可以構成4-16 譯碼器,或者是5-32 譯碼器。更多輸入-輸出端口數(shù)的譯碼器因其存在電路連線復雜、延時大等問題,因而在實際的系統(tǒng)級外圍電路設計中用的較少。對于更復雜的譯碼功能需求,常用陣列式譯碼電路,或者是采用CPLD 或者FPGA 進行譯碼功能配置。例如在真空濺射監(jiān)控顯示系統(tǒng)等開發(fā)項目中,人們可使用CPLD 將8421 碼撥碼開關驅(qū)動與7 段數(shù)碼管驅(qū)動有機結合,實現(xiàn)譯碼[9]。本設計中采用了74LS138 譯碼器設計實現(xiàn),由于74LS138 單片只能實現(xiàn)3-8 譯碼器,而BCD 碼每位對應10 個數(shù),因此采用2 片74LS138 級聯(lián)擴展成4-16 譯碼器,其中有6 位非法碼,采用外接LED 實現(xiàn)非法碼報警設計。
根據(jù)上述的碼制轉(zhuǎn)換電路輸出的真值表和邏輯表達式,寫出對應的最小項表達式并轉(zhuǎn)換成與非形式(A,B,C,D 依次對應余三碼由高位至低位,B8,B4,B2,B1 依次對應BCD 碼由高位至低位,m*表示BCD 碼對應的最小項:m0=0000、m1=0001、m2=0010、m3=0011、m4=0100、m5=0101、m6=0110、m7=0111、m8=1000、m9=1001、m10=1010、m11=1011、m12=1100、m13=1101、m14=1110、m15=1111,其中m10-m15為非法碼):
根據(jù)化簡的與非表達式,選擇相對應的譯碼輸出端口連接到與非門輸入端口,即可設計完成每一位電路設計,實現(xiàn)BCD 碼到余三碼的轉(zhuǎn)換。
2.2.2 基于串行進位加法器的BCD碼-余三碼轉(zhuǎn)換電路設計
采用譯碼器和數(shù)據(jù)選擇器這2 種組合邏輯門電路設計實現(xiàn)BCD 碼-余三碼轉(zhuǎn)換電路比采用門電路設計實現(xiàn)更加簡單易懂,但是還是涉及到級聯(lián)和擴展的問題,需要更多的外部連線,會引起系統(tǒng)延時問題。為此,我們根據(jù)碼制轉(zhuǎn)換的特點,采用加法器組合模塊來完成功能設計,解決了外部連線復雜和因引線較多帶來的延時問題。
采用串行進位加法器芯片74LS183 進行電路設計,已知BCD碼和余三碼的邏輯關系式:
4 位BCD 碼+0011=4 位余三碼
可將BCD 碼作為被加數(shù),固定電平(0011)作為加數(shù)由低位至高位進行串行加法運算。串行加法器的A1 端輸入BCD 碼,B1端輸入固定電平(0011)對應位,CN1 端作進位輸入端,ICV1 端作進位輸出端,S1 端輸出轉(zhuǎn)換后的余三碼各位(A 高位,D 低位),電路設計如圖1所示。
圖1:串行進位加法器的碼制轉(zhuǎn)換電路邏輯圖
2.2.3 基于超前進位加法器的BCD碼-余三碼轉(zhuǎn)換電路設計
串行進位加法器的進位信號是逐位依次傳播的,因此最高位的進位存在較大的延時信號。為了進一步降低進位信號的延時,提升轉(zhuǎn)換速度,采用超前進位加法器替代串行進位加法器完成電路設計,超前進位加法器方案與串行進位加法器方案原理相同,轉(zhuǎn)換電路設計如圖2所示。
圖2:超前進位加法器的碼制轉(zhuǎn)換電路邏輯圖
2.2.4 基于數(shù)據(jù)選擇器的BCD碼-余三碼轉(zhuǎn)換電路設計
數(shù)據(jù)選擇器是從多個輸入數(shù)據(jù)端口選擇一個傳輸?shù)捷敵龅囊环N組合邏輯電路,常用的譯碼器有2-1 數(shù)據(jù)選擇器和4-1 數(shù)據(jù)選擇器;以此為基礎還可以構成8 選1、16 選1 數(shù)據(jù)選擇器[10]。本設計方案采用全加器原理設計實現(xiàn)相應碼制轉(zhuǎn)換。根據(jù)數(shù)據(jù)選擇器的邏輯功能,可選用雙4 選1 數(shù)據(jù)選擇器實現(xiàn)全加器。根據(jù)BCD 碼和余三碼的邏輯關系式可將BCD 碼作為被加數(shù),固定電平(0011)作為加數(shù)由低位至高位進行串行加法運算。為了更加詳細地表示輸入端口到輸出端口的邏輯分配,將相應的功能以列表的方式進行呈現(xiàn),如表1所示(A 為BCD 碼的輸入端,B 為固定電平輸入端,Ci-1作進位輸入端,Y1 為余三碼各位輸出端,Y2 為進位輸出端,P1、P2分別表示輸出端Y1、Y2 與Ci-1的關系)。
表1:數(shù)據(jù)選擇器的BCD碼-余三碼轉(zhuǎn)換電路邏輯分配真值表
輸出端口由高到低與余三碼各位一一對應,即可設計完成每一位電路設計,進而實現(xiàn)BCD 碼到余三碼的轉(zhuǎn)換,全加器邏輯表達式如下:
在實際的碼制轉(zhuǎn)換電路中,我們經(jīng)常會遇到需要持續(xù)不斷地進行碼制轉(zhuǎn)換,數(shù)據(jù)常用總線串行傳輸方式進行數(shù)據(jù)傳輸。因此,通常采用移位寄存器結合必要的外圍時序控制電路以及門電路和組合邏輯電路,設計實現(xiàn)串行-并行轉(zhuǎn)換的實時動態(tài)碼制轉(zhuǎn)換電路[11]。下面將簡要介紹采用移位寄存器和超前進位加法器進行BCD-余三碼的電路設計,其設計如圖3所示。采用了一個同步門控時鐘CLK,同時控制寄存器和全加器工作。
圖3:時序碼制轉(zhuǎn)換電路邏輯圖
仿照上述BCD 碼-余三碼電路設計方案,同樣可以實現(xiàn)余三碼-BCD 碼的電路設計,下面將詳細介紹門電路、譯碼器和超前進位加法器型余三碼-BCD 碼轉(zhuǎn)換電路設計方案。
2.4.1 門電路型余三碼-BCD 碼轉(zhuǎn)換電路
根據(jù)余三碼-BCD 碼的轉(zhuǎn)換原理和門電路功能實現(xiàn)方式,采用與BCD 碼-余三碼轉(zhuǎn)換類似的方法進行邏輯化簡,得到每一位的邏輯表達式,再利用德摩根定理,將表達式轉(zhuǎn)換成與非形式(B8,B4,B2,B1 依次對應BCD 碼由高位至低位,A,B,C,D 依次對應余三碼由高位至低位):
根據(jù)化簡的與非表達式,選擇相對應的輸出端口連接到與非門的輸入端口,即可完成每一位電路設計,實現(xiàn)余三碼到BCD 碼的轉(zhuǎn)換。
2.4.2 譯碼器余三碼-BCD 碼轉(zhuǎn)換電路
與BCD 碼-余三碼的碼制轉(zhuǎn)換電路的設計方法相同,可以根據(jù)余三碼-BCD 碼輸出的真值表和邏輯表達式,寫出對應的最小項表達式并轉(zhuǎn)換成與非形式(B8,B4,B2,B1 依次對應BCD 碼由高位至低位,A,B,C,D 依次對應余三碼由高位至低位,m*表示余三碼(包含非法碼)對應的最小項:m0=0000、m1=0001、m2=0010、m3=0011、m4=0100、m5=0101、m6=0110、m7=0111、m8=1000、m9=1001、m10=1010、m11=1011、m12=1100、m13=1101、m14=1110、m15=1111):
根據(jù)化簡的與非表達式,選用輸出低電平有效的譯碼器芯片,將相應的譯碼輸出端口連接到與非門輸入端口,即可設計完成每一位電路設計,實現(xiàn)余三碼到BCD 碼的轉(zhuǎn)換。
2.4.3 超前進位加法器雙向轉(zhuǎn)換電路
根據(jù)碼制轉(zhuǎn)換特點,可寫出BCD 碼和余三碼的邏輯關系式:
4 位BCD 碼+0011=4 位余三碼
4 位余三碼-0011(+1101)=4 位BCD 碼
不難看出兩種碼制轉(zhuǎn)換關系式相似,可以利用異或門或者同或門在同一電路中實現(xiàn)兩種碼制的雙向轉(zhuǎn)換,雙向轉(zhuǎn)換電路設計如圖4所示,采用異或門芯片74LS136 實現(xiàn)轉(zhuǎn)換過程的固定碼值變換,當轉(zhuǎn)換開關D 斷開(D=0)時,實現(xiàn)余三碼-BCD 碼轉(zhuǎn)換;轉(zhuǎn)換開關D 閉合(D=1)時,實現(xiàn)BCD 碼-余三碼轉(zhuǎn)換。
圖4:超前進位加法器雙向轉(zhuǎn)換邏輯圖
根據(jù)上述的設計思路,完成了所有電路的設計仿真,并完成了相應的實物電路搭建與調(diào)試。重點測試了其中3 種設計方案(門電路、譯碼器和超前進位加法器)的余三碼-BCD碼碼制轉(zhuǎn)換邏輯功能、輸出電平和輸出功耗。
輸入電源電壓U0=5V,輸出端口串接1kΩ 限流電阻和LED 燈,用于邏輯電平標記。選取數(shù)字0-9進行試驗,通過測量限流電阻電壓,計算得到輸出電流值;再結合實測的輸出端口電壓,計算各輸出端口的輸出功耗。
根據(jù)前述邏輯設計,將設計的邏輯電路圖采用相應芯片完成電路搭建,如圖5所示,并對各電路進行輸出測試。
圖5:余三碼-BCD 碼碼制轉(zhuǎn)換電路實物圖
對于余三碼-BCD 碼碼制轉(zhuǎn)換電路的檢驗,三個方案實驗觀測到的輸入-輸出邏輯電平與軟件仿真設計結果相同,進一步驗證了所設計的電路邏輯正確。對于輸出功率的測量,譯碼器方案出現(xiàn)數(shù)值浮動現(xiàn)象,門電路和超前進位加法器方案未出現(xiàn)異常。
根據(jù)串接于輸出端口LED 回路的限流負載電阻兩端的電壓,計算得到輸出回路電流,結合輸出端口邏輯電平電壓,計算得出各端口輸出功率。參照該方法分別得到了各個電路的輸出功率,并以輸入余三碼碼值為橫坐標,輸出功率為縱坐標,分別繪制各電路實測輸出功耗圖表,如圖6所示(不同顏色曲線所標示的B8,B4,B2,B1 依次對應由高位至低位的BCD 碼輸出端口)。
圖6:余三碼-BCD 碼碼制轉(zhuǎn)換電路實測功耗匯總圖表
綜合比較三種設計方案的功耗分析,繪制成總功耗圖表,總功耗是由4 個輸出碼位的功耗疊加而成,如圖7所示。
圖7:余三碼-BCD 碼實測總功耗圖表
通過對搭建的實際電路進行測試,發(fā)現(xiàn)如下特點。
在門電路型余三碼-BCD 碼轉(zhuǎn)換方案中,BCD 碼的輸出電壓穩(wěn)定,未出現(xiàn)數(shù)值浮動現(xiàn)象;BCD 碼各位輸出功率獨立且不隨輸入數(shù)據(jù)改變;但是BCD 碼各位輸出功率不完全相同,且存在較大差異,如B8 位的輸出功率較小。
在譯碼器型余三碼-BCD 碼轉(zhuǎn)換方案中,BCD 碼各位輸出電壓在發(fā)生狀態(tài)轉(zhuǎn)換過程中會出現(xiàn)數(shù)值浮動現(xiàn)象;B1 位電壓數(shù)值浮動幅度最大,B2 位和B4 位略微有數(shù)值浮動現(xiàn)象,而B8 位最為穩(wěn)定,無浮動現(xiàn)象。結合電路設計過程可知由于B1 位輸出表達式的與非項最多(5 項),實際電路采用了兩級與非門實現(xiàn)該邏輯,因此帶來了競爭與冒險問題,由此引發(fā)電路輸出邏輯電平的不穩(wěn)定性。此外,B1 位的輸出功率遠小于其他輸出碼位。
在超前進位加法器型余三碼-BCD 碼轉(zhuǎn)換方案中,BCD 碼各位輸出電壓數(shù)據(jù)穩(wěn)定,未出現(xiàn)數(shù)值浮動現(xiàn)象;BCD 碼各位的輸出功率相同,電路穩(wěn)定;且相比于其他方案,該方案輸出功率較小,結合電路分析可得該方案采用了超前進位加法器芯片,芯片內(nèi)部電路有較為復雜的集成模塊化設計,并且采用了輸出電流控制設計,降低了輸出負載功耗。
綜合上述三類方案的邏輯電平和輸出功耗比較分析可知:雖然從實現(xiàn)邏輯功能角度來說,三個方案都可行;但是明顯超前進位方案采用中型組合邏輯芯片進行模塊化設計,降低了電路設計復雜度,提升了電路設計效率;且由于該芯片內(nèi)部采用了相同的輸出端口設計,降低了輸出電流,提升了各個端口輸出電壓的穩(wěn)定性,降低了輸出功耗,是一種較為優(yōu)化的、適合集成化應用的設計方案。
在人機交流中,通常需進行BCD 碼-余三碼的批量碼制相互轉(zhuǎn)換,結合實際應用,可將超前進位加法器的方案進行模塊化設計,用于實現(xiàn)BCD 碼-余三碼雙向轉(zhuǎn)化專用電路設計。對于動態(tài)的碼制轉(zhuǎn)換,則應結合時序電路來解決動態(tài)碼制轉(zhuǎn)換問題,同時也能夠解決進位信號的延時問題[12]。
數(shù)字電路課程教學改革和課程項目設計實踐改革進展順利,也取得了較好的教學效果,學生在參與課程項目設計之后,對數(shù)字電路設計有了更深入的認識,尤其對于邏輯電路設計中各模塊運用更加熟練。通過項目設計,學生進一步認識到在選用數(shù)字設計設計方案時,也還應該更多的考慮實際情況(如芯片型號和數(shù)量)的限制因素,對實驗線路和方案進行簡化改進,并通過調(diào)試解決問題,最終實現(xiàn)最優(yōu)設計方案。
當然,教學改革也是一項需要不斷更新發(fā)展的工作,隨著數(shù)字集成電路和智能終端的飛速發(fā)展,數(shù)字電路教學改革也要與時俱進、不斷創(chuàng)新、不斷融入新的教學理念和新的項目設計內(nèi)容,以培養(yǎng)能夠面向新產(chǎn)業(yè)的新工科創(chuàng)新人才。