论文部分内容阅读
摘要:通过对低端FPGA的设计,完成数据量不大的光口通信功能;并对传输中的协议进行了说明,实现了数据的有效传输。
关键词:FPGA;SPARTAN3E;光通信
中图分类号:TP311 文献标识码:A文章编号:1009-3044(2007)06-11669-02
1 引言
当今,在电子设计领域,FPGA因为其强大的功能、低功耗、高速并行处理等优势越来越受到广大设计人员的青睐。无论在工业控制、消费类电子、IC设计及验证、通信等领域都可以看到FPGA的身影。不同的厂家也都在花大力气对其各自的FPGA进行优化,例如XILINX公司刚推出的全球第一款65nm工艺的高端FPGA——VIRTEX5系列产品,就集中了现阶段设计者可以想到的所有优点:超高速处理速度、超大内部存储空间、低功耗、快速的内部存储读取、高速的LVDS差分信号管角等等。
但是在各个公司不遗余力的发展其高端产品的同时,很多设计者更关心的是低端产品的资料。这也是在预料之中的,对于绝大多数公司而言,产品的成本最低化一直是其设计人员追求的目标。例如XILINX公司的SPARTAN3E系列FPGA就是其中的典范,既保持了低端产品的价格,又努力的在其性能方面有了比较大的提升;再例如ALTERA公司的CYCLONE2系列芯片也成为市场上的热点产品。笔者最近就是使用ALTERA公司的CYCLONE家族中的型号为EP1C3的FPGA完成了低速光传输模块的设计,为项目产品降低了比较多成本,增加了产品在同类市场的竞争力。
2 光传输现状
笔者所设计的光口传输模块主要用于各类监控系统中,例如再各个路口可以看到的摄象器,可以将各个路口的交通情况时实的传输到各交通管理中心。由于在我国,尚且还没有此行业的相关传输统一标准出台,所以现阶段很多公司的产品还处于相对独立不兼容的阶段。笔者在此次设计中,为某光通信公司提出相对可靠的通信协议标准,进行传输链路的双向不对称通信,最终实现影象在中控系统中的恢复。当今在市面中比较多看到的同类系统中数据传输的方式一般有三种实现方式:一是采用专用光传输芯片来实现数据的传输,比较流行的有TI公司的系列芯片,支持比较高的光传播速率,但是价格相对比较高。第二种方式就是通过相对高端的FPGA内部嵌有SERDES模块,可以直接支持和光模块的连接,在其内部的专用核可以直接把光模块的差分数据做并行转换,得到8bit或者16bit的数据格式以供FPGA内部使用。最后一种也是如今使用的比较多的一种,通过百/千兆以太网实现数据传输,这种方法的缺点是,如果进行长距离的传输,数据可靠性往往不能达到要求。
3 本设计方案
而笔者设计的方法适用于数据的低速率传输,可靠性高,控制方便,具有中低端市场的竞争优势。
3.1 设计模块图
下图为本次设计的模块图(图1)。
图1
3.2 接收端时钟恢复以及协议说明
上图中的光口传输模块部分为笔者设计完成,光口模块传输过程中比较关键的部分是接收端的时钟恢复问题。采用的是通过系统内部的PLL锁相环技术完成的,在最近各个公司生产的FPGA中都包含此硬模块,可以将时钟信号通过此模块产生倍频、分频、相位反转等功能。因此在接收端可以通过对固定码的检测来实现发射和接收端的时钟同步问题。笔者在设计的过程中,发送和接收端采用的是握手的方法进行通信,采用的编码形式为比较简单的8B/10B编码,在8B/10B通信原则中,K值为1’b0的时候所传输的为有效8bit数据,而当K值为1’b1的时候应该传输的为相应的K码,K码的码字构成有规定的格式,见图2。
在通信过程中,首先由发射端发送K码中的K28.7,作为接收端的接收时钟(receive_clk)的恢复信号,在系统启动后,接收端就时刻监测发射端的发送数据,寻找K28.7(即8’b111_11100),同时在接收端发送K码数据K28.6(即8’b110_11100)表示接收端还没有完成提取接收时钟的功能,发射端还不能发送有效数据,尚处于通信握手过程中。同时接收端如果在一定的时间内没有检测到此数据,那么就控制FPGA内部的PLL模块,将接收所用的时钟进行90度的相位转换,重新进行K28.7的搜寻,以此类推,对于FPGA而言,可以进行0度、90度、180度、270度4种相位转换,最终应该可以完成K28.7的检测任务。一旦在接收端连续收到此K码信号后,从接收端就开始发送另外一个K码K28.5,表示接收端接收时钟同步完成。而在发送端也一直在用同样的方法等待K28.5信号的到来,一旦两者之间完成通信握手,则意味着可以进行数据的通信了。此后发射端可以开始发送有效数据,如果通信链路发生断开,或者由于发射接收端始终频差比较大而导致收到其他格式的K码,则需要重新进行此过程,重新完成发送和接收的握手。
3.3 系统流程图
整个过程可以用以下几个步骤进行描述:
3.3.1 接收端时钟同步过程
3.3.2 接收端时钟同步完成
3.3.3 发送有效数据
3.3.4 通信发生障碍
3.3.5 重新建立连接
重新建立连接的过程重复1的方法。
以上就是模块主要设计的实现方法,是一个相对比较通用的发送模块,其他设计者在对本模块进行调用的时候,只要将所需要的数据发送到图1中所示的发送端的FIFO中,就可以在接收端的FIFO中完全恢复出原始信号。其数据收发速率取决于设计者使用的FPGA的型号而不一样。按照FPGA所支持的LVDS传输速率为150M计算,正常通信过程中,每秒所传输的数据量为150Mbit数据,如果按照每点24bit的影像数据、每秒钟60帧图像而言,如果不做影像压缩,每帧可传输的影像大小为:150Mbit/24bit/60=107K,也就是可以支持大小为300*300的图片以每秒60帧的速度进行重现,对于一些黑白监控器而言更是有更大的裕量传输其他各种数据信息。而且在实际应用过程中,设计者还可以通过接收端发送其他的K码数据,对发射端进行各种控制,以满足各种需求。
4 总结
本次设计使用低端的FPGA,设计出了比较实用的数据传输可靠模式,基本完成了设计初期的预想,达到了比较满意的结果。在次向其他设计人员推荐此种方法,希望可以对其他设计人员有些帮助。
参考文献:
[1]夏宇闻.Verilog HDL数字系统设计教程[M].北京航空航天大学出版社,2003.
[2][美]J.Bhasker著,徐振林译.VerilogHDL硬件描述语言[M].中国出版社,2004.
[3]刘凌,胡永生.数字信号处理的FPGA实现[M].北京:清华大学出版社,2003,7:302,5:6035.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:FPGA;SPARTAN3E;光通信
中图分类号:TP311 文献标识码:A文章编号:1009-3044(2007)06-11669-02
1 引言
当今,在电子设计领域,FPGA因为其强大的功能、低功耗、高速并行处理等优势越来越受到广大设计人员的青睐。无论在工业控制、消费类电子、IC设计及验证、通信等领域都可以看到FPGA的身影。不同的厂家也都在花大力气对其各自的FPGA进行优化,例如XILINX公司刚推出的全球第一款65nm工艺的高端FPGA——VIRTEX5系列产品,就集中了现阶段设计者可以想到的所有优点:超高速处理速度、超大内部存储空间、低功耗、快速的内部存储读取、高速的LVDS差分信号管角等等。
但是在各个公司不遗余力的发展其高端产品的同时,很多设计者更关心的是低端产品的资料。这也是在预料之中的,对于绝大多数公司而言,产品的成本最低化一直是其设计人员追求的目标。例如XILINX公司的SPARTAN3E系列FPGA就是其中的典范,既保持了低端产品的价格,又努力的在其性能方面有了比较大的提升;再例如ALTERA公司的CYCLONE2系列芯片也成为市场上的热点产品。笔者最近就是使用ALTERA公司的CYCLONE家族中的型号为EP1C3的FPGA完成了低速光传输模块的设计,为项目产品降低了比较多成本,增加了产品在同类市场的竞争力。
2 光传输现状
笔者所设计的光口传输模块主要用于各类监控系统中,例如再各个路口可以看到的摄象器,可以将各个路口的交通情况时实的传输到各交通管理中心。由于在我国,尚且还没有此行业的相关传输统一标准出台,所以现阶段很多公司的产品还处于相对独立不兼容的阶段。笔者在此次设计中,为某光通信公司提出相对可靠的通信协议标准,进行传输链路的双向不对称通信,最终实现影象在中控系统中的恢复。当今在市面中比较多看到的同类系统中数据传输的方式一般有三种实现方式:一是采用专用光传输芯片来实现数据的传输,比较流行的有TI公司的系列芯片,支持比较高的光传播速率,但是价格相对比较高。第二种方式就是通过相对高端的FPGA内部嵌有SERDES模块,可以直接支持和光模块的连接,在其内部的专用核可以直接把光模块的差分数据做并行转换,得到8bit或者16bit的数据格式以供FPGA内部使用。最后一种也是如今使用的比较多的一种,通过百/千兆以太网实现数据传输,这种方法的缺点是,如果进行长距离的传输,数据可靠性往往不能达到要求。
3 本设计方案
而笔者设计的方法适用于数据的低速率传输,可靠性高,控制方便,具有中低端市场的竞争优势。
3.1 设计模块图
下图为本次设计的模块图(图1)。
图1
3.2 接收端时钟恢复以及协议说明
上图中的光口传输模块部分为笔者设计完成,光口模块传输过程中比较关键的部分是接收端的时钟恢复问题。采用的是通过系统内部的PLL锁相环技术完成的,在最近各个公司生产的FPGA中都包含此硬模块,可以将时钟信号通过此模块产生倍频、分频、相位反转等功能。因此在接收端可以通过对固定码的检测来实现发射和接收端的时钟同步问题。笔者在设计的过程中,发送和接收端采用的是握手的方法进行通信,采用的编码形式为比较简单的8B/10B编码,在8B/10B通信原则中,K值为1’b0的时候所传输的为有效8bit数据,而当K值为1’b1的时候应该传输的为相应的K码,K码的码字构成有规定的格式,见图2。
在通信过程中,首先由发射端发送K码中的K28.7,作为接收端的接收时钟(receive_clk)的恢复信号,在系统启动后,接收端就时刻监测发射端的发送数据,寻找K28.7(即8’b111_11100),同时在接收端发送K码数据K28.6(即8’b110_11100)表示接收端还没有完成提取接收时钟的功能,发射端还不能发送有效数据,尚处于通信握手过程中。同时接收端如果在一定的时间内没有检测到此数据,那么就控制FPGA内部的PLL模块,将接收所用的时钟进行90度的相位转换,重新进行K28.7的搜寻,以此类推,对于FPGA而言,可以进行0度、90度、180度、270度4种相位转换,最终应该可以完成K28.7的检测任务。一旦在接收端连续收到此K码信号后,从接收端就开始发送另外一个K码K28.5,表示接收端接收时钟同步完成。而在发送端也一直在用同样的方法等待K28.5信号的到来,一旦两者之间完成通信握手,则意味着可以进行数据的通信了。此后发射端可以开始发送有效数据,如果通信链路发生断开,或者由于发射接收端始终频差比较大而导致收到其他格式的K码,则需要重新进行此过程,重新完成发送和接收的握手。
3.3 系统流程图
整个过程可以用以下几个步骤进行描述:
3.3.1 接收端时钟同步过程
3.3.2 接收端时钟同步完成
3.3.3 发送有效数据
3.3.4 通信发生障碍
3.3.5 重新建立连接
重新建立连接的过程重复1的方法。
以上就是模块主要设计的实现方法,是一个相对比较通用的发送模块,其他设计者在对本模块进行调用的时候,只要将所需要的数据发送到图1中所示的发送端的FIFO中,就可以在接收端的FIFO中完全恢复出原始信号。其数据收发速率取决于设计者使用的FPGA的型号而不一样。按照FPGA所支持的LVDS传输速率为150M计算,正常通信过程中,每秒所传输的数据量为150Mbit数据,如果按照每点24bit的影像数据、每秒钟60帧图像而言,如果不做影像压缩,每帧可传输的影像大小为:150Mbit/24bit/60=107K,也就是可以支持大小为300*300的图片以每秒60帧的速度进行重现,对于一些黑白监控器而言更是有更大的裕量传输其他各种数据信息。而且在实际应用过程中,设计者还可以通过接收端发送其他的K码数据,对发射端进行各种控制,以满足各种需求。
4 总结
本次设计使用低端的FPGA,设计出了比较实用的数据传输可靠模式,基本完成了设计初期的预想,达到了比较满意的结果。在次向其他设计人员推荐此种方法,希望可以对其他设计人员有些帮助。
参考文献:
[1]夏宇闻.Verilog HDL数字系统设计教程[M].北京航空航天大学出版社,2003.
[2][美]J.Bhasker著,徐振林译.VerilogHDL硬件描述语言[M].中国出版社,2004.
[3]刘凌,胡永生.数字信号处理的FPGA实现[M].北京:清华大学出版社,2003,7:302,5:6035.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。