董圣英
(德州職業技術學院,山東 德州 253034)
數字電路的設計,尤其是電路的調試是一件十分繁瑣的工作,通常的做法是在電路設計完成后,用面板搭接電路,或是將元件焊接到預先設計好的印刷電路板上進行測試、修改、完善.這樣既費時又費力,還需要花費資金去添置各種工具和儀器.MATLAM沒有提供用于數字電路仿真的專用工具箱,但是若能巧妙地使用MATLAB/SIMULINK仿真工具進行數字電路的設計、調試、仿真,就可避免上述不必要的麻煩[1].
Simulink是掛接在Matlab環境上,以 Matlab的強大計算功能為基礎,以直觀的模塊框圖進行仿真和計算的仿真工具[2-3].Simulink模型采用框圖繪制來代替程序的編寫,使系統程序的編寫具有可視化的功能,同時可借助示波器等虛擬設備直觀顯示仿真結果.Simulink已成為廣泛使用的動態系統建模、仿真和分析的軟件包之一.
筆者利用MATLAB/SIMULINK仿真模塊,創建譯碼器、計數器數字電路的仿真模型,通過仿真判定電路設計的正確性.
譯碼器是數字電路中應用非常廣泛的多輸入多輸出組合邏輯電路.譯碼就是對輸入信號進行“翻譯”,識別出其含義并產生相應的輸出信號,完成譯碼功能的邏輯電路稱為譯碼器[4].
3線-8線譯碼器有3個譯碼輸入端A、B、C,1個使能控制端G,8個譯碼輸出端.其真值表見表1.
表1 3線-8線譯碼器的真值表
表中的“×”表示任意值(0或1).根據真值表,可以寫出3線-8線譯碼器的輸入輸出邏輯關系式:
根據邏輯表達式,選用MAT LAB/SIMULINK中的 logical operator模塊、pulse generator模塊、scope模塊,并設置各模塊的參數,最后用信號線將各模塊連接起來,即建立了譯碼器的Simulink仿真模型,如圖1所示.
圖1 3-8線譯碼器的仿真模型
模型中用了4各脈沖源,分別命名為G、A、B、C.其中脈沖源G表示譯碼器的使能控制輸入端,高電平時允許譯碼輸出,低電平時使電路輸出無效狀態.G脈沖源參數設置如下:周期12s,脈寬11s,相位延時0s.脈沖源A、B、C的輸出代表需要譯碼的3位二進制數,為了在譯碼輸入端得到000-111的脈沖序列,A、B、C三個脈沖源參數設置如下,A脈沖源:周期 2s、脈寬 1s、相位延時 1s;B脈沖源:周期4s、脈寬 2s、相位延時 2s;C脈沖源:周期 8s、脈寬4s、相位延時4s.這樣設置后,A、B、C三個脈沖源的輸出信號就構成了三位二進制數,以8為周期從000變化到111(即第一秒為000,第八秒為111),然后第九秒又為000,如此循環.模型中用了兩個示波器,其中scope1用來觀測使能控制信號和三位譯碼輸入信號,輸入端數目設為4.scope1用于觀測8路譯碼輸出信號,輸入端數目設為8.
設置仿真參數.仿真時間0~16s,使用可變步長算法old45,仿真結果如圖2、圖3所示.
圖2 譯碼器輸入波形
圖3 譯碼器輸出波形
從仿真波形可以看到,輸入的三位二進制代碼分別被翻譯成8種不同的輸出,即Y0到Y7依次為低電平,同時注意到在11-12s之間,8個輸出都變成了高電平,反映了控制端G的作用,說明電路設計正確.若仿真波形不正確,只需進一步分析電路邏輯關系,修改仿真模型再調試即可,直到設計正確為止,所以運用Matlab進行數字電路設計、調試是十分方便的.
在數字系統中計數器是使用最多的一種電路.它不僅能夠對時鐘脈沖進行計數,還可以用以分頻、定時以及進行數字運算等,同步十進制計數器也稱為BCD碼計數器[4].
計數器電路可有各種觸發器電路構成.由于十進制計數器有十個狀態,故觸發器的位數應為4.若計數器用T觸發器構成,根據計數器功能可得出同步十進制計數器的激勵表,見表2.
表2 十進制計數器激勵表
表中的“×”表示輸出為無效狀態.根據激勵表2,利用卡諾圖進行化簡,可寫出簡化后 T觸發器的驅動方程[5]:
圖4 計數器仿真模型
根據邏輯表達式,選用MATLAB/SIMULINK中的logical operator模塊、constant模塊、clock模塊、scope模塊,Matlab/Extras中的J-K觸發器模塊,將J-K觸發器接成T觸發器,然后用信號線將各模塊連接起來,即建立了計數器的仿真模型,如圖4所示.
設定仿真參數,仿真時間0~12s,使用可變步長算法old45,仿真結果如圖5所示.
從仿真波形可以看到,計數器在計數時鐘CP的控制下,從0000一步步變化到1001,實現了十進制計數功能,說明電路設計正確.同樣,即使仿真波形不正確,也可方便地通過修改仿真模型再進一步調試即可,直到正確為止.
本文利用MATLAB/SIMULINK仿真工具,創建了譯碼器、計數器電路的仿真模型,并給出了仿真結果.仿真結果表明,利用Matlab進行數字電路的設計、調試,結果直觀、省時省力.它不僅能用來仿真譯碼器、計數器電路,而且能廣泛地應用于其它數字電路的仿真,是數字電路設計、調試的有效工具.
圖5 計數器仿真輸出波形
[1]張葛祥,李娜.Matlab仿真技術與應用[M].北京:清華大學出版社.2003.
[2]皇甫海燕.Matlab在數字電路教學中的應用[J].烏魯木齊:新疆師范大學學報,2005,24(3):71-73
[3]熊建平.Matlab在數字電路中的應用[J].南昌:計算機與現代化,2007(6):101-102
[4]鮑可進,趙念強.數字邏輯電路設計[M].北京:清華大學出版社,2004.
[5]蔣立平.數字邏輯電路與系統設計[M].北京:電子工業出版社,2008.