【摘要】主要介紹了FM0編碼的設計方法,采用了狀態機實現各狀態的轉換,并通過并串轉換方法實現狀態編碼后的數據輸出。該方案采用Verilog編碼,且在Altera公司的CycloneⅢ芯片上通過了驗證。
【關鍵詞】FM0編碼狀態機并串轉換FPGA
中圖分類號:TN92文獻標識碼:A 文章編號:1006-1010(2014)-16-
[Abstract]This paper instructs the method of FM0 encoding. This scheme are states shift using state machine and changing parallel data to serial data after state machine encoding. This idea is achieved by verilog HDL,verified on Altera CycloneⅢ CMOS chip.
[Key words]FM0 encoding state machine parallel to serial FPGA
1FM0編碼原理
FM0廣泛地應用于超高頻無線射頻技術中,在“無線射頻識別協議-第1類第2代UHF RFID(860—960MHz)通信協議”中明確規定,電子標簽向讀寫器應答時,需采用FM0編碼或者米勒編碼。下面介紹的編碼實現方案已經應用到了超高頻射頻識別系統中,能夠實現正常通信。
FM0(即Bi-Phase Space)編碼稱為雙相間隔碼編碼,每位數據與前一位數據要發生相位翻轉。其工作原理是在一個位窗內采用相位變化來表示邏輯。如果相位只從位窗的起始處翻轉,則表示數據“1”;如果相位除了在位窗的起始處翻轉,還在位窗中間翻轉,則表示數據“0”。根據FM0編碼的規則,可以發現無論傳送的數據是“0”還是“1”,在位窗的起始處都會發生相位變化[1]。其編碼表達式如下:
圖1描繪了FM0編碼后的波形,S1(t)~S4(t)狀態表明4種可能FM0編碼。數據“0”和數據“1”的編碼都對應有兩個相位,下一個數據編碼狀態的選擇要根據前一個編碼的相位而確定。例如,對數據“01”進行編碼,如果數據“0”選擇正相位狀態S1,則數據“1”的編碼就必須選擇狀態S3。而從狀態S1轉換到狀態S4是不允許的,這是因為由此產生的信號在編碼起始位置沒有相位變化。
2FM0編碼設計
利用FPGA進行FM0編碼,可以快速實時地實現編碼。其編碼過程分為:狀態機編碼[2]和并行數據串行轉換。經過狀態編碼后,原數據被編碼成了符合雙相轉換規則的數據,此數據是位寬為兩位的并行數據。將其進行并串轉換后輸出,就是讀寫器可以識別的FM0編碼數據。
2.1 狀態機編碼
FM0編碼包含4個狀態,它們之間存在一定的規律。2個狀態之間必須包含一次相位改變。根據輸入數據的不同,4個狀態之間可以進行轉換,采用如圖2所示的規則[3]:
在FPGA中,采用狀態機可以準確快速地FM0的編碼過程。有限狀態機是一種概念性機器,它能采取某種操作來響應一個外部事件,具體采取的操作取決于接收到的事件。之所以能做到這點,是因為狀態機定義了一個內部狀態,它會在收到事件后進行更新。為一個事件而響應的行動不僅取決于事件本身,還取決于機器的內部狀態。另外,采取的行動還會決定并更新機器的狀態。
狀態機根據目前狀態和外界觸發條件來跳轉到下一個狀態,這比較直觀地實現不同狀態之間的跳轉。為本編碼構建4個狀態S1~S4,根據輸入的待編碼數據進行狀態轉換[4]。其Verilog程序如下:
2.2并行數據串行轉換
FM0編碼中,將數據“0”編碼成了一個中間有相位變化的數據,即編碼成兩位數據“01”或“10”;數據“1”可以看成是編碼成了一個沒有相位變化的兩位數據“11”或“00”。這將使數據速率提高一倍,并且輸出的是2比特并行數據。由于標簽和讀寫器的通信協議要求發送數據是串行數據,因此需要將并行數據轉換成串行數據。
根據并行數據的位數,可以創建一個計數器。當計數器為“0”時,輸出編碼后的2比特數據的高位;然后計數器進行自增,當計數器為“1”時,輸出低位數據。計數器重新置“0”,如此循環往復,就實現了并行數據的串行輸出。
3系統設計和仿真結果分析
在QuartusⅡ上實現本設計,將系統劃分為2個主要模塊:StateMachine和parallel2serial,如圖3所示。其中,StateMachine實現狀態轉換,其輸出Dout[1..0]為2比特數據;而parallel2serial實現并行轉串行,它根據時鐘的先后順序先輸出并行數據的高位,再輸出并行數據的低位。其時鐘信號Clock2的速率是狀態機模塊的時鐘信號Clock1的2倍[5]。
如圖4所示,將數字信號“0101101010010”送入到輸入端Din,經仿真后,Dout能夠正確輸出編碼數據“10110100110100101101010010”。由此可見,此程序能夠準確地實現編碼功能。
4結論
本文主要根據FM0編碼原理設計了編碼電路。以上程序在Altera公司的CycloneⅢ系列的EP3C25324C8芯片上通過驗證,能夠正確實現數據編碼。本設計電路原理清晰、結構簡單、工作可靠,適合在可編程邏輯器件中使用。
參考文獻:
[1]昝勇,黎明,楊小芹,等. FM0編碼及其在FPGA中的設計與實現[J]. 電子測量技術, 2009(2): 95-97.
[2] 俞莉瓊,付宇卓. 有限狀態機的Verilog設計與研究[J]. 微電子學與計算機, 2004(11): 146-148.
[3] 徐羊. UHF RFID編解碼設計與實現[J].信息技術,2012(7):176-178.
[4] Samir Palnitkar.Verilog HDL數字設計與綜合[M]. 2版.夏宇聞,胡燕祥,刁嵐松,等譯. 北京: 電子工業出版社,2009.
[5]周潤景,圖雅,張麗敏. 基于QuartusⅡ的FPGA/CPLD數字系統設計實例[M]. 北京: 電子工業出版社,2007.
作者簡介
杜平:工程師,碩士畢業于華南理工大學,現任職于中國電子科技集團公司第七研究所,主要研究方向為RFID協議研究、RFID讀寫器系統研發。endprint
【摘要】主要介紹了FM0編碼的設計方法,采用了狀態機實現各狀態的轉換,并通過并串轉換方法實現狀態編碼后的數據輸出。該方案采用Verilog編碼,且在Altera公司的CycloneⅢ芯片上通過了驗證。
【關鍵詞】FM0編碼狀態機并串轉換FPGA
中圖分類號:TN92文獻標識碼:A 文章編號:1006-1010(2014)-16-
[Abstract]This paper instructs the method of FM0 encoding. This scheme are states shift using state machine and changing parallel data to serial data after state machine encoding. This idea is achieved by verilog HDL,verified on Altera CycloneⅢ CMOS chip.
[Key words]FM0 encoding state machine parallel to serial FPGA
1FM0編碼原理
FM0廣泛地應用于超高頻無線射頻技術中,在“無線射頻識別協議-第1類第2代UHF RFID(860—960MHz)通信協議”中明確規定,電子標簽向讀寫器應答時,需采用FM0編碼或者米勒編碼。下面介紹的編碼實現方案已經應用到了超高頻射頻識別系統中,能夠實現正常通信。
FM0(即Bi-Phase Space)編碼稱為雙相間隔碼編碼,每位數據與前一位數據要發生相位翻轉。其工作原理是在一個位窗內采用相位變化來表示邏輯。如果相位只從位窗的起始處翻轉,則表示數據“1”;如果相位除了在位窗的起始處翻轉,還在位窗中間翻轉,則表示數據“0”。根據FM0編碼的規則,可以發現無論傳送的數據是“0”還是“1”,在位窗的起始處都會發生相位變化[1]。其編碼表達式如下:
圖1描繪了FM0編碼后的波形,S1(t)~S4(t)狀態表明4種可能FM0編碼。數據“0”和數據“1”的編碼都對應有兩個相位,下一個數據編碼狀態的選擇要根據前一個編碼的相位而確定。例如,對數據“01”進行編碼,如果數據“0”選擇正相位狀態S1,則數據“1”的編碼就必須選擇狀態S3。而從狀態S1轉換到狀態S4是不允許的,這是因為由此產生的信號在編碼起始位置沒有相位變化。
2FM0編碼設計
利用FPGA進行FM0編碼,可以快速實時地實現編碼。其編碼過程分為:狀態機編碼[2]和并行數據串行轉換。經過狀態編碼后,原數據被編碼成了符合雙相轉換規則的數據,此數據是位寬為兩位的并行數據。將其進行并串轉換后輸出,就是讀寫器可以識別的FM0編碼數據。
2.1 狀態機編碼
FM0編碼包含4個狀態,它們之間存在一定的規律。2個狀態之間必須包含一次相位改變。根據輸入數據的不同,4個狀態之間可以進行轉換,采用如圖2所示的規則[3]:
在FPGA中,采用狀態機可以準確快速地FM0的編碼過程。有限狀態機是一種概念性機器,它能采取某種操作來響應一個外部事件,具體采取的操作取決于接收到的事件。之所以能做到這點,是因為狀態機定義了一個內部狀態,它會在收到事件后進行更新。為一個事件而響應的行動不僅取決于事件本身,還取決于機器的內部狀態。另外,采取的行動還會決定并更新機器的狀態。
狀態機根據目前狀態和外界觸發條件來跳轉到下一個狀態,這比較直觀地實現不同狀態之間的跳轉。為本編碼構建4個狀態S1~S4,根據輸入的待編碼數據進行狀態轉換[4]。其Verilog程序如下:
2.2并行數據串行轉換
FM0編碼中,將數據“0”編碼成了一個中間有相位變化的數據,即編碼成兩位數據“01”或“10”;數據“1”可以看成是編碼成了一個沒有相位變化的兩位數據“11”或“00”。這將使數據速率提高一倍,并且輸出的是2比特并行數據。由于標簽和讀寫器的通信協議要求發送數據是串行數據,因此需要將并行數據轉換成串行數據。
根據并行數據的位數,可以創建一個計數器。當計數器為“0”時,輸出編碼后的2比特數據的高位;然后計數器進行自增,當計數器為“1”時,輸出低位數據。計數器重新置“0”,如此循環往復,就實現了并行數據的串行輸出。
3系統設計和仿真結果分析
在QuartusⅡ上實現本設計,將系統劃分為2個主要模塊:StateMachine和parallel2serial,如圖3所示。其中,StateMachine實現狀態轉換,其輸出Dout[1..0]為2比特數據;而parallel2serial實現并行轉串行,它根據時鐘的先后順序先輸出并行數據的高位,再輸出并行數據的低位。其時鐘信號Clock2的速率是狀態機模塊的時鐘信號Clock1的2倍[5]。
如圖4所示,將數字信號“0101101010010”送入到輸入端Din,經仿真后,Dout能夠正確輸出編碼數據“10110100110100101101010010”。由此可見,此程序能夠準確地實現編碼功能。
4結論
本文主要根據FM0編碼原理設計了編碼電路。以上程序在Altera公司的CycloneⅢ系列的EP3C25324C8芯片上通過驗證,能夠正確實現數據編碼。本設計電路原理清晰、結構簡單、工作可靠,適合在可編程邏輯器件中使用。
參考文獻:
[1]昝勇,黎明,楊小芹,等. FM0編碼及其在FPGA中的設計與實現[J]. 電子測量技術, 2009(2): 95-97.
[2] 俞莉瓊,付宇卓. 有限狀態機的Verilog設計與研究[J]. 微電子學與計算機, 2004(11): 146-148.
[3] 徐羊. UHF RFID編解碼設計與實現[J].信息技術,2012(7):176-178.
[4] Samir Palnitkar.Verilog HDL數字設計與綜合[M]. 2版.夏宇聞,胡燕祥,刁嵐松,等譯. 北京: 電子工業出版社,2009.
[5]周潤景,圖雅,張麗敏. 基于QuartusⅡ的FPGA/CPLD數字系統設計實例[M]. 北京: 電子工業出版社,2007.
作者簡介
杜平:工程師,碩士畢業于華南理工大學,現任職于中國電子科技集團公司第七研究所,主要研究方向為RFID協議研究、RFID讀寫器系統研發。endprint
【摘要】主要介紹了FM0編碼的設計方法,采用了狀態機實現各狀態的轉換,并通過并串轉換方法實現狀態編碼后的數據輸出。該方案采用Verilog編碼,且在Altera公司的CycloneⅢ芯片上通過了驗證。
【關鍵詞】FM0編碼狀態機并串轉換FPGA
中圖分類號:TN92文獻標識碼:A 文章編號:1006-1010(2014)-16-
[Abstract]This paper instructs the method of FM0 encoding. This scheme are states shift using state machine and changing parallel data to serial data after state machine encoding. This idea is achieved by verilog HDL,verified on Altera CycloneⅢ CMOS chip.
[Key words]FM0 encoding state machine parallel to serial FPGA
1FM0編碼原理
FM0廣泛地應用于超高頻無線射頻技術中,在“無線射頻識別協議-第1類第2代UHF RFID(860—960MHz)通信協議”中明確規定,電子標簽向讀寫器應答時,需采用FM0編碼或者米勒編碼。下面介紹的編碼實現方案已經應用到了超高頻射頻識別系統中,能夠實現正常通信。
FM0(即Bi-Phase Space)編碼稱為雙相間隔碼編碼,每位數據與前一位數據要發生相位翻轉。其工作原理是在一個位窗內采用相位變化來表示邏輯。如果相位只從位窗的起始處翻轉,則表示數據“1”;如果相位除了在位窗的起始處翻轉,還在位窗中間翻轉,則表示數據“0”。根據FM0編碼的規則,可以發現無論傳送的數據是“0”還是“1”,在位窗的起始處都會發生相位變化[1]。其編碼表達式如下:
圖1描繪了FM0編碼后的波形,S1(t)~S4(t)狀態表明4種可能FM0編碼。數據“0”和數據“1”的編碼都對應有兩個相位,下一個數據編碼狀態的選擇要根據前一個編碼的相位而確定。例如,對數據“01”進行編碼,如果數據“0”選擇正相位狀態S1,則數據“1”的編碼就必須選擇狀態S3。而從狀態S1轉換到狀態S4是不允許的,這是因為由此產生的信號在編碼起始位置沒有相位變化。
2FM0編碼設計
利用FPGA進行FM0編碼,可以快速實時地實現編碼。其編碼過程分為:狀態機編碼[2]和并行數據串行轉換。經過狀態編碼后,原數據被編碼成了符合雙相轉換規則的數據,此數據是位寬為兩位的并行數據。將其進行并串轉換后輸出,就是讀寫器可以識別的FM0編碼數據。
2.1 狀態機編碼
FM0編碼包含4個狀態,它們之間存在一定的規律。2個狀態之間必須包含一次相位改變。根據輸入數據的不同,4個狀態之間可以進行轉換,采用如圖2所示的規則[3]:
在FPGA中,采用狀態機可以準確快速地FM0的編碼過程。有限狀態機是一種概念性機器,它能采取某種操作來響應一個外部事件,具體采取的操作取決于接收到的事件。之所以能做到這點,是因為狀態機定義了一個內部狀態,它會在收到事件后進行更新。為一個事件而響應的行動不僅取決于事件本身,還取決于機器的內部狀態。另外,采取的行動還會決定并更新機器的狀態。
狀態機根據目前狀態和外界觸發條件來跳轉到下一個狀態,這比較直觀地實現不同狀態之間的跳轉。為本編碼構建4個狀態S1~S4,根據輸入的待編碼數據進行狀態轉換[4]。其Verilog程序如下:
2.2并行數據串行轉換
FM0編碼中,將數據“0”編碼成了一個中間有相位變化的數據,即編碼成兩位數據“01”或“10”;數據“1”可以看成是編碼成了一個沒有相位變化的兩位數據“11”或“00”。這將使數據速率提高一倍,并且輸出的是2比特并行數據。由于標簽和讀寫器的通信協議要求發送數據是串行數據,因此需要將并行數據轉換成串行數據。
根據并行數據的位數,可以創建一個計數器。當計數器為“0”時,輸出編碼后的2比特數據的高位;然后計數器進行自增,當計數器為“1”時,輸出低位數據。計數器重新置“0”,如此循環往復,就實現了并行數據的串行輸出。
3系統設計和仿真結果分析
在QuartusⅡ上實現本設計,將系統劃分為2個主要模塊:StateMachine和parallel2serial,如圖3所示。其中,StateMachine實現狀態轉換,其輸出Dout[1..0]為2比特數據;而parallel2serial實現并行轉串行,它根據時鐘的先后順序先輸出并行數據的高位,再輸出并行數據的低位。其時鐘信號Clock2的速率是狀態機模塊的時鐘信號Clock1的2倍[5]。
如圖4所示,將數字信號“0101101010010”送入到輸入端Din,經仿真后,Dout能夠正確輸出編碼數據“10110100110100101101010010”。由此可見,此程序能夠準確地實現編碼功能。
4結論
本文主要根據FM0編碼原理設計了編碼電路。以上程序在Altera公司的CycloneⅢ系列的EP3C25324C8芯片上通過驗證,能夠正確實現數據編碼。本設計電路原理清晰、結構簡單、工作可靠,適合在可編程邏輯器件中使用。
參考文獻:
[1]昝勇,黎明,楊小芹,等. FM0編碼及其在FPGA中的設計與實現[J]. 電子測量技術, 2009(2): 95-97.
[2] 俞莉瓊,付宇卓. 有限狀態機的Verilog設計與研究[J]. 微電子學與計算機, 2004(11): 146-148.
[3] 徐羊. UHF RFID編解碼設計與實現[J].信息技術,2012(7):176-178.
[4] Samir Palnitkar.Verilog HDL數字設計與綜合[M]. 2版.夏宇聞,胡燕祥,刁嵐松,等譯. 北京: 電子工業出版社,2009.
[5]周潤景,圖雅,張麗敏. 基于QuartusⅡ的FPGA/CPLD數字系統設計實例[M]. 北京: 電子工業出版社,2007.
作者簡介
杜平:工程師,碩士畢業于華南理工大學,現任職于中國電子科技集團公司第七研究所,主要研究方向為RFID協議研究、RFID讀寫器系統研發。endprint