Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我使用“整型”访问常量数组时,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 - Fatal编程技术网

当我使用“整型”访问常量数组时,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

当我使用“整型”访问常量数组时,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

您将很难通过这种方式将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你很难用这种方式把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-如果你发现答案有帮助,请向上投票,如果答案是完整的,请使用“勾选”图标将其标记为“已回答”。我显然没有足够的声誉给你投票。但是谢谢你提供的信息。