您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第11章DSP Builder设计规则
第11章DSPBuilder设计规则第11章DSPBuilder设计规则11.1位宽设计规则11.2频率设计规则11.3DSPBuilder设计的取名规则11.4定点数据下标说明11.5在SBF中二进制小数点的位置11.6GoTo和From模块的支持特性第11章DSPBuilder设计规则11.1位宽设计规则在设计中,必须根据具体情况规定输入和输出数据口的位宽,即源端口与目标端口的数据位宽。一旦确定了输入端的数据位宽,SignalCompiler就会通过各中间模块把数据位宽从源端口向目标端口传递。在一定条件下,设计者也可以对所通过的各模块中的数据位宽作一定的设定。例如,在第三章中介绍的调幅设计中,Sinln和SinDelay模块的位宽是16,所以SignalCompiler就自动将这16位宽的数据类型赋予了中间模块Delay。第11章DSPBuilder设计规则应该注意,每一个DSPBuilder模块都有自身的设计规则。在每一模块的使用说明中都包含了其位宽增长的规则。DSPBuilder具有双位字类型,这种类型能支持的最大数据位宽是51位。如果希望位宽超过51位,则必须将数据总线分成多套,每套都不超过51位。如11-1所示的是一个60位加法器设计系统,分成了两个30位总线。第11章DSPBuilder设计规则图11-1两套总线方式的60位硬件加法器第11章DSPBuilder设计规则11.2频率设计规则11.2.1单时钟设计规则如果一项设计中不包含来自RateChange库的锁相环模块PLL,则在Simulink设计转换成硬件系统的过程中,DSPBuilder将使用同步设计规则,即在设计系统中的所有DSPBuilder时序模块,如Delay模块,都以单一时钟的上升沿同步工作,这个时钟频率即为整个系统的采样频率。第11章DSPBuilder设计规则然而需要注意的是,对于这些同步时序的模块,其时钟引脚都不会直接显示在Simulink设计图上,但当SignalCompiler将设计系统转化为VHDL文件时,才自动地把时序模块的时钟引脚都连在一起,并与系统的单一时钟相接。第11章DSPBuilder设计规则但是,如果设计者希望在Simulink图上显示相关的信号端,并能直接控制这些信号端口,可以在DSPBuilder时序模块的参数控制对话框中打开“UseControlInputs”参数表来实现。为了保持Simulink设计域至VHDL域的设置时钟周期的精确性,必须将“Solver”选项设定在“Fixed-step”和“discrete”状态上,并设模式为“SingleTasking”(如图11-2所示)。第11章DSPBuilder设计规则图11-2仿真延时参数设置第11章DSPBuilder设计规则仅从Simulink仿真的观点来看,所有的DSPBuilder模块,包括时序模块,都有一固有的采样频率,这个频率值可以通过I/O口,从源模块传送到目标模块,也可以从源模块的输出脚向目标模块的输入脚传送。如果某一DSPBuilder模块没有输入端口(如Increment或Pattern模块),这种传送机制是无法进行的。所以,对于这些情况,必须在模块参数表中设定时钟信号的周期。具体步骤如下:第11章DSPBuilder设计规则(1)用鼠标右键击该模块;(2)选中弹出菜单中的“BlockParameters”项;(3)在“S-Function”栏键入所希望的时钟周期 (默认为1);(4)点击“OK”,保存所设数据,并关闭之。如果某一模块具有来自多个模块的不同频率的时钟驱动,则此模块(目标模块)将在Simulink仿真文件中采用其中最高频率的时钟。图11-3是一项SingleClockDelay的Simulink设计图。第11章DSPBuilder设计规则图11-3SingleClockDelay设计图第11章DSPBuilder设计规则也有许多其它方式可用来规定源模块的工作频率。如图11-4所示,可以使用Sampletime编辑窗来设置正弦波模块的工作频率。第11章DSPBuilder设计规则图11-4正弦波模块参数设置第11章DSPBuilder设计规则在图11-3的设计中,使用的是单一时钟,这里DSPBuilder没有使用PLL模块,所以所有的DSPBuilder模块的采样周期都是相同的,并且,如果已打开了仿真参数中的采样时间色彩显示控制,则这些模块都以相同颜色显示。在此图中(仿真设计文件为SingleClockdelay.mdl),SineWavea和SineWaveb模块的时间值都设定在le-6,即1000ns。如果使用SignalCompiler将此项设计转换成RTL硬件电路描述,其设计报告将包括诸如位宽、仿真采样时钟周期值,以及可能的出错信息等(如图11-5所示)。第11章DSPBuilder设计规则图11-5仿真报告第11章DSPBuilder设计规则图11-6是此项设计的RTL电路图,是由LeonardoSpectrum综合器输出的。由图可见,时序模块Delaya和Delayb由单一clock提供时钟。第11章DSPBuilder设计规则图11-6示例SingleClockDelay的RTL电路图第11章DSPBuilder设计规则11.2.2多时钟设计如果设计系统中包含了来自Ratechange库中的锁相环模块PLL,DSPBuilder模块就将根据PLL输出时钟组中的某一时钟的上升沿来工作。图11-7是一个多时钟Delay设计系统实例,该例含多时钟支持电路。对于含有PLL的系统,DSPBuilder将Simulink中PLL模块映射到硬件器件中的PLL核,即在设计模块中使用PLL的条件是目标器件中必须含PLL核。支持PLL模块设计的目标器件系列有:Stratix系列(支持6个输出时钟)和Cyclone系列(支持6个输出时钟)。第11章DSPBuilder设计规则图11-7的设计显示的是PLL模块的配置情况。其中PLL输出时钟pllclock1设定为1000 ns,而pllclock2设定为100 ns,这可由多种方法来设置。图中数据路径A工作在pllclock1上,而数据路径B工作在pllclock2上。据此,可以在SampleTime编辑窗中设置pllclock1和pllclock2,分别为le-6和le-7(图11-8)。第11章DSPBuilder设计规则图11-7多时钟设计系统第11章DSPBuilder设计规则图11-8PLL设置第11章DSPBuilder设计规则DSPBuilder将系统转化为RTL电路后,将产生一个报告文件,该报告将列出系统中所有DSPBuilder模块的数据位宽和仿真采样时钟周期。在多时钟设计系统的DSPBuilder编译中,如果发现模块仿真时钟周期与PLL的输出时钟周期不符,将在报告中给出警告。图11-9是LeonardoSpectroum综合器产生的此设计系统的RTL电路,从中可以看出Delaya和Delayb模块分别工作在两个PLL输出时钟上,其中clock是PLL的参考时钟。第11章DSPBuilder设计规则图11-9多时钟设计系统的RTL电路第11章DSPBuilder设计规则11.2.3使用PLL的高级特性要想使用PLL的高级特性,可以通过对DSPBuilder模块的设置来实现,这些设置支持对PLL分频与倍频因子的设定。此外如果希望改变PLL时钟信号的其它特性,如相移,占空比等,都可以编辑SignalCompiler产生的file-namepll.vhd文件,从而在VHDL的顶层设计中对PLL作必要的修改。第11章DSPBuilder设计规则11.3DSPBuilder设计的取名规则DSPBuilder模块的命名必须遵循VHDL的命名规则。以下的一些规则是必须遵循的:(1)必须注意大小写的一致性,但模块名的大小写不一致是没有关系的,例如实体名Mydesign与MYDESIGN是相同的。(2)不要使用VHDL的关键词来命名DSPBuilder模块。第11章DSPBuilder设计规则(3)注意不要使用非法文字,特别是VHDL的实体名只能包含Q~Z,0~9,以及下划线( _ )。(4)模块名的起始文字必须是字母a~z,因为VHDL的实体名是不允许以英语字母以外的任何字符作为首字符的。(5)不允许连续使用两个下划线“_ _”,因为这在VHDL中是非法的。(6)模块文件名中的空格将在SignalCompiler的编译中被忽略掉。第11章DSPBuilder设计规则此外,SignalCompiler对于每一个DSPBuilder的HDL子系统模块产生一个单独的VHDL文件,而这些文件都有独立的实体和结构体。DSPBuilder产生的VHDL文件中的实体名位置具有全局性,所以,所有的子系统名必须是唯一的。第11章DSPBuilder设计规则11.4定点数据下标说明在将Simulink文件向VHDL文件转化中,对数据的定点标注的说明可见表11-1所述。第11章DSPBuilder设计规则表11-1数据下标说明数值类型说明下标Simulink向VHDL的映射结果SBF有符号二进制小数[L].[R],其中:[L]表示二进制小数点左侧数的位数,左侧最高位是符号位;[R]是小数点右侧数的位数SimulinkSBF数据类型信号A[L].[R]对应VHDL的STD_LOGIC_VECTOR({L+R-1}DOWNTO0)第11章DSPBuilder设计规则有符号二进制数有符号二进制整数[L],是有符号总线的位数,左边最高位是符号位Simulink有符号二进制信号A[L]对应VHDL的STD_LOGIC_VECTOR({L-1}DOWNTO0)无符号二进制数无符号二进制整数[L],是无符号总线的位数Simulink无符号信号A[L]对应VHDL的STD_LOGIC_VECTOR({L-1}DOWNTO0)单个二进制位取值1或0的整数[1]Simulink单一位信号对应VHDL的STD_LOGIC第11章DSPBuilder设计规则图11-10是几种下标情况对应的不同数据类型的数据比较,其中有8位有符号二进制小数、有符号二进制数,以及无符号二进制数的示例。第11章DSPBuilder设计规则76543210符号位(a)[4].[4]的有符号二进制小数下标76543210符号位(b)[8]的8位有符号二进制整数下标76543210符号位(c)[8]的8位无符号二进制整数下标图11-10数据格式比较第11章DSPBuilder设计规则11.5在SBF中二进制小数点的位置对于硬件设计,Simulink信号必须转化成与硬件结构相对应的总线格式,所以Simulink的浮点值必须转换成定点值并能在目标硬件中实现。这种转换是硬件实现的关键步骤,因为需要硬件来表示定点值的位数以及小数点的位置不但会影响构成硬件系统的资源利用率,还影响系统的特性。第11章DSPBuilder设计规则一般较大的位数(宽位总线)能产生更好的硬件特性,即定点值与浮点值基本相同,但却会耗用更多的硬件资源。作为一个设计者来说,他的基本任务就是在好的资源利用率和良好的系统性能间找到可接受的折衷方案。而DSPBuilder正是在同一设计环境中既能使用定点信号又能使用浮点信号进行仿真,从而缩短了系统设计周期。第11章DSPBuilder设计规则AltBus模块将双精度类型的浮点Simulink信号转变成定点信号。即定点信号是以以下的有符号的二进制小数SBF的方式表示的:[位数].[]——表示小数点以左包括符号位的总的位宽数。[].[位数]——表示小数点以右的位宽数。在VHDL中,信号是以STD_LOGIC_VECTOR表达的。例如,4位二进制数1101可以表达为:Simulink:作为有符号整数可以解释为-3(补码);第11章DSPBuilder设计规则VHDL:作为有符号STD_LOGIC_VECTOR数据类型也被解释为-3,但如果改
本文标题:第11章DSP Builder设计规则
链接地址:https://www.777doc.com/doc-3262242 .html