AKA Embedded 开放实验室系列普及讲座之一 FPGA/CPLD的应用和开发简介 报告人:单惠平 Email: hcl_he@sina.com 2003-11-30
FPGA/CPLD的应用和开发简介 一、FPGA/CPLD 简介 二、用MAXplus II 开发片内程序 四、实例演示
一、FPGA/CPLD 简介
什么是FPGA/CPLD ( C )PLD; (Complex) Programmable Logic Device 复杂可编程逻辑器件 多为EEPROM工艺,基于乘积项(Product Term)结构。 FPGA: Field Programmable Gate Array 现场可变程门阵列 多为SRAM工艺,基于查找表(Look Up Table)结构,要外挂 配置器件。 各厂商叫法: Xilinx:SRAM工艺 叫FPGA; FLASH工艺叫CPLD ALTERA: MAX(基于EEROM), FLEX/APEX/ACEX /STRATIX 系列 (基于SRAM)均叫PLD。
FPGA/CPLD的特点 设计灵活 可以在线升级 低风险,低周期,低投入 缩小PCB面积 系统可靠性提高 保密性好
FPGA/CPLD的使用范围 时序控制 数据处理 总线控制器 接口控制器 信号处理
两个实际例子 通信处理系统 PCI图像采集卡
FPGA/CPLD的开发流程 需求分析,制定方案 用软件实现方案,功能确认 根据管脚、速度等要求选定器件,仿真验证,时序确认 设计开发硬件 对器件编程调试
软件开发工具介绍 MAXplus II 支持器件ACEX 1K系列, MAX3000、 7000、 9000系列,FLEX10K、6000、8000系列。 QUARTUS II 除支持上述以外,还支持APEX 20K, APEX II, Cyclone, Stratix, Stratix GX, HardCopy Stratix, Excalibur_ARM等最新的器件。
用MAXplus II开发片内程序
用MAXplusII设计步骤 设计输入 选定器件 综合编译 分配管脚 下载调试 时序分析 检查Rpt 综合编译
输入 图形 文本 波形 第三方(orCAD,sysnopsys,Mentor,Xillinx)
图形输入 Symbol种类: prim,基本逻辑模块 mif,74系列等 meg_lpm,LPM edif,小逻辑 用户自定义symbol
文本输入 VHDL,AHDL,Verilog
分配器件 不同的器件内部资源不一样,反应时间不一样,编译前必须分配合适的器件才能正确的进行后续工作
编译 检查语法错误和一般的设计缺陷
分配管脚 可使用assign pin命令,也可使用floorplan editor
查看report文件 器件的管脚图,资源使用情况
时序仿真 查看逻辑,时序关系,有无毛刺等
定时分析工具Timing Analyser 是一个静态的时间定时分析工具 三种状态: Registered Performance 计算最快的内部时钟频率 Delay Matrix 计算从源节点到目标节点的延迟 Setup/Hold Matrix 计算从输入脚到触发器,锁存器等所需的最小建立/保持时间。 延迟路径可以定位到设计文件和floorplan editor里。
寄存器性能分析 List Paths可以显示延迟路径
传输延迟分析
建立保持时间分析
下载
模块化 生成自己的symbol
三、硬件开发
FPGA/CPLD的管脚分类 电源和地(Power) VCCINT GNDINT:内核 VCCIO GNDIO:IO(MultiVolt IO) 配置管脚:用于EEPROM配置器件和在线编程 JTAG管脚:用于边界扫描和在线编程 Dedicated I/O:驱动能力较强,用于全局时钟,清零等
下载电路基本知识
Altera ByteBlaster(MV)下载调试编程电缆及接口
下载电路的种类 Passive Serial(PS) Configuration Passive Parallel Synchronous Configuraion Passive Parallel Asynchronous Configuraion JTAG Configuration
典型下载电路图示
Single Device PS Configuration Using a Configuration Device
Single Device PS Configuration Using a Microprocessor
PS Configuration with a Download Cable & Configuration Device Circuit
JTAG Configuration of a Single Device Using a Download Cable
JTAG Configuration of a Single Device Using a Microprocessor
基本调试方法 利用管脚可以重新配置的特点,将需要观测的信号锁定到测试点或外部插座上,需要注意管脚的重新分配不要和外围电路冲突。 在用仪器查看信号的同时,充分利用开发软件的时序仿真器,修改优化设计。
几个小问题
不用的管脚怎样处理? 不用的全局信号和专用输入管脚,如Global clk, Global clear, Ded Input等,应接地 其他I/O可以悬空,但是如果这些管脚和外部电路有连接,需要将其定义为输入管脚。
怎样实现延迟? 不能使用门(如两个非门)来实现,综合时冗余逻辑将会被软件去掉。 ALTERA的基本单元中有LCELL,可以实现一定延时,但不推荐使用。因为在可编程器件中逻辑单元的延时有可能随着电源电压的波动和器件的温度不同而改变。 可以利用高频时钟来实现。
怎样提高设计的速度? 器件手册给出的参考设计的速度不等同于用户设计完成的速度。 利用软件相关设置来提高速度。 通过寻找最大延迟,去除冗余逻辑,使用流水线等来优化设计。
几点建议 图形和文本输入并用,尽可能使用LPM模块 推荐最多使用80%的逻辑,以便调试时修改 养成设计模块化的习惯 养成细心和耐心的习惯
四、实例演示
PDP电路原理分析 维持期的周期波形个数决定亮度
控制信号的部分波形 波形可以分为三段: 第一段:不规则波形 第二段:波形呈周期出现 第三段:不规则波形
简化模型 P1,P0信号规律: 分三段: 01:2T 10,01波形周期出现,循环M个 10:1T
实现思路 利用FPGA中的EAB构造ROM,ROM只存储不规则波形和规则波形的一个周期。 分三段存储(从高到低为P1,P0): 地址0:存01,读2次 地址1~2:依次存10,01,读M次。 地址3:存10,读1次 用一个地址产生模块来控制ROM的输出
具体电路图 ROM的地址由ADDRESS模块提供 ROM的CLK和ADDRESS模块的CLK反相
演示
谢谢大家!