最近幾個月在複習數位電路,同時上了一門edx上MIT和交大OCW的數位電路課程。
EDX MITx: 6.004.1x https://courses.edx.org/courses/MITx/6.004.1x/1T2015/info
數位電路(Digital
circuit)是電機系大一的必修課,以前大四時想拿個電機輔系跑去聽這門課,但一直到下學期的實驗課寫verilog時才有一點感覺。
交大的這門課的規劃跟以前自己上的進度差不多,大概就是一整個學期先講組合電路(combinational
circuit)、再講順序電路(sequential
circuit)。
但MIT的進度要緊湊得多,edx上的Digital
Circuits不過是校內課程6.004
Computation Structure的三分之一,數位電路在台灣要講一學期的內容只講了6週,接著則進入programmable
architecture和computer
systems。
比較起來,MIT的這門課程要更注重與其他學門的關係,課後的練習也不時帶你去質疑一些看來基本、但也許不問,就從來不會去深究的電路。除了一般的填答題,還有幾個電路模擬的實驗,按照spec走過一遍更有感覺。
以下就每堂課做個簡單的筆記
:
第一講 : Basics of Information
第一講 : Basics of Information
1. 定量訊息 :
先對information下個定義
: Data communicated or received
that resolves uncertainty about particular fact or circumstance.
要定量一筆訊息,先知道該訊息出現的機率,再來計算要使用幾個0/1來為此筆訊息編碼,可由I(x)=log(base2)(1/機率)得到該訊息的量。
例如在一副牌中出現紅心的機率是1/4,訊息量即為2
bit;黑桃A則是1/52,訊息量為5.70
bit。
得到的訊息量越多,越能去除掉不確定性。
2. 編碼 :
編碼(encoding)
: an unambiguoug mapping between bit strings and the set of possible
data
原則上就是用一串bit的組合來表示一組data。若各個data出現的機率均等,可使用固定t;長度的bit組合;若不均等,可使用不定長度的編碼。
- ASCII共有94個字元,就可用log2(94) ~ 6.555約7個bit表示。
- Binary-Coded Decimal (BCD)可用log2(10) ~ 3.322約4個bit表示。
- 正整數可由二進制編碼表示,而為了閱讀方便,可將二進制改寫成十六進制
- 負數可使用signed magnitude將首位設成1,或是用2補數表示。
- * n個bit的數N,其二補數 = 2^n – N
- 不定長度的編碼可使用Huffman's algorithm, LZW...
3. 偵錯與除錯 :
當送出與收到的訊息不一樣時,表示有幾個bit出了錯。
Hamming distance : The number of positions in which the corresponding digits differ in two encodings of the same length.
兩段相同長度的編碼,對應位置不同的數值的bit數目,即為Hamming distance。
要能偵測單個bit的錯誤,可在原先的data再加上一位parity
bit,使得總共1出現奇數或偶數次。
原來兩組有效訊息之間的Hamming
distance就從1增加到2。
若是拿到的訊息出現1的奇偶次數與發送方不同,即表示可能出現單個bit的錯誤。
若是要偵測更多bit錯誤,Hamming
distance就要再增加。
- 偵測E個錯誤,兩組有效訊息之間的Hamming distance為E+1
- 更正E個錯誤,兩組有效訊息之間的Hamming distance為2E+1
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
第二講 : The Digital Abstraction
1. 編碼的bit怎麼來 :
使用電壓來編碼 – 電壓容易產生、偵測,也有可能較省電;但容易受環境影響,也有可能受到電容電壓的延遲影響。
但若要使用電壓來趨近一段連續的變化,例如0~10的變化分別以10個電壓位階來表示時,又容易受到干擾。
-> 用電壓僅表示bit的兩個值 0,1
- 有一個以上的數位輸入
- 有一個以上的數位輸出
- 有一份功能規格(functional specification)詳述每個輸出與輸入所有可能的值的對應關係
- 有一份時間規格(timing specification)至少包含了穩定有效的輸入至輸出所需的時間
- 沒有directed cycles,從輸入到輸出,每個元件僅會經過一次 * 沒有feedbach loop
訊息傳送的過程中,有可能會受到外界雜訊的干擾,造成上一級的訊號輸出到了下一級的輸入發生錯誤。因此,提高判斷輸出訊號為1或是0的標準,容許輸出在進入下一級的輸入時能有一定的誤差範圍,稱為noise
margin。
- 輸出 :
0
: V <= V(OL)
1
: V >= V(OH)
- 輸入 :
0 : V <= V(IL)
1 : V >= V(IH)
- 標準 :
對於低電位來說,輸出的電壓V(OL)
要小於 V(IL)
對於高電位來說,輸出的電壓V(OH)要大於V(IH)
即有效的輸出電壓須大於V(OH)或小於V(OL)
而有效的輸入電壓須大於V(IH)或小於V(IL)
而V(IL)和V(IH)之間則為Forbidden
Zone,當輸入電壓落在此區間時,輸出可為任何值
簡單地說 : V(OL) < V(IL) < V(IH) < V(OH)
output對於判斷是0或是1的要求較為嚴格,當signal從output到input之間若受到雜訊干擾,只要仍在input判斷0和1的範圍之內,仍為有效值。
允許雜訊干擾的範圍 : V(IL) - V(OL) 和 V(OH) - V(IH),即為noise margin。
沒有留言:
張貼留言