1 1 Altera FPGA的设计流程 以及DSP设计 贺光辉清华大学电子工程系 hgh02@mails.tsinghua.edu.cn 2 目标 ? 掌握FPGA的标准设计流程和工具 ? 用Modelsim进行功能级仿真并诊断RTL Code ? 用Quartus II做设计综合和布局布线 ? 用FPGA Mega-functions做设计 ? 返标SDF并运行门级的仿真 ? 掌握FPGA的时序约束 ? 了解用DSP Builder进行FPGA设计 3 提纲 ? FPGA的设计流程 ? 用Modelsim进行仿真和调试 ? 用Quartus II进行时序分析、综合 等?FIR滤波器的设计实例 ? DSP Builder介绍 2 4 FPGA的设计流程 5 目标 ? 完成本单元的学习后你将会 ? 列出FPGA设计过程的步骤(以Altera的FPGA为设计例子) ? 用缺省的软件选项来实现一个 FPGA的设计 ? Quaturs II ? Modelsim 6 FPGA的设计流程 ? FPGA的设计流程 ? 用ModelSim进行仿真 ? 用Quartus II进行综合和时序分析 ? 用Quartus II进行布局布线、调试和 下载 3 7 FPGA设计流程 综合 - Translate Design into Device Specific Primitives - Optimization to Meet Required Area & Performance Constraints - Synplify, Quartus II Design Specification 布局布线 - Map Primitives to Specific Locations inside Target Technology with Reference to Area & Performance Constraints Design Entry/RTL Coding - Behavioral or Structural Description of Design RTL仿真 - Functional Simulation (Modelsim?, Quartus II) - Verify Logic Model & Data Flow (No Timing Delays) LE M512 M4K I/O 8 FPGA设计流程 时序分析 - Verify Performance Specifications Were Met - Static Timing Analysis 门级仿真 - Timing Simulation - Verify Design Will Work in Target Technology PC Board Simulation & Test - Simulate Board Design - Program & Test Device on Board - Use SignalTap II for Debugging tclk 9 系统规划和预算 ? 系统功能的总体规划: ? 功能集的定义; ? 端口的定义; ? 模块的基本划分和功能定义: ? 每个模块应该完成的功能; ? 模块之间的接口定义; ? 模块间通讯的问题一定要考虑好,硬件通信 的成本一般比较大. 4 10 设计的整体规划 ? 设计规模的初步估计,大致应该选择哪 一层次的芯片; ? 设计时序的宏观规划: ? 频率和时钟结构; ? 可能的关键路径,着重优化; ? 模块的进一步细化,考虑可重用性等的 规划: ? 可以考虑基本单元,比如加法、乘法器和寄 存器等. 设计文档化非常重要 11 设计实现 ? 用电路框图或者HDL描述实现自己的设 计: ? 简单的设计可以用电路框图; ? 大型复杂的一般倾向于用HDL描述; ? HDL描述和计算机编程中的高级语言描述有 很大不同,每一个描述都要考虑硬件的实现 能力,是不是可以综合的等等,目前HDL语 言标准中仍然有不能被综合的语法,这些要 尤其注意. 12 功能仿真 ? 对逻辑功能进行验证: ? 不考虑时序问题,认为门都是理想门,没有延 时; ? 详细一些的可以认为门延时都是一样,而忽略 互连线的延时. RTL代码 RTL代码 逻辑仿真器 调用模块的 行为仿真模 型 调用模块的 行为仿真模 型 测试数据 测试数据 测试程序 (test bench) 测试程序 (test bench) 5 13 逻辑综合 ? 通过映射和优化,把逻辑设计描述转换为和 物理实现密切相关的工艺网表: RTL代码 RTL代码 逻辑综合器 调用模块的 黑盒子接口 调用模块的 黑盒子接口 设置综合目标 和约束条件 设置综合目标 和约束条件 EDIF网表 (netlis t) EDIF网表 (netlis t) HDL网表 (netlis t) HDL网表 (netlis t) 14 布局布线 ? 将综合生成的网表,在FPGA内部进行布局布线的 设计,并最终生成用于下载的二进制配置文件; 逻辑综合器 EDIF网表 (netlist) EDIF网表 (netlist) FPGA厂家工具 调用模块 的 综合模型 调用模块 的 综合模型 设置布局布 线约束条件 设置布局布 线约束条件 HDL网表 (netlis t) HDL网表 (netlis t) SDF文件 (标准延时格 式) SDF文件 (标准延时格 式) 下载/编程文件 15 门级仿真 FPGA厂家工具 HDL网表 (netlist) HDL网表 (netlist) SDF文件 (标准延时格式) SDF文件 (标准延时格式) 逻辑仿真器 测试数据 测试数据 FPGA基本单 元仿真模型 FPGA基本单 元仿真模型 测试程序 (test bench) 测试程序 (test bench) 6 16 SDF 文件 ? Industry Standard Format ? Automatically Generated When You Compile a Design (Output File with Extension .sdo) ? Contain Timing Information ? Device Delays ? Interconnect Delays ? Port Delays ? Path Delays ? Timing Checks ? Can be Back-annotated to a Design for Accurate Model of Delays 17 物理验证 ? 将生成的二进制配置文件下载到FPGA上,进行实际 的功能和时序的测试; ? Altera (.sof.pof文件) ? 由于FPGA常常是作为整个系统一部分,因此还应该 将FPGA放到整个系统中进行验证,整个系统工作正 常,才算完成了开发过程. 18 用ModelSim 仿真 7 19 ModelSim的用途 1. RTL 仿真(功能仿真) ? 验证设计HDL的基本逻辑功能,属于最基本的验证 ? 仿真速度最快 2. 门级仿真 ? 采用综合软件综合后生成的门级网表 ? 不带有布局布线后产生的时序信息 3. 时序仿真(后仿真) ? 在门级仿真的基础上加入时延文件".sdf"文件 ? 速度很慢,需要很长时间 20 用ModelSim作功能仿真(1) ModelSim 的实现方法: ? 交互式的命令行 (Cmd) ? 利用控制台的命令行 ? 用户界面 (UI) ? 能接受菜单输入和命令行输入 ? 批处理模式 ? 从DOS或UNIX命令行运行批处理文件 21 用ModelSim作功能仿真(2) 基本仿真步骤: 1 ? 建立库 2 ? 映射库到物理目录 3 ? 编译源代码 - 所有的HDL代码必须被编译 4 ? 启动仿真器 5 ? 执行仿真 8 22 用ModelSim作功能仿真(3) 1 ? 建立库 UI) 从主菜单里面: Design -> Create a New Library Cmd) 从main, 记录窗口: ModelSim> vlib <库名> 23 用ModelSim作功能仿真(4) 2 ? 映射库到物理目录 UI) 从主菜单: Design -> Browse Libraries Design -> Create a New Library Cmd) 从主体的记录窗口: ModelSim> vmap
24 用ModelSim作功能仿真(5) 3 ? 编译源代码(Verilog) ? UI) Design -> Compile ? Cmd) vlog -work .v .v ? 文件按出现的顺序被编译 ? 文件的顺序或者编辑的顺序不重要 ? 支持增量式编译(只有被改动的设计单元被编译) ? 缺省编译到work库?例如. vlog my_design.v 9 25 用ModelSim作功能仿真(6) 3 ? 编译源代码 点亮一个或多个文 件并点击 Compile 26 用ModelSim作功能仿真(7) 4 ? 启动仿真器 ? UI) Design -> Load New Design Cmd) vsim -lib ? VHDL ? vsim top_entity top_architecture ? Verilog ? vsim top_level 27 用ModelSim作功能仿真(8) 4 ? 启动仿真器 选择库 选择顶级module 或entity/architecture 10 28 用ModelSim作功能仿真(9) 5 ? 执行仿真 ? UI) Run CMD) run ? 按timesteps指定的时间长度执行仿真 29 用ModelSim作功能仿真(10) 5 ? 执行仿真(UI) 选择 timesteps数量就 可以执行仿真 Restart – 重装任何已改动 的设计元素并把仿真时间设 为零 COM) restart 30 用ModelSim作功能仿真(11) 5 ? 执行仿真----run 命令举例 ? run 1000 - 从当前位置运行仿真 1000 timesteps ? run 2500 ns - 从当前位置运行仿真2500 ns ? run @3000 - 运行仿真到 timestep 3000 11 31 用ModelSim作功能仿真(12) 5 ? 执行仿真----仿真器激励 ? 测试台 - Verilog 或VHDL代码 - 非常复杂的仿真(交互式仿真、数据量大的仿真) ? force命令 - 简单的模块仿真 - 直接从命令控制台输入 - .DO 文件 (宏文件) 32 用ModelSim作功能仿真(13) 5 ? 执行仿真----仿真器激励 .do文件 ? 自动完成仿真步骤的宏文件 – 库设置 – 编译 – 仿真 – 强制仿真激励 ? 能在所有的ModelSim 模式里被调用 – UI) Macro -> Execute – COM) do .do ? 能调用其他的DO文件 33 用ModelSim作功能仿真(14) 5 ? 执行仿真----仿真器激励 .do文件举例 vlib work vcom counter.vhd vsim counter view * add wave /* add list /* do run.do add wave /clk add wave /clr add wave /load add wave -hex /data add wave /q force /clk 0 0, 1 50 -repeat 100 force /clr 0 0, 1 100 run 500 force /load 1 0, 0 100 force /data 16#A5 0 force /clk 0 0, 1 50 -repeat 100 run 1000 cd c:\mydir vlib work vcom counter.vhd vsim counter view * do stimulus.do my_sim.do stimulus.do 12 34 用ModelSim作功能仿真(15) 5 ? 执行仿真----仿真器激励 测试台文件(test bench) ? 针对复杂的仿真 ? 在测试台文件中将设计模块实例化 --将测试台文件置于TOP层,调用设计模块 --在测试台文件中加载时钟激励信号,以及给部分信号赋初值 ? 测试台文件的写法与设计模块写法有区别 -- 一些符合语法但又无法被综合的语句(根据具体的综合工具 而定),可以在测试台文件中使用 35 用ModelSim作功能仿真(总结) 基本仿真步骤: 1 ? 建立库(Altera MegaFunction库) 2 ? 映射库到物理目 录3?编译源代码 - 所有的HDL代 码必须被编译 4 ? 启动仿真器 5 ? 执行仿真 # Create libary vlib work # Compile the altera_mf library vlog d:/quartus51/eda/sim_lib/altera_mf.v # Create altera_mf library and map it to work exec vmap altera_mf work # source files # FIFO vlog ../core/INFIFO.v # top_level vlog ../src/chip_top.v vlog ../src/tb_top.v # simulation and testbenches vsim -L work tb_top do wave_tb_top.do run 5 ms 36 用ModelSim作时序仿真(1) 时序仿真的含义: ? 布局布线后进行的后仿真 ? 包含有延时信息 ? 仿真结果可能与功能仿真不相同 ? 除功能仿真时需要的文件以外,还需要网 表文件(如time_sim.vhd或time_sim.v) 和包含延时信息的文件(time_sim.sdf文件) ? 在Quartus中是.vo 和.sdo文件 13 37 用ModelSim作时序仿真(2) 指定SDF文件 指定 SDF文件 使用定时值的等级的 类型 (如果不是顶级) 38 用ModelSim作时序仿真(3) vsim 命令的参数 ? 参数 ? -t ? 指定仿真的时间分辨率 ? 单位可以是{fs, ps, ns, ms, sec, min, hr} ? 如果用了 Verilog的'timescale指令, 将使用整个设计中的最 小的时间精度 ? 可选项(缺省是 ns) ? -sdfmin | -sdftyp | -sdfmax = ? 注释SDF文件 ? 可选项 ? 使用实例名也是可选项; 如果没有使用, SDF用于顶级 39 用ModelSim作时序仿真(总结) 基本仿真步骤: 1 ? 建立库 2 ? 编译Altera器件 库3?映射库到物理 目录 4 ? 编译综合后网 表5?加入SDF文件 4 ? 启动仿真器 5 ? 执行仿真 # script for Modelsim post timing simulation of Altera cyclone d evice # by Wayne # set your PC environment set modelsim_home d:/edatools/Modeltech_6.1d set quartus_home d:/quartus51 #build work lib vlib work #add cyclone device lib and its sim models vlog -reportprogress 300 -work cyclone $quartus_home/eda/si m_lib/cyclone_atoms.v vmap cyclone work # post simulation in modelsim for Altera devices set design_name chip_top set home ../imp vlog ../src/tb_top.v vlog ../imp/simulation/modelsim/$design_name.vo vsim -sdftyp /tb_top/UUT=chip_top_v.sdo -t ps work.tb_top do wave.do run 500 us 14 40 用Quartus II 进行综合、时 序分析和布局布线 41 设计流程 ? Create a New Quartus II Project ? Compile a Design into an FPGA ? Locate Resulting Compilation Information ? Assign Design Constraints (Timing & Pin) ? Perform Timing Analysis & Obtain Results ? Configure an FPGA 42 时序分析 15 43 Timing Assignments ? 5 types of timing assignments exist: – fmax, tsu, thold, tco, tpd ? These timing assignments can be assigned globally or individually 44 Register的参数 D Clk Q D Q Clk tc-q thold T tsu tsu:建立时间,在时钟有效沿到来之前寄存器数据输入应保持稳定的时 间,它间接约束了组合逻辑的最大延时 thold:保持时间,在寄存器数据输入的引脚的数据在系统有效时钟沿到 来后需要保持稳定的时间,它间接约束了组合逻辑的最小延时 tc-q:寄存器从有效时钟沿到来到输出有效的最大时间 违反建立或保持时间,都会造成触发器工作异常,产生Metastability. 为了可靠工作,在建立时间开始到保持时间为止的这段时间内,触发器 的输入端信号不应发生变化. 45 Clock Skew z在同一个时钟域或者两个时钟域之间时钟信号到 达寄存器的最大时间差别 z产生原因主要有:时钟源到达各端点的路径长度 不同,各端点负载不同,时钟网络中插入的缓冲器 不同等 z在两个点之间,可以大体认为Skew是固定的值 z注意:Clock Skew影响的是时钟的到达时间不 同,也就是时钟发生相移,并不影响时钟的周期宽 度16 46 Clock Skew(2) 47 同步设计的时间约束参数 R1 D Q Combinational Logic In CLK tCLK1 R2 D Q tCLK2 tc ? q tc ? q, cd tsu, thold tlogic tlogic, cd tc-q:寄存器从有效时钟沿到来到输出有效的最大时间 tc-q,cd:时钟沿到来到输出有效的最小时间 tsu:建立时间 thold:保持时间 tlogic:组合逻辑最大延时 tlogic,cd:组合逻辑最小延时 48 时钟参数满足的条件 z时钟周期应大于寄存器延时、组合逻辑延时、和 目标寄存器建立时间的和 z本寄存器有效输出通过组合逻辑的延时应该大于 目的寄存器的保持时间要求 17 49 Fmax Assignment 50 Clock Period = Clock-to-Out + Data Delay + Setup Time - Clock Skew = tco + B + tsu - (E - C) fmax = 1/Clock Period B C tco tsu E Clock Period Clock Setup (fmax) ? Worst-Case Clock Frequency 51 fmax Analysis Details Data Delay (B) Source Register Clock Delay (C) Setup Time (tsu) B C tco tsu E Clock Period Destination Register Clock Delay (E) Clock to Output (tco) 1 0.384 ns + 7.445 ns + 0.180 ns - 0.000 ns = 124.86 MHz Messages Window (System Tab) in Quartus II 18 52 I/O Assignments: Tsu, Tco 53 Timing Assignments ? What can be tagged with a timing assignments? ? Registers (all) ? Clock Pins (all) ? Input Pins (tsu, th) ? Output Pins (tco) ? Bidirectional Pins (all) 54 I/O 建立时间和保持时间 Clock delay tsu th Data delay tsu = data delay - clock delay + intrinsic tsu intrinsic tsu & hold th = clock delay - data delay + intrinsic th 约束了最 大延时 约束了最 小延时 19 55 I/O Clock-to-Output Analysis (tco) Data delay tco Clock delay clock delay + intrinsic tco + data delay = tco intrinsic tco 56 Time Slack slack = 期望数据到达时间 – 数据实际到达时间 Slack为正,表示数据提前到达,此时组合逻辑延 迟满足条件,Register有足够的建立时间; Slack为负,表示数据比预期的时间晚到达,此时 显然不满足Register的建立时间,不满足约束; 57 Slack Equations (Setup) Slack = Largest Required Time - Longest Actual Time Required Time = Clock Setup - tco - tsu + (clk'- clk) Actual Time = Data Delay launch edge clk clk' setup latch edge Clock Setup* clk tco tsu Combinatorial Logic clk' Register 1 Register 2 data delay 20 58 Slack Equations (Hold) launch edge clk hold latch edge Clock Hold* clk tco th Combinatorial Logic clk' Register 1 Register 2 data delay Slack = Shortest Actual Time - Smallest Required Time Actual Time = Data Delay Required Time = Clock Hold - tco + th + (clk'- clk) clk' 59 in out clk reg1 reg2 clk' clk clk' slack = p2p required – p2p delay p2p p2p required = setup relationship + clock skew – tCO - tSU setup relationship = latch edge – launch edge clock skew = clk' – clk launch latch Simple Register to Register 示例 60 in out clk reg1 reg2 clk' slack = p2p required – p2p delay p2p p2p required = setup relationship + clock skew – tCO – tSU setup relationship = latch edge – launch edge = 5.0 – 0.0 = 5.0 clock skew = clk' – clk 2.266 0.11 0.082 ?tco tsu 0.082 0.11 = 2.521 - 2.993 = 5.0 + (-0.472) – 0.11 – 0.082 = 4.336 – 2.266 = -0.472 = 4.336 tco tsu = 2.07 2.993 2.521 2.993 2.521 Simple Register to Register 示例(con) 21 61 Input Minimum Delay ? Minimum Delay from External Device to Altera I/O ? Represents External Device tco + PCB Delay + PCB Clock Skew ? Constrains Registered Input Path (th) A tco th Altera Device External Device PCB Delay thA ≤ Input Minimum Delay Input Minimum Delay thA CLK CLK 62 Output Minimum Delay ? Minimum Delay from Altera I/O to External Device ? Represents External Device th - PCB Board Delay ? Constrains Registered Output Path (Min. tco) B tco th Altera Device External Device Board Delay tcoB ≥ Output Minimum Delay tco Output Maximum Delay CLK CLK 63 Output Maximum Delay ? Maximum Delay from Altera I/O to External Device ? Represents External Device tsu + PCB Delay + PCB Clock Skew ? Constrains Registered Output Path (Max. tco) B tco tsu Altera Device External Device PCB Delay tcoB ≤ tCLK - Output Maximum Delay tco Output Maximum Delay CLK CLK 22 64 Example Input Maximum Delay Notice: 1) Input Pin d(6) & d(3) Timing Information Is Included with Clock Setup (fmax) Analysis 2) Input Delay Has Been Added to List Path Calculation Input Maximum Delay (d) = 4 ns 65 Violation(1) ? 建立时间不满足要求往往是由于逻辑团的延时 过大造成的 ? 保持时间不满足要求往往是由于逻辑团的延时 过小造成的 ? 建立时间和保持时间不满足的情况往往出现在 异步时钟域中 66 Violation(2) 解决建立时间不满足要求的方法: ? 降低时钟频率 ? 拆分组合逻辑,增加流水线 ? 减小传输延时 23 67 Violation(3) 解决保持时间不满足要求的方法: ? 增加逻辑团延时 ? 减小时钟延时 68 Compiling in Quartus 69 Compiling in Quartus (Start) 24 70 Compiling in Quartus 71 Done! 72 Download Bit File 25 73 Download Bit File into FPGA 74 Altera FPGA配置列表 根据 IEEE Std. 1149.1 (JTAG)引脚标准 JTAG模式 串行异步处理器 被动串行异步模式(PSA) 采用异步微处理器,这种模式下微处理器对于目标 芯片如同一个存储器. 被动并行异步模式(PPA) 增强型配置芯片或8位同步并行微处理器速度为PPS 模式的8倍. 快速被动并行模式(FPP) 并行同步微处理器配置 被动并行同步模式(PPS) 应用串行配置芯片EPCS1,EPCS4等 主动串行模式(AS) 运用增强配置芯片(EPC16,EPC8或EPC4 ) EPC1,EPC2,EPC1441,串行同步微处理器, USB接口下载电缆,MasterBlasterTM通信电缆, ByteBlasterTM II并口下载电缆或ByteBlasterMVTM 并口下载电缆. 被动串行模式(PS) 典型应用 配置模式 75 Debug with SignalTap II 26 76 Quartus II 嵌入式逻辑分析仪特点 可以在综合编译之前对逻辑分析仪进行修改. 增加的编译 可以捕捉到更加复杂的数据信号,更加景区的找到问题的所在. 对每个信号均有10种触发模式 使设计者可以通过一个JTAG接口同步得到多个芯片的数据 通过一个JTAG接口可对多个器件进行 多重的逻辑分析 可以从一个复杂的时钟信号中分析出想要得到的数据 可对一个器件进行多重逻辑分析 SignalTap II logic Analyzer 是Quartus II免费提供的. 不需要额外费用 可以评估逻辑或存储器件的资源使用情况. 资源使用的评价者 可以采集速率更高的数据. 采样时钟最高可达270MHz 使每个通道得到更多的采样数据. 每个器件支持128K采样存储 可以支持多个采用通道和很宽的总线模式采样. 每个器件最高支持1024个通道 在循环模式或间隔模式采样时,使每次不同的触发均能采到更加精 确的数据. 可以灵活的改变缓冲器模式 优点 特点 77 FIR滤波器设计实例 78 一个综合的例子 ? FIR滤波器的设计 ? Modelsim的使用 ? Quartus II的使用 ? 宏功能模块的使用 ? 仿真、综合等过程及报告的查看 27 79 设计要求 ? 设计一个14阶FIR滤波器,已给出滤波器系 数,要求用Verilog/VHDL实现该滤波器,并且 选用Altera的Stratix或Stratix II器件. ? 要求充分利用Altera Stratix/Stratix II的器件的 DSPBLOCK资源. ? 要求每一级都一级流水线(pipeline). ? 能够利用Altera的megafunction. ? 能够在Modelsim下进行仿真. ? 选用EP2S60F484C3器件. ? Fmax达到270Mhz以上. 80 设计难点 ? 难点在于要达到270MHz以上的频率 ? 通过插入流水线可以达到要求 ? 为了不过分的增加流水线寄存器的数 量,需要对FIR滤波器的结构进行精心设 计81 直接形式结构 关键路径是1个乘法器和2个加法器 流水线割集插入流水线寄存器,这样得到的关键路径是1个乘法和1个加法 28 82 数据广播结构 关键路径是1个乘法器和1个加法器 流水线割集插入流水线寄存器,关键路径是1个乘法 83 设计方案选择 1个乘法器 27 * 36个 进一步流水的数 据广播结构 1个乘法器和1 个加法器 13 * 36个 数据广播结构 1个乘法器和1 个加法器 39 * 36个 直接形式结构 关键路径长度 寄存器数目 84 FIR滤波器的结构 29 85 模块划分 ? 乘法器模块:直接用Altera的DSPBLOCK lpm_mult进行 例化 滤波器输出数据信号,32bit字长 O result 乘法器输入数据信号,16bit字长 I datab 乘法器输入数据信号,16bit字长 I dataa 描述 I/O 信号名称 ? 加法器模块:直接用Altera的DSPBLOCK lpm_add_sub进行例化 ? 顶层模块:将乘法器和加法器连接成数据广播结构的FIR滤波器 滤波器输出数据信号,36bit字长 O result 乘法器输入数据信号,36bit字长 I datab 乘法器输入数据信号,36bit字长 I dataa 描述 I/O 信号名称 86 DSP Blocks for Complex Arithmetic Applications DSP Blocks for Complex Arithmetic Applications ? Wireless ? Filtering & Compression ? Encryption ? Signal Processing ? Consumer ? Image Processing ? Audio Processing ? Compression ? DataCom ? Barrel Shifting ? QoS Algorithms + Optional Pipelining Output Registers Output MUX + - S + - Σ Input Registers 87 Stratix II DSP Blocks ? Up 96 DSP Blocks ? Each Configured for ? (8) 9x9 Multipliers ? (4) 18x18 Multipliers ? (1) 36x36 Multiplier ? Can Be Cascaded for Larger Operations ? Dedicated Configurable Math Circuitry ? Multiplier, Accumulate & Addition/Subtraction ? Rounding & Saturation ? Built-In Shift Register for Complete FIR Filter Implementation ? Selectable Input, Output & Pipeline Stage Registers 30 88 DSP Block Architecture Add/Sub/Acc Summation Unit Output Register X X X X + + - + - Input Register Pipeline Register Output Mux 89 综合结果 28 / 288 ( 9 % ) DSP block 9-bit elements 338 / 48,352 ( < 1 % ) Total ALUTs EP2S60F484C3 目标器件 资源利用率 速度 312.89 MHz ( period = 3.196 ns ) 最高时钟频率 (约束300MHz情况下) 90 用FPGA实现DSP算法 31 91 目标 ? 熟悉FPGA发展的趋势,知道为什么 用FPGA来实现DSP,FPGA能完成 DSP中的什么功能 ? 掌握FPGA中DSP算法到结构的设计 流程,了解Altera的DSP Builder通过 设计实例掌握一般DSP的设计方法和 思想 92 FPGA和DSP的背景介绍 93 DSP应用的例子 DSP DSP MILITARY MILITARY Secure Communications Sonar Processing Image Processing Radar Processing Navigation, Guidance VOICE/SPEECH VOICE/SPEECH Speech Recognition Speech Processing/Vocoding Speech Enhancement Text-to-Speech Voice Mail INSTRUMENTATION INSTRUMENTATION Spectrum Analyzers Seismic Processors Digital Oscilloscopes Mass Spectrometers MEDICAL MEDICAL Patient Monitoring Ultrasound Equipment Diagnostic Tools Fetal Monitors Life Support Systems Image Enhancement INDUSTRIAL/CONTROL INDUSTRIAL/CONTROL Robotics Numeric Control Power Line Monitors Motor/Servo Control CONSUMER CONSUMER Radar Detectors Power Tools Digital Audio / TV Music Synthesizers Toys / Games Answering Machines Digital Speakers PRO PRO- -AUDIO AUDIO AV Editing Digital Mixers Home Theater Pro Audio COMMUNICATIONS COMMUNICATIONS Echo Cancellation Digital PBXs Line Repeaters Modems Global Positioning Sound/Modem/Fax Cards Cellular Phones Speaker Phones Video Conferencing ATMs 32 94 DSP 理论 Sample & Quantize Audio Video Sonar Radar Multiply/ Accumulate Memory 95 The DSP Performance Gap 96 DSP处理器优势 ? DSP适合于顺序算法 ?FPGA的优势是较低系统时钟的并行运算,当然,也 可以实现顺序的算法. ? DSP在浮点运算方面有优势 ?目前FPGA对浮点运算的支持效率不高. ? DSP编程开发过程比较简单 ?DSP只需要编译,FPGA需要编译、综合、布局布 线; ?DSP开发板和驱动程序较丰富,外围电路完善; ?DSP有丰富的应用范例和库.当然,FPGA的各种 IP核也越来越多. 33 97 DSP处理器的不足 ? DSP处理器并行性有限 ? 只有几个乘加单元; ? TI最好的DSP:8个处理核心. ? 处理可变宽度数据的效率较低 ? 处理多采样速率的DSP系统效率较低 ? 主要靠提高系统时钟频率来提高运算速度>1 GHz ? 高频电路设计困难; ? 功耗和散热问题严重. 98 Why FPGA for DSP - 并行处理 并行处理能力强 Significant improvements in performance, power efficiency and system-level cost 99 Why FPGA for DSP - 并行处理 LPF Multi Channel Filter 80MHz Samples ch1 ch2 ch3 ch4 LPF LPF LPF LPF 20MHz Samples ? FPGAs 对于多通道的DSP设计是理想的 ? Many low sample rate channels can be multiplexed (e.g. TDM) and processed in the FPGA, at a high rate ? Interpolation (using zeros) can also drive sample rates higher 34 100 各方案定性比较示意图 选择参考 101 * * * * + + + + + + * + + D Q * * + + + + D Q Parallel Semi-Parallel Serial Why FPGA for DSP - 灵活性 FPGAs allow Area (cost) / Performance tradeoffs Optimized for? Speed Area 灵活性好 102 Why FPGA for DSP - 集成度 ? FPGA 面向用户,功能可以自定义 ? FPGA 提供dsp functions, bus controllers等?通过集成,可以降低cost,性价比高 35 103 FPGA中DSP的设计流程 104 目标 ? 掌握FPGA中DSP的处理流程 ? 能够设计要求熟练运用HDL, Megafunction和DSP Builder进行设 计105 用DSP进行设计的流程 36 106 用FPGA进行设计的原始流程 107 用FPGA进行DSP设计-DSP Builder DSP Builder Matlab/Simulink DSP算法仿真 IP Signal Compiler ? Simulation Testbenches ? Tcl files ? VHDL or Verilog ? Tcl files ? SOPC Builder -Ready DSP Block Synthesis & Place-and-Route Modelsim or Quartus II SOPC Builder 设计 转化为 FPGA设计 系统构建 及验证 FGPA 下载及 测试 Signal Tap 测试仪表 108 Altera DSP Builder 37 109 Verify in Hardware Place and Route HDL Synthesis Creates Simulation Testbench DSP Builder 概述 Creates HDL Code Creates SOPC Builder Ready Component Download Design to DSP Development Kits 110 Matlab / Simulink Model Created with Altera DSP Builder Libraries Matlab / Simulink Model Created with Altera DSP Builder Libraries 111 传统的Simulink FPGA 流程 GAP System Architect FPGA Designer Verify Equivalence HDL Synthesis Implementation Download Timing Simulation In-Circuit Verification Functional Simulation System Verification Simulink 38 112 基于DSP Builder的设计流程 HDL DSP Builder MATLAB/Simulink System Verification Synthesis Implementation Download Timing Simulation In-Circuit Verification Functional Simulation 113 基于DSP Builder的设计流程 HDL DSP Builder MATLAB/Simulink System Verification Synthesis Implementation Download Timing Simulation In-Circuit Verification Functional Simulation HDL-CoSimulation Files Used ?Configuration file ?VHDL ?IP ?Constraints File 114 基于DSP Builder的设计流程 HDL DSP Builder MATLAB/Simulink System Verification Files Used ?Configuration file ?VHDL ?IP ?Constraints File Synthesis Implementation Download Timing Simulation In-Circuit Verification Functional Simulation 39 115 DSP Builder 设计流程 1) 在Simulink中用Altera库新建设计 2) 在Simulink中仿真 3) 在模型中加入SignalCompiler 4) 产生HDL Code和Testbench 5) 进行RTL仿真 6) 综合HDL Code & 布局布线 7) 下载程序 8) Signal Tap II逻辑分析仪 116 Step 1-在Simulink中用Altera库新建设 计?Drag & Drop Library Blocks into Simulink Design & Parameterize Each Block 117 Altera DSP Builder库?AltLab ? Arithmetic ? Boards ? Complex Type ? Gate & Control ? IO & Bus ? Rate Change ? SOPC Builder Links ? State Machine Functions ? Storage ? MegaCore Functions 40 118 IP Megacores的参数化 119 Step 2 -在Simulink中仿真 120 Step 3 -在模型中加入 SignalCompiler ? Stratix & Stratix II ? Stratix GX ? Cyclone & Cyclone II ? ACEX 1K ? Mercury ? FLEX10K & FLEX 6000 ? Development Boards ? APEX20K/E/C ? APEX II Message Window ? Leonardo Spectrum ? Synplify ? Precision ? Quartus II Testbench Generation ? Speed ? Area ? Balanced ? Fast fit – No timing optimization ? Use Current Quartus II project 41 121 Step 4 -产生HDL Code和Testbench altrfir32.vhd altrfir32.mdl Enable "Generate Stimuli for VHDL Testbench" Button 122 产生HDL Code 123 DSP Builder Report文件 ? Lists All Converted Blocks ? Port Widths ? Sampling Frequencies ? Warnings & Messages 42 124 Step 5 –进行RTL仿真( ModelSim ) 1) Set working directory (File => Change Directory) 2) Run TCL file (Tools => Execute Macro) 125 验证 ModelSim vs Simulink 126 Step 6 -综合HDL Code & 布局布线 – Synthesis ? Leonardo Spectrum ? Synplify ? Quartus II – Quartus II Fitter 43 127 Step 7 – 下载程序 Download Design to DSP Development Kits 128 Step 8 – 用Signal Tap II逻辑分析仪观测信 号?Embedded Logic Analyzer ? Downloads into Device with Design ? Captures State of Internal Nodes ? Uses JTAG for Communication 129 SignalTap II Logic Analyzer SignalTap II Logic Analyzer Imported Data Imported Plot Analysis of Imported Data 44 130 Case Study 131 基于IP集成的RS+DQPSK系统设 计 系统设计要求: 系统时钟: 100MHz 比特速率: 2Mbps 调制载波频率: 10MHz (其中阴影部分使用的是IP CORE) 132 可配置通信平台-环境 Cyclone II DSP开发板 Stratix II DSP开发板 NIOS 开发板 定采样率 速率适配 设计与测试控制 外部测试与加噪 基带处理与可重构实现 前端处理 ?硬件平台 ?软件环境 DSP系统设计与仿真 SOPC系统设计与仿真 功能模块定制 系统/功能/时序仿真 FPGA开发板 45 133 系统实现流程 134 ?分三个步骤: ?首先在Matlab/Simulink/DSP Builder中进行基于IP的 系统设计,构建系统级或算法级设计并仿真和分析系统 功能的正确性. ?其次通过SignalCompiler把Simulink模型文件转化成 通用的硬件描述语言VHDL文件,并利用Quartus II和Modelsim等,对该文件进行综合、编译适配及仿真. ?最后将布局、布线和结构优化后的文件下载到FPGA器 件中进行验证和测试. 135 基带系统设计——RS+QPSK/QAM 发送端 46 136 Sin(wt) Cos(wt) 接收端 137 RS+DQPSK整体结构图 138 总结(1) ? 1、使用ModelSim进行功能仿真 ? 3、使用Quartus II对设计进行综合,时序 分析和布线 ? 4、使用ModelSim进行后仿真 ? 5、使用Quartus II下载文件到实际电路 ? 6、使用SignalTap II进行调试和数据观测 建议课后完整跑一次Quartus II和Modelsim的Tutorial 47 139 总结(2) ? FPGA被广泛应用在DSP领域 ? 用硬件实现DSP算法 ? 用资源换速度; ? 逻辑资源与运算速度的折衷——并行处理能力高; ? 可重配置,灵活 ? 能够迅速适应:标准变化,新特性的添加,Bug修改; ? 局部可重配置,未修改的部分不受影响; ? 集成度高,能降低cost 140 总结(3) ? DSP Builder for DSP ? 优点 ? 能在系统级仿真整个系统 ? 能自动产生HDL和testbench ? 能缩短验证周期 ? 缺点 ? 最后结构可能会占用更多的面积 ? 用户不一定熟悉Simulink ? 对于多个时钟的设计不一定合适