问题描述
CoolRunner-II / XPLA3中的锁存器在硬件中无法正常工作。但是,仿真似乎是正确的。
解决/修复方法
LCDP无法正常运行的原因是因为PRESET输入没有“库指南”中记录的优先级。根据Libraries Guide,PRE输入在ACLR输入后应具有第二优先级;但是,它不是硬件。 GATE输入的优先级高于PRE输入。这意味着如果PRE和GATE都被置位,那么GATE将影响锁存器的输出;如果D低,那么Q也会很低。
这是器件的预期行为。将更新库指南和仿真模型,以在更高版本的软件中反映这一点。
要在CLR之后使用PRESET使Latch运行,可以使用以下代码创建组合锁存器:
库IEEE;
使用IEEE.STD_LOGIC_1164.ALL;
使用IEEE.STD_LOGIC_ARITH.ALL;
使用IEEE.STD_LOGIC_UNSIGNED.ALL;
实体LDCP_TEST是
端口(PRESET:在std_logic中;
CLR:在std_logic中;
GATE:在std_logic中;
D_in:在std_logic中;
Q_out:输出std_logic
);
结束LDCP_TEST;
体系结构LDCP_TEST的行为是
signal int_Q:std_logic;
开始
Q_out <= int_Q;
int_Q <=不是CLR和(PRESET或(int_Q而不是GATE)或(int_Q和D_in)或(GATE和D_in));
结束行为;
没有回复内容