2008年7月13日 星期日

Implenebtation of an encoder for turbo codes using the MIPS-like architecture

下圖為一個渦輪碼的編碼器:

訊號在傳送之前,必須經過編碼後再傳送出去.當有訊號要傳送時,輸出端可分為三個部份,一個為將原始訊號輸出;一個為將訊號經過encoder後在輸出;另一個為將訊號經過交錯器後,在進行編碼




下圖為本研究的流程圖:

首先使用C語言撰寫turbo code的encoder驗證正確後,使用LCC將C語言的encoder程式編譯為MIPS組合語言程式,接著修改部分組合語言內容後,使用PCSpim驗證經由LCC編譯的MIPS組合語言程式是否正確,驗證正確後再將PCSpim所產生的rom與sram擷取出來,放置在使用Verilog HDL撰寫的似MIPS架構上,最後在使用xilinx ise配合modelsim驗證與模擬.



下圖為使用C語言撰寫RSC encoder的執行結果:



下圖為RSC encoder在似MIPS架構下執行的結果:



下圖為使用C語言撰寫puncture所執行的結果:




下圖為puncture在似MIPS架構下執行的結果:


下圖為使用matlab所執行出來的結果:



下圖為使用C語言所執行出來的結果:



下圖為使用似MIPS架構所執行出來的結果:








2008年7月6日 星期日

Implementation of a RSC Encoder Using C Program

使用C語言實現一個RSC Encoder

下圖為一個渦輪碼的編碼器:
訊號在傳送之前,必須經過編碼後再傳送出去.當有訊號要傳送時,輸出端可分為三個部份,一個為將原始訊號輸出;一個為將訊號經過encoder後在輸出;另一個為將訊號經過交錯器後,在進行編碼.


下圖為一個RSC Encoder
RSC encoder與常見的convolution encoder不同在於RSC encoder有一個遞迴的訊號處理.之前所提到的convolution encoder 會在訊號後面加上m個0來清除記憶體內容值,而RSC encoder再訊號輸入端前有一個switch,首先switch會指向u,當訊號編碼完後,switch會接收遞迴的訊號,把遞迴的訊號當成輸入端,在進行編碼。


下圖是從上圖推導出來的,左邊框起來為記憶體的內容值,1~8為自訂的狀態,分別代表記憶體的000~111, u/c 是輸入與輸出的結果,箭頭的指向為下一個狀態,虛線代表輸入0,實線代表輸入1.只要知道訊號原,就可以從此圖推導出輸出值.


下圖為使用matlab所執行出來的結果。index為經過交錯器後所產生新的訊號的位址。en_output為經過RSC encoder 編碼出來的結果。


下圖為使用C語言所執行出來的結果圖,對照matlab的結果可知使用C語言所撰寫的RSC encoder無誤。