冼 進, 賴曉錚
(華南理工大學 計算機科學與工程學院, 廣州 510006)
“數字邏輯”是計算機專業硬件教學中的一門十分重要的學科基礎課,也是國家教委《高等學校計算機科學與技術專業發展戰略研究報告暨專業規范(2008)》要求的計算機科學與技術專業學生必須掌握的一門核心基礎課,是關于計算機硬件領域幾門主干課程的第一門課,學好該課程,可以為日后繼續學習計算機組成與體系結構、嵌入式系統等后續課程打下堅實的基礎。因此,上好這門課,對于計算機專業的發展和學科建設有著不可忽視的意義。
現有的數字邏輯的實驗教學與高水平大學計算機人才的培養極不相適應,面臨著巨大的挑戰:傳統的“面板插線”實驗教學方式受限于動手能力和實驗條件,學生僅能通過在實驗箱面板上插線連接去驗證實驗箱上設定功能,不能去改動實驗箱硬件電路,并且現有實驗箱上各器件之間連線錯綜復雜,每次實驗過程都要重復進行大量的連線操作,不僅實驗箱因為頻繁插拔容易損壞,而且學生在實驗過程中花費相當精力在枯燥乏味的連線、查錯等瑣事上,嚴重降低學生的學習興趣與學習效率,影響實驗教學效果。
新的數字邏輯實驗也增加了一些可編程邏輯實踐,允許學生運用硬件描述語言對可編程邏輯芯片進行數字邏輯實驗和CPU設計,靈活性比較高,可以實現工業級應用標準的復雜CPU架構設計,但這要求學生必須有較好的電子設計自動化(EDA)技術基礎和硬件描述語言編程能力[1-2]。
傳統的實踐方式是以實際元器件為基礎,手工操作來搭建實驗電路,這將帶來線路繁雜,實驗成本高,效率低,器件問題影響實驗結果等弊端[3]。為了解決這些弊端,力圖用簡單、直觀的方法,使枯燥的計算機硬件基礎知識變得直觀、形象,讓學生方便、快捷進行邏輯設計實驗,減輕學生和老師的負擔,本項目將采用電子電路仿真軟件Multisim來進行實踐,雖然Multisim里面也有8051等CPU模型,可以非常方便進行單片機和嵌入式系統的模擬仿真,但是本項目不需要用到任何現成的CPU模型,僅通過中小規模數字邏輯器件“搭積木”的方法來實現所有的實驗[4-6]。
Multisim軟件是專門用于電子電路仿真與設計的EDA工具軟件。它具有:直觀的圖形界面、豐富的元器件、強大的仿真能力、豐富的測試儀器、完備的分析手段、方便的人機交互等特點。基于這些特點,采用Multisim軟件的仿真設計可以很好地克服實際元器件搭建電路中存在的問題。數字邏輯課程已經開展了EDA技術教學和FPGA實驗多年,該課程可以看作是計算機組成原理課程的先導課程。傳統實驗教學有很多成功應用經驗,實驗項目移植到PC機進行模擬仿真實驗教學改革可行[7-9]。
在Multisim虛擬仿真軟件平臺上,繼承傳統面板插線實驗教學的“低門檻”特點,即只要掌握基本的數字邏輯電路概念,也能在虛擬環境中運用常見的中小規模邏輯器件“積木式”設計和搭建簡單的CPU;在虛擬仿真教學中也繼承可編程邏輯實驗教學一樣的高靈活性特點,在Multisim虛擬仿真環境中從簡單到復雜,有利于降低硬件基礎課的實驗門檻,提高學生對計算機硬件課程的學習興趣,增強學生的創新意識,培養學生實踐動手能力[10-13]。
采用硬件描述語言的編程方法,把傳統的數字邏輯課程驗證式實驗教學轉變為設計式實驗教學,對門電路與時序電路實驗進行虛擬仿真設計,讓學生自主設計控制器,搭建一小型計算機控制系統,深入理解計算機邏輯原理[14]。具體構建驗證性實驗,設計性實驗和創新性綜合訓練3個層次。熟悉組合邏輯電路和時序邏輯電路分析與設計,創新性綜合訓練項目在課程設計環節中進行,主要訓練學生的綜合實驗能力,設計一全周而復始的執行一系列任務的控制器[15]。
本項目擬將數字邏輯課程的實驗教學體系分成由淺入深、相互關聯的3個層次,設計一批實用性強的EDA實驗項目。
(1) Multisim虛擬仿真軟件使用。打開的Multisim如圖1所示。菜單欄位于主窗口界面上方的第2行,一共給出了12個主菜單。

圖1 Multisim設計主頁
通過這些菜單可以對Multisim所有功能進行操作。菜單中的一些功能與大多數Windows平臺上的應用軟件一致,如文件、編輯、視圖、選項、工具、幫助等菜單。此外,還有一些EDA軟件專用的選項,如繪制(放置)、MCU、仿真等。Multisim 提供了多種工具欄,并以層次化的模式加以管理,用戶可以通過視圖(View)菜單中的選項方便地將頂層的工具欄打開或關閉,再通過頂層工具欄中的按鈕來管理和控制下層的工具欄。通過工具欄,用戶可以方便直接地使用軟件的各項功能。
(2) 組合邏輯電路仿真設計。邏輯門是組合邏輯電路的基礎器件,具有1個或多個輸入端,但只有唯一的輸出。選取組合邏輯最具特色電路進行仿真設計,在解決邏輯問題時所使用標準譯碼器,常見的有2-4譯碼器(74LS139)、3-8譯碼器(74LS138)等規格。2-4譯碼器74LS139有2個輸入端(A、B),輸入編碼(00~11),對應可以選擇4個輸出端(Y0~Y3),其邏輯功能如表1所示。
74LS139譯碼器芯片功能可以用邏輯門搭建等效邏輯電路實現,如圖2所示。譯碼器邏輯屬于“若全部輸入條件都成立,輸出狀態才成立”,所以采用與非門實現(輸出端負邏輯)。
(3) 時序邏輯電路仿真設計。計數器的另一種更常見的結構設計是同步計數器,如圖3所示。所有位的JK觸發器都由同一時鐘源CLK驅動。在同步計數器中,每一位JK觸發器的狀態翻轉由J和K端的當前狀態決定;“當所有低位全1時,本位觸發器的J=K=1”。 4位同步計數器[D0,D1,D2,D3]電路中,D1位翻轉的條件是D0=1,D2位翻轉的條件是D0=D1=1(與門實現),而D3位翻轉的條件則是D2=D1=D0=1(兩個與門級聯實現)。

表1 譯碼器74LS139真值表

圖2 譯碼器74LS139及其等效邏輯電路

圖3 同步計數器的時序邏輯電路
(4) 綜合邏輯電路仿真設計。多位數據比較的方法則是先比較高位,再比較低位。當高位不等時,兩個數的比較結果就是高位的比較結果;當高位相等時,兩數的比較結果再由低位做比較。本設計的8位數據比較器電路如圖4所示,采用了2個4位比較器74LS85串行級聯的方式來實現,74LS85的真值表如表2所示,當高4位比較器U_H4B的所有比較位都相等時(Ai=Bi,i=0~3),則FAB=IA>B,即低4位74LS85比較器U_L4B比較結果從比較器U_H4B的級聯輸入端直通級聯輸出端。在比較器U_H4B級聯輸出端外接紅、黃、綠三色LED燈,分別表示A>B、A=B及A

表2 74LS85真值表

圖4 8位數據比較電路圖
(5) 控制器與微程序CPU仿真實現。仿真設計一個最小版本CPU:只有4條指令,唯一的功能是“程序跳轉”,如表3所示。

表3 CPU指令列表
“最小版本”CPU如圖5所示。由時序發生器CLOCKUNIT、微程序控制器CONTROLLUNIT和數據通路DATAPATH組成。時序發生器輸出預定的CPU時序,通過微程序控制器按時序產生操作信號,在數據通路中完成CPU的程序跳轉。

圖5 “最小版本”CPU電路圖(微程序版)
負責執行上述微程序流程的CPU部件是微程序控制器,其結構由控制存儲器、微指令寄存器、微地址寄存器和地址轉移邏輯電路組成。CPU啟動或復位后,微地址寄存器清零,控制存儲器從地址[00000]開始輸出微指令。微指令結構包括了控制字段、下址字段和判斷字段。控制字段即圖5中的微命令字段,直接輸出微操作信號執行當前微指令;下址字段鎖存在微地址寄存器,待當前微指令執行完后,再從控制存儲器取出下一條微指令。若當前微指令是取指微指令,則P字段啟動地址轉移,根據指令寄存器IR中的OP碼修改微地址寄存器,轉向指令執行周期的第1條微指令。
創新性綜合訓練實驗在課程設計環節中進行,主要實驗內容是指導學生采用不同的外設,與設計性實驗中自行設計的CPU搭建計算機最小系統,訓練學生綜合實驗設計能力,加強學生創新能力的培養。具體實驗內容有:① 微程序版CPU設計;② 硬布線CPU設計;③ 流水線版本CPU設計;④ 嵌套中斷的CPU設計。由最具特色嵌套中斷的CPU設計為例,仿真實驗的中斷嵌套所需“斷點”堆棧則是由硬布線邏輯搭建的“硬堆棧”,其對CPU指令和軟件程序員來說是完全透明的[16]。
圖6展示了兩種硬堆棧電路:位(bit)堆棧STACK_BIT和字節(byte)堆棧STACK。位堆棧STACK_BIT由一個移位寄存器74LS194獨立構成;而字節堆棧STACK電路則包括由4個74LS273寄存器STACK_0~3構成的4級堆棧、堆棧指針寄存器SP及輸入/輸出電路等組成部分。

圖6 硬布線邏輯的堆棧電路
(1) 解決傳統數字邏輯課程實驗、實踐方式是以實際元器件為基礎,手工操作來搭建實驗電路,這將帶來線路繁雜,實驗成本高,效率低,器件問題影響實驗結果等弊端。
(2) 學生通過熟練應用基于Multisim的仿真設計,數字邏輯知識體系,通過中小規模數字邏輯器件“搭積木”的方法來實現所有的實驗。如自主定義的CPU設計,提高學生在計算機硬件系統方面的認識廣度和深度,符合計算機學科“面向理論知識,兼顧動手能力”的教學目標。理論與實際相結合,培養具有較強動手能力和創新能力的學生。
(3) 對傳統數字邏輯實驗進行模擬仿真。
基于Multisim虛擬仿真數字邏輯實驗,可以說是計算機數字邏輯課程的一次革命。可以將傳統的計算機數字邏輯實驗箱的設計完整地在仿真軟件Multisim上搭建起來。采用仿真軟件Multisim實驗平臺,學生的實驗及課程設計可以在實驗室完成,也可以在寢室教室完成。學生實驗設計可以在上課時間完成,也可以在課余時間完成,完全沒有時間與空間的限制。更加有助于學生理解實驗原理、消化實驗內容。有利于逐歩培養學生的動手能力,創新思維與綜合運用設計的能力,避免了學生在硬件實驗中“走過場”“只知其然而不知其所以然”。使學生更深層次的了解計算機邏輯結構。把硬件原理學習與硬件描述語言編程技術結合起來,達到以軟促硬、軟硬結合的教學效果。從而為今后的課程,如計算機組成原理、編譯原理、操作系統等做了良好的鋪墊。