eda第9章 dsp builder设计初步课件.ppt
EDA技术与VHDL,第9章DSP Builder设计初步,KX康芯科技,9.1 Matlab/DSP Builder及其设计流程,KX康芯科技,图9-1 基于Matlab、DSP Builder、QuartusII等工具,9.1 Matlab/DSP Builder及其设计流程,KX康芯科技,自动流程:1、MATLAB/Simulink建模;2、系统仿真;3、DSP Builder完成VHDL转换、综合、适配、下载;4、嵌入式逻辑分析仪实时测试。手动流程:1、MATLAB/Simulink建模;2、系统仿真;3、DSP Builder完成VHDL转换、综合、适配;4、Modelsim对TestBench功能仿真;5、QuartusII直接完成适配(进行优化设置);6、QuartusII完成时序仿真;7、引脚锁定;8、下载/配置与嵌入式逻辑分析仪等实时测试;9、对配置器件编程,设计完成。,9.2 正弦信号发生器设计,KX康芯科技,图9-2 正弦波发生模块原理图,9.2 正弦信号发生器设计,KX康芯科技,9.2.1 建立设计模型,1、打开Matlab环境,图9-2 正弦波发生模块原理图,9.2 正弦信号发生器设计,KX康芯科技,9.2.1 建立设计模型,2、建立工作库,cd e:/mkdir/myprj/sinwavecd/myprj/sinwave,9.2 正弦信号发生器设计,KX康芯科技,3、了解simulink库管理器,图9-2 正弦波发生模块原理图,9.2 正弦信号发生器设计,KX康芯科技,3、了解simulink库管理器,图9-5 simulink库管理器,9.2 正弦信号发生器设计,KX康芯科技,4.simulink的模型文件,图9-6 建立新模型,9.2 正弦信号发生器设计,KX康芯科技,5、放置SignalCompilder,6、放置Increment Decrement,7.设置IncCount,总线类型(Bus Type);输出位宽(Number of bits);增减方向(Direction);开始值(Starting Value);是否使用控制输入(Use Control Inputs)时钟相位选择(Clock Phase Selection),9.2 正弦信号发生器设计,KX康芯科技,图9-7 放置SignalCompiler,9.2 正弦信号发生器设计,KX康芯科技,图9-8 递增递减模块改名为IncCount,7.设置IncCount,9.2 正弦信号发生器设计,KX康芯科技,图9-9 设置递增递减模块,7.设置IncCount,9.2 正弦信号发生器设计,KX康芯科技,图9-10 LUT模块,7.设置IncCount,9.2 正弦信号发生器设计,KX康芯科技,8、放置正弦查找表(SinLUT),9.2 正弦信号发生器设计,KX康芯科技,图9-11 设置SinLUT,8、放置正弦查找表(SinLUT),9.2 正弦信号发生器设计,KX康芯科技,图9-12 Delay模块及其参数设置窗,9、放置Delay模块,9.2 正弦信号发生器设计,KX康芯科技,图9-13 设置SinCtrl,10、放置端口SinCtrl,9.2 正弦信号发生器设计,KX康芯科技,图9-13 设置SinCtrl,10、放置端口SinCtrl,9.2 正弦信号发生器设计,KX康芯科技,图9-14 设置乘法单元,11、放置Product模块,9.2 正弦信号发生器设计,KX康芯科技,图9-15 设置SinOut,12.放置输出端口SinOut,13.设计文件存盘,9.2 正弦信号发生器设计,KX康芯科技,图9-16 Step模块,9.2.2 Simulink模型仿真,1、加入仿真步进模块,9.2 正弦信号发生器设计,KX康芯科技,图9-17 Scope模型,9.2.2 Simulink模型仿真,2、添加波形观察模块,9.2 正弦信号发生器设计,KX康芯科技,图9-18 Scope初始显示,2、添加波形观察模块,9.2 正弦信号发生器设计,KX康芯科技,图9-19 设置Scope参数,3、Scope参数设置,9.2 正弦信号发生器设计,KX康芯科技,图9-20 sinout全图,3、Scope参数设置,9.2 正弦信号发生器设计,KX康芯科技,图9-21 设置Step,4、设置仿真激励,9.2 正弦信号发生器设计,KX康芯科技,图9-22 simulink仿真Start,4、设置仿真激励,9.2 正弦信号发生器设计,KX康芯科技,图9-23 simulink仿真设置,5、启动仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-24 有符号输出波形(系统级仿真),5、启动仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-25 无符号输出波形(系统级仿真),5、启动仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-26 无符号整数Signed Integer输出电路,6、设计成无符号数据输出,9.2 正弦信号发生器设计,KX康芯科技,图9-27 SinOut1模块设置,7、各模块功能说明,9.2 正弦信号发生器设计,KX康芯科技,图9-28 ExtractBit模块设置,7、各模块功能说明,9.2 正弦信号发生器设计,KX康芯科技,图9-29 BusConversion模块设置,7、各模块功能说明,9.2 正弦信号发生器设计,KX康芯科技,图9-30 BusConcatenation模块设置,7、各模块功能说明,9.2 正弦信号发生器设计,KX康芯科技,图9-31 SinOut1模块设置,7、各模块功能说明,9.2 正弦信号发生器设计,KX康芯科技,图9-32 NOT模块设置,7、各模块功能说明,9.2 正弦信号发生器设计,KX康芯科技,图9-33 双击SignalCompiler,9.2.3 SignalCompiler使用方法,1、分析当前的模型,9.2 正弦信号发生器设计,KX康芯科技,图9-34 打开SignalCompiler窗口,2、设置Signal Compiler,9.2 正弦信号发生器设计,KX康芯科技,图9-35 sinout工程处理信息,3、把模型文件MDL转换成VHDL,4、综合(Synthesis),5、QuartusII适配,9.2 正弦信号发生器设计,KX康芯科技,图9-36 准备执行tcl文件,9.2.4 使用ModelSim进行RTL级仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-37 ModelSim仿真结果,9.2.4 使用ModelSim进行RTL级仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-38 ModelSim的信号设置,9.2.4 使用ModelSim进行RTL级仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-39 设为Analog,9.2.4 使用ModelSim进行RTL级仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-40 sinout工程的ModelSim仿真波形(RTL级仿真),9.2.4 使用ModelSim进行RTL级仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-41 打开QuartusII工程进行编译和时序仿真,使用QuartusII实现时序仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-42 QuartusII工程VHDL程序实体,使用QuartusII实现时序仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-43 打开QuartusII工程的vec仿真激励文件,使用QuartusII实现时序仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-44设置仿真文件路径,使用QuartusII实现时序仿真,9.2 正弦信号发生器设计,KX康芯科技,图9-45 sinout工程的QuartusII仿真波形(门级时序仿真),使用QuartusII实现时序仿真,硬件测试与硬件实现,9.3 DSP Builder层次化设计,KX康芯科技,图9-46 准备建立subsystem,使用QuartusII实现时序仿真,9.3 DSP Builder层次化设计,KX康芯科技,图9-47 建立subsystem后,使用QuartusII实现时序仿真,9.3 DSP Builder层次化设计,KX康芯科技,图9-48 subsin/subsystem子系统图,使用QuartusII实现时序仿真,9.3 DSP Builder层次化设计,KX康芯科技,图9-49 修改子系统名,使用QuartusII实现时序仿真,9.3 DSP Builder层次化设计,KX康芯科技,图9-50 修改SubSystem的端口,使用QuartusII实现时序仿真,9.3 DSP Builder层次化设计,KX康芯科技,图9-51 顶层图的改变,使用QuartusII实现时序仿真,9.3 DSP Builder层次化设计,KX康芯科技,图9-52 含subsystem的subsint模型,使用QuartusII实现时序仿真,9.3 DSP Builder层次化设计,KX康芯科技,图9-53 Scope1波形图,使用QuartusII实现时序仿真,9.3 DSP Builder层次化设计,KX康芯科技,图9-54 Scope波形图,使用QuartusII实现时序仿真,9.3 DSP Builder层次化设计,KX康芯科技,图9-55 SubSystem设置,使用QuartusII实现时序仿真,9.3 DSP Builder层次化设计,KX康芯科技,图9-56 编辑singen的“Mask type”,使用QuartusII实现时序仿真,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-57 DDS系统,9.4.1 DDS模块设计,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-58 DDS子系统SubDDS,9.4.1 DDS模块设计,9.4 基于DSP Builder的DDS设计,KX康芯科技,9.4.1 DDS模块设计,Freqword模块:(Altbus)库:Altera DSP Builder中IO&Bus库参数“Bus Type”设为“signed Integer”参数“Node Type”设为“Input port”参数“number of bits”设为“32”,Phaseword模块:(Altbus)库:Altera DSP Builder中IO&Bus库参数“Bus Type”设为“signed Integer”参数“Node Type”设为“Input port”参数“number of bits”设为“32”,9.4 基于DSP Builder的DDS设计,KX康芯科技,9.4.1 DDS模块设计,Amp模块:(Altbus)库:Altera DSP Builder中IO&Bus库参数“Bus Type”设为“signed Integer”参数“Node Type”设为“Input port”参数“number of bits”设为“10”,DDSout模块:(Altbus)库:Altera DSP Builder中IO&Bus库 参数“Bus Type”设为“signed Integer”参数“Node Type”设为“Output port”参数“number of bits”设为“10”,9.4 基于DSP Builder的DDS设计,KX康芯科技,9.4.1 DDS模块设计,Parallel Adder Subtractor模块:(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库参数“Number of Inputs”设为“2”“Add(+)Sub(-)”设为“+”选择“Pipeline”参数“Clock Phase Selection”,Delay模块:(Delay)库:Altera DSP Builder中Storage库参数“Depth”设为“1”参数“Clock Phase Selection”设为“1”,9.4 基于DSP Builder的DDS设计,KX康芯科技,9.4.1 DDS模块设计,Phaseword1模块:(Altbus)库:Altera DSP Builder中IO&Bus库参数“Bus Type”设为“signed Integer”参数“Node Type”设为“Internal Node”参数“number of bits”设为“32”,Parallel Adder Subtractor1模块:(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库参数“Number of Inputs”设为“2”“Add(+)Sub(-)”设为“+”选择“Pipeline”参数“Clock Phase Selection”,9.4 基于DSP Builder的DDS设计,KX康芯科技,9.4.1 DDS模块设计,BusConversion2模块:(BusConversion)库:Altera DSP Builder中IO&Bus库参数“Input Bus Type”设为“signed Integer”参数“Input number of bits.”设为32参数“Output Bus Type”设为“Signed Integer”参数“Output number of bits.”设为“10”参数“Input Bit Connected to Output MSB”设为“31”参数“Input Bit Connected to Output LSB”设为“22”使用“Round”,Product模块:(Product)库:Altera DSP Builder中Arithemtic库参数“Pipeline”设为“2”参数“Clock Phase Selection”设为“1”不选择“Use LPM”,9.4 基于DSP Builder的DDS设计,KX康芯科技,9.4.1 DDS模块设计,BusConversion3模块:(BusConversion)库:Altera DSP Builder中IO&Bus库参数“Input Bus Type”设为“signed Integer”参数“Input number of bits.”设为“20”参数“Output Bus Type”设为“Signed Integer”参数“Output number of bits.”设为“10”参数“Input Bit Connected to Output MSB”设为“18”参数“Input Bit Connected to Output LSB”设为“9”使用“Round”使用“Saturate”,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-59 DDS系统输出波形,9.4.1 DDS模块设计,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-60 DDS系统输出波形,9.4.1 DDS模块设计,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-61 FSK调制模型,9.4.2 FSK调制器设计,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-62 FSK调制的Sinulink仿真结果,9.4.2 FSK调制器设计,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-63 正交信号发生器MDL模型,9.4.3 正交信号发生器设计,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-64 数字移相信号发生器MDL模型,9.4.4 数控移相信号发生器设计,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-65 数字移相信号发生器输出波形,9.4.4 数控移相信号发生器设计,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-66 AM发生器模型,9.4.5 幅度调制信号发生器设计,9-4,9.4 基于DSP Builder的DDS设计,KX康芯科技,图9-67 AM模型仿真波形,9.4.5 幅度调制信号发生器设计,9.5 数字编码与译码器设计,KX康芯科技,图9-68 线性反馈移位寄存器的构成,9.5.1 伪随机序列,(9-5),(9-6),9.5 数字编码与译码器设计,KX康芯科技,图9-69 m序列发生器模型,9.5.1 伪随机序列,9.5 数字编码与译码器设计,KX康芯科技,图9-70 修改后的m序列发生器模型,9.5.1 伪随机序列,9.5 数字编码与译码器设计,KX康芯科技,图9-71 m序列发生器Simulink仿真结果,9.5.1 伪随机序列,9.5 数字编码与译码器设计,KX康芯科技,9.5.2 帧同步检出,(9-7),9.5 数字编码与译码器设计,KX康芯科技,图9-72 帧同步检出模型,9.5.2 帧同步检出,9.5 数字编码与译码器设计,KX康芯科技,图9-73 bxp1m子系统,9.5.2 帧同步检出,9.5 数字编码与译码器设计,KX康芯科技,图9-74 bxn1m子系统,9.5.2 帧同步检出,9.5 数字编码与译码器设计,KX康芯科技,图9-75 帧同步的巴克码检测仿真结果,9.5.2 帧同步检出,9.6 硬件环HIL仿真设计,KX康芯科技,图9-76 插入HIL的Simulink模型硬件仿真说明图,9.6.1 HIL仿真流程,1首先完成一个Simulink模型设计,9.6 硬件环HIL仿真设计,KX康芯科技,图9-77 扫频滤波信号发生器Simulink模型图,文件名freqsweep.mdl,9.6.1 HIL仿真流程,1首先完成一个Simulink模型设计,9.6 硬件环HIL仿真设计,KX康芯科技,图9-78 扫频滤波信号发生器算法(软件)仿真波形,9.6.1 HIL仿真流程,1首先完成一个Simulink模型设计,9.6 硬件环HIL仿真设计,KX康芯科技,图9-79 SignalCompiler对扫频滤波信号发生器进行转换、综合和适配,9.6.1 HIL仿真流程,2通过DSP Builder转化成QuartusII的工程,9.6 硬件环HIL仿真设计,KX康芯科技,图9-80 消去原设计,加入HIL模块,9.6.1 HIL仿真流程,3用HIL模块取代设计模型的所有电路,9.6 硬件环HIL仿真设计,KX康芯科技,图9-81 向Simulink图中拖入HIL模块,9.6.1 HIL仿真流程,3用HIL模块取代设计模型的所有电路,9.6 硬件环HIL仿真设计,KX康芯科技,图9-82 HIL模块工程加载与参数设置窗,4HIL模块参数设置,9.6 硬件环HIL仿真设计,KX康芯科技,图9-83 HIL模块编译与编程窗,4HIL模块参数设置,9.6 硬件环HIL仿真设计,KX康芯科技,图9-84 加入了HIL模块的扫频滤波电路模型,9.6.1 HIL仿真流程,5进行HIL硬件仿真,9.6 硬件环HIL仿真设计,KX康芯科技,图9-84 加入了HIL模块的扫频滤波电路模型,9.6.1 HIL仿真流程,5进行HIL硬件仿真,9.6 硬件环HIL仿真设计,KX康芯科技,图9-86 利用专用编程模块向FPGA下载,5进行HIL硬件仿真,9.6 硬件环HIL仿真设计,KX康芯科技,图9-87 加入了HIL模块的FSK模型,9.6.2 FSK的HIL仿真,9.6 硬件环HIL仿真设计,KX康芯科技,图9-88 加入了HIL模块的FSK模型中方波信号参数设置窗口,9.6.2 FSK的HIL仿真,9.6 硬件环HIL仿真设计,KX康芯科技,图9-89 加入了HIL模块的FSK模型中仿真参数设置窗口,9.6.2 FSK的HIL仿真,9.6 硬件环HIL仿真设计,KX康芯科技,图9-90加入了HIL模块的FSK模型仿真波形图,9.6.2 FSK的HIL仿真,9.7 DSP Builder的状态机设计,KX康芯科技,图9-91 由状态机模块和双口RAM构成的FIFO存储器电路fifo_control.mdl,9.7.1 FIFO控制状态机设计示例,9.7 DSP Builder的状态机设计,KX康芯科技,图9-92 加减计数器模块Up_Down_Counter内部电路,9.7.1 FIFO控制状态机设计示例,9.7 DSP Builder的状态机设计,KX康芯科技,图9-93 状态机转换表图,9.7.1 FIFO控制状态机设计示例,9.7 DSP Builder的状态机设计,KX康芯科技,图9-94 库中默认状态机表模块,9.7.1 FIFO控制状态机设计示例,9.7 DSP Builder的状态机设计,KX康芯科技,表9-1 FIFO控制器状态转换表,9.7.1 FIFO控制状态机设计示例,9.7 DSP Builder的状态机设计,KX康芯科技,图9-95 状态机模块图,9.7.2 状态机设计流程,9.7 DSP Builder的状态机设计,KX康芯科技,图9-96 状态机表的“Inputs”页,9.7.2 状态机设计流程,9.7 DSP Builder的状态机设计,KX康芯科技,图9-97 状态机表的“States”页,9.7.2 状态机设计流程,9.7 DSP Builder的状态机设计,KX康芯科技,表9-2 定义条件描述的条件操作符的优先级别,9.7.2 状态机设计流程,9.7 DSP Builder的状态机设计,KX康芯科技,表9-3 顺序计算判断示例,9.7.2 状态机设计流程,9.7 DSP Builder的状态机设计,KX康芯科技,9.7.2 状态机设计流程,【例9-1】IF(pop_sig=1)AND(conut_in_sig=0)THEN next_state=empty_st;ELSIF(push_sig=1)THEN next_state=push_not_full_st;ELSIF(pop_sig=1)AND(conut_in_sig/=0)THEN next_state=pop_not_empty_st;ELSIF(push_sig=1)AND(conut_in_sig=250)THEN next_state=full_st;ELSE next_state=idle_st;END IF;,9.7 DSP Builder的状态机设计,KX康芯科技,表9-4 表9-3的改变,9.7.2 状态机设计流程,9.7 DSP Builder的状态机设计,KX康芯科技,9.7.2 状态机设计流程,【例9-2】IF(pop_sig=1)AND(conut_in_sig=0)THEN next_state=empty_st;ELSIF(pop_sig=1)AND(conut_in_sig/=0)THENnext_state=pop_not_empty_st;ELSIF(push_sig=1)AND(conut_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;,9.7 DSP Builder的状态机设计,KX康芯科技,图9-98 State Mahine Builder Design Rule Check页面,9.7.2 状态机设计流程,9.7 DSP Builder的状态机设计,KX康芯科技,图9-99 设定了状态机后的表格模块,9.7.2 状态机设计流程,9.7 DSP Builder的状态机设计,KX康芯科技,图9-100 仿真波形,9.7.2 状态机设计流程,9.7 DSP Builder的状态机设计,KX康芯科技,9.7.2 状态机设计流程,stop time=400;empty=0;full=0;idle=0 data_out=48stop time=900;empty=0;full=1;idle=0 data_out=stop time=2000;empty=1;full=0;idle=0 data_out=48stop time=400;empty=0;full=0;idle=0 data_out=48,习 题,9-1 说明Matlab、DSP Builder和QuartusII间的关系,给出DSP Builder设计流程。9-2 把图9-2设计模型通过SignalCompiler转化为VHDL文件,并用ModelSim进行功能仿真。9-3 DSP Builder子系统模块与Simulink的SubSystem是什么关系,对于可以用SignalCompiler编译的DSP Builder子系统在 SubSystem的基础上还需要什么设置?9-4 在手动流程中能完成哪几个层次的仿真,各有什么作用?9-5 简述DDS的实现原理。9-6 分别说明DDS的输入信号与输出正弦信号的关系,分析DDS带来的误差问题,实 验 与 设 计,实验9-1.利用Matlab/DSP Builder设计基本电路模块实验,图9-101 正弦调制信号模型,实 验 与 设 计,实验9-1.利用Matlab/DSP Builder设计基本电路模块实验,图9-102 正弦调制信号仿真波形,实 验 与 设 计,实验9-2 基于DSP Builder的DDS应用模型设计,图9-103 端口数据类型和位数变换后的DDS模型,实 验 与 设 计,实验9-2 基于DSP Builder的DDS应用模型设计,图9-104 数字移相信号发生器,实 验 与 设 计,实验9-2 基于DSP Builder的DDS应用模型设计,图9-105 QAM模型,实 验 与 设 计,实验9-3 编译码器设计实验,实验9-4.HIL硬件环仿真实验,