通向FPGA之路---七天玩转Altera之基础篇V1.0目录:1. Altera基础 (4)1.1 典型设计流程 (4)1.2 QuartusII 编译流程 (4)1.3 管理QuartusII工程 (5)1.4 设计输入 (7)1.5 优化向导 (9)2. Assignment Editor (11)2.1 介绍 (11)2.2 优化实例 (14)2.2.1 PCI I/O及乘法器 (14)2.2.2 弱上拉 (15)2.2.3 设置输出管脚驱动电流 (16)3. I/O设计 (20)3.1 I/O系统 (20)3.1.1 早期I/O规划 (20)3.1.2 引脚分配 (27)3.1.3 验证并使能I/O设置 (37)3.2 高级I/O系统 (40)3.2.1 信号完整性仿真和分析需求 (41)3.2.2 SSN分析和减小措施 (41)3.2.3 QuartusII软件中的三类分析 (50)3.2.4 第三类:IBIS & HSPICE模型 (60)4. Netlist Viewers (68)4.1 界面介绍 (71)4.1.1 图标 (71)4.1.2 视图 (75)4.2 浏览 (76)4.3 过滤 (80)4.3.1 类型 (81)4.3.2 层次化过滤 (82)4.4 Tooltips (83)5. MegaWizard Plug-In Manager(暂无) (85)前言:网上关于Altera的教程很多,可谓浩如烟海。
大体来说有两类:一是,step by step的指导如何操作Quartus软件,这类方法的优点是上手快,但却有知其然不知其所以然之惑;二是,从一个很高的起点分析一些具体问题,优点是有深度,但也把大部分初学者拒之门外,不知路在何方。
本系列教程的宗旨是在力求全面介绍Altera及其QuartusII软件原理的基础上,对何如使用Altera FPGA进行基础设计、时序分析、验证、优化四大方面进行讲解。
本篇为基础篇,推荐用一天时间掌握。
还有三大类各需两天,一共七天。
本教程大部分内容参考翻译altera官方handbook和对应的paper等资料,也有部分章节系热心网友所创,笔者基本原文引用,只为阅读流畅性做了少许改动,如造成原作者的不适,可联系笔者删除之。
后续教程视读者反映情况进行适当调整和发布。
2011.3.18 上海foreveryoung交流QQ群:123035845/91968656笔者QQ:2984672041. Altera基础1.1 典型设计流程1.2 QuartusII 编译流程下图为典型的设计流程。
“flat”编译流程从总体上对设计进行编译(一个后综合、一个后适配网表),能进行全局优化。
除了“flat”编译流程,还可以选择渐进式流程(新工程的默认选择):用户分配设计分区并单独处理每个分区(每一分区的后综合和后适配网表分开),合并结果形成一个完整设计;重新使用以前成功编译的后综合或后适配网表,或者从另一工程导入。
具体特性和设计方法参照《Altera优化篇》。
1.3 管理QuartusII工程工程管理有三个方面:(1)工程存档;(2)工程复制;(3)修订。
1. 工程存档工程存档建立两个文件:(1)压缩的QuartusII档案文件(.QAR)--包括设计文件、QPF文件和QSF文件、数据库的选项(工程路径中的db和incremental_db 文件夹)、本地QDF文件(以便存档);(2)存档活动日志(.QARLOG)。
路径为Project -> Archive Project。
在新路径中复制并保存完全相同的工程副本,包括工程文件(.QPF)、设计文件、设置文件。
但是不复制用户库和外部参考文件,也不建立新的QDF、只复制QDF(如果有)。
可用于“在编辑设计前复制工作”的情况。
路径为Project -> Copy Project。
3. 修订修订功能使用新的约束设置或者编译选项,而不会丢失以前的工作。
比如,设计人员可以在同一设计文件上使用不同的选项(不同的目标器件、综合、适配器设置等)。
可以使用这个特性比较不同修订的结果。
软件会生成修订专用工程文件,并存储在db路径中:(1)复制并更新当前版本文件(不需要重新编译);(2)当建立并编译新版本后,产生新文件。
我们可以按下图所示在不同的修订之间来回切换,以比较最好的设计效果。
除此之外,点击Revisions界面的Compare,我们可以对以前的多个修订进行比较,如下图所示的对比修订。
1.4 设计输入QuartusII支持多种输入:(1)文本编辑器,编辑V erilog等;(2)原理图编辑器;(3)状态机编辑器;(4)存储器编辑器,HEX或MIF文件。
(1)状态机编辑器(2)存储器编辑器存储器编辑器用来建立或者编辑Intel HEX(.HEX)或者Altera专用(.MIF)格式的存储器初始化文件。
对于设计输入,在设计“上电”时,用于初始化存储器模块(例如,RAM、ROM):在器件编程期间,初始化文件数据发送至器件;初始化在器件复位编程后,在设计复位前。
对于仿真,在仿真前或者断点之后,用于初始化存储器模块。
下图为建立存储器初始化文件的步骤。
可以右键列表,然后让软件按一定规律,比如递增或递减,来快速填充表格。
编辑好存储器初始化文件,可以在设计中导入,如下图所示。
1.5 优化向导2. Assignment EditorAssignment Editor是一个用于建立、编辑节点(node)和实体(entity-level)的接口,能用来做Local Constraint setting(不是全局设置),这样的约束可以比较精确且效果好。
当你不用Assignment Editor而用其他方式编辑一个assignment时,Assignment Editor会自动更新。
2.1 介绍Assignment Editor提供表单分配输入和显示,支持从剪贴板复制和粘贴。
(1)建立分配:交叉探测(2)建立分配:Assignment Editor(3)节点发现器(4)分配(时间)组打开Assignments -> Assignment (Time) Groups。
除了如上图所示,也可从Assignment Editor的“From”或者“To”栏中找到新建分配组。
(5)Assignment Editor动态检查(6)导出CSV文件分配如果习惯于在表格中对分配进行编辑,例如Excel,那么可以将分配导出为.csv文件(File –> Export)。
将.csv文件导入到Excel中再编辑分配,然后使用Assignments菜单中的Import Assignments命令,将分配导回到Quartus II软件中。
2.2 优化实例在指定的设计模块上,需要考虑综合时应重点关注速度、面积还是对这两方面综合考虑。
可以采用工程全局设置来均衡优化整个设计,也可以使用Assignment Editor 来设置约束关键设计模块,针对速度或者面积进行优化,其优先权高于工程全局设置,因为指定节点或者实体的分配优先权总是高于工程全局设置。
当利用Assignment Editor输入或保存约束时,QSF文件(分配最终被存储到该文件中)不会自动更新。
只有在保存或编译后,QSF文件才会被更新。
可以通过Tools –> Options -> General -> Processing菜单中的选项更改这种方式,即立即更新分配。
但这会稍微影响软件的性能,因为软件访问QSF文件的频率增大。
2.2.1 PCI I/O及乘法器PCI I/O分配能够触发使能很多Altera器件I/O引脚上的PCI钳位二极管,实现与PCI总线的接口。
这一分配只能是ON或者OFF。
这样用于使能器件的硬件功能的分配类型有很多。
比如使能并设置片内匹配电阻的分配,实现DDR存储器接口等高速接口。
又如,如果设计人员希望一个乘法器不用嵌入式乘法器模块,而用LEs来组合,可按下图所示设置。
前后结果比较如下:2.2.2 弱上拉弱上拉,推挽,开漏是3种输出方式。
弱上拉一般用在和外围器件的通讯上,比如I2C总线等,但不能用于需要驱动能力强的上拉应用中。
当设置为弱上拉输出方式,此时各个I/O口与VDD之间约有100K电阻。
如输出逻辑电平为1,则输出端有接近VDD的电平出现;如输出为0,则弱上拉电路自动关闭。
当输出端处于模拟量输入状态时,弱上拉电路也会自动关闭。
当设置为漏及开路,应外接上拉电阻(10K),使I/O口输出为1时,有3.5V 以上的高电平输出。
当设置为推挽输出,至少可驱动20多个LS TTL门电路。
可直接驱动外设接口,无须外加驱动总线的芯片(如74LS244,74LS245等),其总线驱动能力比C8051大大加强,而且灵活。
打开Assignment Editor,在弹出的界面里选择I/O Features,选择需要加弱上拉的管脚,使能Weak Pull-Up Resistor选项。
重新综合布局布线生成新的下载文件即可生效。
本方法仅适用于管脚加弱上拉电阻,Altera没有下拉电阻的设置。
除了使用Assignment Editor,也可以在Pin Planner中设置。
具体过程如下:(1)在菜单 Assignments 中选择 Pin Planner,在弹出的Pin Planner界面的All Pins 区域里点击鼠标右键,找到 Customize Columns。
(2)在弹出的Customize Columns对话框的左列表框选择Weak Pull-Up Resistor,再点击,把Weak Pull-Up Resistor添加到右列表框,这样在Pin Planner的All Pins区域里就有一列Weak Pull-Up Resistor的设置项。
标左键,就会弹出一个Off/On的选项,选上On就可以了。
(4)重新综合布局布线生成新的下载文件即可生效。
2.2.3 设置输出管脚驱动电流(1)Chip Editor实现打开经过编译后的工程的Fitter报告,点击Output Pins,右窗口出现OutputPin的列表。
在Output Pins列表中用鼠标左键选中要加驱动电流的输出管脚。
点右键选择Locate/Locate in Chip Editor,如下图所示。
指定输出管脚的pad会在Chip Editor窗口高亮显示,如下图所示。
左键双击高亮显示指定的pad,进入下图所示Resource Property Editor界面。
选择主菜单View/View Properties,弹出下图所示对话框。
在Properties/Modes 项选择Current Strength,在对应的V alues项选择指定的Output Pin的驱动电流的大小。