我正在开发一个用于flash接口的VHDL程序。在编译我的程序时,我收到了这个错误。
如图所示,两个信号(右侧)是" xnor" ed和result分配给输出(flash_oe)。
任何人都可以描述这条错误消息是什么吗?
答案 0 :(得分:4)
Google搜索"Error (10028) altera"首先返回this Altera Quartus II help,说:
无法为网络"< name>"解析多个常量驱动程序at< location> (ID:10028)
原因:
在当前设计中,多个常数(非三态)驱动器竞争指定的网络,该网络由Quartus II Integrated Synthesis创建,用于表示一个或多个信号。当Verilog设计文件(.v)或VHDL设计文件(.vhd)包含对同一信号的多个并发分配时,通常会发生这种情况。 Quartus II Integrated Synthesis尝试解决电气等效分配,但无法将竞争分配解析为单个等效驱动器。此消息正下方的消息表明网络上的常量驱动程序与网络的第一个常量驱动程序冲突。
操作:检查设计是否有同一信号的多个并发分配。
情况是在综合中每个信号只能有一个驱动器,在模拟中可以有多个用于解析信号的驱动器,因此您可能会看到设计在模拟中通过编译,但在合成中没有
因此,请为flash_oe
寻找多个驱动器。
答案 1 :(得分:2)
你在做这样的事吗?
ENTITY test IS
PORT ( sig1, sig3 : IN BIT;
sig2 : OUT BIT);
END test;
---------------------------
ARCHITECTURE test_arch of test is
BEGIN
PROCESS(sig1)
BEGIN
sig2 <= '0';
END process;
PROCESS(sig3)
BEGIN
sig2 <= '1';
END process;
END test_arch;
让我们测试一下这段代码:
ghdl -a test.vhd
ghdl -e test
ghdl -r test
我们收到此错误:
sig2
./test:error: several sources for unresolved signal
for signal: .test(test_arch).ghdl: compilation error
这与您在上面发布的内容类似,并且它出现了,因为我的代码在两个不同的进程中为sig2
分配了一个值。怎么能在电路中实现呢?
也许有一种解决方法,我没有为您的问题提供解决方案,因为我不知道您的代码是什么样的。