原创 ALTERA Cyclone 10器件的使用-5:模块复用在导入时遇到的问题

2024-5-19 10:42 293 1 1 分类: FPGA/CPLD 文集: ALTERA FPGA

ALTERA Cyclone 10器件的使用-5:模块复用在导入时遇到的问题

概述

复用模块导入时,该复用模块的输入端口在设计者侧被接入到物理I/O,而在使用者侧导入QDB文件后,FIT时报错。

导入QDB后布局布线报错

使用者一侧导入设计者一侧传导来的QDB文件,然后进行工程全编译,在开始Fit不久后出现了如图1所示的错误提示。出错的是子模块中的一个16-bit的数据总线,从错误信息可以看出,编译器认为该总线在之前编译的时候是连接到器件I/O引脚上的,导入后该总线用于内部逻辑互联通讯,所以给出了冲突报错提示。

C:.Users.Administrator.Documents.Tencent Files.969737034.nt_qq.nt_data.Pic.2024-05.Ori.0c09b2a95061d5fac8e83475369f3ae7.png

图1:使用者侧导入QDB后编译时遇到的错误

上述错误提取一条打印如下:


Error(18568): Output port "SEP_2BLK_CORE_|HostDataOut(0)~pad" in partition "SEP_2BLK_CORE_" was implemented as a device I/O in an earlier compile, but is now being used to drive other logic. Output ports that have previously be implemented as device I/O may only be used as device I/O in future compiles.



设计者侧对分区端口的处理

上述报错信息在设计者一侧也出现类似情况,Quartus在布局布线的时候,对于这个输出的数据总线要求将其接入到器件的I/O引脚,否则编译不通过,错误信息如图2所示。所以设计者一侧就将该数据总线连接到器件I/O引脚上,然后使用者这一侧其它逻辑模块会使用到该数据总线,所以在使用者一侧来说,该数据总线仅为内部逻辑模块内部连接的总线,由此在使用者一侧Quartus给出如图1所示的错误信息。

图2:同样的数据总线在设计者一侧遇到的错误

问题分析与解决

根据很久之前ALTERA对于增量编译的培训,三态端口或总线不能划分为分区输入输出端口,必须(must be)接入顶层I/O引脚,图2所示错误,就是这样的原因。上述出问题的数据总线确实是与其它模块中的三态总线相关,不过在复用模块设计者一侧,该总线分离为独立的输入和输出总线,已经不属于“三态”总线了,但是为何还是会出现上述让双方矛盾的问题呢?

通过检查代码,发现模块复用修改的时候是基于之前使用三态总线的源文件,所以该总线输出方向保留了三态描述,即:


HostDataOut <= (others => 'Z');


只需将上述代码描述修改为如下所示即可。


HostDataOut <= (others => '0');


作者: coyoo, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-1010859.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
1
关闭 站长推荐上一条 /6 下一条