多源合成过程中出现错误的VHDL

S

sgil

Guest
您好所有,

我试图执行以下代码:

-------------------------------------------------- --------------------------------
图书馆电机及电子学工程师联合会;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.STD_LOGIC_ARITH.ALL;
使用IEEE.STD_LOGIC_UNSIGNED.ALL;

实体fir_cu是

港口(法:在STD一LOGIC类型;
布里亚托利:在STD一LOGIC类型;
足球俱乐部:在STD一LOGIC类型;
f_d:在STD一LOGIC类型;
时钟:在STD一LOGIC类型;
reset_n在STD一LOGIC类型:);
- Ÿ:出STD_LOGIC_VECTOR(3 downto 0); -尝试删除未使用的输出端口..
-风云:内STD一LOGIC类型;
-忙:出STD一LOGIC类型);
结束fir_cu;

架构fir_cu行为是

组件图标
港口

control0:出std_logic_vector(35 downto 0)
);
结束部分;

部分伊拉
港口

控制:在std_logic_vector(35 downto 0);
时钟:在锁相环;
数据:std_logic_vector(53 downto 0);
trig0:在std_logic_vector(7 downto 0)
);
结束部分;

信号control0:std_logic_vector(35 downto 0);
信号ila_data:std_logic_vector(53 downto 0);
信号trig0:std_logic_vector(7 downto 0);
-
CNT的信号:std_logic_vector(7 downto 0);
信号Lstrobe_R1:锁相环;
信号Lstrobe_R4:锁相环;
信号Rstrobe_R1:锁相环;
信号Rstrobe_R4:锁相环;
信号selR4:std_logic_vector(1 downto 0);
信号selR1:锁相环;
信号desel_R1:锁相环;
信号desel_R4:锁相环;
信号enable_R1:锁相环;
信号enable_R4:锁相环;
信号d_strobe_Ah0:锁相环;
信号d_strobe_Y:锁相环;
信号a_strobe:锁相环;
信号b_strobe:锁相环;
信号c_strobe:锁相环;
信号d_strobe:锁相环;

信号dummy_busy:锁相环;

开始

i_icon:图标
端口映射

control0 =“control0
);

i_ila:伊拉
端口映射

控制=“control0,
时钟=“时钟,
数据=“ila_data,
trig0 =“trig0
);

-时隙0
T0代:过程(时钟)
开始
如果(clk'event和CLK = '1'),那么
如果(发= '1'和FB = '1'和FC = '1'和f_d = '1'),那么
如果(reset_n = '1'),那么
碳纳米管“=”00000000“;
如果结束;
如果结束;

a_strobe“= '1';
b_strobe“= '1';
c_strobe“= '1';
d_strobe“= '1';
selR4“=”00“;
碳纳米管“=碳纳米管 '1';

如果结束;
T0代末的过程;

-时隙1
T1:过程(时钟)
开始
如果(clk'event和CLK = '1'),那么
如果(碳纳米管=“00000001”),则
dummy_busy“= '1';
Lstrobe_R1“= '1';
Lstrobe_R4“= '1';
碳纳米管“=碳纳米管 '1';

elsif(碳纳米管=“000000010”),则
enable_R4“= '1';
selR4“=”01“;
selR1“= '0';
desel_R4“= '0';
碳纳米管“=碳纳米管 '1';elsif(碳纳米管=“00000011”),则
碳纳米管“=碳纳米管 '1';
Lstrobe_R1“= '0';
Lstrobe_R4“= '0';
enable_R4“= '0';

elsif(碳纳米管=“00000100”),则
Rstrobe_R4“= '1';
碳纳米管“=碳纳米管 '1';

elsif(碳纳米管=“00000101”),则
d_strobe_Ah0“= '1';
碳纳米管“=碳纳米管 '1';

elsif(碳纳米管=“00000110”),则
碳纳米管“=碳纳米管 '1';
如果结束;

如果结束;
结束进程T1处理器

-时隙2
T2:过程(时钟)
开始
如果(clk'event和CLK = '1'),那么
如果(碳纳米管=“00000111”),则
Lstrobe_R1“= '1';
Lstrobe_R4“= '1';
碳纳米管“=碳纳米管 '1';

elsif(碳纳米管=“00001000”),则
enable_R1“= '1';
enable_R4“= '1';
selR4“=”10“;
selR1“= '1';
desel_R4“= '1';
desel_R1“= '0';
碳纳米管“=碳纳米管 '1';

elsif(碳纳米管=“00001001”),则
碳纳米管“=碳纳米管 '1';
Lstrobe_R1“= '0';
Lstrobe_R4“= '0';
enable_R4“= '0';
enable_R1“= '0';

elsif(碳纳米管=“00001010”),则
Rstrobe_R4“= '1';
Rstrobe_R1“= '1';
碳纳米管“=碳纳米管 '1';
如果结束;

如果结束;
结束进程T2;

ila_data(7 downto 0)“=碳纳米管(7 downto 0);
ila_data(

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="凉爽的" border="0" />

“=发;
ila_data(9)“=蛋白原;
ila_data(10)“=足球俱乐部;
ila_data(11)“= f_d;
ila_data(12)“=时钟;
ila_data(13)“= Lstrobe_R1;
ila_data(14)“= Lstrobe_R4;
ila_data(15)“= Rstrobe_R1;
ila_data(16)“= Rstrobe_R4;
ila_data(18 downto 17)“= selR4(1 downto 0);
ila_data(19)“= desel_R1;
ila_data(20)“= desel_R4;
ila_data(21)“= enable_R1;
ila_data(22)“= enable_R4;
ila_data(23)“= d_strobe_Ah0;
ila_data(24)“= d_strobe_Y;
ila_data(25)“= dummy_busy;

trig0(0)“=发;
trig0(1)“=蛋白原;
trig0(2)“=足球俱乐部;
trig0(3)“= f_d;

为此行为;

------------------------------------
但是我得到多个错误-我检查了赛灵思支持网站
, 以找出可能的原因
, 但并没有真正帮助..或者我可能不知道到底是什么改变...我得到了以下内容:
================================================== ======================

错误:血栓通:528 -多源<fir_cu>在单位的信号<desel_R4>
来源:
信号在单位<desel_R4> <fir_cu>被分配到VCC

错误:血栓通:528 -多源<fir_cu>在单位的信号<Lstrobe_R1>
来源:
输出信号的FD实例<Lstrobe_R1>
输出信号FDSE实例<Lstrobe_R1_ren>

错误:血栓通:528 -多源<fir_cu>在单位的信号<enable_R1>
来源:
输出信号的FD实例<enable_R1>
输出信号的频域均衡实例<enable_R4>

错误:血栓通:528 -多源<fir_cu>在单位的信号“selR4”1“”
来源:
信号“selR4”“在单位”1 <fir_cu>被分配至GND

错误:血栓通:528 -多源<fir_cu>在单位的信号“selR4”0“”
来源:
信号“selR4”“在单位”0 <fir_cu>被分配到VCC

错误:血栓通:528 -多源<fir_cu>在单位的信号“CNT的”3“”
来源:
FATAL_ERROR:血栓通:可移植性/出口/ Port_Main.h:127:1.17 -此应用程序发现了异常情况
, 从它无法恢复。过程将终止。有关此错误信息,请参考答案数据库或打开附件时http://www.xilinx.com/support这一项目WebCase。

工艺“合成”失败

 
只有一个进程可以作为一个信号驱动程序。在你的代码有很多信号驱动多个进程,因此错误。

 
谢谢您及时答复ring0

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="微笑" border="0" />

...

你是对的...我有一个问题,我什么时候可以有多个进程?难道只有当所有这些信号被驱动的过程是互相排斥/无关彼此?

在这种情况下,我将修改我的代码
, 这样我只有一个进程
, 看看是否工作..

 
例如,您可以有多个进程的一个进程时
, 从其他过程中使用的输出。只是必须确保没有信号是由(或几个进程并行任务驱动)。

 
我得到消除的错误使用一个进程和仿真工程完美。

如果我想使用另一个进程使用的第一个进程的输出我的第二次过程需要所有这些信号(用于从进程1)在其灵敏度名单?还是应该'时钟'就够了?

谢谢

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="微笑" border="0" />
 
对于边缘同步进程(触发器),时钟信号是足够了的灵敏度列表(和异步明确的信号
, 如果你使用它)。对于龙头和异步过程中你应该提到
, 在过程中使用的灵敏度列表
, 以确保模拟和综合之间的等价每一个信号。

 

Welcome to EDABoard.com

Sponsor

Back
Top