2 votos

Estándar de E/S no especificado: 5 de 5 puertos lógicos utilizan el estándar de E/S

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 módulo inferior. Mi código es similar a mis compañeros de clase, pero yo soy el único que se encuentra con 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 'DEFAULT' del estándar de E/S (IOSTANDARD), en lugar de un valor específico asignado por el usuario. Esto puede causar contención de E/S o incompatibilidad con la alimentación o conectividad de la placa afectando al rendimiento, integridad de la señal o en casos extremos causar 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 de secuencias de bits con valores estándar de E/S no especificados (no recomendado), utilice este comando: set_property SEVERITY {Warning} [get_drc_checks NSTD-1]. NOTA: Cuando utilice la infraestructura Vivado Runs (por ejemplo, el comando Tcl launch_runs), añada este comando a un archivo .tcl y añada ese archivo como pre-hook 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]

3voto

Sunil Kumar Sahoo Puntos 21032

No entiendo cómo has podido pasar de la fase de síntesis, por no hablar de la aplicación.

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

que escribas (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 los puertos reales se declaran 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 arreglado eso, sigues teniendo el problema de que tu flip-flop es un latch. Supongo que usted entiende esto, ya que ha comentado a cabo el uso de la clk señal, pero lo señalo de todos modos para hacerle consciente de que Vivado emitirá montones de advertencias relacionadas con esto.


Actualización basada en post editado

Tu código actualizado aún necesita algunas modificaciones. Pero si hago la suposición de que por:

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);

quieres decir realmente:

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. Te sugiero que compruebes que tu proyecto se dirige a la FPGA correcta y que tu archivo de restricciones está activado (haz clic con el botón derecho en el archivo de la jerarquía). Si tienes varios archivos de restricciones, también debes asegurarte de que el objetivo es el correcto.

Una cosa que definitivamente causará este mensaje de error, es si su proyecto no tiene laboratorio16 como su top módulo. Haga clic con el botón derecho del ratón en lab16 - Comportamiento en la pestaña Fuentes⟶Herarquía y haga clic en Establecer como Top .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X