FPGA设计方法 刘志凯 2008年8月
培训目标 了解FPGA的基本概念和特点 Cyclone器件的结构 了解FPGA的设计流程 理解FPGA的五大设计思想 了解如何设计最佳的状态机 了解FPGA设计的安全性
一、FPGA概念及特点 FPGA 是英文Field Programmable Gate Array的缩写,即现场可编程门阵列。 特点 特点 (1)无需投片生产,即可得到芯片 (2)可做ASIC的中试样片 (3)有丰富的触发器和I/O引脚 (4)设计周期最短、开发费用最低、风险最小 (5)采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容
二、Cyclone芯片结构 (1)可编程输入/输出单元 (2)逻辑阵列由LABs组成 ,10个LE组成一个LAB (3)锁相环PLL 全局时钟网络 (4)M4K RAM (5)其他硬件资源:如硬件乘法器、专用接口等 NEXT
(1)可编程输入/输出单元 1、适应不同的电气标准 2、可调整驱动电流大小 3、可以改变上、下拉电阻 4、在高速接口设计时的输入输出时序配置 BACK
(2)逻辑单元LE (1)四输入查找表 (2)触发器 BACK
(3)全局时钟网络 1、专用时钟管脚 驱动 2、给所有的内部组件提供时钟源 ,保证足够驱动能力和最小时钟偏移 BACK
(4)M4K RAM 支持以下特性: ■ 4,608 RAM bits ■ 250 MHz 执行频率 ■ 真双口存储器 ■ 普通双口存储器 ■ 单口存储器 ■ 字节使能 ■ 奇偶校验位 ■ 移位寄存器 ■ FIFO 缓冲 ■ ROM ■ 混合时钟模式 BACK
三、FPGA设计流程 NEXT (1)设计规范 输入工具:Block&Symbol Editor (2)设计输入 (3)功能仿真 (4)逻辑综合 (5)布局布线 (6)时序分析 (7)在系统测试 Technology Map Viewer 分析工具:Early Timing Estimate Timing Analyzer Tool 仿真工具:Waveform Editor Modelsim 输入工具:Block&Symbol Editor ,Text Editor(VHDL,Verilog) 辅助分析工具:RTL Viewer, State Machine 管脚约束:Pin planner, Assignment Editor 优化设计:Design Space Explorer Resource Optimization Adviser 手动工具:Chip Editor, Timimg Closure Floorplan 优化工具: Design Space Explorer Timing Optimization Adviser NEXT
(1)设计规范 系统中所处的位置及功能 内部功能框图 资源估计 时序估计 接口描述 A、硬件:连接关系,功耗,I/O引脚的描述(驱动能力、电平等) B、软件:操作方法,时序配合 测试项目 BACK
Block&Symbol Editor BACK
Text Editor(VHDL,Verilog) BACK
RTL Viewer BACK
State Machine BACK
(3)功能仿真 调用模块的 行为仿真模型 RTL代码 测试程序 (test bench) 测试数据 逻辑仿真器 BACK
(4)逻辑综合 BACK RTL代码 调用模块的 黑盒子接口 设置综合目标和约束条件 逻辑综合器 EDIF网表 (netlist) HDL网表 (netlist) BACK
Technology Map Viewer BACK
(5)布局布线 BACK 逻辑综合器 设置布局布线约束条件 EDIF网表 (netlist) 调用模块的 综合模型 FPGA厂家工具 HDL网表 (netlist) SDF文件 (标准延时格式) 下载/编程文件 BACK
Assignment Editor BACK
Design Space Explorer BACK
Chip Editor BACK
Timimg Closure Floorplan BACK
(6)时序分析 BACK 测试数据 FPGA厂家工具 HDL网表 (netlist) SDF文件 (标准延时格式) FPGA基本单元仿真模型 测试程序 (test bench) 逻辑仿真器 BACK
Timing Analyzer Tool BACK
Waveform Editor&Modelsim BACK
四、五大设计思想 (1)Top-down结构化 (2)乒乓操作 (3)串并转换 (4)流水线操作 (5)数据接口同步化 NEXT
(1)Top-down结构化 BACK design src (源代码) core (功能核) sim (仿真) doc (过程文档) dev (器件文件) lib (原始库) funcsim (功能仿真) parsim BACK
(2)乒乓操作 BACK
(3)串并转换 通过 DPRAM 实现数据流的串并转换,而且由于使用了 DPRAM ,数据的缓冲区可以开得很大,对于数量比较小的设计可以采用寄存器完成串并转换。是面积与速度互换原则的体现! BACK
(4)流水线操作 BACK
(5)数据接口同步化 1.同步电路比较容易使用寄存器的异步复位/置位端,以使整个电路有一个确定的初始状态; 2.在可编程逻辑器件中,使用同步电路可以避免器件受温度,电压,工艺的影响,易于消除电路的毛刺,使设计更可靠,单板更稳定; 3.同步电路可以很容易地组织流水线,提高芯片的运行速度,设计容易实现;
不同步的风险
双触发器同步器
快时钟域信号到慢时钟域信号传输失败
快时钟域信号到慢时钟域信号同步 上图 下图
多控制信号下数据交换失败
多控制信号同步方法
多数据交换方法 (1)握手机制 (2)FIFO方式 速度匹配或数据宽度匹配。 BACK
五、状态机 (1)设计状态机步骤 (2)采用状态转移图或ASM设计 (3)状态编码 (4)状态机的类型 (5)状态机的风格 (6)其他注意事项 NEXT
(1)设计状态机步骤 1、深入的理解问题(Understand the problem)。 2、获得一个对状态机的理论性的描述(Obtain an abstract representation of the FSM)。如状态转移图或时序图。 3、对状态机进行优化(Perform state minimization. )。 4、进行状态编码的赋值(Perform state assignment)。编码方式好坏决定了执行的速度。 5、选择何种类型来实现状态机(Choose fit types for implementing the FSM)。 6、实现有限状态机(Implement the finite state machine)。 BACK
(2)采用状态转移图或ASM设计 4位二进制同步计数器 BACK 状态转移图 ASM图
(3)状态机编码 1.顺序编码。 2.格雷码编码。 3.独热编码(one-hot)。 4.其他(江逊计数器等)。 在小设计中可以考虑使用Gray码或one-hot。大设计中,由于现在技术进步几乎不用考虑逻辑资源不够的问题,可以考虑使用one-hot编码以提高速度。至于顺序二进制编码,一般不予考虑。 BACK
(4)状态机类型 1、moore状态机 (与当前输入有关) Current State Input 组合逻辑 状态 组合逻辑 外部输入 输出 Output CLK Next State
2、mealy状态机 (与当前输入无关) 组合逻辑 外部输入 Input Output 状态 组合逻辑 外部输出 Next State Current State CLK BACK
(5)状态机风格 一段式 一个always模块完成输出及状态转移; 必须要综合考虑现态在何种状态转移条件下会进入哪些次态,然后在每个现态的case 分支下分别描述每个次态的输出。 两段式 一个always 模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件。 三段式 在两段式基础上使用同步时序逻辑寄存FSM 的输出 ; 使FSM 做到了同步寄存器输出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组 。 BACK
(6)其他注意事项 case与default,if与else 对于所有的输出信号在每一个时钟周期的取值,都必须作出非常明确的定义 代码优化为4输入组合逻辑 BACK
FPGA设计的安全性 辐射效应主要有 : (1)总剂量效应 (2)单粒子翻转 (3)单离子闩锁 (4)单-粒子功能中断 (5)单粒子烧毁 (6)单粒子瞬态脉冲 (7)位移损伤
可靠性设计 整体屏蔽减少辐射 冗余设计
可靠性设计 防止关键电路引起的抖动 A、内部复位电路尽可能使用同步复位; B、控制线尽可能配合使能信号线使用; C、组合逻辑数据在锁存时尽可能配合使能信号 逻辑和算术运算的设计 Berber预测法、余数判断法检测法、奇偶校验等 自检模块 系统监控与重配置
总结 FPGA是一种可编程硬件,深入理解器件的结构有助于设计 严格遵守设计流程,充分利用工具 在整个设计中贯穿五大设计思想 状态机的编码、类型、风格和设计思路决定了能否设计出高效的状态机 FPGA在设计中需要考虑安全性
通讯表决电路设计 刘志凯 2008年8月
一、实现的功能 1、基本功能: 对 CPU1、CPU2向 BTM的通讯路径进行表决,CPU1和CPU2通过并行总线将需要表决的数据写入VOTER1,VOTER1在内部表决通过后以串行总线方式发送给BTM; 对 CPU1、CPU2向 DMI的通讯路径进行表决,CPU1和CPU2通过并行总线将需要表决的数据写入VOTER1,VOTER1在内部表决通过后以串行总线方式发送给DMI; 生成同步脉冲信号和转速脉冲计数更新信号,在初始时刻延迟10s,随后每隔10ms向两CPU同时发送0.01ms的低电平同步脉冲; 将ETHERNET和UART的中断信号IRQ及应答信号IACK通过数据线上报给CPU。 2、安全功能: 表决电路监测两个CPU 向BTM发送数据内容的一致性,当接收的数据内容不一致时,表决电路就发送给CPU故障诊断信息; 表决电路监视两个CPU写入数据的时间差是否超时,当在一个周期内,表决电路在10ms之内没有接收到来自两个CPU传来的完整数据包时会报超时故障; 为了检查数据的故障,内部具有CRC32校验器(BTM表决),CRC-CCITT校验器(DMI表决); 内部数据比较表决电路带有故障自诊断功能,在每次进行比较表决之前,先检查该电路是否存在故障(通过一组不同数据检测是否表决出不一致),当出现故障,故障诊断信息输出给CPU; 监视通信是否超时,若在400ms内没有下发数据时,即在四个周期内上述故障连续发生时,将判断通信超时错误,切断通讯。
二、系统框图
三、内部模块框图 (1)同步脉冲产生模块Sync module; (2)译码模块DECODER module; (3)时钟模块CLOCK module; (4)BTM表决电路模块BTM voter module; (5)DMI表决电路模块DMI voter module; (6)UART控制模块UART control module。 BTM voter module DMI voter Sync CLOCK DECODER UART control
同步脉冲产生模块Sync module BACK
译码模块DECODER module BACK
时钟模块CLOCK module BACK
UART控制模块UART control module BACK
BTM表决电路模块BTM voter module _ dmi _ clock btm _ comtimer CPU 1 CPU 2 btm _ fault btm _ dmi _ ctr btm _ dmi _ ctr rst _ n rst _ n btm __ timer 控制总线 控制总线 CPU 1 btm _ cpuinterface btm _ cpuinterface CPU 2 地址总线 地址总线 btm _ crc btm _ crc 数据总线 数据总线 btm _ compare btm _ communication dout
CPU接口模块btm_cpuinterface BACK
10ms定时监视模块btm_timer BACK
CRC校验模块btm_crc BACK
比较模块btm_compare BACK
串行通讯模块btm_communication BACK
通讯超时监视模块btm_comtimer BACK
故障报告模块btm_fault BACK