Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
VHDL如何在一段时间后将输出从1切换到0? 实体seguidor是 港口( clk、sensorIzq、sensorDer、sensorDisp:标准逻辑中; Llantaiq,llantaDer,disp:out标准逻辑); 结束; seguidor的架构组件是 开始 MOVIMINTO:进程(sensorIzq、sensorDer、sensorDisp、clk) 开始 如果(sensorIzq='1'和sensorDer='0'和sensorDisp='0'),则 Llantaiq_Vhdl - Fatal编程技术网

VHDL如何在一段时间后将输出从1切换到0? 实体seguidor是 港口( clk、sensorIzq、sensorDer、sensorDisp:标准逻辑中; Llantaiq,llantaDer,disp:out标准逻辑); 结束; seguidor的架构组件是 开始 MOVIMINTO:进程(sensorIzq、sensorDer、sensorDisp、clk) 开始 如果(sensorIzq='1'和sensorDer='0'和sensorDisp='0'),则 Llantaiq

VHDL如何在一段时间后将输出从1切换到0? 实体seguidor是 港口( clk、sensorIzq、sensorDer、sensorDisp:标准逻辑中; Llantaiq,llantaDer,disp:out标准逻辑); 结束; seguidor的架构组件是 开始 MOVIMINTO:进程(sensorIzq、sensorDer、sensorDisp、clk) 开始 如果(sensorIzq='1'和sensorDer='0'和sensorDisp='0'),则 Llantaiq,vhdl,Vhdl,我在Atlys上也做过类似的事情。 拥有时钟计数器。知道.ucf文件(映射文件)中时钟的频率。 等待状态有一个布尔值isWait。当sensorDisp为1时,isWait=true 我在下面提到了伪代码 您可以使用输入clk和sensordisp为此创建单独的进程。 请记住,如果任何变量/信号在任何代码运行中未分配任何值,if将推断锁存器,因为它需要以前的值,因为它未分配 entity seguidor is port( clk, sensorIzq, sensorDe

我在Atlys上也做过类似的事情。 拥有时钟计数器。知道.ucf文件(映射文件)中时钟的频率。 等待状态有一个布尔值isWait。当sensorDisp为1时,isWait=true 我在下面提到了伪代码

您可以使用输入clk和sensordisp为此创建单独的进程。 请记住,如果任何变量/信号在任何代码运行中未分配任何值,if将推断锁存器,因为它需要以前的值,因为它未分配

entity seguidor is
    port(
        clk, sensorIzq, sensorDer, sensorDisp : in std_logic;
        llantaIzq, llantaDer, disp: out std_logic);
end;

architecture comportamiento of seguidor is

begin

    movimiento: process (sensorIzq, sensorDer, sensorDisp,clk)
     begin
        if(sensorIzq='1' and sensorDer='0' and sensorDisp = '0') then
            llantaIzq<='1';
            llantaDer<='0';
        elsif(sensorIzq='0' and sensorDer='1'and sensorDisp = '0') then
            llantaIzq<='0';
            llantaDer<='1';
        elsif(sensorIzq = '1' and sensorDer = '1' and sensorDisp = '0') then
            llantaIzq <= '1';
            llantaDer <= '1';
        elsif(sensorIzq = '1' and sensorDer = '1' and sensorDisp = '1') then
            llantaIzq <= '0';
            llantaDer <= '0';

        end if;
    end process movimiento;
    end comportamiento;
moviminto:进程(clk、sensorIzq、sensorDer、sensorDisp、clk)
开始
如果(时钟边缘),则
如果(等待)那么
如果(等待计数器<“频率”),则
等等,库特++;
其他的
isWait=False;
Disp='0';
如果结束;
其他的
如果(sensorDisp='1'),则
等待计数器=0;
isWait=True;

顺便问一下,使用超时计数器怎么样
clk
未使用,并且并非所有情况都已编码,因此您推断的是锁存。我还想指出,有时频率超过整数的最大值。在这种情况下,有两个整数信号用于计数。第一个值在第二个值与某个值交叉时递增1
movimiento: process (clk,sensorIzq, sensorDer, sensorDisp,clk)
     begin
     if(clk edge ) then 
        if (isWait) then 
            if(wait_counter < "frequency")) then 
              wait_couter++;
             else 
              isWait = False;
              Disp = '0';
            end if;
        else 
          if(sensorDisp = '1') then 
             wait_counter = 0;
             isWait = True;
              Disp <= '1';
          end if;

          if(sensorIzq='1' and sensorDer='0' and sensorDisp = '0') then
              llantaIzq<='1';
              llantaDer<='0';
          elsif(sensorIzq='0' and sensorDer='1'and sensorDisp = '0') then
              llantaIzq<='0';
              llantaDer<='1';
          elsif(sensorIzq = '1' and sensorDer = '1' and sensorDisp = '0') then
              llantaIzq <= '1';
              llantaDer <= '1';
          elsif(sensorIzq = '1' and sensorDer = '1' and sensorDisp = '1') then
              llantaIzq <= '0';
              llantaDer <= '0';
          end if;
      end if;
    end if;
    end process movimiento;
    end comportamiento;