基于FPGA的FM0编码设计
2014-09-27杜平
【摘要】主要介绍了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