1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这两天在使用Xilinx的XC9500家族的CPLD修改一款产品,然后就碰到了一个很让人无语的问题,上网查询也没找到解决之道,今天无意中多瞟了一眼,结果竟然让我给解决了,也算是瞎猫撞上死耗子吧,也许有人早就遇到过该问题,也解决了但是没有记录而已,所以对于第一次碰见这问题的就有点束手无策了,题外话就说到这儿,下面就把我遇到的具体问题以及怎么解决的记录一下。 文|原创:卧龙会 疯子 由于是别人的产品,不方便拿来做讲解,所以我就简单画了一个PWM波生成的小逻辑,用来演示我遇到的问题以及解决方法。话不多说,先看图1,这是顶 图1 层设计,由2个163计数器,一个8位比较器和几个输入输出缓冲构成,很简单吧,由于比较简单,所以顶层直接用的原理图设计,并且这几个元件都是直接从Xilinx的库中取的,没有一个自己写的东西,我们看一下对外的端口,只有一个CLK,一个RSTn,一个8位的占空比常数输入,原创微信公众号:卧龙会IT技术。一个PWMO输出,总共是占用了11个管脚,确保没有逻辑错误,然后就可以进行综合了。 如图2,完成之后看了一下只有综合阶段由几个无关紧要的警告,不理他,下面开始进行管教约束。双击UserConstrains下面的FloorPlanIO-Pre-Synthesis,弹出如图3所示界面,在DesignObjectList – I/OPins我们看到出现了8个输入,8个输出,而不是设计中的11个管脚,这个问题很奇怪,我以前做这种设计也都是用的顶层原理图啊,没出现过这种问题,并且不管怎么修改编译器的选项都没用,每次打开都还是如此,跟我的设计不匹配,那么问题究竟在哪里呢,打开工程目录如图4所示。 我们看到出现了一个跟顶层原理图同名的.vhd文件(因为我的首选语言是VHDL,若是Verilog的话,应该会出现一个.v文件),这是自动生成的,用文本编辑器打开它看看里面的内容,如图5所示,可以看到里面的实体并不是我的顶层实体,继续往下看发现还有好多个实体,而我设计的顶层实体在最后一个,再看一下第一个实体有8个输入,8个输出,莫非刚刚的管脚约束管理器里 图2 图3 图4 图5 面的管脚信息是他的?我们试试,将这个.vhd文件里面的其他实体都删掉,然后只保留顶层实体,重新编译,完成之后再次打开管脚约束管理器,我们发现还是图3那种情况,难道我们猜错了,仔细一想不对,这个.vhd文件是由编译器在编译过程中由原理图生成的,所以只修改这个文件肯定不行,那就做绝一点,用修改后的vhd文件代替原理图文件作为顶层试试,如图6所示,代替之后我 图6 们发现工程的层次有了变化,原先原理图做顶层的时候就只有一个原理图顶层,而用vhd做顶层之后,下层有了元件信息,先不管这个,编译试试,完成之后再次打开管脚约束管理器,如图7所示,这回的管脚信息正确了,我们可以对管脚 图7 进行锁定了。 到这里这个问题算是解决了,但是为什么会出现这个问题,我就想吐槽一下Xilinx了,这一点做得确实很奇葩,顶层使用原理图设计时在编译过程中生成vhd文件时候只生成了一个,但是实际应该有很多个元件,他把这很多个元件生成到一个vhd文件中了,至于是怎么排序的我就不知道了,然而我们在编译vhd文件的时候里面有很多个实体并不会报错,但是只有第一个实体生成了管脚信息,原创微信公众号:卧龙会IT技术。所以这里就出现了管脚约束的错误,不像Altera家的,不管用的是自己写的模块还是库里的模块,他都会为每个元件单独生成一个vhd文件,不至于出现这种低级错误。还有如果顶层图里面用到的所有元器件都是自己写的话就不会出现这个问题,希望有遇到过这个问题的看过这篇记录以后能顺利解决。 微信 | 微博:卧龙会IT技术 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
卧龙会:【软件】Hibernate session开启与数据库物理连接的时间关系
2079 浏览 0 评论
Layout工程师面试套路多?小心下个就是你【卧龙会-不安分的馒头】
5329 浏览 0 评论
11276 浏览 0 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:34 , Processed in 0.599196 second(s), Total 38, Slave 29 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号