INTRODUCTION

根據奇偶檢查碼矩陣的結構,可以分為兩種 : 1.以列為基準(row-based)更新 2.以行為基準(column-based)更新。以列為基準更新,表示一次的更新需要等待一整列的訊息與矩陣做運算後才會執行更新的動作,比較適合短訊息輸入的解碼器;以行為基準的一次更新,則是將訊息的每個位置都對行做運算之後才更新,較適合長訊息輸入的解碼器。

因為每次輸入的訊息僅有672個,根據以上的原理,我們決定採用以列為基準的更新方式,輔佐標準化最小和演算法,能快速更正錯誤並送出更新值,加快訊息的傳輸。

在此專題實作中,我們專注於解碼器與接線部分,接收經過通道雜訊之後的訊號解碼還原為正確訊息。

A. 比較器.

根據四種不同的碼率(1/2、5/8、3/4、7/8),我們根據參考的資料設計出以下的比較器。其主要功能是找出輸入值的最小值及第二小值,以及最小值的位置,結果為後面更新處使用。

一個單位的比較器總共有32個輸入值,分別接到四個8-sorter,視碼率情況決定sorter的使用情形。比如說,1/2碼率需要32個輸入,那四個sorter都需要開啟;5/8碼率則是整合兩個8-sorter,讓他們倆個的結果再去作比較,變成16-sorter,也就是一個16-sorter,配合2個8-sorter;3/4是兩個16-sorter;7/8是1個32-sorter。

除此之外,根據奇偶檢驗矩陣的特性,有一些部份是不需要比較的,因此在比較器的輸入部份我們有動一些手腳。因為這個比較器是要找小值,我們將不需要的部分的輸入值改為最大值,這樣一來輸出就不會因為不需要的部分而有錯誤。

B. 更新位元與列更新器.

根據奇偶檢驗矩陣的形式,一列有32組更新群(VNG),一組更新群中又有21個更新位元(VNU),以此組合而成一列更新器。故一更新位元能以奇偶檢查碼的特性,將訊號分為672筆資訊進行個別運算更新,最後再整合資訊以符合輸入訊號的型式由列更新器送出。

更新位元主要接收比較器產生的結果,進行垂直更新,最後再將結果傳給比較器與終止判斷器,以持續迭代或終止。

C. 繞線.

藉由接線可將比較器與列更新器組成解碼器,而每個更新位元、更新群、列更新器與比較器之間的繞線實屬複雜,在本次實作中,繞線無疑是一大挑戰。然而透過適當的繞線方式,可將各工作位元重複利用,減少邏輯閘個數。


Fig. 1


Fig. 2


Fig. 3


Fig. 4


Fig. 5

心得感想

在本次專題中,我們學習到如何從無到有設計出一個數位電路,從論文的閱讀,C語言的模擬,到verilog的實作,以及design compiler的合成模擬,紮實的體驗數位電路的設計流程。前期我們用C語言模擬了從編碼到解碼的流程架構,並測試了四種碼率(1/2、5/8、3/4、7/8)、四種標準化係數(0.6、0.65、0.75、0.8)、訊號雜訊比,與位元錯誤率比較的性能,得到最佳的標準化係數為0.75;另外,因為數位系統訊號是為二進位,所以我們也將實際訊號進行量化模擬,得到最接近原訊號的解碼效能之位數分配,是為整數3位小數2位,並依據此模擬結果進行硬體的設計。

除了模仿前人的架構之外,我們也加入屬於自己的想法,並加以實踐,在列更新器的部分,我們更動了暫存器的順序,使一個單位的列更新器使用的暫存器數量由五個簡化為四個,減少邏輯閘的使用數。在最佳化的過程中,我們根據參考文獻與硬體設計的特性,設計出能同時支援四種碼率的解碼器,並透過前置與後置繞線,來節省面積,以接近資料來源。