当我使用“整型”访问常量数组时,Synplify会修剪我的寄存器。(VHDL) Data\u Out\u SDa:进程(SCl、IntReset)正在运行 变量IntSDa:std_逻辑;——内部Sda 开始——处理数据输出数据 如果IntReset='0',则--异步重置(高电平活动) IntSDa:=“Z”; 如果SCl'event和SCl='0',则为时钟下降沿 IntSDa:=DataBuffer(to_integer(unsigned(AddrReg)); 如果结束; SDa
您将很难通过这种方式将Zs解救出来。合成器可能将它们视为“0:) 我建议您在当我使用“整型”访问常量数组时,Synplify会修剪我的寄存器。(VHDL) Data\u Out\u SDa:进程(SCl、IntReset)正在运行 变量IntSDa:std_逻辑;——内部Sda 开始——处理数据输出数据 如果IntReset='0',则--异步重置(高电平活动) IntSDa:=“Z”; 如果SCl'event和SCl='0',则为时钟下降沿 IntSDa:=DataBuffer(to_integer(unsigned(AddrReg)); 如果结束; SDa,vhdl,fpga,synthesis,Vhdl,Fpga,Synthesis,您将很难通过这种方式将Zs解救出来。合成器可能将它们视为“0:) 我建议您在DataBuffer数组中使用1s和0s,然后在进程外部驱动SDa,如下所示: Data_Out_SDa : process (SCl, IntReset) is variable IntSDa : std_logic; -- Internal Sda begin -- process Data_Out_SDa if IntReset = '0' t
DataBuffer
数组中使用1s和0s,然后在进程外部驱动SDa
,如下所示:
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;
SDa你很难用这种方式把Zs弄出来。合成器可能将它们视为“0:)
我建议您在DataBuffer
数组中使用1s和0s,然后在进程外部驱动SDa
,如下所示:
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;
SDa没有足够的信息。如果DataBuffer始终等于零,那么IntSDa也将等于零。造成这种情况的原因可能与代码完全不同。DataBuffer是一个由“Z”和“0”组成的常数121位std_逻辑_向量。我没有把它放在那里是因为代码的格式。常数数据缓冲:标准逻辑向量(0到n-1):=。。。Sda也是一个输出端口。我认为“Z”值只允许使用三态逻辑(组合逻辑)。据我所知,您正试图将其放入寄存器:-?。我认为这是不可能的。正如Dang和Philippe提到的,任何注册的常量都将被删除,并且Z仅在支持高阻抗的IOs或内部IOs上受支持,但我不知道有任何FPGA支持常量Z值。你到底为什么要在常数上浪费一个寄存器呢?非常感谢!就这样。感谢您提供的解决方案。信息不足。如果DataBuffer始终等于零,那么IntSDa也将等于零。造成这种情况的原因可能与代码完全不同。DataBuffer是一个由“Z”和“0”组成的常数121位std_逻辑_向量。我没有把它放在那里是因为代码的格式。常数数据缓冲:标准逻辑向量(0到n-1):=。。。Sda也是一个输出端口。我认为“Z”值只允许使用三态逻辑(组合逻辑)。据我所知,您正试图将其放入寄存器:-?。我认为这是不可能的。正如Dang和Philippe提到的,任何注册的常量都将被删除,并且Z仅在支持高阻抗的IOs或内部IOs上受支持,但我不知道有任何FPGA支持常量Z值。你到底为什么要在常数上浪费一个寄存器呢?非常感谢!就这样。谢谢你的解决方案。谢谢!就这样。FPGA如何知道如何存储高阻抗状态是有道理的@Mayank:欢迎使用Stack Overflow-如果你发现答案有帮助,请向上投票,如果答案是完整的,请使用“勾选”图标将其标记为“已回答”。我显然没有足够的声誉给你投票。但是谢谢你的信息,谢谢!就这样。FPGA如何知道如何存储高阻抗状态是有道理的@Mayank:欢迎使用Stack Overflow-如果你发现答案有帮助,请向上投票,如果答案是完整的,请使用“勾选”图标将其标记为“已回答”。我显然没有足够的声誉给你投票。但是谢谢你提供的信息。