当前位置:
POWERLINK基于FPGA的方案
来源: | 作者:pro201107 | 发布时间: 2020-10-03 | 71 次浏览 | 分享到:

1. POWERLINK的实现方案

POWERLINK可以运行在任何具有标准以太网的平台上,ARM , DSP , FPGA ,X86CPU;任意的操作系统:windowsLinux Vxworks或者无操作系统。有两种典型的方案:

方案一:基于FPGA的纯硬件解决方案 (HDL  POWERLINK),FPGA芯片做为POWERLINK的通信芯片,通过并行接口或者PCIE接口与应用MCU相连。

l  采用Verilog 语言实现。

l  成本低,单芯片解决方案。

l  性能高,最短循环周期小于50us

l  容易使用,无需FPGA和嵌入式开发经验。

l  支持环网冗余,双网冗余,多主站冗余。

l  支持定制化应用层协议, 以及CANopen应用层协议。

l  支持100Mbps/1000Mbps传输速率。

l  支持并行接口或者PCIE接口。

l  在同一FPGA种可增加用户的其他应用。

该方案性能高,可靠性高,实现简单,系统升级时改动少。但是每个从站需要一片FPGA,增加成本。

该方案目前支持的硬件平台:

ü  XILINX spartan6

ü  XILINX zynq

ü  高云FPGA

ü  复旦微电子FPGA

 

方案二:C语言解决方案,运行于MCU CPU的解决方案

l  支持各种ARM平台,X86 CPU , DSP,PowerPC

l  支持各种操作系统,或者无操作系统

l  支持各种以太网芯片

l  通常只能星型拓扑

l  该方案用于实时性要求较低,成本低的场合。

l  该方案也可以运行于FPGA +  软核。

l  该方案采用VHDL + C语言实现。

l  以太网MACHUB等由VHDL实现,POWERLINK协议栈由C语言实现。

l  可提供主站/从站的全套代码。

l  应用层和数据链路层不可分割,都在FPGA或者MCU中实现。

l  该方案用于要求不高的IO控制, 以及运动控制,控制周期最短为400us

该方案实现成本低,一颗MCUFPGA即可实现,性能较低,每一次MCU或者FPGA的软件或硬件升级,POWERLINK都需要重新编译,可能会有不兼容风险。

该方案目前已经移植好的平台如下:

ü  ALTERA CYCLONE4

ü  XILINX SPARTAN6

ü  LINUX

ü  WINCE

ü  VxWorks

ü  Windows

ü  STM32 裸片

2.     HDL POWERLINK方案介绍

2.1  架构

物理层: 物理层的MACHUB以及环形冗余,双网冗余在FPGA采用Verilog HDL实现。

数据链路层: POWERLINKDLL状态机,NMT网络管理等在FPGA采用Verilog HDL实现。

应用层: 在上位机实现。 可以使用CANopen做为应用层,也可以使用其它任意的应用层。

API接口:应用层与POWERLINK数据链路层之间的接口为API接口。该接口物理上采用寄存器,以及双口RAM。 上位机可以采用8/16/32 并行总线来访问,也可以采用SPI, PCI,PCIE等总线;或者自己定义的总线来访问。

硬件框图:

 

一个POWELRINKFPGA系统包括Flash PHY

PHY: 以太网的物理层硬件,与FPGA之间通过MIIRMII接口连接。

Flash: 用于保存FPGA内的程序。支持串行或者并行的flash

2.2  资源

FPGA资源在下表中说明。

2.1 FPGA资源

项目

内容

备考

器件型号

 

 

时钟周期

MAC接口

50MHz

 

AP接口(Host并行接口)

50MHz

 

内部各逻辑电路

50MHz

 

FPGA资源

IOB使用个数

63

 

内部BlockRAM使用个数

16

 

内部寄存器使用个数

3,230

 

内部LUT使用个数

5,044

 

全体SLICE使用情况

3,976

 

内部DCM使用个数

2

 

内部PLL使用个数

0

 

2.3  FPGA与上位机通信 --- 异步并行总线

异步并行总线接口,支持8bits16bits数据宽度,16bits的地址线。

信号线说明:

 

CS”为片选信号;“WR”为写信号;“RD”为读信号;“DATA”为数据信号;“ADDR”为地址信号;“IRQ”为中断信号。Ack信号是总线读写的控制信号,该信号为可选。

BE信号是Byte Enable的简写,即字节使能信号。

当并行总线的数据宽度选择16bits时。此时如果Host一侧需要字节(8bits)操作,就需要BE信号,此时MCU一侧的地址addr[15..1]POWERLINK FPGA一侧的地址addr[15..1]连接,把地址addr[0]省略(为了安全起见,可以将FPGAaddr[0]FPGA内部接地),这样MCU一侧每次寻址空间为16bitsBe信号的宽度为2 bits, Be[1,0]={0,1}时,表示选择16bits数据的低8位;Be[1,0]={1,0}时,表示选择16bits数据的高8位;Be[1,0]={1,1}时,表示选择全部的16bits数据。ARM既支持8bits操作,也支持16bits操作。

如果MCU一侧只支持16bits操作,例如部分DSP。可以将这Be[1,0]两个信号在FPGA内部接到高电平,无需将其引出。