fpga引脚分配
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)转载标签:杂谈以此记录心得以及重要的知识点。
DE2-115所有引脚分配表
表1 拨动开关引脚配置
表2 按钮开关引脚配置
表3 LED 引脚配置
表4 七段数码管引脚配置
表5 时钟信号引脚配置信息
表6 LCD 模块引脚配置
表7 HSMC 接口引脚配置
表8 GPIO 引脚配置信息
表9 扩展接口引脚配置信息
表10 ADV7123 引脚配置
表11 音频编解码芯片引脚配置
表12 RS-232 引脚配置
表13 PS/2 引脚配置
表14 千兆以太网芯片引脚配置
表15 TV 解码芯片引脚配置
表16 USB (ISP1362)引脚配置
表17 IR 引脚配置
表18 SRAM 引脚配置
表19 SDRAM 引脚配置
表20 SDRAM 引脚配置
表21 Flash 引脚配置
表22 EEPROM 引脚配置
表23 SD 卡插槽引脚配置。
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电压。
每个电压通过独立的电源管脚来提供。
fpga引脚分配注意事项
fpga引脚分配注意事项摘要:1.FPGA 引脚分配的重要性2.FPGA 引脚分配的注意事项3.FPGA 引脚分配的技巧和建议正文:FPGA(现场可编程门阵列)是一种集成电路,可以由用户编程和配置,以实现特定的功能。
在FPGA 设计中,引脚分配是一个重要的环节。
合理的引脚分配可以降低硬件复杂度,提高系统性能,甚至可以影响到整个系统的稳定性和可靠性。
因此,在进行FPGA 引脚分配时,需要特别注意以下几点:1.确定引脚使用需求:在分配引脚之前,需要对系统的功能和性能需求进行深入了解,以确保引脚的正确使用。
这包括了解各个模块之间的接口、信号流向、时序要求等。
2.遵守时序规则:FPGA 中的时序规则是保证系统正常运行的关键。
在分配引脚时,需要遵循时序规则,确保信号在规定时间内到达目的地。
此外,还需要注意信号的传输延迟、建立时间和保持时间等参数。
3.合理规划引脚:在规划引脚时,应尽量保持引脚的连续性和完整性。
这样可以减少走线长度,降低信号干扰,提高系统性能。
同时,应尽量避免引脚之间的冲突,以免影响系统的稳定性。
4.考虑引脚的电源和地:在分配引脚时,需要将电源和地引脚分别考虑。
一般来说,电源引脚应尽量靠近FPGA 芯片的电源引脚,地引脚也应尽量靠近FPGA 芯片的地引脚。
这样可以减小电源和地之间的阻抗,降低噪声和干扰。
5.预留足够的引脚:在分配引脚时,需要预留一定的引脚数量,以应对后期设计修改或信号扩展的需求。
同时,也应避免过多的预留引脚,以减小硬件复杂度和成本。
6.使用先进的引脚分配工具:现代的FPGA 设计工具提供了智能化的引脚分配功能,可以大大简化引脚分配的过程,提高设计效率。
因此,在进行FPGA 引脚分配时,应充分利用这些工具。
总之,FPGA 引脚分配是一个复杂而重要的环节。
在进行引脚分配时,需要充分考虑系统的功能、性能、时序、电源、地等多方面因素,以确保系统的稳定性和可靠性。
FPGA管脚分配图
169
FLAS H_ CS
156
音频 CODEC 模块(大板)
信号名称
对应 FPGA 引脚
SDIN
27
SCLK
33
CS
28
音频 CODEC 模块(小板)
信号名称
对应 FPGA 引脚
SDIN
93
SCLK
94
CS
88
音源模块
RESET
86
DATA
84
BUS Y
153
时钟源模块
信号名称 CLOCK(大板) CLOCK(小板)
216 VGA 接口(大板)
对应 FPGA 引脚
R
58
G
59
B
60
HS
61
VS 信号名称
62 VGA 接口(小板)
对应 FPGA 引脚
R
239
G
238
B
237
HS
235
VS 信号名称
236 PS/2 接口(大板上)
对应 FPGA 引脚
CLOCK
49
DATA 信号名称
82 PS/2 接口(大板下)
对应 FPGA 引脚
98
DB2
95
DB3
143
DB4
141
DB5
140
DB6
139
DB7
138
DB8
136
DB9
135
DB10
134
DB11
133
DB12
132
DB13
131
DB14
128
DB15
127
DB16
116
DB17
工程师必须要知道的FPGA引脚信号分配原则
工程师必须要知道的FPGA引脚信号分配原则
工程师必须要知道的FPGA引脚信号分配原则
现在的FPGA正变得越来越复杂,向引脚分配信号的任务曾经很简单,现在也变得相当繁复。
下面这些用于向多用途引脚指配信号的指导方针有助于设计师根据最多到最少的约束信号指配原则提前考虑信号指配,并减少反复的次数。
这里有一个前提,即假定设计师已经根据设计的大概规模和信号要求确定了目标器件范围和型号。
对以下每一步都应在考虑单极信号前优先考虑差分对信号。
最先指配那些只能在特定引脚上工作的特殊信号,正常情况下是指串行I/O信号和全局时钟信号。
其次指配大型和/或高速信号总线,特别是那些要跨越多个库或区域的信号。
如果总线需要局部时钟,那幺就要考虑具有更多局部时钟引脚的库或区域,并先指配局部时钟。
如果针对FPGA器件采用了多种I/O标准,那幺设计师还必须先考虑将I/O信号映射到库/区。
这一步需要慎重考虑,因为许多I/O标准和参考电压是不兼容的。
一些I/O标准要求在特殊引脚上输入参考电压,使得这些引脚不可再用于一般用途。
将高速输出和双向信号分开指配在一定程度上可避。
Quartus-II中FPGA管脚的分配策略
word格式-可编辑-感谢下载支持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电压。
DDR3,DIMM在FPGA上引脚分配规则,完全手打中文
FPGA BANK选择页面中的图是所选部件物理表示的架构视图。
默认情况下, MIG 将使用推荐的选择,地址/控制BANK和数据BANK是根据V6对不同频率的规则限定的。
选择您想要使用的BANK for内存接口,你用不着选择的实际的引脚。
默认情况下MIG将使用所选bank中的任意引脚for内存接口。
设计规则:∙设计最大频率:o-1 FPGA 速度级器件: 400 MHzo-2 和-3 FPGA 速度级器件: 533 MHzo只有-2 FPGA 速度等级的 CXT 设备只要303 MHz支持o低功耗V6设备只需303303 MHz∙频率超过333 MHz,只有数据宽度低于72位被容许。
频率低于333 MHz 数据宽度低于144 位被允许∙内存类型、内存部件和数据宽度被限制基于所选的 FPGA 器件、 FPGA 器件速度等级和设计频率BANK的选择规则:∙地址/控制组只能选择在内部列BANK∙第一个选定的地址/控制组将有 CK [0] 和 CK #[0] 引脚∙包含CK [0] 和 CK #[0]的BANK,会有该MMCM应用与该H-Row∙对于设计频率400 MHz或更高,只有内部列BANK被允许用于数据组的选择。
对于设计频率为400 MHz以下,内部和外部列BANK被允许数据组的选择o内部或外部列BANK被唯一的允许for选择∙位于,包含CK [0]和CK #[0] 的BANK的上面一行、下面一行和同一行,的内外侧BANK,是可用的for数据组引脚选择∙此限制被一个称为vicinity box的边界箱描述∙系统时钟组只能被选择在包含GC引脚的BANK或者位于,和分配的MMCM 同一H-ROW的内部BANK。
∙控制和状态引脚即sys_rst,error等,在系统时钟BANK中分配.∙由于采用不同的电压标准,系统时钟组与其余的设计组针脚(地址/控制组和数据组)不能共存于同一BANK。
∙一个主BANK必须被选择for每个列,假如系统时钟BANK不能作为主BANK引脚分配规则:∙地址/控制组:o包含 A、BA、 CK、 CK #、 CKE、 CS #、 RAS #、 CAS #、 WE#、 ODT, RESET #o只能选择内部列BANKo内存时钟信号(CK [0] 和 CK#[0]) 分配给差分对引脚(P Npair)o VRN/VRP 引脚若被用于引脚分配,DCI级联应该被采用,用以支持地址/时钟的 DCI 标准PS: XILINX公司的Virtex系列FPGA芯片上,每个BANK都有一对VRP/VRN管脚。
fpga引脚分配注意事项
fpga引脚分配注意事项摘要:1.FPGA引脚概述2.引脚分配原则3.引脚分配方法4.引脚分配注意事项5.总结正文:FPGA(现场可编程门阵列)是一种高度集成的硬件平台,可以根据用户需求配置和修改其内部逻辑。
FPGA的核心部分是芯片上的引脚,它们用于与外部电路连接。
合理的引脚分配对于FPGA的设计和应用至关重要。
本文将介绍FPGA引脚分配的注意事项,以帮助您更好地利用这一技术。
1.FPGA引脚概述FPGA引脚分为输入引脚、输出引脚和双向引脚。
输入引脚用于接收外部信号,输出引脚用于向外部电路输出信号,而双向引脚可在输入和输出之间切换。
在实际应用中,根据需求合理分配这些引脚非常重要。
2.引脚分配原则在进行引脚分配时,应遵循以下原则:(1)尽量保持引脚数量的平衡,避免一侧过重,以降低信号干扰和电磁辐射。
(2)优先分配关键信号,如时钟、复位、电源等,以确保系统稳定运行。
(3)分组分配引脚,有助于提高模块间的隔离度和可读性。
(4)考虑引脚的电气特性,如阻抗、驱动能力等。
3.引脚分配方法常见的引脚分配方法有以下几种:(1)按功能分配:根据模块功能,将相关引脚分组,有助于模块内信号的传输和模块间的隔离。
(2)按信号优先级分配:优先分配关键信号,再分配次要信号。
(3)按布局规划分配:考虑PCB布局,将引脚分配到合适的位置,以减小互连长度,降低信号干扰。
4.引脚分配注意事项在进行引脚分配时,还需注意以下几点:(1)避免引脚相互干扰,如高频信号与低频信号、高速信号与慢速信号等。
(2)注意电源和地引脚的布局,尽量减小环路面积,降低电磁干扰。
(3)对于高速信号,考虑采用差分布局,以提高信号传输质量。
(4)预留一定的引脚冗余,以便后续优化和调整。
5.总结FPGA引脚分配是FPGA设计中的重要环节。
合理的引脚分配有助于提高系统的稳定性、可靠性和可扩展性。
通过遵循引脚分配原则和方法,我们可以更好地利用FPGA资源,实现高性能、低功耗的硬件系统。
fpga引脚分配注意事项
fpga引脚分配注意事项FPGA(Field Programmable Gate Array)是一种可编程逻辑器件,具有灵活性和可重构性,广泛应用于数字电路设计和嵌入式系统开发。
在使用FPGA进行设计时,合理的引脚分配是非常重要的,它直接关系到电路的性能、功耗和稳定性。
下面将介绍一些使用FPGA进行引脚分配时需要注意的事项。
1. 引脚规格和电气特性:在进行引脚分配之前,首先要了解所使用的FPGA芯片的引脚规格和电气特性。
不同的FPGA芯片具有不同的引脚数量和功能,同时还有不同的电气特性,例如电压等级、驱动能力和输入电流等。
在进行引脚分配时,要确保所选用的引脚能够满足设计需求,并与其他电路模块兼容。
2. 引脚复用:FPGA芯片通常具有大量的引脚,但并不是所有的引脚都需要用到。
在进行引脚分配时,可以考虑引脚的复用,即一个引脚可以被多个信号共享。
通过合理的引脚复用,可以减少引脚的使用数量,提高资源利用率。
3. 信号分组:根据设计需求,将信号进行合理的分组,可以简化引脚分配的过程。
将有相同功能或相关性的信号划分到同一组,可以降低引脚布局的复杂度,减少信号之间的干扰和串扰。
4. 引脚约束:在进行引脚分配之前,需要为每个引脚设置相应的约束。
引脚约束是一种限制,用于确保引脚在设计中的正确连接和使用。
常见的引脚约束包括引脚的电气特性约束(如电压、驱动能力)、时序约束(如时钟频率、延迟要求)和布局约束(如引脚位置和层次)等。
通过引脚约束,可以提高电路的可靠性和稳定性。
5. 时序分析:在进行引脚分配之后,需要进行时序分析,以确保设计在时序上满足要求。
时序分析可以帮助检测潜在的时序问题,如时钟频率过高、信号延迟过长等。
通过时序分析,可以优化引脚分配,提高电路的性能。
6. 电源和地线布局:在进行引脚分配时,要合理布局电源和地线。
电源和地线是电路中非常重要的部分,它们的布局直接影响电路的稳定性和抗干扰能力。
在引脚分配时,要尽量避免电源和地线之间的干扰和串扰,同时要确保电源和地线的供电和接地路径短、稳定。
FPGA引脚分配
206
A1
地址线1
PORT1_58
204
A2
地址线2
PORT1_59
202
A3
地址线3
PORT1_60
200
A4
地址线4
PORT1_61
198
A5
地址线5
PORT1_62
196
A6
地址线6
PORT1_63
194
A7
地址线7
PORT1_64
188
A8
地址线8
PORT1_65
186
A9
地址线9
附录1 FPGA(EP1C6Q240C8)端口引脚分配表
实验板标注
芯片引脚号
连接对象
连接功能
下载板接插件
标注
说明
P1
100
插孔引出未连接对象
未连接
PORT2_41
P2
99
未连接
PORT2_42
P3
98
未连接
PORT2_43
P4
97
未连接
PORT2_44
P5
96
未连接
PORT2_45
P6
95
未连接
PORT2_46
6
2_8
PORT1_31
3
拨码盘3
3_1
PORT1_32
4
3_2
PORT1_33
1
3_4
PORT1_34
2
3_8
PORT1_35
239
拨码盘4
4_1
PORT1_36
240
4_2
PORT1_37
237
4_4
FPGA管脚分配图
48
AEN
50
INT
236
RESET
47
以太网接口模块(小板)
信号名称
对应FPGA引脚
DB0
99
DB1
98
DB2
95
DB3
143
DB4
141
DB5
140
DB6
139
DB7
138
DB8
136
DB9
135
DB10
134
DB11
133
DB12
132
DB13
131
DB14
128
DB15
127
A0
160
A1
233
D2_5
206
D2_6
234
D2_7
201
D2_8
203
LED显示模块(小板)
LED0
82
LED1
83
LED2
84
LED3
85
拨挡开关模块(大板)
信号名称
对应FPGA引脚
K1
74
K2
73
K3
38
K4
39
K5
44
K6
45
K7
46
K8
83
拨挡开关模块(小板)
信号名称
对应FPGA引脚
SW1
29
SW2
161
A2
162
A3
163
A4
164
INT
195
RD
194
WR
193
AEN
197
RST
196
LED显示模块(大板)
FPGA管脚分配时需注意的一些事项(以xilinx xc4vsx55为例)
FPGA管脚分配时需注意的一些事项(以xilinx xc4vsx55为例)FPGA管脚分配时需注意的一些事项(以xilinx xc4vsx55为例)平台:XC4VSX55 ISE10.1设计过FPGA的原理图,看FPGA的手册,说管脚的分配问题,如时钟管脚要用GC类管脚,而且单端时钟输入时要用P类型的管脚,不能用N类型管脚等等。
一直以来都没有试验过,今天试验一把,以求各种验证。
1)GC类全局时钟管脚是否可用作普通IO使用?所谓GC类管脚,就是在管脚的称是诸如IO_L1P_GC_LC等带有GC的管脚。
其实手册中说的是GC类管脚可以用作IO的,但在《Xilinx FPGA开发实用教程》(清华出版社)574页倒数第八行提到:“所有从全局时钟管脚输入的信号必须经过IBUF元,否则在布局布线时会报错”,于是今天我试了一下,将某一GC 类管脚分配给一个普通的输入口(也试验了分配给一个普通的输出口),经布局布线后,未出错。
因此得出结论:GC类全局时钟管脚可以作为普通IO使用。
(不知道是不是我对书中提到的全局时钟管脚理解有误,如果是,请网友别拍我,敬请留言指正)2)非GC类全局时钟管脚是否可以作时钟使用?其实至于说能否作为时钟使用,这里有另一层函义。
当然,如果你把一个普通IO口配置成输入口,就把它的输入信号作为时钟,那是没问题的。
但我们一般不这么做,因为时钟信号对于我们来说是一个很重要的信号,因此FPGA在内部会有特殊照顾,如果你使用FPGA传门为时钟预留的管脚,并作一些处理,那么你的时钟对于各种模块的时延是可以忽略的,因为时钟在布线时是单独走的一层,而如果你就仅用普通IO 的话,经过FPGA内部布局布线后,从它的输到,再到各个使用时钟的地方,有的线长,有的线短,它的时延将是不一样的。
这些东西还是看一些FPGA结构的内容吧。
在xilinx里有专门的DCM IP核可供调用,在ISE中执行project——>New Source——>IP(CORE Generator & Architecture Wizard)——>FPGA Features andDesign——>Clocking——>Virtex-4——>Single DCM ADV v9.1i,可得如下界面:需要特别注意的是CLKIN Source需要选择是External还是Internal,各自生成的源文件如下:==========================选择External=========================`timescale 1ns / 1psmodule clk_test(CLKIN_IN,CLKIN_IBUFG_OUT,CLK0_OUT,LOCKED_OUT);input CLKIN_IN;output CLKIN_IBUFG_OUT;output CLK0_OUT;output LOCKED_OUT;wire CLKFB_IN;wire CLKIN_IBUFG;wire CLK0_BUF;wire GND_BIT;wire [6:0] GND_BUS_7;wire [15:0] GND_BUS_16;assign GND_BIT = 0;assign GND_BUS_7 = 7'b0000000;assign GND_BUS_16 = 16'b0000000000000000;assign CLKIN_IBUFG_OUT = CLKIN_IBUFG;assign CLK0_OUT = CLKFB_IN;IBUFG CLKIN_IBUFG_INST (.I(CLKIN_IN),.O(CLKIN_IBUFG));BUFG CLK0_BUFG_INST (.I(CLK0_BUF),.O(CLKFB_IN));DCM_ADV DCM_ADV_INST (.CLKFB(CLKFB_IN), .CLKIN(CLKIN_IBUFG),.DADDR(GND_BUS_7[6:0]),.DCLK(GND_BIT),.DEN(GND_BIT),.DI(GND_BUS_16[15:0]),.DWE(GND_BIT),.PSCLK(GND_BIT),.PSEN(GND_BIT),.PSINCDEC(GND_BIT),.RST(GND_BIT),.CLKDV(),.CLKFX(),.CLKFX180(),.CLK0(CLK0_BUF),.CLK2X(),.CLK2X180(),.CLK90(),.CLK180(),.CLK270(),.DO(),.DRDY(),.LOCKED(LOCKED_OUT),.PSDONE());defparam DCM_ADV_INST.CLK_FEEDBACK = "1X";defparam DCM_ADV_INST.CLKDV_DIVIDE = 2.0;defparam DCM_ADV_INST.CLKFX_DIVIDE = 1;defparam DCM_ADV_INST.CLKFX_MULTIPLY = 4;defparam DCM_ADV_INST.CLKIN_DIVIDE_BY_2 = "FALSE";defparam DCM_ADV_INST.CLKIN_PERIOD = 16.129;defparam DCM_ADV_INST.CLKOUT_PHASE_SHIFT = "NONE";defparam DCM_ADV_INST.DCM_AUTOCALIBRATION = "TRUE";defparam DCM_ADV_INST.DCM_PERFORMANCE_MODE = "MAX_SPEED";defparam DCM_ADV_INST.DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS";defparam DCM_ADV_INST.DFS_FREQUENCY_MODE = "LOW";defparam DCM_ADV_INST.DLL_FREQUENCY_MODE = "LOW";defparam DCM_ADV_INST.DUTY_CYCLE_CORRECTION = "TRUE";defparam DCM_ADV_INST.FACTORY_JF = 16'hF0F0;defparam DCM_ADV_INST.PHASE_SHIFT = 0;defparam DCM_ADV_INST.STARTUP_WAIT = "FALSE";endmodule==========================选择Internal=========================`timescale 1ns / 1psmodule clk1_test(CLKIN_IN,CLK0_OUT,LOCKED_OUT);input CLKIN_IN;output CLK0_OUT;output LOCKED_OUT;wire CLKFB_IN;wire CLK0_BUF;wire GND_BIT;wire [6:0] GND_BUS_7;wire [15:0] GND_BUS_16;assign GND_BIT = 0;assign GND_BUS_7 = 7'b0000000;assign GND_BUS_16 = 16'b0000000000000000;assign CLK0_OUT = CLKFB_IN;BUFG CLK0_BUFG_INST (.I(CLK0_BUF),.O(CLKFB_IN));DCM_ADV DCM_ADV_INST (.CLKFB(CLKFB_IN),.CLKIN(CLKIN_IN),.DADDR(GND_BUS_7[6:0]),.DCLK(GND_BIT),.DEN(GND_BIT),.DI(GND_BUS_16[15:0]),.DWE(GND_BIT),.PSCLK(GND_BIT),.PSEN(GND_BIT),.PSINCDEC(GND_BIT),.RST(GND_BIT),.CLKDV(),.CLKFX(),.CLKFX180(),.CLK0(CLK0_BUF),.CLK2X(),.CLK2X180(),.CLK90(),.CLK180(),.CLK270(),.DO(),.DRDY(),.LOCKED(LOCKED_OUT),.PSDONE());defparam DCM_ADV_INST.CLK_FEEDBACK = "1X";defparam DCM_ADV_INST.CLKDV_DIVIDE = 2.0;defparam DCM_ADV_INST.CLKFX_DIVIDE = 1;defparam DCM_ADV_INST.CLKFX_MULTIPLY = 4;defparam DCM_ADV_INST.CLKIN_DIVIDE_BY_2 = "FALSE";defparam DCM_ADV_INST.CLKIN_PERIOD = 16.129;defparam DCM_ADV_INST.CLKOUT_PHASE_SHIFT = "NONE";defparam DCM_ADV_INST.DCM_AUTOCALIBRATION = "TRUE";defparam DCM_ADV_INST.DCM_PERFORMANCE_MODE = "MAX_SPEED";defparam DCM_ADV_INST.DESKEW_ADJUST = "SYSTEM_SYNCHRONOUS";defparam DCM_ADV_INST.DFS_FREQUENCY_MODE = "LOW";defparam DCM_ADV_INST.DLL_FREQUENCY_MODE = "LOW";defparam DCM_ADV_INST.DUTY_CYCLE_CORRECTION = "TRUE";defparam DCM_ADV_INST.FACTORY_JF = 16'hF0F0;defparam DCM_ADV_INST.PHASE_SHIFT = 0;defparam DCM_ADV_INST.STARTUP_WAIT = "FALSE";endmodule比较以上两段代码,区别在于选择是External时CLKIN经过了IBUFG才到的DCM_ADV,而选择Internal 的CLKIN则直接到了DCM_AV,而IBUFG就是原语“全局时钟缓冲”单元,我们使用时要选择External,只有当我们的级联两个DCM模块时,直接与外面相连的选External,而另一个选择Internal。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FPGA管脚分配需要考虑的因素
在芯片的研发环节,FPGA验证是其中的重要的组成部分,如何有效的利用FPGA的资源,管脚分配也是必须考虑的一个重要问题。
一般较好的方法是在综合过程中通过时序的一些约束让对应的工具自动分配,但是从研发的时间段上来考虑这种方法往往是不可取的,RTL 验证与验证板设计必须是同步进行的,在验证代码出来时验证的单板也必须设计完毕,也就是管脚的分配也必须在设计代码出来之前完成。
所以,管脚的分配更多的将是依赖人,而非工具,这个时候就更需要考虑各方面的因素。
综合起来主要考虑以下的几个方面:
1、FPGA所承载逻辑的信号流向。
IC验证中所选用的FPGA一般逻辑容量都非常大,外部的管脚数量也相当的丰富,这个时候就必须考虑到PCB设计时的布线的难度,如果管脚的分配不合理,那么有可能在PCB设计时出现大量的交叉的信号线,这给布线带来很大的困难,甚至走不通,或者是即便是布线走通了,也有可能由于外部的延时过大而不满足时序方面的要求。
所以在管脚分配前对FPGA工作的环境要相当的熟悉,要对其中的信号来自哪里去向何方非常的清楚,这就按照连线最短的原则将对应的信号分配到与外部器件连线最近的BANK中,2、掌握FPGA内部BANK的分配的情况。
现在FPGA内部都分成几个区域,每个区域中可用的I/O管脚数量各不相同。
在IC验证中都是采用了ALTERA 与XILINX系列的FPGA ,这两个厂商的FPGA中内部BANK 的分配有一定的差异,这可以在设计中查阅相关的手册。
下面与ALTERA中Stratix II 系列的FPGA内部BANK的分配为例来进行说明。
图中详细说明了FPGA内部BANK的分配情况和每个BANK中所支持的I/O标准。
根
据FPGA中内部BANK的分配的情况,同时结合图1中信号的流向也就可以大体固定FPGA在单板中的方向,同时按照就近的原则将相关的信号分配到相关的BANK中,这
样的方法可以完成一般信号的分配。
3、掌握所选FPGA每个BANK所支持的I/O标准。
从图2中可以看出FPGA内部的每个BANK所支持的I/O的标准不尽相同,所以在管脚的分配时要将支持相同标准的管脚都集中到一个BANK中,因为FPGA中同一个BANK 一般不同时支持两种I/O标准,当然也有例外,这就需要查阅相关I/O标准所要求的工作条件。
4、关注特殊信号的管脚的分配
这里的特殊信号主要是指时钟信号与复位信号,或者是一些要求驱动能力较高的信号。
时钟信号一般都是要求分配到全局的时钟管脚,这样获得的时间的延迟将是最小的,驱动也最强。
复位信号因为要求同步性好驱动的能力强,所以一般的情况下也会从全局的时钟管脚送入。
在分配时钟时,根据时钟的多少分配的策略差别很大,也需要重点关注,这需要查阅相应的手册看哪些时钟分别能到达哪些区域,一般的时钟都是差分时钟,这个时候如果所用的不是差分时钟就需要注意P端与N端一般不能同时分配给不同的时钟信号。
如下图所示XILINX系列的FPGA中成对的时钟如果是同时采用那么就不能同时到达相同的区域,因为到达相同区域的时钟线只有一根。
所以在时钟较少时最好成对的P和S不要同时使用,而是只是选择P或者是N这样就不会出现冲突的情况。
5、兼顾信号完整性的考虑。
由于在分配中常常会出现总线分配的情况,同时大量的总线又有可能常常是同时翻转,这样就会带来了一系列信号完整性的问题,所以在管脚分配时大量同时翻转的信号尽量分开。