Data_Out_SDa : process (SCl, IntReset) is
variable IntSDa : std_logic; -- Internal Sda
begin -- process Data_Out_SDa
if IntReset = '0' then -- asynchronous reset (active high)
IntSDa := 'Z';
elsif SCl'event and SCl = '0' then -- falling clock edge
IntSDa := DataBuffer(to_integer(unsigned(AddrReg)));
end if;
SDa <= IntSDa;
end process Data_Out_SDa;
DataBuffer 是一个 121 位常量 std_logic_vector。sda 是一个输出端口
代码合成良好。但我收到警告 Pruning Register IntSda, (CL169) 和警告 Optimizing register bit IntSda to a constant 0 (Cl190)
出于某种原因,综合工具解释说 IntSda 将始终为 0。注意 IntReset 是一个输入。AddrReg 是计数器的输出,它在 SCl 的时钟上升沿改变值。计数器合成良好,我在 FPGA 上对其进行了测试,并使用逻辑分析仪查看了输出。我不知道为什么会这样。我可以保留保留,但我认为这是一种权宜之计,不能替代了解根本原因。