• 沒有找到結果。

Chapter 5 模擬結果

5.3. 以 Verilog 實現系統架構

5.3.1. 控制邏輯電路的實現

經由 MATLAB 模擬成功以後,接下來就是利用 Verilog 硬體描述語言 (hardware description language, HDL) 把系統架構加以電路化。由於所提出之內建自 我測試系統的電路架構單元大都是暫存器與加法器或者是一些簡單的組合邏輯電 路,在此便不加以贅述。比較特別的部分是控制邏輯的電路,由於 Verilog 語言不 像 MATLAB 語言一樣,會自動依照每行程式的先後順序依序執行,因此要把在 MATLAB 上面建構完成的行為模式以 Verilog 語言加以實現的時候,必須要額外 設計一個控制邏輯電路來控制整個系統的運作流程。一般控制邏輯電路都是利用

65

有限狀態機器 (finite state machine, FSM) 的概念描述而成。所謂的有限狀態機器是 一種概念,當它接收不同的輸入訊號時,同時會根據所作的設計而輸出適當的響 應。有限狀態機器依其輸入的訊號、輸出的訊號,以及狀態之間的關係,可細分 為兩大類:

z Mealy machine:輸出訊號將依據當時所在的狀態與當時接收的輸入訊號 而定

z Moore machine:輸出訊號只依據當時所在的狀態而定,與當時接收的輸 入訊號無關

在我們的應用中,我們選擇 Mealy machine 作為設計控制邏輯電路的 FSM 類型,

而一般在表示 FSM 的運作流程時,大部分都會使用狀態轉移圖 (state transition graph, STG)的方式說明。在狀態轉移圖中,每一個圓圈代表電路中的一個狀態、

圓圈內的符號代表該狀態的名稱、每一個有方向的分支 (directed branch) 代表電路 的一個狀態轉移、有方向的分支旁邊的標記代表該電路轉移所對應的輸入訊號的

z OFF_HOLD/AMP_HOLD/POW_HOLD:

0 代表offset/amplitude/noise power 未計算完成 1 代表offset/amplitude/noise power 已計算完成 z INI_CANCEL:0 暫態響應已經消除

1 暫態響應需要消除

z RESET_OFF/RESET_AMP/RESET_POW:

0 代表offset estimator/amplitude estimator/noise estimator 正在工作 1 代表offset estimator/amplitude estimator/noise estimator 不工作

z AMP_BSG:

00 代表將週期一的輸入振幅送至 BSG1 01 代表將週期二的輸入振幅送至 BSG1 10 代表將週期三的輸入振幅送至 BSG1

Fig. 39 控制邏輯電路的狀態轉移圖

如Fig. 39所示, S2/S4/S6 分別代表4.1中所提到之 週期一/週期二/週期三 。而 INI_CANCEL的用意是因為 BSG 以及 MUT 等電路都會有暫態響應的情況發生,

為了不讓暫態響應影響到計算參數時的準確度,使最後結果產生誤差,因此分別 66

67

在 週期一/週期二/週期三 開始之前,都會多安插一個週期作為消去暫態響應的週 期 (分別為S1/S3/S5)。因此可以很容易明白,INI_CANCEL只有在奇數狀態進入到 偶數狀態時才會拉為1,其它時期都是0。為了方便說明,接下來的部分將不再提 到INI_CANCEL。

首先看到輸入訊號的部分,一開始系統會操作在正常模式 (Mode = 0),因此 狀態會落在 S0 。一但測試模式開始啟動 (Mode = 1),此時系統會進入 S1 消除暫態 響應然後接著進入 S2 開始計算偏移誤差的大小。在這兩個狀態時由於所有參數都 還未算出來,因此 OFF_HOLD、AMP_HOLD、POW_HOLD = 0。接著看到輸出訊 號的部分,因為週期一負責計算偏移誤差,所以在 S2 的時候 RESET_OFF 會被拉 至0,此時因為其它兩個參數增益誤差及雜訊功率都還沒開始計算,所以 RE-SET_AMP 、 RESET_POW 皆為0。而在AMP_BSG的部分,首先看到S0->S1,因 為此時目的是要計算偏移誤差,因此這個時候 AMP_BSG = 00。同理可得,在S2->S3 過程之中,此時目的是要計算增益誤差,所以這個時候 AMP_BSG = 01。 要跳回正常模式下工作,所以 RESET_OFF/ RESET_AMP/ RESET_POW 皆為拉至 1。因為在正常模式下,為了省電的考量內建自我測試電路是不工作的。另一方面,

如果此時 Mode = 1 ,系統會繼續工作在測試模式下,而三個相關參數皆會重新計 算。