Estándar de E / S sin especificar: 5 de los 5 puertos lógicos utilizan el estándar de E / S

2

Sigo recibiendo este error cuando genero el flujo de bits en mi código VHDL. No estoy seguro de por qué no funciona, creo que tiene algo que ver con el archivo de restricción o el módulo inferior. Mi código es similar a mis compañeros de clase, pero soy el único que tiene este problema.

aquí está el mensaje de error completo

  

[DRC NSTD-1] Estándar de E / S no especificado: 4 de cada 4 puertos lógicos utilizan el valor estándar de I / O (IOSTANDARD) 'DEFAULT', en lugar de un valor específico asignado por el usuario. Esto puede provocar conflictos de E / S o incompatibilidad con la alimentación o conectividad de la placa, lo que afecta el rendimiento, la integridad de la señal o, en casos extremos, daños al dispositivo o a los componentes a los que está conectado. Para corregir esta violación, especifique todos los estándares de E / S. Este diseño no generará un flujo de bits a menos que todos los puertos lógicos tengan definido un valor estándar de E / S especificado por el usuario. Para permitir la creación del flujo de bits con valores estándar de E / S no especificados (no recomendado), use este comando: set_property SEVERITY {Advertencia} [get_drc_checks NSTD-1]. NOTA: Cuando use la infraestructura de Ejecuciones de Vivado (por ejemplo, el comando Tcl de launch_runs), agregue este comando a un archivo .tcl y agregue ese archivo como un gancho previo para el paso write_bitstream para la ejecución de la implementación. Puertos problemáticos: a_bL, a_bR, entrada y salida.

Mi módulo superior es

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity lab16 is
Port ( sw : in STD_LOGIC_VECTOR (3 downto 0);
       led : out STD_LOGIC_VECTOR (7 downto 0);
       btnL : in STD_LOGIC;
       btnR : in STD_LOGIC);
end lab16;

architecture Behavioral of lab16 is

signal A , B , C , D , W , X , Y , Z , bL, bR. c1 : STD_LOGIC;
component Lab16_1
        Port ( a_A, a_bL, a_bR, clock, reset: in STD_LOGIC;
               a_N : out STD_LOGIC);        
    end component;

begin

A <= sw(0);
B <= sw(1);
C <= sw(2);
D <= sw(3);

bR <= btnR;
bL <= btnL;
c1 <= clk;
FlipFlop1:  Lab16_1 port map (a_A => A, a_bL => bL, a_bR => bR, reset => '0', clock => '1', a_N => W);
FlipFlop2:  Lab16_1 port map (a_A => B, a_bL => bL, a_bR => bR, reset => '0', clock => '1', a_N => X);
FlipFlop3:  Lab16_1 port map (a_A => C, a_bL => bL, a_bR => bR, reset => '0', clock => '1', a_N => Y);
FlipFlop4:  Lab16_1 port map (a_A => D, a_bL => bL, a_bR => bR, reset => '0', clock => '1', a_N => Z);
led(0) <= sw(0);
led(1) <= sw(1);
led(2) <= sw(2);
led(3) <= sw(3);
led(4) <= W;
led(5) <= X;
led(6) <= Y;
led(7) <= Z;

end Behavioral;

Módulo inferior

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity Lab16_1 is
    port(
         a_A, a_bL, a_bR, reset, clock : in STD_LOGIC;
         a_N : out STD_LOGIC
        );
end entity Lab16_1;

architecture Behavioral of Lab16_1 is
begin
process (a_bL, a_bR) is
begin
  --if rising_edge(clock) then  
     if (a_bL ='1') then   
        a_N <= '0';
     elsif (a_bR = '1') then
        a_N <= a_A;

     end if;
  --end if;
end process;
end architecture Behavioral;

Archivo de restricciones

 ## Switches
set_property PACKAGE_PIN V17 [get_ports {sw[0]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {sw[0]}]
set_property PACKAGE_PIN V16 [get_ports {sw[1]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {sw[1]}]
set_property PACKAGE_PIN W16 [get_ports {sw[2]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {sw[2]}]
set_property PACKAGE_PIN W17 [get_ports {sw[3]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {sw[3]}]

## LEDs
set_property PACKAGE_PIN U16 [get_ports {led[0]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property PACKAGE_PIN E19 [get_ports {led[1]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property PACKAGE_PIN U19 [get_ports {led[2]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property PACKAGE_PIN V19 [get_ports {led[3]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
set_property PACKAGE_PIN W18 [get_ports {led[4]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {led[4]}]
set_property PACKAGE_PIN U15 [get_ports {led[5]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {led[5]}]
set_property PACKAGE_PIN U14 [get_ports {led[6]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {led[6]}]
set_property PACKAGE_PIN V14 [get_ports {led[7]}]                    
set_property IOSTANDARD LVCMOS33 [get_ports {led[7]}]

##Buttons
set_property PACKAGE_PIN W19 [get_ports btnL]                       
set_property IOSTANDARD LVCMOS33 [get_ports btnL]
set_property PACKAGE_PIN T17 [get_ports btnR]                        
set_property IOSTANDARD LVCMOS33 [get_ports btnR]

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets btnR] 
    
pregunta TyJHarris

1 respuesta

3

No entiendo cómo lo superó la etapa de síntesis, y mucho menos la implementación.

En su módulo superior, especifica el componente Lab16_1 con un mapa de puertos que no se parece en nada a los puertos reales.

escribes (en el módulo superior):

component Lab16_1
    Port ( input, cl_k, rs_t: in STD_LOGIC;
           output : out STD_LOGIC);        
end component;

mientras que tus puertos reales están declarados como

entity Lab16_1 is
port(
  clk : in  std_logic;
  rst : in  std_logic;
  pre : in  std_logic;
  ce  : in  std_logic;
  d   : in  std_logic;
  q   : out std_logic
);
end entity Lab16_1;

Una vez que hayas solucionado eso, todavía tienes el problema de que tu flip-flop es un pestillo. Asumo que entiendes esto, ya que has comentado tu uso de la señal clk , pero te lo indico de todos modos para que te des cuenta que Vivado emitirá montones de advertencias relacionadas con esto.

Actualización basada en la publicación editada

Tu código actualizado todavía necesita algunas modificaciones. Pero si hago el supuesto de que:

FlipFlop1:  Lab16_1 port map (a_A => A, a_bL => bL, a_bR => bR, reset => '0', clock => '1', a_N => W);
FlipFlop2:  Lab16_1 port map (a_A => B, a_bL => bL, a_bR => bR, reset => '0', clock => '1', a_N => X);
FlipFlop3:  Lab16_1 port map (a_A => C, a_bL => bL, a_bR => bR, reset => '0', clock => '1', a_N => Y);
FlipFlop4:  Lab16_1 port map (a_A => D, a_bL => bL, a_bR => bR, reset => '0', clock => '1', a_N => Z);

realmente quieres decir:

FlipFlop1:  Lab16_1 port map (a_A => A, a_bL => btnL, a_bR => btnR, reset => '0', clock => '1', a_N => W);
FlipFlop2:  Lab16_1 port map (a_A => B, a_bL => btnL, a_bR => btnR, reset => '0', clock => '1', a_N => X);
FlipFlop3:  Lab16_1 port map (a_A => C, a_bL => btnL, a_bR => btnR, reset => '0', clock => '1', a_N => Y);
FlipFlop4:  Lab16_1 port map (a_A => D, a_bL => btnL, a_bR => btnR, reset => '0', clock => '1', a_N => Z);

entonces, soy capaz de generar un flujo de bits. Le sugeriría que vuelva a verificar que su proyecto esté apuntando al FPGA correcto y que su archivo de restricciones esté realmente habilitado (haga clic con el botón derecho en el archivo en la Jerarquía). Si tiene varios archivos de restricciones, también debe asegurarse de que está seleccionado el correcto.

Una cosa que definitivamente causará este mensaje de error, es si su proyecto no tiene lab16 configurado como su módulo superior . Haga clic con el botón derecho en lab16 - Behavioral en la pestaña de jerarquía de fuentes y haga clic en Establecer como parte superior .

    
respondido por el Blair Fonville

Lea otras preguntas en las etiquetas