3位二進制編碼器,8/3線二進制編碼器,其輸入端有8個,輸出端有3個。
真值表如下圖所示:
X0 | X1 | X2 | X3 | X4 | X5 | X6 | X7 | Z0 | Z1 | Z2 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
根據真值表可以直接寫出邏輯表達式:
根據以上分析結果,可知需要選用以下模塊:
*Pulse Generator(脈衝序列發生器)模塊:
位於Simulink節點下的Source庫中,用於產生所需的原始脈衝脈衝序列。複製8個PulseGenerator模塊進入sy03.mdl文件中,將它們分別命名爲。分別雙擊各個模塊,對其參數進行調整。
在PulseGenerator打開的的參數對話框界面中進行相應的設置,在Pulse type選項中有Time based(默認選項)和Sample based兩項。
如果選中Timebased項,模塊按照時間參數輸出脈衝序列;如果選中Sample based項,模塊將根據設定的採樣頻率及其他相關參數輸出序列。在此選擇Sample based項。
對“BlockParameters”對話框進行設置:
“Amplitude”文本框:用於設定調整脈衝輸出幅度,本例中設置爲1即可。
“Period(numberof samples)”文本框:用於設定按照採樣時間長度確定產生的脈衝序列週期,本例中設置爲8。
“Pulse width(numberof samples)”文本框:用於設定按照採樣時間長度確定產生的脈衝序列週期,本例中設置爲1。
“Phase delay (number of samples)”文本框:用於設定每一個脈衝持續的時間長短(即電平爲1的時間,以採樣時間爲單位),本例中X0~X7依次設置爲0~7。
“Sample time’文本框:該文本框用於確定採樣時間,單位是s(秒),本例中設置爲1。
*Logical Operator(邏輯操作)模塊
位於Simulink節點下的Logic and Bit Operator模塊庫中,用於實現邏輯表達式的運算
Logical Operator模塊參數調整
* Scope(示波器)模塊
位於Simulink節點下的Sinks模塊庫中,本例用到2個示波器。
設置示波器參數後單擊Scope模塊,可以看到Z2,Z1,Z0的輸出波形,以及X0-X7的輸入波形。
Simulink建模如下:
X0至X7產生的信號波形如下:
編碼器輸出波形圖如下:
觀察上圖(從上往下依次爲Z1、Z0、Z2)可以發現輸出波形圖爲000、001、010、…111,這確實是十進制0-7的二進制編碼,因而該模型符合實現8-3編碼器功能的要求。
下面總結一下利用simulink搭建組合邏輯電路模型步驟:
在設計組合電路時,首先需要明確輸入與輸出之間的關係,然後根據該關係寫出真值表,緊接着根據真值表得出輸入輸出間的邏輯表達式,最後根據該邏輯表達式建立模型。