目录
摘要:
使用电路绘图软件设计FPGA相关的原理图时,需要出一份FPGA点位文件,以供逻辑设计使用。
本文以mentor VX1.2为例,借助excel,说明了如何出一份FPGA点位文件。
思路是利用excel,将FPGA的封装文件,和电路图网表文件中的信息,按照管脚号进行完善合并。
所需文件:
1、电路网表文件(\PCB\LogFiles下的SchematicNetlist.txt)
2、FPGA封装文件(去官网下载,一般是txt文件)
工具:
excel
一、将网表文件导入excel
SchematicNetlist.txt中的内容格式如下:
Schematic Net Listing
-------------------------------- -------------------------------- --- --- ------ --- --- ------ ------ - -------------------- ---
Part Reference Sym Sub Pin Eqv Sub Pin Pin Phantom Net Net
Number Designator Num Typ Id Cls Pak Text Num Flag Name Num
-------------------------------- -------------------------------- --- --- ------ --- --- ------ ------ - -------------------- ---
XC7K410TFFG900 U1 11 12 10 10 12 T22 772 0 FLASH_D6 (2-59-13)
XC7K410TFFG900 U1 11 12 11 11 12 T23 773 0 FLASH_D7 (2-58-13)
我们需要关注的是
Part Number:FPGA型号
Reference Designator:FPGA的元件位号
Pin Text:FPGA管脚号
Net Name:FPGA管脚网络名
其实如果要求不高,这份文件基本就可以了,但是对于设计者而言,仍缺少输入输出方向和IO电平标准。
FPGA的IO输入输出方向需要根据网络名手动添加,而电平标准是跟IO所在bank的供电电压有关的,所以需要将封装文件中的bank信息添加进来。
下面首先将SchematicNetlist.txt文件导入到excel中。
新建一个excel文件,“数据”——“自文本”
选择SchematicNetlist.txt,导入
选择“分隔符号”
勾选“空格”
点击“完成"
使用默认区域,”确定”
转换来的文件视图如下
在其中筛选出FPGA,并将无用的信息删除,得到如下信息
网表就转换好了。接下来导入FPGA的封装文件
二、将FPGA的封装文件导入excel
同样使用excel的“数据”——“自文本”转换方式,方法与上面相同,不再赘述。
为了方便,可以将封装文件转换到同一个excel文件的Sheet2中,转换好后如下
接下来是关键的一步,需要将封装文件的数据按照管脚号进行升序排列。
因为接下来我是用lookup函数查找添加信息,而lookup函数是采用的二分法搜索,所以必须首先把被搜索内容按序排列,否则无法返回正确的搜索结果。
排序后如下所示
三、将封装文件中的bank信息添加到网表文件中
返回网表文件(Sheet1)中,添加bank和PinName列
在bank所在的第一个空行输入函数
=LOOKUP(Sheet1!C4121,Sheet2!$A$2:$A$901,Sheet2!$D$2:$D$901)
其中:
Sheet1!C4121为所要搜索的关键字;
Sheet2!$A$2:$A$901为Sheet2(封装文件)中管脚号所在列;
Sheet2!$D$2:$D$901为bank号所在列。
这里要注意的是,需要使用绝对引用,也就是需要使用 $ 符号,否则向其他单元格填充格式时,搜索范围会随着序号的累加而越来越小,从而返回错误结果。
输入第一个函数后,用快速填充手柄向下依次填充即可
同理,也可以将封装文件中的PinName添加进来。效果如下
四、添加IO电平
复制Sheet1的该区域,将其拷贝到Sheet3中,拷贝时只拷贝数值。然后对Sheet3中的内容按照bank号进行排序
如果直接对Sheet1按照bank号进行排序,会出现公式引用错误的现象,导致bank号错乱。这里我为了简便,将其包含的公式去掉,只将数值拷贝过去,方便操作。
这个时候还是没有IO电平,如果bank数量不多,就可以手动添加。如果数量比较多,就需要设置一个自动填充方法。
数量比较多的话,使用IF语句是不太合适的,那样嵌套数量会很多,非常容易出错。
这里仍然使用lookup函数
还是在原来的excel文件里,新建一个Sheet4,在Sheet4里将规则写下。这里注意一定要把所有的bank都列全,并且要按序排列。
比如bank115~bank118,由于其是GTX,其IO电平可以不用关注,但是如果不添加的话,经过lookup函数搜索后,这几个bank对应的电源就会是CMOS1V8,会出现明显的错误。这是由于lookup二分法的搜索原理导致的。
仍然使用上述同样的办法,将IO电平添加进去。最终结果如下
到这里还需注意一点,比如虽然是同一个bank供电,但是个别管脚电平可能还不完全一致。比如同样是2.5V供电,单端IO是CMOS2V5电平,但是差分IO就是LVDS电平。所以还需要在此基础上进一步检查,修正个别IO的电平。