何 松
(常州工學院 計算機信息工程學院,江蘇 常州 213032)
Matlab是由美國The MathWorks公司開發的軟件,是MatrixLaboratory(矩陣實驗室)的縮寫,一種高效的工程計算機語言。它集概念設計、算法開發、建模仿真、實時實現于一體,方便使用且適于集成環境。Matlab的一個重要的分支產品是Simulink,它結合了框圖界面和交互仿真能力,是一種系統設計和仿真的工具。Simulink模型是用繪制方框圖代替程序編寫,使得系統編寫具有了可視化的功能,同時也可借助模擬示波器等虛擬設備更加直觀地顯示仿真動態結果。Simulink也是目前動態系統建模、仿真等方面應用最為廣泛的軟件之一[1]。
“數字電路”課程是信息、電子類專業的一門專業基礎課。數字電路由若干個數字集成器件構造而成。按照邏輯功能不同特點,可以分成組合邏輯、時序邏輯兩大類電路。傳統的課程實驗中,大多采用實驗箱,讓學生搭建實驗電路,操作簡單。隨著信息技術的發展,除了關注學生的動手操作能力,更加強調知識體系的分析和應用能力。如果能夠較好地利用Matlab/Simulink方針技術,將可以使教師的講解更加生動,學生也可以更加直觀地看到電路運行時的波形變化,更加容易被學生理解,從而提高學習效率[2]。
本文以并行寄存器為例。設計中使用基本RS觸發器設計一個2位并行寄存器。并行寄存器就是能夠同時存儲幾個數據源數據的寄存器。Simulink中提供了基本RS觸發器模塊。首先在Matlab中運行Simulink,然后新建一個模型,將RS觸發器的模塊添加到模型中,通過在這個模塊上右擊鼠標,單擊彈出菜單中的“Look Under Mask”(查看下封裝下的電路)命令,可以看到這個模塊內部電路。基本RS觸發器模塊及其內部電路如圖1所示。

圖1 基本RS觸發器模塊及內部電路
觸發器(Flip Flop)是一種可以存儲電路狀態的電子元件。最簡單的是由兩個或非門,兩個輸入端和兩個輸出端組成的RS觸發器,邏輯符號如圖2所示,狀態轉換如圖3所示。

圖2 RS觸發器邏輯符號

圖3 RS觸發器狀態轉換
RS觸發器的真值表如表1所示。

表1 RS觸發器真值表
復雜一些的有帶時鐘(CLK)端和D(Data)端,當CLK端是高電平時跟隨D端狀態,當CLK端變為低電平的瞬間鎖存信號。更常用的是兩個簡單D觸發器相級聯,在時鐘下跳沿鎖存信號的邊緣D觸發器,廣泛應用于計數器、運算器、存儲器等電子器件。
設計一個兩位并行寄存器需要2個基本RS觸發器,而且這個寄存器要在同一個激勵下,從輸入端讀入數據,存儲一段時間后,在下個周期將信號輸出,同時讀入新的信號。這就需要將時鐘源信號作為輸入信號的控制端,由于輸入信號R和S不能同時為1,所以通過一個非門將它們聯系起來,迫使兩個端口信號不同時為高電平[3-4]。
用基本RS觸發器構造并行寄存器,需要5個模塊:RS觸發器、時鐘源、脈沖源、邏輯運算模塊、示波器。搭建模型后,需要修改模塊參數。RS觸發器模塊只有一個參數即觸發器的初始狀態,也就是Q端的初始值,默認值為0。時鐘源模塊的參數時鐘周期,采用默認值2。4個邏輯運算模塊均設置為2輸入與非門。將脈沖源模塊的Pulse Type選擇Sample based,其他參數設置如表2所示。示波器輸入端口改為5個,完成參數設計部分[5]。

表2 并行寄存器脈沖源參數設置
將各模塊擺放合適,完成連線,仿真圖如圖4所示。仿真時間默認為10 s,開始仿真,通過示波器觀察到輸出波形,如圖5所示。

圖4 2位并行寄存器電路

圖5 示波器輸出結果
從波形上可以看出,當時鐘源處于低電平時,觸發器輸出保持在時鐘跳變前的數值,對于D1和D0輸入的變化沒有改變,而當時鐘源處于高電平時,輸入的信號全部送入輸出端,這是一個不穩定的因素,也是電平觸發的觸發器的一個缺點。并且兩個觸發器完全獨立工作,互不影響,這就是并行的特點。
雖然Mat lab軟件中還沒有提供用于數字電路仿真的專用工具箱,但提供一些常用的模塊,可以使用已有的模塊,自行構建所需模塊,組成一個小型的虛擬實驗箱,來滿足基本的教學需要,同時可以作為學生的課外學習或實驗使用。
在未來的教學中,可以考慮將Matlab/Simulink和GUI部件相結合,對數字電路進行仿真運行,為數字電路教學提供另外一種很好的方法。GUI用戶界面的融合,提高了仿真的效率,操作非常簡便,使用者不需要掌握計算機語言,一切操作都可以在鼠標的點擊和拖動下完成,而且具有可開發性。它為數字電路的實驗教學提供了一種新的方式,也為數字電路的理論教學提供了一種輔助教學手段。
[參考文獻]
[1]唐競新.數字電子電路[M].北京:清華大學出版社,2003.
[2]潘曉明.基于Matlab數字電路建模與仿真[J].柳州師專學報,2007(4):128-129.
[3]張森,張正亮.Matlab仿真技術與實例教程[M].北京:機械工業出版社,2004.
[4]劉磊.Matlab在“數字電路”課程教學中的應用[J].電氣電子教學學報,2008(5):79-81.
[5]陳懷琛.Matlab及在電子信息課程中的應用[M].北京:電子工業出版社,2003.