540 likes | 943 Views
Design of Xilinx FPGA and Nexys3 TM Board. 魏继增 天津大学计算机学院 计算机工程系. § 目录. Xilinx FPGA 内部结构和 Nexys3 TM 开发板结构 Xilinx FPGA 开发流程 ISE 开发环境的使用 Xilinx IP Core 技术 时序约束的设置 UCF (用户约束文件)的使用 ISE 报告的阅读 ChipScope 的配置与使用 Nexys3 TM 开发板主要模块的设计 基于 Xilinx FPGA 可编程嵌入式开发技术. § 现场可编程逻辑门阵列( FPGA ).
E N D
Design of Xilinx FPGAand Nexys3TM Board 魏继增 天津大学计算机学院 计算机工程系 逻辑设计基础
§目录 • Xilinx FPGA内部结构和Nexys3TM开发板结构 • Xilinx FPGA开发流程 • ISE开发环境的使用 • Xilinx IP Core技术 • 时序约束的设置 • UCF(用户约束文件)的使用 • ISE报告的阅读 • ChipScope的配置与使用 • Nexys3TM开发板主要模块的设计 • 基于Xilinx FPGA可编程嵌入式开发技术 VLSI系统设计
§现场可编程逻辑门阵列(FPGA) • 一种基于RAM的查找表(Look Up Table,LUT)而不是与或门来实 • 现组合逻辑,称为现场可编程逻辑门阵列(Field Programmable • Gate Array,FPGA) a 16×1 RAM (LUT) b 输出 c d 4输入的与门如何用LUT实现? VLSI系统设计
如何选购FPGA §现场可编程逻辑门阵列(FPGA) VLSI系统设计
§FPGA厂商 • Xilinx和Altera占全球可编程逻辑器件市场份额的75%以上,(中国不具备制造FPGA的能力) • 欧美公司多使用Xilinx的FPGA,亚太公司多使用Altera的FPGA • 两家公司总部位于美国圣何塞,产品大体类似,无论是器件还 • 是软件都大体相同 • 初学者不必太在意选用哪家公司的FPGA,重点掌握一家公司 • 的FPGA结构和开发工具,掌握FPGA的基本设计理念,换个 • FPGA就和换个玩具一样简单 VLSI系统设计
§FPGA基本结构 Logic Block PLL/RAM/Multiplier. . . • 逻辑块(Logic Block) • Altera: LAB,由LE构成 • Xilinx: CLB,由SLICE构成 • I/O Bank:FPGA连接外部器件的各种电气物理接口,普通I/O、电源、时钟、PCI等 • PLL、RAM、硬乘法器等专用模块 I/O Bank VLSI系统设计
§FPGA应用领域 • 逻辑粘合 • 实时控制 • 数字信号处理和协议实现(ASIC、DSP和FPGA) • 片上系统 VLSI系统设计
§Spartan-6 FPGA CLB Memory Controller I/O CMT MGT BUFG BUFIO Block RAM DSP48 VLSI系统设计
§Spartan-6FPGA CLB • CLB contains two slices • Connected to switch matrix for routing to otherFPGA resources • Carry chain runs vertically through Slice0 only COUT Slice1 SwitchMatrix Slice0 CIN VLSI系统设计
§Three Types of Slices in Spartan-6 FPGAs • SLICEM: Full slice25% • LUT can be used for logic and memory/SRL • Has wide multiplexers and carry chain • SLICEL: Logic and arithmetic only 25% • LUT can only be used for logic (not memory) • Has wide multiplexers and carry chain • SLICEX: Logic only 50% • LUT can only be used for logic (not memory) • No wide multiplexers or carry chain or SLICEX SLICEX SLICEL SLICEM VLSI系统设计
LUT/RAM/SRL LUT/RAM/SRL LUT/RAM/SRL LUT/RAM/SRL §Spartan-6 FPGA SLICE • Four LUTs (6-input) • Eight storage elements • Four flip-flop/latches • Four flip-flops • F7MUX and F8MUX • Connects LUT outputs to create wide functions • Output can drive the flip-flop/latches • Carry chain (Slice0 only) • Connected to the LUTs and the four flip-flop/latches VLSI系统设计 0 1
A5 A4 A3 A2 A1 5-LUT D A5 A4 A3 A2 A1 5-LUT D §6-Input LUT with Dual Output • 6-input LUT can be two 5-input LUTs with common inputs • Minimal speed impact toa 6-input LUT • One or two outputs • Any function of six variables or two independent functions of five variables 6-LUT A6 A5 A4 A3 A2 A1 O6 O5 VLSI系统设计
§SLICEM Used as Distributed RAM • Uses the same storage that is used for the look-up table function • Synchronous write, asynchronous read • Can be converted to synchronous read using the flip-flops available in the slice • Various configurations • Single port • One LUT6 = 64x1 or 32x2 RAM • Cascadable up to 256x1 RAM • Dual port (D) • 1 read / write port + 1 read-only port • Simple dual port (SDP) • 1 write-only port + 1 read-only port • Quad-port (Q) • 1 read / write port + 3 read-only ports Each port has independent address inputs VLSI系统设计
Dual-Port BRAM §Spartan-6 FPGA Block RAM 18k Memory • 18 kb size • Can be split into two independent 9-kb memories • Performance up to 300 MHz • Multiple configuration options • True dual-port, simple dual-port, single-port • Two independent ports access common data • Individual address, clock, write enable, clock enable • Independent widths for each port • Byte-write enable VLSI系统设计
M P A1 C A0 §Spartan-6 FPGA DSP48A1 Slice BCOUT PCOUT CCOUT MFOUT 36 D:A:B 18 48 A 18 18 CFOUT 18 0 X 18 X 18 36 Dual B, DRegister With Pre-adder 12 D 18 +/- 48 18 P B 18 0 Z C 48 18 • 18x18 signed multiplier • 48-bit add/subtract/accumulate • Pipeline registers for high speed • Cascade paths for wide functions • Pre-adder OPMODE[7] OPMODE[5] OPMODE[3:0] OPMODE[6,4] 48 BCIN PCIN CIN VLSI系统设计
§Spartan-6 FPGA Clock Management Tile (CMT) Clocks from BUFG Feedback clocks from BUFIO2FB GCLK Inputs CLKIN 6 pll_clkout<5:0> CLKOUT<5:0> PLL CLKFB CLKIN 10 dcm1_clkout<9:0> CLKOUT<9:0> DCM CLKFB CLKIN 10 dcm2_clkout<9:0> CLKOUT<9:0> DCM CLKFB VLSI系统设计
§Spartan-6 LX / LXT FPGAs VLSI系统设计
§Nexys3TM开发板 16M字节伪SRAM • Xilinx Spartan-6 LX16 : • 2,278 slices • - four 6-input LUTs • - eight flip-flops • 576Kbits block RAM • two clock tiles • - four DCMs • - two PLLs • 32 DSP slices • 500MHz+ clock speeds 电源和程序烧写 16M字节并行FLASH 16M字节串行FLASH VLSI系统设计
§Nexys3TM开发板 VLSI系统设计
§Nexys3TM开发板— —配套工具Adept System • 通过高速USB2与开发板连接,自动识别Nexys3TM开发板: • 烧写FPGA和FLASH • 进行板级测试 • 和FPGA进行数据传输 VLSI系统设计
§目录 • Xilinx FPGA内部结构和Nexys3TM开发板结构 • Xilinx FPGA开发流程 • ISE开发环境的使用 • Xilinx IP Core技术 • 时序约束的设置 • UCF(用户约束文件)的使用 • ISE报告的阅读 • ChipScope的配置与使用 • Nexys3TM开发板主要模块的设计 • 基于Xilinx FPGA可编程嵌入式开发技术 VLSI系统设计
§FPGA总体开发流程 • 需求分析和模块划分 • 明确需求和功能定义,进行可行性分析。 • FPGA选型(哪个厂家、哪个系列、多少逻辑资源、多少I/O接口、多少PLL、多少内嵌存储器、多少内嵌模块等)。 • 设计输入到综合优化 • 原理图输入、代码输入、搭建SOPC或者IP核的配置和使用 • 代码输入完成后,进行功能仿真(不涉及任何时序、延迟参数,单纯功能验证)。工具可选用Modelsim,也可选用FPGA厂商EDA环境中(ISE/Quartus II)自带的仿真工具。采用Testbench进行测试。 • 综合将高层次描述转换为底层逻辑单元(但并不是实际FPGA芯片的底层模块)。可以选用第三方综合工具Synplify,推荐使用ISE或Quartus II自带的综合工具。— —自家的东西自己最了解 VLSI系统设计
§FPGA总体开发流程 • 实现、时序分析和资源报告 • 使用ISE或者Quartus II提供的时序编辑器对不同路径进行时序约束,包括全局约束、I/O接口约束以及时序例外约束。 • 实现包括翻译、映射、布局布线三个步骤。每一个步骤都会生成时序报告,但布局布线后的时序报告及包含逻辑器件的延迟,也包括了布线延迟,其时序报告最准确。 • 查看资源使用报告,分析资源使用情况,对电路结构进行优化。 • 仿真测试到板级调试 • FPGA能不能像软件一样连一个仿真器到板子上,然后进行单步调试,或者设置断点呢?— — 给待测设计添加激励,通过回放波形观察测试结果。 • 设计输入阶段 — —功能仿真(甚至是不可综合的代码);综合优化后 — — 门级网表仿真(不包含布局布线延时信息);实现后—— 时序仿真(包含各类延时信息)。这三类仿真不需要全都做。 VLSI系统设计
§FPGA总体开发流程 • 仿真测试到板级调试 • 板级调试最大的困难就是很难观测到FPGA内部节点的状态。在FPGA剩余资源足够多的情况下,可以使用ISE或Quartus II提供的在线逻辑分析仪进行调试,如Chipscope或者Signal TaP II。 VLSI系统设计
§Xilinx FPGA开发流程 主流程(必须做) 验证流程(不是必须) • 综合: • 将设计编译为由基本逻辑单元构成的逻 • 辑连接网表(并非真实门级电路)。 • 实现与布局布线: • 实现是将逻辑网表配置到具体FPGA上, • 布局布线是其中重要环节。布局是将逻 • 辑网表中的单元配置到芯片内部的硬件 • 结构上;布线是根据布局的拓扑,利用 • 芯片内的连线资源,连接各个元件。 • 器件编程: • 产生数据流文件(.bit),下载到FPGA • 芯片中。 • 功能仿真(前仿真): • 只对电路逻辑功能验证,没有延迟信息。 • 综合后仿真: • 检查综合结果是否和原设计一致,主要 • 评估门延时带来的影响。 • 时序仿真和验证(后仿真): • 将布局布线的延时信息反标注到设计网 • 表中,检测有无时序违规,此时延时最 • 全,最精确。 • 板级仿真与验证: • 主要应用于高速电路设计中,对信号完 • 整性和电子干扰等特性进行分析,使用 • 第三方工具完成。 VLSI系统设计
§Xilinx FPGA开发流程(示例) • 内容:2输入逻辑门的设计与实现 • 目标: • 学会ISE的使用(Verilog代码编写、功能仿真、综合、实现、程序烧写) • Adept System的使用(bit文件的烧写) • Nexys3TM开发板上LED灯和Slide Switch的使用 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 基于ISE的FPGA开发环境 标题栏 菜单栏 工具栏 工程 管理区 程序 编辑区 过程 管理区 信息 显示区 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 新建工程(一) • 输入工程名称 • 指定工程路径 • 指定文件输入类型 • - HDL文件 • - 原理图文件 • 点击Next按钮 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 新建工程(二) • 选择所使用的芯片 • - 产品系列 • - 产品型号 • - 封装方式 • 综合工具(XST) • 仿真工具(ISim) • 使用的编程语言 • - Verilog • - VHDL • 点击Next按钮 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 新建工程(三) VLSI系统设计
§ Xilinx FPGA开发流程(示例) 设计输入(一) • 在工程管理区任意位置 • 单击鼠标右键 • 在弹出的菜单中选择 • New Source命令 • 弹出左图所示窗口 • 输入方式选择Verilog • 给定输入文件的名称和 • 路径 • 单击Next按钮进入端口 • 定义对话框 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 设计输入(二) • 端口名称 • 端口方向 • MSB表示信号最高位 • LSB表示信号最低位 • 端口定义这一步可以略 • 过,在源程序中添加 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 设计输入(三) 在程序编辑区编写程序 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 功能仿真(一) • 工程管理区将view设置为Simulation • 工程管理区任意位置单击鼠标右键 • 在弹出的菜单中选择New Source • 在类型中选择Verilog Test Fixture • 输入测试文件名,单击Next按钮 • 选择要进行测试的模块,如gates2, • 点击Next,再单击Finish按钮 • ISE自动生成了基本的信号并对被测模 • 块做了例化。我们只需在initial…end • 块中的“//Add stimulus here”后面添 • 加测试向量 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 功能仿真(二) • 过程管理区会显示与仿真有关的进程,如上图所示 • 右键单击其中的Simulate Behavioral Model项 • 选择弹出菜单中的Process Properties项 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 功能仿真(三) • Simulation Run Time就是仿真时间的设置,可将其修改为任意时长。 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 功能仿真(四) • 在工程管理区选中测试代码 • 在过程管理区双击Simulate Behavioral Model • ISE将启动ISE Simulator,可以得到仿真结果 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 综合与实现(一) • 所谓综合,就是将HDL设计输入翻译成由逻辑门、RAM、触发器等基 • 本逻辑单元的连接(网表),并根据目标和要求(约束条件)优化所生成 • 的逻辑连接 • 在工程管理区的view中选择Implementation • 在过程管理区双击Synthesize-XST,就开始综合过程 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 综合与实现(二) • 综合前,模块中的输入输 • 出信号添加管脚约束,需 • 要在工程中添加UCF文件 • 在工程管理区单击鼠标右 • 键,点击New Source, • 选择Implementation • Constraints File,出现一 • 个空白的约束文件,添 • 加各种约束(管脚、时钟、 • 面积等) VLSI系统设计
§ Xilinx FPGA开发流程(示例) 综合与实现(三) • 管脚约束:NET “signal”LOC = “pin” • 参考Nexys3TM的Reference Manual、原理图或开发板 • /Board/ Nexys3_rm.pdf或/Board/Nexys3_sch.pdf • 管脚分配文件:/Board/Nexys3_Master.ucf VLSI系统设计
§ Xilinx FPGA开发流程(示例) • pushbutton和slide switch只 • 能被设置为input,若设置为 • output可能会出现“短路” • pushbutton按下时为高电平, • 松开时为低电平 • slide switch产生的高低电平 • 与其位置相关 • LED在输入高电平时被点亮 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 综合与实现(四) • 如果综合后完全正确,则在Synthesize-XST前面有一个打勾的绿色小圆圈 • 如果有警告,则出现一个带感叹号的黄色小圆圈 • 如果有错误,则出现一个带叉的红色小圆圈 • 如果综合正确,XST将给出初步的资源消耗情况,点击Design Summary, • 即可查看 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 综合与实现(四) VLSI系统设计
§ Xilinx FPGA开发流程(示例) 综合与实现(五) • 综合完成后,下一个步骤就是实现(Implementation) • 所谓实现,指将综合输出的逻辑网表翻译成所选器件的底层模块,将设计 • 映射到具体器件上,进行布局布线,达到在选定FPGA上实现设计的目的 • 实现分3个步骤:翻译(Translate)逻辑网表、映射(Map)到器件单元与布局 • 布线(Place & Route) • 在过程管理区双击Implementation Design,就自动完成实现的3个步骤, • 得到精确的资源占用情况 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 综合与实现(五) VLSI系统设计
§ Xilinx FPGA开发流程(示例) 布局布线后仿真 ——后仿(一) • 双击图过程管理区的Implement Design -> Place & Route -> Generate • Post-Place & Route Static Timing,反标时序信息,生成布局布线后仿 • 真模型 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 布局布线后仿真 ——后仿(二) • 在工程管理区将view设置为Simulation • 在下拉菜单中选择Post-Route,导入反标时序信息后的仿真模型 • 在工程管理区选中测试代码 • 在过程管理区双击Simulate Behavioral Model • ISE将启动ISE Simulator,可以得到后仿结果 • 注:后仿和前访使用相同的测试程序(Testbench) VLSI系统设计
§ Xilinx FPGA开发流程(示例) 布局布线后仿真 ——后仿(三) • 在布局布线后,输入到输出产生延迟(门延迟 + 线延迟) VLSI系统设计
§ Xilinx FPGA开发流程(示例) 布局布线后仿真 ——后仿(四) 变化值:010001 变化值:010011 变化值:010010 稳定值:011010 VLSI系统设计
§ Xilinx FPGA开发流程(示例) 察看/修改布局布线(一) • 在工程管理区将view设置为Implementation • 双击图过程管理区的Implement Design -> Place & Route -> View/Edit • Routed Design (FPGAEditor) • 启动 FPGAEditor VLSI系统设计