Design of Xilinx FPGA and Nexys3 TM Board
description
Transcript of Design of Xilinx FPGA and Nexys3 TM Board
23/4/21 逻辑设计基础 1
Design of Xilinx FPGA and Nexys3TM
Board魏继增
天津大学计算机学院计算机工程系
Xilinx FPGA 内部结构和 Nexys3TM开发板结构 Xilinx FPGA 开发流程 ISE 开发环境的使用
Xilinx IP Core 技术 时序约束的设置 UCF (用户约束文件)的使用 ISE 报告的阅读 ChipScope 的配置与使用
Nexys3TM开发板主要模块的设计 基于 Xilinx FPGA 可编程嵌入式开发技术
23/4/21 VLSI 系统设计 2
§目录
23/4/21 VLSI 系统设计 3
§现场可编程逻辑门阵列( FPGA )
一种基于 RAM 的查找表( Look Up Table , LUT )而不是与或门来实 现组合逻辑,称为现场可编程逻辑门阵列( Field Programmable Gate Array , FPGA )
16×1 RAM( LUT )
abcd
输出
4 输入的与门如何用 LUT 实现?
23/4/21 VLSI 系统设计 4
§现场可编程逻辑门阵列( FPGA ) 如何选购FPGA
23/4/21 VLSI 系统设计 5
§FPGA 厂商 Xilinx 和 Altera 占全球可编程逻辑器件市场份额的 75% 以上,(中国不具备制造 FPGA 的能力)
欧美公司多使用 Xilinx 的 FPGA ,亚太公司多使用 Altera 的FPGA
两家公司总部位于美国圣何塞,产品大体类似,无论是器件还 是软件都大体相同
初学者不必太在意选用哪家公司的 FPGA ,重点掌握一家公司 的 FPGA 结构和开发工具,掌握 FPGA 的基本设计理念,换个 FPGA 就和换个玩具一样简单
23/4/21 VLSI 系统设计 6
§FPGA 基本结构 Logic Block
I/O Bank
PLL/RAM/
Multiplier. . .
逻辑块( Logic Block ) Altera: LAB ,由 LE 构成 Xilinx: CLB ,由 SLICE 构成
I/O Bank : FPGA 连接外部器件的各种电气物理接口,普通 I/O 、电源、时钟、 PCI等
PLL 、 RAM 、硬乘法器等专用模块
23/4/21 VLSI 系统设计 7
§FPGA 应用领域 逻辑粘合
实时控制
数字信号处理和协议实现( ASIC 、 DSP 和 FPGA )
片上系统
23/4/21 VLSI 系统设计 8
§Spartan-6 FPGA
Block RAM
DSP48
CMT
BUFG
BUFIO
I/OMemory Controller
MGT
CLB
23/4/21 VLSI 系统设计 9
§Spartan-6 FPGA CLB
Sw
itchM
atrix
Slice0
Slice1
CIN
COUT CLB contains two slices
Connected to switch matrix for routing to otherFPGA resources
Carry chain runs vertically through Slice0 only
23/4/21 VLSI 系统设计 10
§Three Types of Slices in Spartan-6 FPGAs SLICEM: Full slice 25%
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
SLICEXSLICEX
SLICEMSLICEM
SLICEXSLICEX
SLICELSLICEL
oror
23/4/21 VLSI 系统设计 11
§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
LUT/RAM/SRL
LUT/RAM/SRL
LUT/RAM/SRL
LUT/RAM/SRL
0 1
23/4/21 VLSI 系统设计 12
§6-Input LUT with Dual Output
6-input LUT can be two 5-input LUTs with common inputs Minimal speed impact to
a 6-input LUT One or two outputs Any function of six variables or
two independent functions of five variables
5-LUTD
A5A4A3A2A1
5-LUTD
A5A4A3A2A1
A6
A5A4A3A2A1
O6
O5
6-LUT6-LUT
23/4/21 VLSI 系统设计 13
§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
SinglePort
DualPort
SimpleDual Port
QuadPort
32x2 32x4 32x6 32x8 64x1 64x2 64x3 64x4
128x1128x2 256x1
32x2D 32x4D 64x1D 64x2D
128x1D
32x6SDP 64x3SDP
32x2Q 64x1Q
Each port has independent address inputs
23/4/21 VLSI 系统设计 14
§Spartan-6 FPGA Block RAM
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
Dual-Port
BRAM
Dual-Port
BRAM
18k Memory18k Memory
23/4/21 VLSI 系统设计 15
§Spartan-6 FPGA DSP48A1 Slice
PCIN
D:A:B
X
M
C
18 X 18
P
Z
+/-0
0
C
48
OPM
OD
E[3:
0]
OPM
OD
E[5]
OPM
OD
E[7]
PCO
UT
OPM
OD
E[6,
4]
P
BC
IN
D
A 48
18
B
CC
OU
T
CFOUT
BC
OU
T
CIN
12
18
18
18
Dual B, DRegister
WithPre-adder
18
18
48
18
36
18
MFOUT
48
36
18x18 signed multiplier48-bit add/subtract/accumulatePipeline registers for high speedCascade paths for wide functionsPre-adder
18x18 signed multiplier48-bit add/subtract/accumulatePipeline registers for high speedCascade paths for wide functionsPre-adder
A0 A1
23/4/21 VLSI 系统设计 16
§Spartan-6 FPGA Clock Management Tile (CMT)
dcm1_clkout<9:0>
dcm2_clkout<9:0>
10
PLL
pll_clkout<5:0>6
CLKIN
CLKFB
CLKOUT<5:0>
DCM
10CLKIN
CLKFB
CLKIN
CLKFB DCM
Clocks from BUFG
CLKOUT<9:0>
CLKOUT<9:0>
GCLK Inputs
Feedback clocks from BUFIO2FB
23/4/21 VLSI 系统设计 17
§Spartan-6 LX / LXT FPGAs
23/4/21 VLSI 系统设计 18
§Nexys3TM 开发板
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 字节伪SRAM
16M 字节并行 FLASH
16M 字节串行 FLASH
电源和程序烧写
23/4/21 VLSI 系统设计 19
§Nexys3TM 开发板
23/4/21 VLSI 系统设计 20
§Nexys3TM 开发板— —配套工具 Adept System
通过高速 USB2 与开发板连接,自动识别 Nexys3TM 开发板:
烧写 FPGA 和 FLASH
进行板级测试
和 FPGA 进行数据传输
Xilinx FPGA 内部结构和 Nexys3TM开发板结构 Xilinx FPGA 开发流程 ISE 开发环境的使用
Xilinx IP Core 技术 时序约束的设置 UCF (用户约束文件)的使用 ISE 报告的阅读 ChipScope 的配置与使用
Nexys3TM开发板主要模块的设计 基于 Xilinx FPGA 可编程嵌入式开发技术
23/4/21 VLSI 系统设计 21
§目录
23/4/21 VLSI 系统设计 22
§FPGA 总体开发流程一.需求分析和模块划分
1. 明确需求和功能定义,进行可行性分析。2. FPGA 选型(哪个厂家、哪个系列、多少逻辑资源、多少 I/O 接口、
多少 PLL 、多少内嵌存储器、多少内嵌模块等)。
二.设计输入到综合优化1. 原理图输入、代码输入、搭建 SOPC 或者 IP 核的配置和使用2. 代码输入完成后,进行功能仿真(不涉及任何时序、延迟参数,
单纯功能验证)。工具可选用 Modelsim ,也可选用 FPGA 厂商EDA 环境中( ISE/Quartus II )自带的仿真工具。采用 Testbench进行测试。
3. 综合将高层次描述转换为底层逻辑单元(但并不是实际 FPGA 芯片的底层模块)。可以选用第三方综合工具 Synplify ,推荐使用ISE 或 Quartus II 自带的综合工具。— —自家的东西自己最了解
23/4/21 VLSI 系统设计 23
§FPGA 总体开发流程三.实现、时序分析和资源报告
1. 使用 ISE 或者 Quartus II 提供的时序编辑器对不同路径进行时序约束,包括全局约束、 I/O 接口约束以及时序例外约束。
2. 实现包括翻译、映射、布局布线三个步骤。每一个步骤都会生成时序报告,但布局布线后的时序报告及包含逻辑器件的延迟,也包括了布线延迟,其时序报告最准确。
3. 查看资源使用报告,分析资源使用情况,对电路结构进行优化。
四.仿真测试到板级调试1. FPGA 能不能像软件一样连一个仿真器到板子上,然后进行单步调
试,或者设置断点呢?— — 给待测设计添加激励,通过回放波形观察测试结果。
2. 设计输入阶段 — —功能仿真(甚至是不可综合的代码);综合优化后 — — 门级网表仿真(不包含布局布线延时信息);实现后—— 时序仿真(包含各类延时信息)。这三类仿真不需要全都做。
23/4/21 VLSI 系统设计 24
§FPGA 总体开发流程四.仿真测试到板级调试
3. 板级调试最大的困难就是很难观测到 FPGA 内部节点的状态。在FPGA剩余资源足够多的情况下,可以使用 ISE 或 Quartus II 提供的在线逻辑分析仪进行调试,如 Chipscope 或者 Signal TaP II 。
23/4/21 VLSI 系统设计 25
§Xilinx FPGA 开发流程主流程(必须做)
验证流程(不是必须) 综合: 将设计编译为由基本逻辑单元构成的逻 辑连接网表(并非真实门级电路)。
实现与布局布线: 实现是将逻辑网表配置到具体 FPGA上, 布局布线是其中重要环节。布局是将逻 辑网表中的单元配置到芯片内部的硬件 结构上;布线是根据布局的拓扑,利用 芯片内的连线资源,连接各个元件。
器件编程: 产生数据流文件( .bit ),下载到FPGA 芯片中。
功能仿真(前仿真): 只对电路逻辑功能验证,没有延迟信息。
综合后仿真: 检查综合结果是否和原设计一致,主要 评估门延时带来的影响。
时序仿真和验证(后仿真): 将布局布线的延时信息反标注到设计网 表中,检测有无时序违规,此时延时最 全,最精确。
板级仿真与验证: 主要应用于高速电路设计中,对信号完 整性和电子干扰等特性进行分析,使用 第三方工具完成。
23/4/21 VLSI 系统设计 26
§Xilinx FPGA 开发流程(示例)内容: 2 输入逻辑门的设计与实现目标: 学会 ISE 的使用( Verilog 代码编写、功能仿真、综合、实现、程序烧写) Adept System 的使用( bit 文件的烧写) Nexys3TM 开发板上 LED灯和 Slide Switch 的使用a b
Z[5]
Z[4]
Z[3]
Z[2]
Z[1]
Z[0]
23/4/21 VLSI 系统设计 27
§ Xilinx FPGA 开发流程(示例)基于 ISE 的 FPGA 开发环境
标题栏菜单栏
工具栏
程序编辑区
过程管理区
信息显示区
工程管理区
23/4/21 VLSI 系统设计 28
§ Xilinx FPGA 开发流程(示例)新建工程(一)
输入工程名称
指定工程路径
指定文件输入类型 - HDL 文件 - 原理图文件
点击 Next按钮
23/4/21 VLSI 系统设计 29
§ Xilinx FPGA 开发流程(示例)新建工程(二)
选择所使用的芯片 - 产品系列 - 产品型号 - 封装方式
综合工具( XST )
仿真工具( ISim )
使用的编程语言 - Verilog - VHDL 点击 Next按钮
23/4/21 VLSI 系统设计 30
§ Xilinx FPGA 开发流程(示例)新建工程(三)
23/4/21 VLSI 系统设计 31
§ Xilinx FPGA 开发流程(示例)设计输入(一)
在工程管理区任意位置 单击鼠标右键
在弹出的菜单中选择 New Source命令
弹出左图所示窗口
输入方式选择 Verilog
给定输入文件的名称和 路径
单击 Next按钮进入端口 定义对话框
23/4/21 VLSI 系统设计 32
§ Xilinx FPGA 开发流程(示例)设计输入(二)
端口名称
端口方向
MSB 表示信号最高位
LSB 表示信号最低位
端口定义这一步可以略 过,在源程序中添加
23/4/21 VLSI 系统设计 33
§ Xilinx FPGA 开发流程(示例)设计输入(三)
在程序编辑区编写程序
23/4/21 VLSI 系统设计 34
§ Xilinx FPGA 开发流程(示例)功能仿真(一)
工程管理区将 view 设置为Simulation
工程管理区任意位置单击鼠标右键
在弹出的菜单中选择 New Source
在类型中选择 Verilog Test Fixture
输入测试文件名,单击 Next按钮
选择要进行测试的模块,如 gates2 , 点击 Next ,再单击 Finish按钮
ISE 自动生成了基本的信号并对被测模 块做了例化。我们只需在 initial…end 块中的“ //Add stimulus here” 后面添 加测试向量
23/4/21 VLSI 系统设计 35
§ Xilinx FPGA 开发流程(示例)功能仿真(二)
过程管理区会显示与仿真有关的进程,如上图所示
右键单击其中的 Simulate Behavioral Model项
选择弹出菜单中的 Process Properties项
23/4/21 VLSI 系统设计 36
§ Xilinx FPGA 开发流程(示例)功能仿真(三)
Simulation Run Time 就是仿真时间的设置,可将其修改为任意时长。
23/4/21 VLSI 系统设计 37
§ Xilinx FPGA 开发流程(示例)功能仿真(四)
在工程管理区选中测试代码
在过程管理区双击 Simulate Behavioral Model
ISE 将启动 ISE Simulator ,可以得到仿真结果
23/4/21 VLSI 系统设计 38
§ Xilinx FPGA 开发流程(示例)综合与实现(一)
所谓综合,就是将 HDL 设计输入翻译成由逻辑门、 RAM 、触发器等基 本逻辑单元的连接 (网表 ) ,并根据目标和要求 ( 约束条件 )优化所生成 的逻辑连接
在工程管理区的 view 中选择 Implementation
在过程管理区双击 Synthesize-XST ,就开始综合过程
23/4/21 VLSI 系统设计 39
§ Xilinx FPGA 开发流程(示例)综合与实现(二)
综合前,模块中的输入输 出信号添加管脚约束,需 要在工程中添加 UCF 文件
在工程管理区单击鼠标右 键,点击 New Source ,
选择 Implementation Constraints File ,出现一 个空白的约束文件,添 加各种约束(管脚、时钟、 面积等)
23/4/21 VLSI 系统设计 40
§ Xilinx FPGA 开发流程(示例)综合与实现(三)
管脚约束: NET “signal” LOC = “pin”
参考 Nexys3TM 的 Reference Manual 、原理图或开发板 /Board/ Nexys3_rm.pdf 或 /Board/Nexys3_sch.pdf 管脚分配文件: /Board/Nexys3_Master.ucf
23/4/21 VLSI 系统设计 41
§ Xilinx FPGA 开发流程(示例)
pushbutton 和 slide switch只 能被设置为 input ,若设置为 output 可能会出现“短路”
pushbutton按下时为高电平, 松开时为低电平
slide switch 产生的高低电平 与其位置相关
LED 在输入高电平时被点亮
23/4/21 VLSI 系统设计 42
§ Xilinx FPGA 开发流程(示例)综合与实现(四)
如果综合后完全正确,则在 Synthesize-XST前面有一个打勾的绿色小圆圈
如果有警告,则出现一个带感叹号的黄色小圆圈
如果有错误,则出现一个带叉的红色小圆圈
如果综 合正确 , XST 将给出初步的 资 源消耗情况,点击 Design Summary , 即可查看
23/4/21 VLSI 系统设计 43
§ Xilinx FPGA 开发流程(示例)综合与实现(四)
23/4/21 VLSI 系统设计 44
§ Xilinx FPGA 开发流程(示例)综合与实现(五)
综合完成后,下一个步骤就是实现 (Implementation)
所谓实现,指将综合输出的逻辑网表翻译成所选器件的底层模块,将设计 映射到具体器件上,进行布局布线,达到在选定 FPGA 上实现设计的目的
实现分 3 个步骤:翻译 (Translate) 逻辑网表、映射 (Map)到器件单元与布局 布线 (Place & Route)
在过程管理区双击 Implementation Design ,就自动完成实现的 3 个步骤, 得到精确的资源占用情况
23/4/21 VLSI 系统设计 45
§ Xilinx FPGA 开发流程(示例)综合与实现(五)
23/4/21 VLSI 系统设计 46
§ Xilinx FPGA 开发流程(示例)布局布线后仿真 — —后仿(一)
双击图过程管理区的 Implement Design -> Place & Route -> Generate Post-Place & Route Static Timing ,反标时序信息,生成布局布线后仿 真模型
23/4/21 VLSI 系统设计 47
§ Xilinx FPGA 开发流程(示例)布局布线后仿真 — —后仿(二)
在工程管理区将 view 设置为 Simulation 在下拉菜单中选择 Post-Route ,导入反标时序信息后的仿真模型 在工程管理区选中测试代码 在过程管理区双击 Simulate Behavioral Model ISE 将启动 ISE Simulator ,可以得到后仿结果注:后仿和前访使用相同的测试程序( Testbench )
23/4/21 VLSI 系统设计 48
§ Xilinx FPGA 开发流程(示例)布局布线后仿真 — —后仿(三)
在布局布线后,输入到输出产生延迟(门延迟 + 线延迟)
23/4/21 VLSI 系统设计 49
§ Xilinx FPGA 开发流程(示例)布局布线后仿真 — —后仿(四)
变化值: 010001 变化值: 010011 变化值: 010010
稳定值: 011010
23/4/21 VLSI 系统设计 50
§ Xilinx FPGA 开发流程(示例)察看 / 修改布局布线(一)
在工程管理区将 view 设置为 Implementation
双击图过程管理区的 Implement Design -> Place & Route -> View/Edit Routed Design (FPGA Editor)
启动 FPGA Editor
23/4/21 VLSI 系统设计 51
§ Xilinx FPGA 开发流程(示例)察看 / 修改布局布线(二)
23/4/21 VLSI 系统设计 52
§ Xilinx FPGA 开发流程(示例)器件配置(一)
器件配置是 FPGA 开发最关键的一步,只有将代码下载到 FPGA 中,才能进行 调试并最终实现相应的功能
首先必须生成能下载到硬件中的二进制比特文件( .bit 文件)
双击图过程管理区的 Generate Programming File , ISE 自动生成相应的 bit文件
23/4/21 VLSI 系统设计 53
FPGA 程序( bit 文件)烧写:
将开发板和 PC 通过 USB 连接线相连
启动 Adept System
打开 Nexys3TM 开发板电源开关
Adept 自动识别 Nexys3TM
单击“ Browse” ,选择需要烧写的 bit 文件
单击 Program 进行程序烧写
开发板上的“ Done”LED亮表示烧 写成功
§ Xilinx FPGA 开发流程(示例)器件配置(二)
23/4/21 VLSI 系统设计 54
§ Xilinx FPGA 开发流程(示例)器件配置(三)