Quartus II中FPGA管脚的分配策略
FPGA管脚问题

FPGA管脚问题1、【问题】Pin Planner 的使⽤问题:在QuartusII 7.2 ,时序仿真都通过,但是,⼀旦使⽤Pin Planner设定引脚后,时序仿真就发⽣变化,与功能仿真结果不⼀致,不是理想的结果。
使⽤Pin Planner时要注意些什么问题呢?【解答】如果在没有设定引脚时就进⾏时序仿真,那么在后仿真就会不准确。
因为当设定引脚以后,需要重新进⾏布局布线,这和没有设定引脚是不同的,因此,布线的改变⾃然会影响到时序的改变。
通常的做法是:先做好所有的设定,⽣成⽹表⽂件和延时⽂件,再加上激励⽂件进⾏仿真,这个时候的仿真结果是最接近实际情况的。
通常的pin设定没有特定要求,差分信号是成对的。
所以请不要搞错。
时钟信号尽量使⽤专⽤的时钟引脚;普通I/O没有什么限制,做好时序约束就可以了。
2、【问题】怎样配置cyclone FPGA的管脚功能?【解答】FPGA芯⽚的引脚分为好多类,有通⽤IO,有时钟⽹络,有复位⽹络,这些引脚的具体功能是在布线时由⽤户选择的。
你可以⾃由的配置这些引脚的功能,但最好根据芯⽚的数据⼿册进⾏选择,如将时钟配置到专⽤时钟引脚上,将复位配置到专⽤复位引脚上,否则会影响最终的布线结果。
3、【问题】分配fpga管脚时该怎么选择,引脚有什么属性需要考虑,quartus2中引脚有⼏个属性:Reserved,Group,I/O Bank,Vref Group,I/O standard( 3.3-V LVTTL(default) )分别是什么意思,要怎么设置?【解答】⾸先说IO standard:这个是⽤于⽀持对应不同的电平标准。
FPGA IO⼝的电压由IO bank上的VCC引⼊。
⼀个bank上引⼊3.3V TTL电平,那么此时整个bank上输出3.3V 的TTL电平。
设置这个第⼀是为了和current strength⼀起计算功率。
第⼆个是⽤于在IO⼝上加载正确的上拉/下拉电阻。
FPGA学习笔记之引脚分配

2021/2/10笔记一:分配引脚的四种方法:〔Quartus II 13.0sp1 (64-bit)〕1、常规方法,利用Pin Planner命令,适用于引脚使用比拟少的工程,简洁方便;2、使用.csv文件进行引脚分配:步骤一:利用记事本新建一个.csv的格式文件,内容格式如图下列图所示,然后保存;步骤二:选择菜单栏Assignments-->Import Assignment,添加刚刚生成的文件路径;步骤三:点击OK,引脚分配完成。
注意:.csv文件保存路径不要有中文,建议保存在工程文件夹下。
3、使用.qsf文件进行引脚分配:步骤一:在Quartus II中翻开.qsf文件〔系统默认生成.qsf文件,默认保存在该工程文件夹下〕步骤二:添加以下格式内容,格式如下列图所示;步骤三:点击保存,引脚分配完成。
4、使用.tcl文件进行引脚分配:步骤一:生成.tcl文件,选择菜单栏Project-->Generate Tcl File For Project,点击OK,默认保存路径为该工程文件夹;步骤二:添加以下格式内容,格式和.qsf文件格式一致;步骤三:选择菜单栏Tool-->Tcl Scripts,选择生成的.tcl文件,点击Run,引脚分配完成。
说明:在实际的应用过程中,我们应该根据工程的子模块个数和引脚的使用多少来选择适宜的引脚分配方式,笔者总结了以下几条:〔不喜勿喷,还望多多赐教〕1、工程中使用的引脚数为个位数时,并且特别少,建议使用常规方法,利用Pin Planner 命令进行引脚分配;2、文件进行引脚分配;如下图,.tcl文件中标识符和变量名已经给出,只需要输入对应引脚,比拟方便。
在多子模块的情况下,.tcl文件中没有给出标识符和变量名,这点需要注意。
3、多个子模块,使用引脚众多的情况下,利用.tcl文件、.csv文件和.qsf文件进行引脚分配大同小异,不过个人更喜欢利用.csv文件进行引脚分配,因为格式相对简单。
FPGA引脚分配方法

第二种:建立TCL文件进行管脚分配。
这种方法比较灵活,是比较常用的。
这种方法具有分配灵活,方便快捷,可重用性等多方面优点。
方法如下:选择Projects菜单项,并选择Generate tcl file for project选项,系统会为你自动生成相应文件,然后你只要向其中添加你的分配内容就可以了。
还有一种方法就是直接用new ,新建一个TCL文件即可,具体不再细讲。
下面是我分配的内容一部分,可供大家参考。
set_global_assignment -name FAMILY Cycloneset_global_assignment -name DEVICE EP1C3T144C8set_global_assignment -name ORIGINAL_QUARTUS_VERSION 8.0 set_global_assignment -name PROJECT_CREATION_TIME_DATE "19:14:58 JANUARY 06, 2009"set_global_assignment -name LAST_QUARTUS_VERSION 8.0set_global_assignment -nameUSE_GENERATED_PHYSICAL_CONSTRAINTS OFF -section_ideda_palaceset_global_assignment -name DEVICE_FILTER_PACKAGE "ANY QFP" set_global_assignment -name LL_ROOT_REGION ON -section_id "Root Region"set_global_assignment -name LL_MEMBER_STATE LOCKED-section_id "Root Region"set_global_assignment -name DEVICE_FILTER_PIN_COUNT 144 set_global_assignment -name DEVICE_FILTER_SPEED_GRADE 8 set_global_assignment -name FITTER_EFFORT "STANDARD FIT" set_global_assignment -name BDF_FILE topDesign.bdfset_global_assignment -name QIP_FILE nios.qipset_global_assignment -name QIP_FILE altpll0.qipset_global_assignment -name USE_CONFIGURATION_DEVICE ON set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "3.3-V LVTTL"set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Topset_global_assignment -name PARTITION_COLOR 14622752-section_id Topset_location_assignment PIN_72 -to addr[7]set_location_assignment PIN_69 -to addr[6]set_location_assignment PIN_70 -to addr[5]set_location_assignment PIN_67 -to addr[4]set_location_assignment PIN_68 -to addr[3]set_location_assignment PIN_42 -to addr[2]set_location_assignment PIN_39 -to addr[1]set_location_assignment PIN_40 -to addr[0]set_location_assignment PIN_48 -to data[15]set_location_assignment PIN_47 -to data[14]set_location_assignment PIN_50 -to data[13]set_location_assignment PIN_49 -to data[12]set_location_assignment PIN_56 -to data[11]set_location_assignment PIN_55 -to data[10]set_location_assignment PIN_58 -to data[9]set_location_assignment PIN_57 -to data[8]set_location_assignment PIN_61 -to data[7]set_location_assignment PIN_62 -to data[6]set_location_assignment PIN_59 -to data[5]set_location_assignment PIN_60 -to data[4]set_location_assignment PIN_53 -to data[3]set_location_assignment PIN_54 -to data[2]set_location_assignment PIN_51 -to data[1]set_location_assignment PIN_52 -to data[0]set_location_assignment PIN_16 -to clkset_location_assignment PIN_38 -to csset_location_assignment PIN_141 -to led[3]set_location_assignment PIN_142 -to led[2]set_location_assignment PIN_143 -to led[1]set_location_assignment PIN_144 -to led[0]set_location_assignment PIN_33 -to reset_nset_location_assignment PIN_41 -to rdset_location_assignment PIN_71 -to wrset_location_assignment PIN_105 -to mosiset_location_assignment PIN_107 -to sclkset_location_assignment PIN_106 -to ssset_location_assignment PIN_73 -to motor[0]set_location_assignment PIN_74 -to motor[1]set_location_assignment PIN_75 -to motor[2]set_location_assignment PIN_76 -to motor[3]set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top# Commit assignmentsexport_assignmentsFPGA 点滴(2008-09-30 09:44:45)转载标签:杂谈以此记录心得以及重要的知识点。
fpga管脚电流电压设置

Quartus II中输出管脚驱动电流的软件设置方法越来越多的设计需要对FPGA管脚的输出电流进行设置以满足不同的高扇出及其它对FPGA管脚输出电流不同的设计需求。
一般来讲各个厂家的FPGA输出管脚的驱动电流都可以利用软件进行设置。
本文以Altera的EP1C4F400C8为例说明在Quartus II中设置输出管脚的驱动电流。
注意LVDS接口电平不能设置驱动电流。
在Quartus II中设置FPGA输出管脚的驱动电流可以通过两种方法实现:Chip Editor修改底层修改输出管脚的驱动电流或者在Assignment Editor中通过增加约束修改输出管脚的驱动电流。
Chip Editor修改底层改变Output Pin的驱动电流方式仅仅用在调试阶段,不改变用户的约束文件。
推荐使用Assignment Edit改变Output Pin 的驱动电流。
下面就两种实现步骤简单说明。
1.Chip Editor实现1.1 打开经过编译后的工程的Fitter报告,点击Output Pins,右窗口出现OutputPin的列表。
如图一图一 Compilation Report1.2在Output Pins列表中用鼠标左键选中要加驱动电流的输出管脚。
点右键选择Locate/Locate in Chip Editor,如图二所示。
图二启动Chip Editor1.3指定输出管脚的PAD会在启动Chip Editor后内的窗口高亮显示。
如图三所示。
图三指定的Output Pin在Chip Editor中高亮显示1.4用左键双击高亮显示指定的PAD,进入如图四所示界面。
图四Resource Property Editor界面1.5选择主菜单View/View Properties。
图五 View 菜单1.6 执行完上述操作后弹出图六所示的对话框。
在Properties/Modes项选择Current Strength,在对应的Values项选择指定的Output Pin的驱动电流的大小。
Quartus II 软件操作

Quartus II 软件操作
下一步,给输入信号赋值。在0~160ns范围内,使 用x1,x2,x3的8种赋值组合以便完整地进行功能仿真。 单击突出显示该信号,并激活竖直工具栏。为了选 择特定的时间段,可以在起始时刻按下鼠标左键, 然后拖动鼠标到结束时刻,从而选定所需的时刻。 首先,对于时间段20ns~40ns,60ns~80ns, 100ns~120ns,140ns~160ns,将x3的取值设定为1, 然后,对于时间段40ns~80ns,120ns~160ns,将x2的取 值设定为1,最后,对于时间段80ns~160ns,将x1的 取值设定为1。然后保存该文件。
Quartus II 软件操作
选择Edit/End time命令,并在弹出的对话框中设 置160ns,从而设置仿真运行时段为0~160ns。在波 形编辑器中,选择View/Fit in Window,可以显示 窗口覆盖在0~160ns的整个仿真范围。单击 Edit/Insert Node or Bus 命令,可以在Name 栏 输入信号名(或引脚名)。更方便的方法是单击 Node Finder(节点查找器),将过滤器设置为 Pins:all,单击List按钮,可以找出输入节点和输 出节点。
Quartus II 软件操作
4)使用导线连接结点。 在竖直工具栏中,单击大箭头图标。首 先,将鼠标指向x1的引线参考点上,单击并 按下鼠标左键。然后向右托拽鼠标直到画出 导线连接到与门顶部输入对应的引线参考点 上。用同样的方法画出其他的引线。连线错 误时,可以选中导线并使用delete命令或者 使用Edit/delete命令。完成后保存文件,后 缀是bdf文件。
Quartus II 软件操作
① 功能仿真
选择Assignments/settings命令,打开settings窗口。 在该窗口的左面,单击Simulator项,在弹出的窗口中,选 择fuctional选项作为仿真模式。为了完成仿真器的设置, 需要选择Processing/Generate functional simulation Netlist命令。 Quartus II根据测试输入,产生 example_schematic.vwf文件中定义的输出。选择 Processing/start simulation(或使用快捷图标),开始 运行电路的功能仿真。仿真结束之后, Quartus II指出仿 真完成,并给出仿真报告。
Quartus-II中FPGA管脚的分配策略

Quartus II中FPGA管脚的分配策略编写:***校核:审核:二〇一年月日目录目录 (I)QUARTUS II中FPGA管脚分配策略 (1)1.FPGA管脚介绍 (1).电源管脚 (1).配置管脚 (2).普通I/O管脚 (2).时钟管脚 (2)2.FPGA管脚分配方法 (3).P IN P LANNER方式 (3).I MPORT A SSIGNMENTS方式 (3).T CL S CRIPTS方式 (6).项目组统一使用方式 (8)3.编写FPGA管脚分配文件 (9).查看PDF格式的原理图 (9).查看P RJ PCB格式的原理图 (10)4.保存FPGA管脚分配文件 (11).T CL格式或CSV格式 (11).QSF格式 (11).项目组统一使用格式 (11)附录管脚类型说明 (12)Quartus II中FPGA管脚分配策略1.FPGA管脚介绍FPGA的管脚从使用对象来说可分为两大类:专用管脚和用户自定义管脚。
一般情况下,专用管脚大概占FPGA管脚数的20% ~ 30%,剩下的70% ~ 80%为用户自定义管脚。
从功能上来说可分为电源管脚、配置管脚、时钟管脚、普通I/O管脚等。
下面以Altera公司的Cyclone IV E系列芯片EP4CE30F23C8为例,如图1所示,芯片总共包含484个芯片管脚。
图中不同颜色的区域代表不同的Bank,整个芯片主要分为8个Bank,FPGA的各个管脚分布在不同的Bank中。
其中,三角形标记的管脚为电源管脚,正三角表示VCC,倒三角表示GND,三角内部的O表示I/O管脚电源,I表示内核电源。
圆形标记的管脚为普通用户I/O管脚,可以由用户随意使用。
正方形标记且内部有时钟沿符号的管脚为全局时钟管脚。
五边形标记的管脚为配置管脚。
图1 Wire Bond1.1.电源管脚FPGA通常需要两个电压才能运行,一个是内核电压,另一个是I/O电压。
每个电压通过独立的电源管脚来提供。
Quartus II入门篇(基本操作)

例化顶层文件名
一个工程实例Verilog_ex2
时序约束:点击 会新建".sdc文件",这种文件可以编写一些脚本,进行时序 约束。 依次点击 ,当点击Read SDC File后,
可以点击Constrains 会有很多约束选项,用户也可以通过编 写脚本,自定义时序约束。 eg: creat clk 最后点击Write SDC File 如果时序约束条件未达成会在Critical Warning中警告
需对未使用的管脚设置,以防警告
Assignments→Device →Device and Pin Options→Unused Pins→As input tristated
一个工程实例Verilog_ex2 工程文件Verilog_ex2的路径: C:\Users\Administrator\FPGA_workspace,注意不能有 中文。 仿真:(1)下载安装ModelSim-Altera或ModelSim,然 后确定路径Tools → Options→ General→ EDA Tool Options;(2)Processing→start→start Test Bench Template Writer会在“simulation”的“modelsim”文件夹下 得到".vt"的一个文件,编写得到Test Bench ;(3) Assignments→Settings→Simulation→Test Benches → New(按下图设置);(4)Tools→Run EDA Simulation Tool→EDA RTL Simulation;
creatclk最后点击writesdcfile如果时序约束条件未达成会在criticalwarning中警告设计完以后需要管脚分配可以assignmentspinplanner管脚分配将管脚直接拖动到芯片对应管脚分布图的标识上也可以直接在location上直接输入管当所有工作完成以后可以点击下载程序或者点击task下的programdevice
QuartusII使用说明

QuartusII使用说明QuartusⅡ软件提供了FPGA 和CPLD 各设计阶段的解决方案。
它集设计输入、综合、仿真、编程(配置)于一体,带有丰富的设计库,并有详细的联机帮助功能。
下面为用QUARTUSⅡ进行设计的一般过程。
其包含的主要内容为:1、开始2、新建project3、设计输入4、编译5、引脚分配6、仿真7、编程、配置FPGA器件8、板级调试9、典型的FPGA设计流程使用CAD软件进行FPGA设计的典型流程如图1所示。
Quartus II软件支持以上设计流程的所有阶段。
1、开始在Quartus II软件中设计的每个电路或者子电路都叫做项目(Project)。
Quartus II软件每次只能打开一个Project,并且一个Project的所有信息都必须保存在同一个文件夹。
为了开始一个新逻辑电路的设计,首先第一步就是新建一个文件夹来保存此Project的文件。
为了保存本教程的设计项目Project,新建文件夹D:\introtutorial。
本处所举例子是一个简单两路开关控制电路。
启动Quartus II软件,会打开如图2所示启动画面。
启动画面中包含了使用Quartus II软件所需要的几个窗口,用户可以通过鼠标在窗口中选择想要执行的功能。
Quartus II软件所提供的绝大多数命令都可以通过选择位于标题栏下面的一系列菜单命令来完成。
图2 Quartus II启动画面在弹出的File菜单上单击单击Exit菜单项,这样可以退出Quartus II软件。
对于有些命令,需要按顺序访问几个菜单命令才可以。
本教程中使用符号Menu1 > Menu2 > Item表示使用鼠标左键先点击菜单Menu1,然后在弹出的菜单中鼠标左键点击Menu2项,然后在弹出的菜单中鼠标单击Item项。
2、新建Project开始一个新设计,必须先定义一个设计项目project。
Quartus II软件通过提供一个Wizard,使用户的设计任务变得非常简单。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Quartus II中FPGA管脚分配策略Quartus II中FPGA管脚的分配策略编写:***校核:审核:二〇一年月日目录目录目录 (I)QUARTUS II中FPGA管脚分配策略 (1)1.FPGA管脚介绍 (1)1.1.电源管脚 (1)1.2.配置管脚 (2)1.3.普通I/O管脚 (2)1.4.时钟管脚 (2)2.FPGA管脚分配方法 (3)2.1.P IN P LANNER方式 (3)2.2.I MPORT A SSIGNMENTS方式 (3)2.3.T CL S CRIPTS方式 (6)2.4.项目组统一使用方式 (8)3.编写FPGA管脚分配文件 (9)3.1.查看PDF格式的原理图 (9)3.2.查看P RJ PCB格式的原理图 (10)4.保存FPGA管脚分配文件 (11)4.1.T CL格式或CSV格式 (11)4.2.QSF格式 (11)4.3.项目组统一使用格式 (11)附录管脚类型说明 (12)Quartus II中FPGA管脚分配策略1. FPGA管脚介绍FPGA的管脚从使用对象来说可分为两大类:专用管脚和用户自定义管脚。
一般情况下,专用管脚大概占FPGA管脚数的20% ~ 30%,剩下的70% ~ 80%为用户自定义管脚。
从功能上来说可分为电源管脚、配置管脚、时钟管脚、普通I/O管脚等。
下面以Altera公司的Cyclone IV E系列芯片EP4CE30F23C8为例,如图1所示,芯片总共包含484个芯片管脚。
图中不同颜色的区域代表不同的Bank,整个芯片主要分为8个Bank,FPGA的各个管脚分布在不同的Bank中。
其中,三角形标记的管脚为电源管脚,正三角表示VCC,倒三角表示GND,三角内部的O表示I/O管脚电源,I表示内核电源。
圆形标记的管脚为普通用户I/O管脚,可以由用户随意使用。
正方形标记且内部有时钟沿符号的管脚为全局时钟管脚。
五边形标记的管脚为配置管脚。
图1 Wire Bond1.1. 电源管脚FPGA通常需要两个电压才能运行,一个是内核电压,另一个是I/O电压。
每个电压通过独立的电源管脚来提供。
内核电压是用来给FPGA内部的逻辑门和触发器供电。
随着FPGA的发展,内核电压从5V、3.3V、2.5V、1.8V到1.5V ,变得越来越低。
I/O电压用来给各个Bank供电,每个Bank 都有独立的I/O电压输入。
一般情况下,内核电压会比I/O电压低。
图1中的VCCINT是内核电压管脚,VCCIO是I/O电压管脚。
1.2. 配置管脚每个FPGA都需要配置管脚,以支持多种配置方式,例如JTAG、从串、从并、主串、主并等。
对于配置管脚的控制信号来说,是专用管脚,不能作为普通的I/O管脚。
而其数据信号可以作为普通的I/O管脚使用。
图1中的MSEL为配置模式选择信号,即选择AS模式、PS模式或FAST AS模式。
MSEL[1:0]为00表示用AS模式,10表示用PS模式,01表示用FAST AS模式。
如果用JTAG模式,MSEL[1:0]置00,JTAG模式和MSEL无关,即用JTAG模式时,MSEL会被忽略,但是因为MSEL不能浮空,所以置00。
图1中的TMS、TCK、TDI和TDO为JTAG接口的4根线,分别为模式选择、时钟、数据输入和数据输出线。
常用的为AS模式和JTAG模式。
1.3. 普通I/O管脚FPGA的I/O管脚是FPGA上较为丰富的资源,也是做管脚约束时最常用的资源。
对于FPGA 的普通I/O管脚,可以设定电平类型(TTL、LVTTL、LVCOMS、ECL等)、驱动电流、摆率等参数。
1.4. 时钟管脚FPGA内部的时钟都需要通过专用时钟管脚连接内部PLL或者DCM等专用时钟处理单元,从而接入内部高速时钟网络。
对于一些外部同步信号的输入,如果时钟只用于采样当前的同步信号,其时钟可以不用连接到专用时钟管脚上,即不用接入全局时钟网络,但需要约束其管脚不使用全局时钟资源。
否者,EDA 工具会报错,提示其作为时钟输入而没有接在专用时钟管脚上。
更多的管脚类型说明见附录。
2. FPGA管脚分配方法FPGA管脚分配常用的有3种方式,分别为Pin Planner方式、Import Assignments方式和Tcl scripts 方式。
2.1. Pin Planner方式步骤1:在Quartus II软件中,选择“Assignments Pin Planner”,或者按快捷键“Ctrl+Shirt+N”,出现如图2所示的画面。
通过下拉菜单可以选择需要的管脚在Location选择了管脚后I/O Bank自动填充Bank内部的细分区域,非修改属性用于支持对应不同的电平标准,即VCCIO。
每个Bank只能有一种电压标准对管脚内部的I/O逻辑进行约束驱动电流强度电压转换速率,表示单位时间内电压升高的幅值图2 Pin Planner图2主要包含了7个选择项,分别为Location、I/O Bank、VREF Group、I/O Standard、Reserved、Current Strength和Slew Rate。
Location里可以选择所需要的芯片管脚,管脚确定后I/O Bank中的Bank数会自动填充,VREF Group也会自动填充。
I/O Standard是每个Bank对应的电压标准,一个Bank只能有一种电压标准,一般情况下选择默认值就好。
Reserved是对管脚内部的I/O逻辑进行约束,有6个选择项供选择,例As SignalProbe output、As bidirectional等。
Current Strength是驱动电流强度,一般选择默认值,如果需要驱动大功率的电路,一般在FPGA外围加驱动电路。
Slew Rate 是电压转换速率,跟信号跳变时间有关,一般选择默认值。
在管脚分配的过程中,我们主要关心Location这一选项,其他选项采用默认值就可。
步骤2:在Location中选择管脚。
所有管脚配置完成后关闭当前界面。
2.2. Import Assignments方式步骤1:新建一个txt文件(或csv文件),按图3格式编写管脚分配内容。
(编写格式有多种,但这种格式最简单。
)【注】To和Location两个关键字中间有一个半角逗。
图3 管脚分配格式步骤2:在Quartus II软件中,选择“Assignments → Import Assignments”,出现如图4所示的画面,导入xxx.txt或者xxx.csv文件。
图4 Import Assginments导入后Quartus II软件的Message信息栏会弹出如图5所示的内容,显示Import Completed,表示文件没有语法错误。
图5 Message步骤3:在Quartus II软件中,选择“Assignments → Pin Planner”,验证管脚是否分配正确。
如图6所示。
图6 验证管脚是否分配正确常见错误1:分配的管脚不属于FPGA芯片。
如果分配的管脚不属于FPGA芯片,在Pin Planner中会出现如图7所示的错误提示,表示管脚PIN_GC21不属于该FPGA芯片,找不到对应的I/O Bank和VREF Group。
图7 管脚不属于FPGA若信号比较多,人工不能发现存在的错误,可以通过Enable Live I/O Check工具检查I/O分配情况。
点击Pin Planner工具栏中的I/O Check图标,如图8所示。
图8 Enable Live I/O Check执行Check后,在Message窗口中会弹出检查结果,如图9所示,提示PIN_GC21是非法的管脚定义。
图9 Check检查管脚不属于FPGA常见错误2:多个信号公用一个管脚,即分配管脚冲突。
如果分配的管脚冲突,通过肉眼的方式很难发现,通过Enable Live I/O Check工具可以有效的发现存在的问题,如图10所示,提示fpga_rst_n定义的管脚G21已经被phy_clk50m信号占用。
图10 Check检查管脚冲突2.3. Tcl Scripts方式步骤1:在Quartus II软件中,选择“Assignments Remove Assignments”,出现如图11所示的画面。
此步骤用来移除已经存在的管脚分配内容,以确保分配的管脚没有因为覆盖而出现错误的情况。
【注】在执行没有管脚分配的新工程中,可跳过步骤1。
图11 Remove Assignments步骤2:新建一个tcl文件,按图12格式编写管脚分配内容。
注意关键字set_location_assignment 和-to的用法。
图12管脚分配格式步骤3:执行xxx.tcl文件。
方法1:(1)在Quartus II软件中,选择“View → Utility Windows → Tcl Console”,打开Quartus II Tcl Console,如图13所示。
图13 Tcl Console(2)将tcl文件中的内容复制到Tcl Console对话框中,如图14所示。
图14 执行管脚分配语句方法2:(1)将tcl文件添加到工程中,如图15所示。
图15 添加Tcl文件(2)在Quartus II软件中,选择“Tools → Tcl Scripts”,出现如图16所示的画面。
图16 Tcl Scripts选择“Run”,执行Tcl文件。
步骤4:在Quartus II软件中,选择“Assignments → Pin Planner”,验证管脚是否分配正确。
检查的方法同Import Assignments方式中的Enable Live I/O Check。
2.4. 项目组统一使用方式为了统一代码风格,便于项目管理,FPGA项目组统一使用2.3的Tcl Script方式。
在2.3的步骤3中也使用方法2,即添加Tcl文件,而非命令行。
3. 编写FPGA管脚分配文件在上文提到的3种管脚分配方法中主要包含了2种文件格式,即txt和tcl。
无论那种格式的文件都是为了阐明信号与管脚的对应关系。
编写FPGA管脚分配文件的主要任务就是要快速定位工程TOP文件中各个信号与FPGA管脚的对应关系。
通过2种方式可以定位这种关系,一种是通过查看对外PDF格式的原理图,另一种是通过查看PrjPCB格式的原理图。
推荐使用PrjPCB格式的原理图。
3.1. 查看PDF格式的原理图通过SVN下载相应工程,在工程路径中可以找到对应的原理图,如图17所示。
由于PDF格式的原理图没有目录,如图18所示,查找各个模块比较费时费力,所以不推荐这种方式。
图17 原理图路径图18 PDF格式原理图3.2. 查看PrjPCB格式的原理图查看原理图的软件有多种,我司主要使用Altium Designer软件。