第14章其它DSP设计库000002_第1页
第14章其它DSP设计库000002_第2页
第14章其它DSP设计库000002_第3页
第14章其它DSP设计库000002_第4页
第14章其它DSP设计库000002_第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第1414章章 其它其它dspdsp设计库设计库 第第14章章 其它其它dsp设计库设计库 14.1 总线控制库总线控制库 14.2 复数信号库复数信号库 14.3 gates库库 14.4 状态机函数库状态机函数库 14.5 storage库库 第第1414章章 其它其它dspdsp设计库设计库 14.1 总线控制库总线控制库 14.1.1 altbus模块模块 altbus模块可以将浮点simulink总线变成定点类型的总线。可以将altbus插进一个数据或i/o口通道,从而产生输入和输出端口。第第1414章章 其它其它dspdsp设计库设计库 当把一个信号变为定点类型时,必须设定其位宽

2、。确定特定的位宽,可以通过多种方式来实现,如对结果进行截位、补位或含低位的方法实现。如果选择含低位或补位的方法,就必须在电路中插入合适的逻辑电路,这都是altbus 模块的工作。表14-1是altbus 模块的参数设定表。第第1414章章 其它其它dspdsp设计库设计库 表14-1 altbus模块的参数说明名 称数值和选项说 明node typeinternal node, input portoutput port, constantblack box input,black box output设定信号节点的类型bus typesigned integersigned fraction

3、alunsigned integer或single bit选择总线的数据格式number of bits. 151设定小数点左边的位数,包括符号位。此参数不适用于1位的总线第第1414章章 其它其它dspdsp设计库设计库 .number of bits051设定小数点右边的位数。此参数只适用于有符号小数总线saturateon或off如果选择“on”,当输出大于有待表达的最大的正值或负值,则该输出即扩位到此最大的正值或负值。若此选项取为“off”,则最高位msb被截去。此选项对输入端口或常数节点类型是无效的第第1414章章 其它其它dspdsp设计库设计库 名 称数值和选项说 明roundo

4、n或off若此项选择“on”,则输出略去了所有高位的0位;若选为“off”,则最低位lsb被截去。此选项不适用于输入和常数类型bypass bus formaton或off此项为“on”时表示在simulink中使用浮点数进行仿真constant valuedouble表示用设定的总线参数规范常数第第1414章章 其它其它dspdsp设计库设计库 在simulink设计中,以下模式可使用altbus 模块:(1) altbus input port & output port modes;(2) altbus internal node mode;(3) altbus black box in

5、put output mode;(4) altbus constant mode。下面将对这些模式分别给予说明。第第1414章章 其它其它dspdsp设计库设计库 1. altbus输入输入/输出端口模式输出端口模式 输入端口和输出端口模式(altbus input port & output port modes)主要用于定义硬件实现的接口,以及将浮点simulink信号(来自基本simulink模块)转化成有符号二进制小数类型(用于为dsp builder模块提供数据)。 表14-2和图14-1显示了浮点数(4/3 = 1.333)是如何转变成有3个不同小数点位置的sbf格式的数据的。 第

6、第1414章章 其它其它dspdsp设计库设计库 表14-2 浮点数与sbf格式数据的转换总线下标输 入simulinkvhdl 4 . 1 4/31.002.00 2 . 3 4/31.2510.00 1 . 4 4/3-0.6875-11.00第第1414章章 其它其它dspdsp设计库设计库 2. altbus内部节点模式内部节点模式 altbus内部节点模式(altbus internal node mode)用来将一种sbf格式的simulink信号转变成另一种格式的信号,或用来定义内部节点的总线宽度。这种内部节点可以在硬件中实现。图14-2给出了内部节点模式以及输入端口模式的alt

7、bus的用法。在此例中,具有( 10 . 10 )sbf格式的20位总线被转变成了具有( 2 . 2 )sbf格式的4位总线。第第1414章章 其它其它dspdsp设计库设计库 在vhdl中,这种算法操作导致从20位总线(altbus(19 down to 0)截为4位总线(altbus(3 down to 0),即 altbus(3 down to 0) a0w = 1 ; a2w = 0 ; a6w = 0 ; a5w = 0 ; a4w = 0 ; a3w a0w = 0 ; a2w = 1 ; a6w = 0 ; a5w = 0 ; a4w = 0 ; a3w a0w = 0 ; a2

8、w = 0 ; a6w = 0 ; a5w = 0 ; a4w = 1 ; a3w a0w = 0 ; a2w = 0 ; a6w = 0 ; a5w = 0 ; a4w = 0 ; a3w = 1 ; 第第1414章章 其它其它dspdsp设计库设计库 end case ; end process ; 注意:在simulink中,每一条线都是以aw来命名的。其中是自动产生的。第第1414章章 其它其它dspdsp设计库设计库 14.3.2 if语句模块语句模块 if语句根据if条件方式返还一布尔类型结果true或false。其中比较条件方程的输入量a, b, c, d, e, f, g, h

9、, i或j都必须是有符号或无符号整数。条件方程中可以使用任何数量的括号。表14-19是if语句支持的操作符,表14-20是if语句的参数表。 图14-13是if语句模块应用示例。第第1414章章 其它其它dspdsp设计库设计库 表14-19 if语句支持的操作符操 作 符操 作 方 式+or&and$xor=等于不等于大于, 大于2in1in2=大于等于2in1=in2小于2in1in2=小于等于2in1=4) 或2(in1=in2) (in1=in2)第第1414章章 其它其它dspdsp设计库设计库 图14-23所示即为“conditional statements”页。在此已定义了fi

10、fo控制器的条件描述。 图图14-23 定义了定义了fifo控制器条件描述的界面控制器条件描述的界面第第1414章章 其它其它dspdsp设计库设计库 表14-26中的条件描述一旦确定,状态机的工作方式就确定了。一般地,当一状态机处于某一特定状态时,就会对次状态的条件进行计算判断,以便确定下次转换到什么状态上去。对于条件叙述表中所列的条件,状态机是顺序计算判断的。第第1414章章 其它其它dspdsp设计库设计库 表14-27 idle状态的各种状态转换条件当前态条 件次 态idle(pop =1) & (count_in = 0)emptyidlepush =1push-_not_fulli

11、dle(pop =1) & (count_in! = 0)pop_not_emptyidle(push =1) & (count_in=250)full第第1414章章 其它其它dspdsp设计库设计库 表14-27所示描述了当状态机处于“idle”状态时的各种态状转换条件。由于条件(pop =1) &(count_in = 0)在表中的位置高于条件(push =1) & (count_in=250),所以,前者就有更高的优先权。当它们同时满足时,将首先 依前者的条件进行转换。 条件(pop =1)&(count_in!=0)仅次于最高优先权的条件描述;而条件(push =1) & (coun

12、t_in=250)所处的位置具有最低的优先权。 例14-2就是表14-27编译转换而来的vhdl描述,其中的_sig是在vhdl文件中另加的。第第1414章章 其它其它dspdsp设计库设计库 【例14-2】表14-27对应的vhdl文件。if (pop_sig=1) and (count_in_sig=0) then next_state = empty_st;elsif (push_sig=1) then next_state = push_not_full_st ;elsif (pop_sig=1) and (count_in_sig / =0) then next_state = po

13、p_not_empty_st ;elsif (push_sig=1) and (count_in_sig =250) then next_state = full_st ;else next_state = idle_st ;end if ;第第1414章章 其它其它dspdsp设计库设计库 也可以通过使用“move up”和“move down”按钮来改变条件描述语句的上下位置。例如,将表14-27改变后即如表14-28所示。第第1414章章 其它其它dspdsp设计库设计库 表14-28 对表14-27进行改变的结果 当前态条 件次 态idle(pop =1) & (count_in =

14、0)emptyidle(push =1) & (count_in=250)fullidle(pop =1) & (count_in! = 0)pop_not_emptyidlepush =1push-_not_full第第1414章章 其它其它dspdsp设计库设计库 【例14-3】表14-28对应的vhdl程序。if (pop_sig=1) and (count_in_sig=0) then next_state = empty_st ;elsif (pop_sig=1) and (count_in_sig / =0) thennext_state = pop_not_empty_st ;e

15、lsif (push_sig=1) and (count_in_sig =250) then next_state = full_st ;elsif (push_sig=1) then next_state = push_not_full_st ; else next_state = idle_st ;end if ;第第1414章章 其它其它dspdsp设计库设计库 5. 错误检测错误检测 点击“design rule check”页面,以便确定前面各步骤中所定义的状态机没有违反任何设计规则。然后点击“analyze”,对状态机中所设的条件进行计算判别,以确定是否存在一般错误或逻辑错误。如果

16、有错,将在“analyze results”栏中以红色给出错误信息。 图14-24所示即为点击“analyze”后的“design rule check”页面。如果发现在信息栏的分析结果中有错误报出,应该找出错误所在,重新启动检测分析的操作,直至排除所有错误。 最后就是功能仿真,通过后,就可以将其转换成vhdl代码描述了。 第第1414章章 其它其它dspdsp设计库设计库 图14-24 state machine builder design rule check页面 第第1414章章 其它其它dspdsp设计库设计库 6. 将结果存盘将结果存盘 点击“ok”,将所有更改后的内容存盘。这时就

17、关闭了“state machine builder”窗口,并将回到simulink设计文件。 这时的设计文件将自动更新在前面各步骤中定义的输入/输出名称。图14-25是fifo设计实例更新后的state machine table模块。第第1414章章 其它其它dspdsp设计库设计库 图图14-25 设定了状态机后的表格模块设定了状态机后的表格模块第第1414章章 其它其它dspdsp设计库设计库 例14-4是state machine builder产生的状态机的完整vhdl程序的结构体部分。 【例14-4】状态机的结构程序。 process (clk, reset) begin if (

18、 reset = 1 ) then current _state = empty_st ; elsif rising_edge (clk) then current _state if ( ( push_sig = 1) and ( count_in_sig / =250 ) ) then next_state = push_not_full_st; elsif ( ( push_sig = 0) and ( pop_sig = 0 ) ) then next_state = idle_st; else next_state if ( ( push_sig = 0) and ( pop_sig

19、 = 0 ) ) then next_state = idle_st; elsif ( ( push_sig = 1) ) then next_state = pop_not_empty_st; else next_state if ( ( pop_sig = 1) and ( count_in_sig = 0 ) ) then第第1414章章 其它其它dspdsp设计库设计库 next_state = empty_st; elsif ( ( push_sig = 1) ) then next_state = pust_not_full_st; elsif ( ( pop_sig = 1) a

20、nd ( count_in_sig / = 0 ) ) then next_state = pop_not_empty_st; elsif ( ( push_sig = 1) and ( count_in_sig = 250 ) ) then next_state = full_st; else next_state if ( ( push_sig = 0) and ( pop_sig = 0 ) ) then next_state = idle_st; elsif ( ( pop_sig = 1) and ( count_in_sig = 0 ) ) then next_state = em

21、pty_st; elsif ( ( push_sig = 1) and ( count_in_sig / = 250 ) ) then next_state = pust_not_full_st;第第1414章章 其它其它dspdsp设计库设计库 elsif ( ( pop_sig = 1) and ( count_in_sig / = 0 ) ) then next_state = pop_not_empty_st; elsif ( ( push_sig = 1) and ( count_in_sig = 250 ) ) then next_state = full_st;end if;en

22、d case;end process ; 最后,将此state machine table模块连接到总体设计文件的相应部分。第第1414章章 其它其它dspdsp设计库设计库 14.5 storage 库库 14.5.1 延迟模块延迟模块 延迟模块(delay block)根据延时深度(depth)表中设定的值确定通过信号的延时量。表14-29是此模块的参数表。第第1414章章 其它其它dspdsp设计库设计库 表14-29 延迟模块的参数说明名 称数值与选项说 明depthuser defined设定此模块的迟时长度use control inputson or off选择是否使用另加的控制

23、输入口,如时钟使能,复位等clock phase selectionuser defined相位选择。只有当“number of pipeline levels”的设置大于1时,才能有此选项。这里所选的相位值以一个二进制数来表达。二进制中的1表示在此相位中的模块被使能例如:1:表示模块始终使能,所有的数据都可通过此模块10:表示每隔一个相位模块被使能一次,而只有此时数据才能通过0100:此模块在4个相位数中的第2相位数输出时才被使能,并且只有在此时数据才能通过。换句话说,在第1、3、4位数出现时数据无法通过此模块第第1414章章 其它其它dspdsp设计库设计库 图14-26是delay模块的

24、一个使用示例。 图图14-26 delay模块应用示例模块应用示例第第1414章章 其它其它dspdsp设计库设计库 14.5.2 down sampling和和up sampling模块模块 1. down sampling模块模块 采样率降低模块(down sampling block)可根据输入端给出的采样率来降低输出采样率。输出数据的速率等于每mth周期采样一次的采样速率,其中m等于下降的采样率。在simulink中,输入采样率是归一化的。表14-30是此模块的参数表。图14-27是down sampling模块的应用示例。第第1414章章 其它其它dspdsp设计库设计库 表14-3

25、0 采样率降低模块参数说明名 称数 值说 明down sampling rate120确定下降采样率值第第1414章章 其它其它dspdsp设计库设计库 图图14-27 down sampling模模块的应用示例块的应用示例第第1414章章 其它其它dspdsp设计库设计库 2. up sampling模块模块 增加采样率模块(up sampling block)将根据输入的采样率增加输出的采样率。输出数据将以每周期采样一次的速率来进行,表14-30中的参数120等于增加的采样率。(表14-31是此模块的参数表)。 图14-28是up sampling模块应用的示例图。 第第1414章章 其它

26、其它dspdsp设计库设计库 表14-31 up sampling模块参数说明名 称数 值说 明up sampling rate120设定增加采样率值第第1414章章 其它其它dspdsp设计库设计库 图图14-28 up sampling模块的应用示例模块的应用示例第第1414章章 其它其它dspdsp设计库设计库 14.5.3 双口双口ram模块模块 在设计中,如果需要使用双口ram模块(dual-port ram block),signalcompiler就会将数据映射到altera器件的嵌入式ram中(如eab或esb),即使用eab或esb来重构此双口ram。这时的ram中的内容将被

27、初始化为0。 dual-port ram模块能接受任何数据类型的输入。此模块所有的输入端口都是可以锁定的,所有的输出端口都无锁存功能。图14-29是此双口ram的应用示例。表14-32是此模块的参数表。第第1414章章 其它其它dspdsp设计库设计库 图图14-29 双口双口ram的应用示例的应用示例第第1414章章 其它其它dspdsp设计库设计库 表14-32 双口ram模块参数说明名 称数值和选项说 明address width120设定地址线宽c l o c k p h a s e selectionuser defined相位选择。只有当“number of pipeline le

28、vels”的设置大于1时才能有此选项。这里所选的相位值以一个二进制数来表达。二进制中的1表示在此相位中的模块被使能。例如:1:表示模块始终使能,所有的数据都可通过此模块10:表示每隔一个相位模块被使能一次,而只有此时数据才能通过0100:此模块在4个相位数中的第2相位数输出时才被使能,并且只有在此时数据才能通过。换句话说,在第1、3、4位数出现时数据无法通过此模块第第1414章章 其它其它dspdsp设计库设计库 双口ram模块有如下端口: d输入数据口 q输出数据口 rdad读地址总线 wrad写地址总线 wren写使能第第1414章章 其它其它dspdsp设计库设计库 14.5.4 并行到

29、串行转换模块与串行到并行转换模块并行到串行转换模块与串行到并行转换模块 1. 并串转换模块并串转换模块 并行到串行转换模块(parallel to serial block)的功能是将并行输入端口(input)转换成串行总线输出(output)。表14-33是此模块的参数表。第第1414章章 其它其它dspdsp设计库设计库 表14-33 并行到串行转换模块参数说明 名 称数值和选项说 明data bus typesigned integer,s i g n e d fractionalu n s i g n e d integer选择总线的数值格式 n u m b e r o f bits.

30、 151设定小数点左边的位数,包括符号位。此参数不适用于1位总线 .number of bits051表示小数点右边的位数。此参数只适用于有符号小数总线serial bit ordermsb firstisb first选定是将并行数据的最高位msb还是最低位lsb作串行输出的第1位第第1414章章 其它其它dspdsp设计库设计库 图14-30是此并串转换模块的应用示例。 图14-30 并串转换模块的应用示例第第1414章章 其它其它dspdsp设计库设计库 2. 串并转换模块串并转换模块 串行到并行转换模块(serial to parallel block)的功能是将一串行输入数据(inp

31、ut sd)转换成并行总线输出(output d)。表14-34是此模块的参数表。图14-31是此串并转换模块的应用示例。第第1414章章 其它其它dspdsp设计库设计库 图图14-31 serial to parallel block模块模块的应用示例的应用示例第第1414章章 其它其它dspdsp设计库设计库 表14-34 串并转换模块的参数说明名 称数值和选项说 明data bus typesigned integer, signed fractionalunsigned integer选择总线的数值格式 n u m b e r o f bits. 151设定小数点左边的位数,包括符号

32、位。此参数不适用于1位总线 .number of bits051表示小数点右边的位数。此参数只适用于有符号小数总线s e r i a l b i t ordermsb first,isb first选定串行输入的顺序,即是将最高位还是最低位作为串行数据的第1位第第1414章章 其它其它dspdsp设计库设计库 14.5.5 数据排列方式模块数据排列方式模块 数据排列方式模块(pattern block)可以重复产生一组按一定数位顺序排列的周期性数位序列。例如,以01100为一周期的数据序列,则此模块将重复连续发生该序列为: 01100011000110001100 设计者可以通过使用patte

33、rn模块的输出来作为时钟使能的输入控制,从而改变锁存模块的输出数据速率。表14-35是此模块的参数表。图14-32是此模块的应用示例。第第1414章章 其它其它dspdsp设计库设计库 图14-32 pattern 模块的应用示例 第第1414章章 其它其它dspdsp设计库设计库 表14-35 pattern模块参数说明名 称数值与选项说 明binary sequenceuser defined设定数据序列use control inputson或off设定是否使用另外的控制信号第第1414章章 其它其它dspdsp设计库设计库 14.5.6 rom eab模块模块 rom eab模块可以作

34、为一般的数据rom来使用。rom的数据必须用十六进制数文件设定。为了使用altera器件中的eab来形成rom,需要使用rom eab模块初始化中读取包含rom数据的十六进制格式的文件。这可以使用quartus ii来产生十六进制数据文件(参阅第2章)。表14-36是此模块的参数表。 注意:如果已用quartusii产生了hex文件,则必须存放在dsp builder设计工程的工作目录中。第第1414章章 其它其它dspdsp设计库设计库 表14-36 rom eab模块说明名 称数值和选项说 明data bus typesigned integersigned fractionalunsig

35、ned integer选择总线的数值格式 n u m b e r o f bits. 151设定小数点左边的位数,包括符号位。此参数不适用于1位总线 .number of bits051设定小数点右边的位数。此参数只适用于有符号小数总线第第1414章章 其它其它dspdsp设计库设计库 名 称数值和选项说 明address width220设定地址线宽c l o c k p h a s e selectionuser defined相位选择。只有当“number of pipeline levels”的设置大于1时才能有此选项。这里所选的相位值以一个二进制数来表达。二进制中的1表示在此相位中的

36、模块被使能。例如:1:表示模块始终使能,所有的数据都可通过此模块10:表示每隔一个相位模块被使能一次,而只有此时数据才能通过0100:此模块在4个相位数中的第2相位数输出时才被使能,并且只有在此时数据才能通过。换句话说,在第1、3、4位数出现时数据无法通过此模块input hex fileuser defined.hex指定待用的hex文件的文件名第第1414章章 其它其它dspdsp设计库设计库 图14-33是rom eab模块的应用示例。 图图14-33 rom eab模块的应用示例模块的应用示例第第1414章章 其它其它dspdsp设计库设计库 14.5.7 shift taps模块模块 shift taps模块可以形成移位寄存器,可用于滤波器和卷积算法的设计。在altera器件中,shift taps模块可以实现内置ram结构的移位寄存器,这种移位寄存器的实现方法是构成大移位寄存器的有效方法。这种模块的输出是根据沿移位寄存器有规则的间隔点来完成的,这就是所谓的“taps”。在stratix器件中,这种模块需要很小的内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论