原创 逐步理解SystemGenerator(SG)

2006-12-30 13:53 5513 14 15 分类: FPGA/CPLD

System GeneratorSG)是一个系统级(或算法级)的设计工具,是DSP高层系统设计与Xilinx FPGA实现之间的“桥梁”。它借助Matlab/Simulink提供的强大的高水平的运行环境,进行图形化设计和仿真,完成算法的建模,然后生成相应的工程。ISE可对工程进行仿真、综合,最后完成算法的硬件化。其中的过程是反复迭代修正的,而System Generator正是中间不可缺少的“纽带”。


Simulink提供了一个可以创建和仿真动态系统的可视化环境,System Generator以一个被称为Xilinx Blockset 块包含在Simulink 库里并且System Generator作为一个软件把Simulink模型翻译成一个硬件可执行的模型。


1 高效而丰富的IP模块<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


Xilinx Blockset软件包中含有丰富的IP模块,专门用于数字信号处理的运算,这些模块经过反复验证和优化,是保证利用System Generator进行高效率设计的基础。System Generator把在Simulink中定义的系统参数对应成硬件实现时的实体、构造体、输入输出口、信号和属性。模型的搭建过程中,非Xilinx模块与Xilinx模块之间需要Gateway InGateway Out模块过渡,用于实现浮点数与定点数之间的转换。此外,System Generator自动地为FPGA的综合工具、HDL仿真和实现工具生成命令文件。因此,从系统的规范说明到硬件实现,用户都完全可以在可视化的环境中进行操作。


2 按位对齐和按周期对齐


Simulink系统中各模型之间数据流的关系是通过模型自身的采样周期建立的,而FPGA实现的硬件系统则是通过各模型的时钟周期建立的,两者实质是一致的,只是硬件系统工作在绝对的时钟频率下,Simulink系统则工作在相对的时钟关系下。一个正确的Simulink系统周期应该是模型中出现的采样周期的最大公因子,这个最大公因子对应于FPGA系统中的主时钟周期。利用System Generator转换得到的硬件实现是可信任的,因为Simulink中的系统模型与硬件实现之间是保持按位对齐和按周期对齐的。


System Generator中,信号可以用任意精度的定点数据表示,VHDL程序中信号的精度则采用标准逻辑向量(std_logic_vector)表示。System Generator中信号的位数与自动转换得到的VHDL程序中对应信号的标准逻辑向量位数一致。因此,System Generator是按位对齐建模的。System Generator使在Simulink中搭建的模型与硬件实现之间保持按周期对齐。Simulink中的信号都有一个相应的采样周期,信号的变化时刻只能发生在采样周期的整倍数上。在硬件实现后的同步时序电路中,信号与主时钟保持同步,其变化时刻也只发生在时钟周期的整倍数上。


欢迎访问skycanny的笔记(副站)

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

ash_riple_768180695 2007-1-6 22:29

记得刚使用Altera的DSP Builder时,曾怀疑这类工具的实用性:和在原理图中连器件一样简单和费力。直到今年听了Matlab的一个讲座才逐渐明白了这类工具的优点:对同一个算法提供了两种等价的实现方式和统一的验证环境。一种是可验证的simulink文件,一种是可实现的FPGA文件,这两个文件可以在simulink中共用一套验证环境,保证了FPGA代码和算法的一致性。
相关推荐阅读
用户60452 2008-11-14 20:53
原创java连载--泛型(7)
类型擦除(Type Erasure)       当我们实例化一个泛型的时候,编译器使用一种叫做类型擦除(type erasure)的技术。在类型擦除的过程中,编译器会去除掉 类与接口中所有和类型参数...
用户60452 2008-11-13 22:08
原创java连载--泛型(6)
通配符       在泛型中,我们可以用一个通配符”?”来代替一个未知的类型。例如,使用下面的代码为某种animal指定一个cage:Cage<? extends Animal> some...
用户60452 2008-11-12 20:59
原创java连载--泛型(5)
泛型的子类型       只要两种类型能够相符,我们可以把一种类型的对象赋给另外一种类型的对象。例如,可以把一个Integer赋给一个Object,因为Object是Integer的父类之一。    ...
用户60452 2008-11-10 22:20
原创java连载--泛型(4)
受限的类型参数(Bounded Type Parameters)       有时候,我们要限制传递给类型参数的具体参数。例如,对数进行操作的方法就只能接受Number或者其子类的对象作为改方法的参数...
用户60452 2008-11-09 21:49
原创java连载--泛型(3)
泛型方法和构造器       如果在申明方法或者构造器的时候使用类型参数的话,就可以定义泛型方法和泛型构造器。这和定义一个普通的泛型基本上无二样,除了类型参数的作用范围只是在定义它的方法或者构造器之中...
用户60452 2008-11-08 19:13
原创java连载--泛型(2)
我们可以通过将"public class Box" 修改为 "public class Box<T>"而定义一个泛型,在这个定义中,使用了一个类型变量(type variable) T,而...
我要评论
1
14
关闭 站长推荐上一条 /3 下一条