FPGA四大设计要点解析及应用方案集锦
扫描二维码
随时随地手机看文章
本文叙述概括了FPGA应用设计中的要点,包括,时钟树、FSM、latch、逻辑仿真四个部分。
FPGA的用处比我们平时想象的用处更广泛,原因在于其中集成的模块种类更多,而不仅仅是原来的简单逻辑单元(LE)。早期的FPGA相对比较简单,所有的功能单元仅仅由管脚、内部buffer、LE、RAM构建而成,LE由LUT(查找表)和D触发器构成,RAM也往往容量非常小。现在的FPGA不仅包含以前的LE,RAM也更大更快更灵活,管教IOB也更加的复杂,支持的IO类型也更多,而且内部还集成了一些特殊功能单元,包括:
DSP:实际上就是乘加器,FPGA内部可以集成多个乘加器,而一般的DSP芯片往往每个core只有一个。换言之,FPGA可以更容易实现多个DSP core功能。在某些需要大量乘加计算的场合,往往多个乘加器并行工作的速度可以远远超过一个高速乘加器。
SERDES:高速串行接口。将来PCI-E、XAUI、HT、S-ATA等高速串行接口会越来越多。有了SERDES模块,FPGA可以很容易将这些高速串行接口集成进来,无需再购买专门的接口芯片。
CPU core:分为2种,软core和硬core。软core是用逻辑代码写的CPU模块,可以在任何资源足够的FPGA中实现,使用非常灵活。而且在大容量的FPGA中还可以集成多个软core,实现多核并行处理。硬core是在特定的FPGA内部做好的CPU core,优点是速度快、性能好,缺点是不够灵活。
不过,FPGA还是有缺点。对于某些高主频的应用,FPGA就无能为力了。现在虽然理论上FPGA可以支持的500MHz,但在实际设计中,往往200MHz以上工作频率就很难实现了。
FPGA设计要点之一:时钟树
对于FPGA来说,要尽可能避免异步设计,尽可能采用同步设计。同步设计的第一个关键,也是关键中的关键,就是时钟树。一个糟糕的时钟树,对FPGA设计来说,是一场无法弥补的灾难,是一个没有打好地基的大楼,崩溃是必然的。
具体一些的设计细则:
1)尽可能采用单一时钟;
2)如果有多个时钟域,一定要仔细划分,千万小心;
3)跨时钟域的信号一定要做同步处理。对于控制信号,可以采用双采样;对于数据信号,可以采用异步fifo。需要注意的是,异步fifo不是万能的,一个异步fifo也只能解决一定范围内的频差问题。
4)尽可能将FPGA内部的PLL、DLL利用起来,这会给你的设计带来大量的好处。
5)对于特殊的IO接口,需要仔细计算Tsu、Tco、Th,并利用PLL、DLL、DDIO、管脚可设置的delay等多种工具来实现。简单对管脚进行Tsu、Tco、Th的约束往往是不行的。
可能说的不是很确切。这里的时钟树实际上泛指时钟方案,主要是时钟域和PLL等的规划,一般情况下不牵扯到走线时延的详细计算(一般都走全局时钟网络和局部时钟网络,时延固定),和ASIC中的时钟树不一样。对于ASIC,就必须对时钟网络的设计、布线、时延计算进行仔细的分析计算才行。
FPGA设计要点之二:FSM
FSM:有限状态机。这个可以说时逻辑设计的基础。几乎稍微大一点的逻辑设计,几乎都能看得到FSM。FSM分为moore型和merly型,moore型的状态迁移和变量无关,merly型则有关。实际使用中大部分都采用merly型。
FSM通常有2种写法:单进程、双进程。
初学者往往喜欢单进程写法,格式如下:
always @( posedge clk or posedge rst )
begin
if ( rst == 1‘b1 )
FSM_status <= 。。.。。.;
else
case ( FSM_status )
。。.。。.;
endcase
end
简单的说,单进程FSM就是把所有的同步、异步处理都放入一个always中。
FPGA设计要点之三:latch
首先回答一下:
1)stateCAD没有用过,不过我感觉用这个东东在构建大的系统的时候似乎不是很方便。也许用system C或者system Verilog更好一些。
2)同步、异步的叫法是我所在公司的习惯叫法,不太对,不过已经习惯了,呵呵。
这次讲一下latch。latch的危害已经说过了,这里不再多说,关键讲一下如何避免。
1)在组合逻辑进程中,if语句一定要有else!并且所有的信号都要在if的所有分支中被赋值。
always @( * ) begin
if ( sig_a == 1‘b1 ) sig_b = sig_c;
end
这个是绝对会产生latch的。
正确的应该是
always @( * ) begin
if ( sig_a == 1’b1 ) sig_b = sig_c;
else sig_b = sig_d;
end
另外需要注意,下面也会产生latch。也就是说在组合逻辑进程中不能出现自己赋值给自己或者间接出现自己赋值给自己的情况。
always @( * ) begin
if ( rst == 1‘b1 ) counter = 32’h00000000;
else counter = counter + 1;
end
但如果是时序逻辑进程,则不存在该问题。
2)case语句的default一定不能少!
原因和if语句相同,这里不再多说了。
需要提醒的是,在时序逻辑进程中,default语句也一定要加上,这是一个很好的习惯。
3)组合逻辑进程敏感变量不能少也不能多。
这个问题倒不是太大,verilog2001语法中可以直接用 * 搞定了。顺便提一句,latch有弊就一定有利。在FPGA的LE中,总存在一个latch和一个D触发器,在支持DDR的IOE(IOB)中也存在着一个latch来实现DDIO。不过在我们平时的设计中,对latch还是要尽可能的敬而远之。
FPGA设计要点之四:逻辑仿真
仿真是FPGA设计中必不可少的一步。没有仿真,就没有一切。仿真是一个单调而繁琐的工作,很容易让人产生放弃或者偷工减料的念头。这时一定要挺住!仿真分为单元仿真、集成仿真、系统仿真。
单元仿真:针对每一个最小基本模块的仿真。单元仿真要求代码行覆盖率、条件分支覆盖率、表达式覆盖率必须达到100%!这三种覆盖率都可以通过MODELSIM来查看,不过需要在编译该模块时要在Compile option中设置好。
集成仿真:将多个大模块合在一起进行仿真。覆盖率要求尽量高。
系统仿真:将整个硬件系统合在一起进行仿真。此时整个仿真平台包含了逻辑周边芯片接口的仿真模型,以及BFM、Testbench等。系统仿真需要根据被仿真逻辑的功能、性能需求仔细设计仿真测试例和仿真测试平台。系统仿真是逻辑设计的一个大分支,是一门需要专门学习的学科。
Xilinx针对平板显示器LED背光的FPGA解决方案
1.概述
Kintex-7 FPGA 和 Artix-7 提供的功能使得平板显示器制造商能够提高图像质量、降低功耗和削减成本。
2.方案特性
为 LED 背光控制器实现了复杂的局部调光和照明补偿算法。
生产具有不同的 LED 区域数量和 LED 布局的直接型照明显示器,同时调整照明以便与不同供应商生产的面板的物理特性相匹配。
为显示器添加 3D 功能。
与利用上一代 FPGA 实现的设计相比,其系统 FPGA 功耗降低了32%
与利用上一代 FPGA 实现的设计相比,其系统 FPGA 成本削减了30%
利用 Artix-7 FPGA 实现的设计将 LED 背光控制器的功耗降低 63%
灵活的并行/串行接口技术利用 PCI Express、USB 2.0、DisplayPort 和 V-by-One 技术实现了芯片-芯片和板-板通信
3.75Gbps V-by-One@HS 的 16 或 32 信道 (per Thine’s spec)
5.4Gbps DisplayPort 1.2 的多端口 (per VESA spec)
1,866Mbps DDR3 存储器接口实现了基于商用存储器的视频数据缓冲器
1.6Gbps LVDS I/O 降低了并行接口内的迹线数量
芯片级封装实现了基于4层 PCB 的低成本生产
方案框图:
3.业界领先的系统解决方案
KintexR-7 FPGA 能够提供高信号处理能力和低功耗,从而满足各种应用需求,包括:
1)LED 背光平板显示器和 3DTV
2)LTE 基带
3)携帯型超音波装置
4)多模射频
5)高端消费类数码单反相机
6)Video-over-IP 网关
相关芯片介绍:赛灵思Kintex-7 FPGA 系列芯片简介
基于京微雅格低功耗FPGA的8b/10b SERDES的接口设计
串行接口常用于芯片至芯片和电路板至电路板之间的数据传输。随着系统带宽不断增加至多吉比特范围,并行接口已经被高速串行链接,或SERDES (串化器/ 解串器)所取代。起初, SERDES 是独立的ASSP 或ASIC 器件。在过去几年中已经看到有内置SERDES 的FPGA 器件系列,但多见于高端FPGA芯片中,而且价格昂贵。
本方案是以CME最新的低功耗系列FPGA的HR03为平台,实现 8/10b的SerDes接口,包括SERDES收发单元,通过完全数字化的方法实现SERDES的CDR(Clock Data Recovery,时钟数据恢复),完成100~200Mhz的板间SERDES单通道通信,该SERDES接口方案具有成本低、灵活性高、研发周期短等 特点。
1硬件接口:
硬件的接口如上图所示,主要包括发送与接收模块。
发送模块包括8b/10b编码器,并串转换器,锁相环(PLL)频率合成器和发送器,接收模块包括 8b/10b解码器,Comma 检测器,串并转换器,时钟数据恢复器(CDR)和接收器。
8b/10b编码器用于将从上层协议芯片发送过来的字节信号映射成直流平衡的 10 位8b/10b 编码,并串转换用于将 10 位编码结果串行化,并串转换所需的高速、低抖动时钟由锁相环提供,发送器用于将 CMOS 电平的高速串行码流转换成抗噪声能力较强的差分信号,经背板连接或光纤信道发送到接收机。
在接收端,接收器将接收到的低摆幅差分信号还 原为 CMOS 电平的串行信号,CDR 从串行信号中抽取时钟信息,完成对串行数据的最佳采样,串并转换利用 CDR 恢复的时钟,将串行信号转换成 10 位的并行数据,Comma 检测器检测特殊的 Comma 字符,调整字边界,字边界正确的并行数据经过 8b/10b 解码,还原为字节信号,传送到上层协议芯片,完成整个信息传输过程。
实际的设计中,CDR部分是由纯逻辑电路完成的,为设计的核心的部分,下面将介绍数字CDR在HR03的实现方案。
2数字CDR:
CDR模块作用是从数据中恢复嵌入的时钟,然后接收器按照恢复的时钟进行数据位对齐并通过comma进行字对齐。最后,将数据进行8b/10b解码,供系统使用。
本方案采用同频多相的时钟采样方法,具体实现过程利用PLL产生4个时钟频率相同,相位相差90度的时钟,分别为clk0、clk90、clk180、 clk270,这四个时钟输出完全同步,利用4个时钟对数据进行采样,以获得4倍过采样的效果,具体的实现过程如下图所示:
在数据时钟恢复时,将到来的数据分别输入到四个触发器,分别用4个不同的相位进行采样,要注意保证从输入引脚到四个触发器的延迟基本一致。
第一列触发器的触发分别由时钟CLK0、CLK90、CLK180、CLK270的上升沿触发,按照这样的方式来触发就可以得到四个数据采样点。这样就 将原始时钟周期分成了四个单独的90度的区域,如果系统时钟为200MHz,上图所示的电路就相当于产生了800MHz 的采样速率。
仅通过一阶的触发器,输出的采样数据存在亚稳态的问题,因此需对采样点作进一步的处理。这里可将四个采样点通过进一步的触发,除掉亚稳态的问题,从而使采 样点移到下一个相同的时钟域。通常,亚稳态的去除要经过两三级的处理,这就使得在有效数据输出前会有数位无效的数据,在数据采样的第一个阶段,电路检测数 据线上数据的传输。当检测到有数据传输时,对传输数据的有效性进行确认。确认数据有效后,输出高电平来指示采样点有数据传输。
因为最终有四个输出,所以需要一个复用器来选择数据。发送数据与采样时钟的对应关系如上图所示,其对应关系分为4种情况,每种情况下对应一个最佳的采样 时钟,系统通过对数据边沿位置信息的判断,来确定哪路时钟为最佳采样时钟,并利用复用器从选定的时钟域中选择数据位,例如检测电路确定从时钟域A中采样的 数据有效,那么将时钟域A中采样的数据通过输出端输出。
3结束语:
通过对纯数字电路的CDR电路,在没有硬核的支持下,完成了FPGA上SERDES的接口设计,并通过实验的传输测试,在HR03的FPGA上,可完成100~200Mbps的数据传输。
基于FPGA的智能小车设计方案
智能监控机器人是近年来机器人应用工程中一项前沿性的题目,智能化探测小车是智能行走机器人的一种。智能监控机器小车就是针对上述情况,在参考 了目前大多数智能机器人的基础上,以降低成本为原则设计的。小车具备温湿度和环境监测、无线通信、躲避障碍物以及无线遥控等功能。此智能监控机器小车与目 前已有的同类设计相比,有性价比高、操作方便、可靠性好、功耗小等优点。
1 系统结构及硬件设计
整个系统由发送端(智能小车部分)和接收端(控制台:控制和显示部分)组成,如图1所示。系统由传感器系统、动力及转向系统、CCD图像传感器模块、 LCD显示、温度和湿度测量电路和供电系统等组成,整个系统的控制核心以2片Altera公司的EP2C20F484为核心,在Altera公司的 QuartusⅡ和SoPC Builder开发环境中完成。根据系统硬件结构添加所需要的外围模块并生成NiosⅡCPU。
1.1 供电系统
小车安装了两块充电电池,分别为FPGA开发板(FPGA控制电路)和小车运动提供能量,电池置于车身底部。
1.2 传感器系统
系统采用了6个红外对射传感器,通过FPGA配置的NiosⅡCPU来检测传感器信号实现小车躲避障碍物的功能。漫反射型红外对射传感器也称光电开关, 是一种集发射器和接收器于一体的传感器,多用于检测障碍物。原理是由光电开关辐射出来的调制红外光束被检测物体反射回来,红外线经同步选通接收,由电子开 关线路驱动回路,从而来检测物体的有或无。当被检测物体的表面光亮或其反光率极高时,漫反射式的光电开关是首选的检测模式。这种电路模块体积小,信号容易 转化为标准电平。
1.3 动力及转向系统
本小车有左右轮两个电机及龟机驱动。驱 动电路采用了CT Microelecttonics公司的大功率直流电机驱动芯片L298,最高支持50 V电压,最大电流为5 A,满足大功率电动机的要求,外围电路简单,同时,由于该芯片为双路结构,分别控制左右电动机,增加了电路的可靠性,减少了复杂性。电机控制采用PWM脉 冲宽度调制方式来控制汽车的前进速度。由NiosⅡCPU写入控制字,可得到不同占空比的PWM驱动信号,此PWM信号送入电机驱动芯片的控制端来调节速 度。
1.4 小车自动避障系统
小车自动避障系统采用Verilog HDL语言编写驱动电路。该模块(见图2中的MOTOR)和一个数据选择器(见图2中的select_2)相连来实现自动避障与人工遥控之间的切换。当小 车上NiosⅡCPU的SEL管脚输出低电平时,数据选择器将把该模块的输出作为电机的控制指令。这样设计的好处在于设计具有响应迅速,不需要NiosⅡ CPU参与,提高了CPU处理湿度、温度数据并控制无线模块收发数据的效率。该逻辑电路的工作原理是根据红外传感器发回来的数据,经过逻辑判断来控制电机 的工作状态。
1.5 小车的人工控制
小车的人工控制和自动避障之间的转换由一个数据选择器控制,当小车上NiosⅡCPU的SEL管脚输出高电平时,数据选择器将把无线模块所发送过来的指令作为电机的控制指令,实现了对小车的无线控制。
1.6 温度和湿度测量
在温度测量系统中,采用抗干扰能力强的新型数字温度传感器DS18B20,该系统设计中将DS18B20的1,3引脚分别接于FPGA板的GND 和+3.3 V管脚,2引脚接FPGA的I/O脚,传输控制及数据信号。DS18B20最高可用12位表示温度值,最高5位为符号位。
采用HS1101湿度传感器,具有响应速度快,工作温区宽(-40~+100℃),测量范围大(0%~100%RH),可靠性高,稳定性好,功耗低,外围电路简单等优点。
工作原理为:用HS1101传感器与TLC555构成多谐振荡器,HS1101传感器内部电容会随湿度的变化而变化,从而使输出频率发生变化。编写VHDL程序在FPGA设计一个频率计可精确的测出频率值,通过输出频率与湿度的关系便可得到湿度值。
1.7 无线收发系统
系统采用PTR4000无线嵌入式模块,工作频率为2.4 GHz,最高工作速率可达1 Mb/s,高效GMSK调制,且有CRC检错功能。具有低功耗,抗干扰能力强,体积小等优点。主要有三种工作模式,分别为:配置模式、 ShockBurst发送模式和ShockBurst接收模式。
2 软件设计和调试
采用NiosⅡ进行C语言编程。NiosⅡ集成开发环境(IDE)是NlosⅡ系列嵌入式处理器的基本软件开发工具。所有软件开发任务都可以在Nios ⅡIDE下完成,包括编辑、编译和调试程序。NiosⅡIDE是基于开放式的、可扩展Eclipse IDE project工程以及EclipseC/C++开发工具(CDT)工程,NiosⅡIDE为GCC编译器提供了一个图形化用户界面,可以支持标准C。 NiosⅡIDE编译环境自动地生成一个基于用户特定系统配置(SoPC Builder生成的SoPC文件)的makefile,有利于程序的开发。
NiosⅡIDE包含一个强大的、在GNU调试器基础之上的软件调试器——GDB。完成软件代码的编写后,可以对代码进行仿真和调试。Nios-Ⅱ IDE提供了一个方便的闪存编程方法。任何连接到FPGA的兼容通用闪存接口(CFI)的闪存器件都可以通过NiosⅡIDE闪存编程器来烧结。针对本设 计及应用,编写了系统控制程序和LCD显示程序。流程图如图3所示。
3 系统调试
小车系统需要测试能否准确接收控制台发送的指令并控制小车运动或停止,以及向前、后、左、右转向。还要测试主控机能否准确接收小车采集到的温度以及湿度 信息,能否正确显示。经过多次测试,发现由于系统程序是采用收发循环转换的模式,为了让两个系统能够收到对方发的信息,对小车的遥控与自动部分进行简单的 分化。自动情况下,控制台为主要接收端,小车为主要发送端,一般情况下小车发送数据到控制台,需要自动到遥控的转换时,通过在延时时间内进行中断来实行从 自动到遥控的转换;在遥控状态下,控制台为主要发射端,小车为接收端,一般情况下控制台发送小车行进指令到小车,需要采集数据时,通过温度、湿度采集按键 来对小车进行收发转换,同时小车发出采集数据指令,之后再次转为接收模式。这样做之后使小车与控制台的软件部分清晰明了,小车的行进以及采集显示数据能够 实时的进行。
湿度测量系统需要测试是否能够精准输出频率值。采用芯片LM555手册上推荐的电路,由于元件的误差,使输出的频率并不精 确,经过与标准的湿度仪进行比对,通过参数调整,用直线做近似,最后得到的频率值误差在几赫兹(频率范围是6 008~7 314Hz),经过预算得到很准确的湿度值。开始求湿度值时用的是解一元三次方程的方法,由于计算量大,对小车的行进会有很大影响,后来在小车端只是把小 车采集到的频率值通过红外天线传输到主控端,并将原先的小车自动避障由NiosⅡCPU控制改为由Verilog编写的硬件模块控制,最后在控制台做湿度 值的计算。这样的更改既减少了小车NiosⅡCPU的工作量,同时由于小车的自动避障改为由独立的Verilog模块控制,运行起来很流畅。
对于无线收发系统,要测试其可靠性以及发送或接收的信息的准确性。测试方法是单独设计了一个软核下载到SoPC中,并编写一段程序用于测试是否正确写入 配置控制字,是否能够进行ShockBurst模式的接收或发送。问题是对天线各模式时序的把握,一开始写的程序总是不能正确写入配置字,反复调试,并用 数字示波器观察写入配置字的瞬间过程以及各延时的时间,最后测试成功,并把发送或接收的状态用LED显示出来,每发送或接收到一个数据包就让LED闪一 下。
4 结语
本设计以FPGA嵌入NiosⅡ软核处理器为核心,辅以必要的外围 电路,构成了高度集成化的片上系统。另外,SoPC系统的柔性配置,使得可以基于此系统扩展片外存储器和多路输出。设计的小车具有较强的避障能力,且能通 过接收端对其进行方便的控制,温度和湿度采集均达了较高的精度,并且能实现动态显示,无线收发模块的有效范围最远可达300 m,可应用于较为恶劣的环境,可代替人进行温度和湿度的实地检测。[!--empirenews.page--]
基于SoC FPGA进行工业设计及电机控制
工业市场的近期发展推动了对具有高集成度、高性能、低功耗FPGA器件的需求。设计人员更喜欢网络通信而不是点对点通信,这意味着可能需要额外的控制器用于通信,进而间接增加了BOM成本、电路板尺寸和相关NRE(一次性工程费用)成本。
总体拥有成本用于分析和估计购置的寿命周期成本,它是所有与设计相关的直接和间接成本的扩展集,包括工程技术成本、安装和维护成本、材料清单(BOM)成本和NRE(研发)成本等。通过考虑系统级因素有可能最大限度地减少总体拥有成本,从而带来可持续的长期盈利能力。
美高森美公司(Microsemi)提供具有硬核ARM Cortex-M3微控制器和IP集成的SmartFusion2 SoC FPGA器件,它采用成本优化的封装,具有减少BOM和电路板尺寸的特性。这些器件具有低功耗和宽温度范围,能够在没有冷却风扇的极端条件下可靠地运行。 SmartFusion2 SoC FPGA架构将一个硬核ARM Cortex-M3 IP与FPGA架构相集成,可以实现更大的设计灵活性和更快的上市时间。美高森美为电机控制算法开发提供了具有多个多轴电机控制参考设计和IP的生态系 统,使由多处理器解决方案转向单一器件解决方案(即SoC FPGA)更加容易。
影响TCO的因素
以下是影响系统TCO的一些因素。
(1)长寿命周期。FPGA可以在现场部署之后进行重新编程,这延长了产品的寿命周期,从而使设计人员能够专注于新产品开发,实现更快的上市时间。
(2)BOM.美高森美基于闪存技术的FPGA在上电时无需启动PROM或闪存MCU来加载FPGA,它们是零级非易失性/即时启动器件。与基于SRAM的FPGA器件不同,美高森美基于闪存的FPGA无需附加上电监控器,这是因为闪存开关不会随电压而改变。
(3)上市时间。OEM厂商之间的激烈竞争迫切需要更多的产品差异化和更快的上市时间。经过验证的IP模块可大幅缩短设计时间。目前已经可以提供多个构 建工业解决方案所需的IP模块,同时更多的模块正在开发中。SoC表现出的另一个独特优势是可以用于调试FPGA设计。为了调试FPGA设计,可以通过用 于调试的高速接口,利用微控制器子系统从FPGA中提取信息。
(4)工程工具成本。与FPGA开发工具昂贵的概念相反,美高森美提供用于FPGA开发的免费Libero SoC IDE,仅在开发高端器件时才需要付费。
工业驱动系统
工业驱动系统由一个电机控制器件和一个通信器件构成,电机控制器件包含了驱动逆变器的逻辑和保护逻辑,通信器件则使监控控制能够对运行时间参数进行初始化和修改。
在典型的驱动系统(图1)中,可能使用多个控制器器件来实现驱动逻辑。一个器件可能执行与电机控制算法相关的计算,第二个器件可能运行与通信相关的任务,第三个器件则可能运行与安全性相关的任务。
多轴电机控制
传统上,工业电机控制应用使用微控制器或DSP来运行电机控制所需的复杂算法,在大多数传统的工业驱动中,FPGA与微控制器或DSP一起使用,用于数 据采集和快速作用保护。除了数据采集、PWM生成和保护逻辑,FPGA传统上并未在实现电机控制算法方面发挥主要作用。
使用微控制器或DSP实现电机控制算法的方法并不容易扩展到多个以独立速度运行的电机(多轴电机控制),美高森美SmartFusion2 SoC FPGA可以使用单一器件来实现集成且完整的多轴电机驱动控制(图2)。
控制方面可以分为两个部分。一个部分用于运行磁场定向控制(FOC)算法、速度控制、电流控制、速度估计、位置估计和PWM生成;另一个部分则包括速度 曲线、负载特性、过程控制和保护(故障和报警)。执行FOC算法属于时间关键型,需要在极高的采样速率下进行(在微秒范围),特别是针对具有低定子电感的 高速电机。这使得在FPGA中实现FOC算法变得更优越。过程控制、速度曲线和其他保护无需快速更新,因而能够以较低的采样速率执行(在毫秒范围),并且 能够在内置Cortex-M3子系统中进行编程。
晶体管开关周期在驱动中发挥着重要的作用,如果FOC回路执行时间比开关周期短得多,硬件模块可以重用于计算第二个电机的电压。这意味着器件可以在相同的成本下提供更高的性能。
(1)电机控制IP模块。图3为无传感器磁场定向控制算法,这一部分将会讨论这些模块,它们作为IP核提供。
● PI控制器。比例积分(PI)控制器是用于控制系统参数的反馈机制,它具有两个用于控制控制器动态响应的可调增益参数-比例和积分增益常数。PI控制器的 比例分量是比例增益常数和误差输入的乘积,而积分分量是累积误差和积分增益常数的乘积。这两个分量被加在了一起。PI控制器的积分阶段可能在系统中引起不 稳定,因为数据值不受控制地增加。这种不受控制的数据上升称作积分饱卷,所有的PI控制器实现方案都包括一个抗饱卷机制,用于确保控制器输出是有限的。美 高森美的PI控制器IP模块使用hold-on-saturation(保持饱和)算法用于抗饱卷。这个模块还提供附加特性以设置最初的输出值。
● 磁场定向控制(FOC)。FOC是通过独立地确定和控制转矩和磁化电流分量来为电机提供最优电流的算法。在永磁同步电机(PMSM)中,转子已经磁化。因 此,为电机提供的电流只用于转矩。FOC是计算密集型算法,但是美高森美电机控制参考设计已经针对器件资源的最优使用而构建。FOC算法包括 Clarke、Park、逆Clarke和逆Park变换。
● 角度估计。FOC的一个输入是转子角度。精确确定转子角度对于确保低功耗是必不可少的。增添确定位置和速度的物理传感器会增加系统的成本并降低可靠性。无 传感器算法有助于消除传感器,但是增加了计算复杂性。美高森美针对无传感器控制提供了两个角度计算算法IP模块-一个基于Luenberger观测器,另 一个基于直接反电动势计算。该公司还提供基于霍尔传感器和编码器的单独参考设计。
● PLL.PLL用于同步信号,在多个应用中有用,例如逆变器的角度估计和电网同步。
● 速率限制器。速率限制器模块可以实现系统变量或输入的平滑改变。例如,在电机控制系统中,如果电机所需的速度突然改变,系统可能变得不稳定。为了避免此类情形,速率限制器模块用于从初始速度转变到所需的速度。速率限制器模块可以进行配置以控制改变的速率。
● 空间矢量调制。空间矢量调制模块改善了直流总线利用率,并消除了晶体管开关的短脉冲。因为晶体管开启/关断时间比脉冲持续时间长,短脉冲会导致不正确的开关行为。
● 三相PWM生成。在所有计算的最后,可以得到三相电机电压。这些电压用于生成逆变器中晶体管的开关信号。PWM模块为六个(三个高侧和三个低侧)晶体管产 生开关信号,并且具有死区时间和延迟时间插入等先进特性。可编程的死区时间插入特性有助于避免逆变器引脚上的灾难性短路情况。可编程的延迟时间插入特性使 ADC测量与PWM信号生成能够同步。该模块可以配置成与仅由N-MOSFET组成的逆变器或同时包括N-MOSFET和P-MOSFET的逆变器一起工 作。
(2)在SoC中调试FPGA设计。通常,在微控制器上调试设计比在FPGA上进行调试相对简单一些。在SoC中,可以利用 FPGA的高性能,同时保持在微控制器中更快速调试的优势。美高森美SmartFusion2 SoC FPGA中的微控制器子系统和FPGA架构可以通过AMBA APB或AXI总线彼此进行通信。这样可以把测试数据注入FPGA架构中,或者从FPGA架构中记录调试数据,从而帮助实现运行时间的内部数据可视化,用 于实时调试。固件代码可以单步运行,在代码中可以设置断点来分析FPGA寄存器数据。
基于SmartFusion2 SoC FPGA的多轴电机控制解决方案通过USB连接至主机PC,并与图形用户界面(GUI)通信,进行启动/停止电机,设置电机速度值和其他系统参数,描绘多达四个系统变量,例如电机速度、电机电流和转子角度(图4)。
(3)生态系统。美高森美提供一组丰富的IP库,包括前面讨论过的数种电机控制功能。这些模块可以轻易定制,并可以在美高森美器件中移植。使用 Libero SoC软件的Smart Design工具,这些模块可以采用图形方式配置和连接在一起。借助于这些IP模块,设计人员能够显着减少在FPGA中实现电机控制算法所需的时间。
这些IP模块已在以高达30,000r/min转速和200kHz开关频率运行的电机上进行了测试。
工业通信协议
工业网络的发展趋势是通过使用更快的网络通信替代点至点通信。实现此类高速通信需要支持更高的带宽,这对于同时处理电机控制算法的微控制器或DSP来说 并不容易。在大多数情况下,会使用一个附加的微控制器或FPGA来处理与每个电机控制器的通信。通常使用的基于以太网的协议有PROFINET、 EtherNet/IP和EtherCAT标准,这些标准仍然在演进。其他的协议包括了CAN和Modbus.在这种情况下使用SoC的优势,是在单一 FPGA平台上支持多种工业以太网协议标准。
根据终端系统目标,可以通过重用IP和协议栈(用于通信)来优化系统的成本,或者通过仔细地在硬件(FPGA)和软件(ARMCortex-M3子系统)中划分功能来优化性能。
美高森美的SmartFusion2 FPGA具有内置CAN、高速USB和千兆以太网模块作为微控制器子系统的一部分。高速SERDES模块用于实现涉及串行数据传送的协议。
安全性
SmartFusion2 SoC FPGA器件具有数项设计和数据安全特性。DPA认证反篡改保护和加密特性等设计安全特性能够帮助保护客户的知识产权。SoC FPGA器件还包括数据安全特性,例如ECC硬件加速器、AES-128/256和SHA-256服务。对于数据安全性,可以使用EnforcIT IP Suite和CodeSEAL软件安全构件,EnforcIT IP包括一套可定制内核(作为网表),有效地将安全层移到硬件中。CodeSEAL将对策注入到固件中,可以独立地使用,或者用作EnforcIT的提 升。
实现协议的灵活性可让设计人员使用多个安全层来认证从中央监控控制器进入的信息。
可靠性
在多个市场中安全标准的增长推动了高可靠性的需求,SmartFusion2经设计满足高可用性、安全关键型和任务关键型系统的需求,以下是SmartFusion2 SoC FPGA提供的某些可靠性特性。
(1)单粒子翻转(SEU)免疫零FIT率配置。高可靠性运作需要SEU免疫零FIT率FPGA配置,SmartFusion2架构具有不受α或中子辐 射的免疫能力,因为它使用闪存来配置路由矩阵和逻辑模块中使用的晶体管。基于SRAM的FPGA在海平面上的FIT(时间失效)率可能为1k~4k,在高 于海平面5,000英尺的位置会高得多。高可靠性应用可接受的FIT率低于20,这使得SmartFusion2最适合这些应用。
(2)EDAC保护。SmartFusion2器件具有错误检测与校正(EDAC)控制器,可防止在微控制器子系统(MSS)存储器中发生的单粒子翻转错误。
(3)无外部配置器件。在具有大量FPGA的复杂系统中,使用外部配置器件会降低可靠性。在上电时,FPGA需花费时间来进行配置,这在使用多个 FPGA器件的应用中带来了设计复杂性。SmartFusion2 SoC FPGA在器件内部包含了配置存储器,它提供了在器件一上电时就开启的附加优势。
(4)军用温度级器件。SmartFusion2 SoC FPGA器件针对军用温度条件进行了全面测试。军用级器件具有10k和150k逻辑单元,并具有允许访问密码加速器的安全特性和数据安全特性。
总结
美高森美SmartFusion2 SoC FPGA使用经过高度优化的电机控制IP模块和经过验证的参考设计,提供了数种降低工业设计TCO的特性。从微控制器迁移的客户将能够重用某些旧代码,而 FPGA设计人员将能够利用FPGA架构和ARM Cortex-M3子系统来创建一个高效的架构,允许电机控制模块和通信模块同时驻留在单一器件中。ARM Cortex-M3微控制器子系统的存在,可以实现灵活的设计和智能分区,而针对性能和成本做优化。微控制器子系统还可以在运行时间中注入和记录数据,加 速调试FPGA设计。SmartFusion2平台还提供了实现工业通信协议的广泛选项。它同时提供用于设计和数据安全的多项安全特性,还提供了满足高可 靠性需求的特性。SmartFusion2系列器件备有强大的生态系统支持,能够帮助客户以最低TCO来开发工业解决方案。[!--empirenews.page--]
利用FPGA实现无线分布式采集系统设计
1 引言
近些年来,随着电子技术的发展,无线通信技术、计算机网络的发展,分布式无线数据采集网络技术开始兴起,并迅速的应用到各个领域。在一些地形复杂,不适合人类出现的区域需要进行数据采集的情况下,都可以适当的选择无线分布式 采集来进行。现有的无线分布式采集系统中,往往使用单片机、DSP等作为系统的主控控制单元。但是由于其自身工作特点,往往对于精确的定时控制以及并行处 理能力上比FPGA弱。随着FPGA等可编程逻辑器件的发展,为无线数据可靠传输提供了很好的实现平台。采用FPGA作为时序控制和信号处理的处理器,将 使系统电路设计更加简洁、可靠、灵活,可有效的缩短开发周期,并降低开发成本。
为此,基于CycloneIV+STM32设计了一种新 型的无线分布式采集系统,实现了数据的高可靠和同步传输。设计主要由3大部分组成:编码器、译码器、无线收发电台。在对编码器、译码器同步校准后,对待发 送数据进行卷积编码,并转换为串行数据。数据转换为串行数据后,在串行数据帧头加入Barker码来实现帧的同步,并使用2条互为备份的数据传送通道同时 发送数据。在数据接收端检测到barker码后,本地对互为备份的双通道数据进行viterbi译码(本文设计的viterbi译码器采用并行结构,大大 的降低译码时间)。译码结束后,本地对双通道数据进行循环冗余校验,并做出判选,最后执行相应指令。并在规定时间给出相应反馈信号。设计的无线采集系统, 即使某一数据通道出现少量错码,系统仍能有效的恢复出数据,并进行可靠的数据传输。系统添加了监控模块,实时备份上传的数据并监控,如发现不能正常上传, 则启用备用模块保证整个系统正常工作。系统不仅能实现数据的高可靠和同步传输,而且具有很好的适用性,可广泛应用工业中。
2 无线分布式采集系统简介
2.1 系统硬件简介
无线分布式采集系统包括编码器、译码器(编码器、译码器硬件完全相同,只是配置逻辑不同,可配置为编码器、译码器、中继站)和无线通信电台。如图1所示,这是一个最简单的一对一式分布式系统。
编码器作为上位机与译码器之间的桥梁,通过USB/RS485通道进行发送、接收命令和数据。译码器接收编码器发来的命令进行配置和采集,并将数据存储至DDR2中。译码器收到上传命令后,上传数据至编码器。
编码器/译码器硬件系统框图如图2所示。本系统主控单元由FPGA完成。FPGA选用Altera公司的EP4CGX30F407,逻辑单元为 29440个,80个18×18乘法器,多达290个用户自定义IO。STM32作为监控和备用单元组成系统的基本架构,STM32F407ZG系列是基 于高性能的ARM CortexTM-M4F的32位RISC内核,工作频率高达168 MHz,该STM32F407ZG系列采用高速嵌入式存储器(多达1 MB闪存,高达192 KB的SRAM),拥有3个12位ADC,2个DAC,1个低功耗RTC,12个通用16位定时器,2个通用32位定时器。人机交互部分由16X2液晶显 示字符模块和4个按键组成,其主要功能是通过按键对基站编号设置并显示在LCD上。无线模块选用WSN-03系列无线模块作为收发平台,工作电压为5 V,传输速率和工作频段等都可配置。目前传输速率最大为115 200b ps,工作频为433 MHz可调。无线模块与FPGA主要以RXD/A,TXD/B,NRST(复位控制),SET(设置模块参数),SLP(休眠控制)信号线连接。GPS模 块选用VKl6U6进行定位,与FPGA以UART接口连接,波特率定位9600 bps。ADC选用基于△-Σ技术的32 bits高精度低功耗模数转换芯片ADSl282,采样信号电平范围:差分输人一2.5~+2.5 V。单个译码器有6个采集通道,以2 k采样率,采样时常16 S来计算,单个译码器纯数据量为6×2 k×16×24-6144 Kbits.考虑到编码器,一次采样,8个基站的数据经编码后数据总量为98 304 Kbits,所以编码器和译码器需增加l片Micron Technology公司的MT47H256M8HG-37E IT(256Meg×8)作为缓存空间。由于DDR2 SDRAM需要特定的控制读写时序,系统直接采用Quartus II自带的“DDR2 SDRAM High-Performance Controller”IP CORE。USB部分由2个通道组成,一个是由FPGA、CY7C68013和USB接口组成;另一个由STM32(自带USB驱动)和USB接口组成。 同时本设计中还添加了RS485串口,使整个系统与上位机能保持实时通信,为系统的远程控制提供了可能,并能保持系统更新。
2.2 系统数据流程
系统的数据流程为:同步校准译码器,设置各个译码器接收命令后的延时-编码器配置采集参数、命令-译码器采集数据保存至DDR2中一各译码器分时接收数 据上传命令并上传数据-编码器将数据汇总保存至DDR2-数据收集齐后通过USB/RS485上传至上位机。译码器节点配合计算机对各个点的数据进行轮询 采集,它包含了无线传输模块和与计算机通信的USB接口。STM32将组帧后的数据备份并实时监控FPGA,如在规定时间或未能按指令进行工 作,STM32将替代FPGA并使FPGA进入断电状态。
2.3 系统组帧格式
编码器与译码器之间是一对多的关系,译码器分时上传数据,译码器有2个通道,译码器有唯一的配置编号。数据帧的格式如图3所示。数据帧中除20字节有效数据之外,还包括组号、目的编号等。
为了改进接收信号质量,本系统引入信道编码的方法来改善信道质量。具体如图4所示。发送端对数据进行组帧、并串转换、卷积编码、加入同步帧信息后,把数 据发送至无线通信电台进行调制。接收端的无线通信电台对信号进行解调后发送数据至接收端的FPGA.接收端的FPGA检测到帧同步信息后对接下来的数据保 存,并进行Viterbi译码。FPGA对双通道的数据进行冗余校验,并选择正确的数据执行相关操作。
3 无线分布式采集系统数据传输的实现
3.1 可靠性
待发数据经卷积编码,互为备份的双通道发送,Viterbi译码,冗余校验,数据判选,系统能够很好的进行无线收发。
3.1.1 卷积编码
数据组帧完成后,由低位至高位进行并串转换,进行卷积编码。卷积编码是一种纠错信道编码,是由连续的输入信息序列经编码后得到连续输出的编码序列口。以 (n,k,m)来描述卷积码,k为每次输入到卷积编码器的bit数,行为每k元组码字对应的卷积码输出n元组码字,m为编码储存度。卷积编码生成的n元组 元不仅与当前输入有关系,还与前面m一1个输入的k元组有关系。本系统采用(2,1,4)卷积编码器,如图5所示。图中“+”代表异或。每bit经编码后 都有2 bit输出(C1,C2)。
3.1.2 Viterbi译码
接收端有2个接收通道,互不干扰。接收端对2个通道同时译码。译码采用Viterbi译码。Viterbi译码算法是一种卷积码的解码算法。 Viterbi译码根据最大似然算法规则,能达到最佳译码,特别适合向前纠错。以本设计为例,根据图5,编码器4个延时状态(0,1)组成整个编码器的 16个状态(D4D3D2D1),每个状态在编码器输入1或0时,跳转到另一个状态。并且输出也随之改变。译码就是编码的逆过程。算法规定任意t时刻收到 的数据都要进行32次路径值计算、16次比较,比较后每个状态只保存一个路径值,为接下来计算减少了一半的运算量。反复208次,从16条幸存路径中选出 一条路径值最小的,反推出这条路径,得出相应的译码输出。考虑到每次译码后,译码器都能回到初始状态,所以源数据最后加了8 bit的“0”。本设计采用并行处理结构,经214个周期还原出源码。
在设计FPGA逻辑时,基本采用多条并行的流水线技术,译码部分 包含4个子模块:加比选模块、回溯模块、存储模块和时钟控制模块。路径值的计算和比较在3个时钟周期内完成,4个模块同时运行,大大的降低了译码时间。另 外,为了提高FPGA效率,系统加入采样触发信号,保证系逻辑能够稳定运行。
3.1.3 数据判选
经译码后,接收端 已接收到2组互为备份的数据。经实践证明,简单的并联冗余能大大的提高系统的可靠性。具体选择流程如图6所示。2路数据经Viterbi译码后,开始接收 一帧数据,并写入RAM中,同时计算CRC校验、帧完整性检测、ID是否符合本地。上述检测都没问题时,对2路幸存路径的度量值进行比较,选择值小的通道 作为最终数据。
3.2 同步的实现
为了保证编码器和译码器之间能严格实现同步,数据帧需要加入同步帧。实现帧同步的方法通常有2种:起止同步法和集中式插入同步法。起止式同步比较简单, 一般在数据码元的开始和结束位置加入特定的起始和停止脉冲来表示数据帧的开始和结束。集中插入式同步法中插人的同步码要求在接收端进行同步识别时出现伪同 步的概率尽可能低,并且要求该码具有尖锐的自相关特性以便识别。7位巴克码作为帧同步码,其局部自相关函数为:
由上公式计算可知,7位巴克码的自相关函数在j一0时出现尖锐的单峰特性。设计中采用2组同步帧头作为同步码,同步帧头由7位巴克码和1 bit的0组成。
到现在为止,待发数据bit数为:208×2+8×2-432 bits。经调制解调后,接收端检测帧同步信息,同步信息为2组11100100组成。每组同步信息高7位与7位巴克码相比,允许出错位数在1位以内。设 P为码元错误概率,行为同步码组的码元数,m为判决其允许码组中的错误码元最大数,在本系统中行n=7,m=1。在P=0.01时,单一barker码的 漏同步概率为:
当2组同步帧都满足时,帧同步建立,接收端保 存接下来的数据。无线通信电台与FPGA以rs485连接,如图7所示,FPGA检测X是否为“0”,当检测到“0”,不接收端对接下来的数据X与本地巴 克码对应位进行位异或运算。当检测1 byte barker码,错1位以内时,发出一value脉冲。当检测到2个value脉冲时,说明同步已建立,接收端开始存储接下来的数据。
4 系统监控模块的实现
STM32与FPGA连接如图8所示,由于ARM与FPGA的相互通信直接影响着控制器的性能,所以该并行总线的设计就成为一个非常关键的问题。该总线 可以包括芯片的地址总线(ADDR[021])、数据总线(DB[015])、控制总线、复位信号(nRST)以及中断信号线(INT),其中控制总线包 括使能信号(nOE)、片选信号(nCS)、读信号(nRD)、写信号(nWE),这样做的好处是,将FPGA芯片存储器化,即STM32可通过对特定地 址的访问来控制FPGA工作,并且可通过共同的复位信号将STM32与FPGA芯片同时复位,尽量避免总线竞争和冒险现象的出现。
STM32与FPGA同时接收命令,在解析完命令后,FPGA应在规定的时间内发送数据,FH认组帧完成时,发出INT信号至黜2申请中断。如果 STM32在规定时间内没有接收到FPGA发来的INT信号,将开始计时,计时时间内未能接收INT信号,STM32将停止FPGA供电电源工作,由 STM32代替FPGA工作,保证整个系统能稳定进行。
结论
在无线分布式采集系统设计中,采用了基于卷积编码、Viterbi译码的编码和互为备份的双通道传输方案,利用了FPGA内丰富的逻辑资源以及存储资 源,实现了数据的远距离同步可靠传输。加入备份数据通道后,通过FPGA内部逻辑控制,在硬件上实现了对两路数据的实时校验及自动判选,提高了系统的稳定 性和可靠性。相比于“备份-重传”等机制,该方法实现简单、实时性好,即使某一通道不能正常工作,系统仍能正常进行。该无线分布采集系统,满足了现在同步 触发和数据量不大情况下的传输。本文提出的互为备份的双通道编解码、数据冗余传输机制,亦可应用相关无线传输领域,以提高远距离数据传输的可靠性和稳定性。