AFB0924HH AFB0924HH AFB0924HH
浮点、块浮点和定点FFT
**台达风扇---------代理 销售**
【程先生 qq:937926739】
根据运算过程中对数据位数取位和表示形式的不同,可以将FFT分为浮点FFT、块浮点FFT和定点FFT。它们在实现时对于系统资源的要求是不同的,而且有着不同的适用范围。

浮点运算没有溢出,信号平均信噪比高,但由于因子的运算必然导致电路复杂,实现困难。定点运算实现简单,难以保证不溢出,需要统计得出合适的截位规则,否则溢出严重导致输出结果错误。块浮点由于每个Pass(包括后输出前)结束后有一统计控制过程,延时较大,但是可以保证不溢出而且电路又相对浮点来说简单得多。 应根据具体应用的具体要求,选择合适的FFT。如果要求精度,并且要解决频域很高的单频干扰,就必须使用浮点的FFT,使用数据位数很大的定点和块浮点也能解决这个问题,但位数的确定十分困难。如果不要求高精度,逻辑资源和Rom比较紧张,可考虑定点运算。如果输入在频域集中于几个点上或者对精度要求一般,可以慢速处理,可以采用块浮点运算,就能够保证这几点的信噪比,而忽略其他点处的信噪比。
SFC是采用图形化的方法来描述一个控制程序的顺序行为,基于Petri网和IEC848标准Grafce,但又做了必要的修改。将一个程序内部组织加以结构化,在保持其貌的前提下将一个控制问题分解为若干个可管理的部分,由“步”(step)和“转换点”(transition)所组成,每个转换点具有一定的逻辑条件。每一个步中所实现的功能可以用其他几种语言,如FBD、LD、ST和IL来描述。
三、SFC组态软件图形系统的构成
SFC为用户提供了方便、快捷和直观的图形化编程模式,其图形系统是整个组态软件的核心所在笔者所开发的SFC组态软件图形系统具备下面组成部分,如图1所示。
:window.open(this.src); src="/article/UploadPic/2007/11/18/2073.gif" =":if(this.width>screen.width-500) this.style.width=screen.width-500;" border=0>
图1 组态软件图形系统的构成
(1)视觉效果良好的编辑窗口。为了给用户一个清新直观的程序编写环境,编辑窗口应当给用户一个良好的视觉效果。
(2)用户工具栏。
(3)用户右键快捷菜单。
(4)水平、垂直标尺。水平及垂直标尺的设置便于用户在编辑器内导航,同时具有整行选择和整列选择的功能。
四、SFC图形系统设计方案
(一)语言元素管理模式的确定
SFC图形系统的管理,主要是解决语言元素单体及宏体的添加、删除、移动等操作所带来的对象管理问题。有两种模式可供选择:一维线性模式和二维平面模式。在存储管理上,都是使用链表和数组,区别在于根对语言元素对象的查找、定位的机制上。
1.一维线性模式
该管理模式下,全部的语言元素对象分布到几个不同类型的链表和数组中存储,查找、定位某个类型的语言元素对象时,直接使用链表本身和数组本身进行操作:使用查找或遍历的方法得到满足条件的语言元素对象。这种模式节省内存占用,程序实现简便。但语言元素对象较多时运行的效率不高。
2.二维平面模式
在这种管理模式下,除了将全部的语言元素对象分布到几个不同类型的链表和数组中存储以外,还在内存中建立一个“网格地图”(GridMap)用以形成从各元素在编辑区域的显示位置到其内存分布的逻辑地址的映射。使用查找、定位某个类型的语言元素对象时使用网格地图在内存中快速定位相应的语言元素对象。这种模式占用较多的内存;但当语言元素对象较多时可大大提高了软件运行的效率,方便了对语言元素对象的管理。
考虑到软件运行中经常出现用户对语言元素的各种操作,对语言元素的内存定位运算非常频繁,由此决定的软件运行的效率是一个很重要的指标,而一般的SFC程序规模通常不是很大,所以在本软件中选择和确定了使用二维平面式的语言元素管理模式。网格信息的图形表征如图2所示。
:window.open(this.src); src="/article/UploadPic/2007/11/18/2091.gif" =":if(this.width>screen.width-500) this.style.width=screen.width-500;" border=0>
图2 网格信息的图形表征
根据SFC的编程规则,每个网格多只能存放3个语言元素。因此,将网格划分为上、中、下3个部分,每个部分都存储有关该处语言元素的2个重要的描述信息:该处语言元素的类型及该处语言元素在相应链表和数组中的索引值。
(二)基本语言元素的操作
1.语言元素对象的选择、添加、删除、属性修改、单体及宏块的移动
选择操作:包括单击、“橡皮筋”拖动、通水平或垂直标尺、编辑区域左上角的快捷按钮等途径实现。
添加操作:从语言工具箱中选择某个语言元素,在客户编辑区域内单击,即可在相应的语言元素对象数组中添加一个新个体,自动配置对象的某些数据(如网格位置坐标、选择状态等)。
删除操作:使用键盘、“编辑”菜单或右键快捷菜单可以实现选中对象的删除。
属性配置和修改:通过“属性配置”修改“对话框完成语言元素的属性配置和修改。
移动操作:包括语言元素对象单体的移动和多个对象构成的宏体的移动。由于SFC编程有着一定的规则,因此各语言元素之间的相对位置要遵守一套相当复杂的规则(如两个步不能直接相连等),不能够随意放置。因此,在设计上不但要对规则作全面的考虑,而且要以方便用户操作为准则。
2.“分支”及“汇合”元素的动态伸缩
SFC语言元素中的“分支”(branch)及“汇合”(joint)元素具有不同于其他语言元素的特性。因为这两种元素可以具有多个引出点(“分支”可以有多个分支点,“汇合”可以有多个汇合点),所以在设计实现时应当使其具有动态伸缩的功能。
(三)语言元素之间的自动连接功能
SFC语言元素中的某些元素之间是可以直接连接的,即:设有任意两个语言元素A、B,元素A在编辑区内的网格坐标位置为(x,y,z1),元素B在编辑区内的网格坐标位置为(x,y+1,z2)。其中z1、z2为网格内的层次值(0,1,2分别表征上、中、下三个层次),z1、z2的取值使得A和B在网格图上不直接相邻。当A、B满足一定的条件时,在A和B之间可以进行直接连接。
SFC的多种语言元素之间都具有直接连接的性质。本设计中采用规则库算法,当添加、移动某个语言元素后,检测该元素的上、下网格内是否存在可以直接连接的元素;如果有则在两个元素之间自动形成。