Fallo de instancia de componente VHDL, ¿Entidad o arquitectura erróneas?

3

Quiero diseñar un receptor / transmisor UART y ya he desarrollado el receptor , pero cuando declaro y crea una instancia del componente del receptor en el diseño de mi placa principal, obtengo muchos errores de sintaxis en ambos archivos, la placa base y el receptor de uart.

El siguiente es el diseño de la placa base. Yo uso genéricos. ¿Podría estar el problema aquí? Ya probé diferentes enfoques como configurar los genéricos con ":" o con "= >" En la instanciación pero nada funcionó. Es un diseño vhdl para una FPGA altera (ciclón V), estoy usando Quartus II Lite. Obtuve el diseño de un sitio de Internet ( enlace )

LIBRARY IEEE;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;

ENTITY mainboard is
PORT( CLOCK_50_B5B : IN STD_LOGIC;
        LEDG : OUT STD_LOGIC_VECTOR(7 downto 0);
        LEDR : OUT STD_LOGIC_VECTOR(7 downto 0);
        KEY : IN STD_LOGIC_VECTOR(4 downto 0);
        CPU_RESET_n : in STD_LOGIC;
        GPIO : INOUT STD_LOGIC_VECTOR(36 downto 0)
     );
END ENTITY;

ARCHITECTURE behavior of mainboard is
SIGNAL LED_7 : STD_LOGIC;
SIGNAL LED_6 : STD_LOGIC;
SIGNAL CLK100 : STD_LOGIC;
SIGNAL locked : STD_LOGIC;
SIGNAL SF_D_signal : STD_LOGIC_VECTOR(3 downto 0);
SIGNAL Reset : STD_LOGIC;
SIGNAL RX_byte_sig : STD_LOGIC_VECTOR(7 downto 0);

component uart_rx
generic (g_CLKS_PER_BIT : integer);
port (
  i_clk       : in  std_logic;
  i_rx_serial : in  std_logic;
  o_rx_dv     : out std_logic;
  o_rx_byte   : out std_logic_vector(7 downto 0)
  );
  end component;



component Test1_Led
port ( clk_in : in STD_LOGIC;
        led_out : out STD_LOGIC);
end component;

component test
port ( refclk   : in  std_logic;
        rst      : in  std_logic;
        outclk_0 : out std_logic;        -- outclk0.clk
        locked   : out std_logic);
end component;

component lcd_control
port ( clk : in STD_LOGIC;          
         reset : in STD_LOGIC;      
         init : in STD_LOGIC;
         init_ok : out STD_LOGIC;
         row_select : in STD_LOGIC;
         Data_in : in STD_LOGIC_VECTOR(19 downto 0);
         SF_D : out STD_LOGIC_VECTOR(11 downto 8);      
         LCD_E : out STD_LOGIC;     
         LCD_RS : out STD_LOGIC;    
         LCD_RW : out STD_LOGIC;    
         SF_CE0 : out STD_LOGIC);   
end component;

constant c_CLKS_PER_BIT : integer := 54;



BEGIN

lcd1 : lcd_control
port map ( clk => CLOCK_50_B5B,
              reset => Reset,
              init => '1',
              init_ok => LEDG(0),
              row_select => '0',
              LCD_RS => GPIO(35),
              LCD_RW => GPIO(33),
              LCD_E => GPIO(31),
              SF_D(11 downto 8) => SF_D_signal(3 downto 0),
              SF_CE0 => GPIO(0),
              Data_in => "00010010001101000000");

led1 : Test1_Led
port map ( clk_in => CLOCK_50_B5B,
              led_out => LED_7);

led2 : Test1_Led
port map ( clk_in => CLK100,
              led_out => LED_6);

test_inst : test
port map ( refclk => CLOCK_50_B5B,
              rst => not KEY(0),
              outclk_0 => CLK100,
              locked => locked);

uart_rx_inst : UART_RX
generic map ( g_CLKS_PER_BIT => 54)
port map (i_Clk => CLOCK_50_B5B,
          i_RX_Serial => GPIO(1),
          o_RX_DV => LEDG(3),
          o_RX_Byte => RX_byte_sig);




Reset <= not CPU_RESET_n;                 

LEDG(7) <= LED_7;
LEDG(6) <= LED_6;
LEDG(5) <= CPU_RESET_n;
LEDG(4) <= Reset;

LEDR(7) <= GPIO(1);


GPIO(19) <= SF_D_signal(0);
GPIO(21) <= SF_D_signal(1);
GPIO(23) <= SF_D_signal(2);
GPIO(25) <= SF_D_signal(3);
LEDR(3 downto 0) <= SF_D_signal(3 downto 0);


END ARCHITECTURE;

El archivo de diseño de Uart (entidad) está codificado de esta forma:

library ieee;
use ieee.std_logic_1164.ALL;
use ieee.numeric_std.all;

entity UART_RX is
 generic (g_CLKS_PER_BIT : integer := 54);
 port ( i_Clk       : in  std_logic;
       i_RX_Serial : in  std_logic;
       o_RX_DV     : out std_logic;
       o_RX_Byte   : out std_logic_vector(7 downto 0));
end UART_RX;
... 

Recibí los siguientes errores:

  

Error (10500): Error de sintaxis VHDL en mainboard.vhd (96) cerca del texto "Â"; esperando que > ";", o "puerto", o "genérico"      

Error (10500): Error de sintaxis VHDL en mainboard.vhd (97) cerca del texto "puerto"; > esperando "<="      

Error (10500): error de sintaxis VHDL en mainboard.vhd (98) cerca del texto "Â"; esperando > "!", o "= >"      

Error (10500): Error de sintaxis VHDL en mainboard.vhd (99) cerca del texto "Â"; esperando > "!", o "= >"      

Error (10437): Error de lista de asociación VHDL en mainboard.vhd (98): las asociaciones posicionales > deben aparecer antes de las asociaciones nombradas      

Error (10500): Error de sintaxis VHDL en mainboard.vhd (100) cerca del texto ";"; > esperando "<="

Y en el archivo uart:

  

Error (10500): error de sintaxis VHDL en UART_RX.vhd (5) cerca del texto "Â"; esperando > "entidad", o "arquitectura", o "usar", o "biblioteca", o "paquete", o > "configuración"      

Error (10500): error de sintaxis VHDL en UART_RX.vhd (7) cerca del texto "Â"; esperando > "fin", o "comenzar", o una declaración de declaración   Error (10523): se omitió la construcción UART_RX en UART_RX.vhd (6) debido a errores anteriores >      

Error (10500): error de sintaxis VHDL en UART_RX.vhd (15) cerca del texto "Â"; esperando > "entidad", o "arquitectura", o "usar", o "biblioteca", o "paquete", o > "configuración"      

Error (10500): error de sintaxis VHDL en UART_RX.vhd (18) cerca del texto "Â"; esperando > "begin", o una declaración de declaración      

Error (10500): error de sintaxis VHDL en UART_RX.vhd (20) cerca del texto "Â"; esperando > ")", o ","   Error (10500): Error de sintaxis VHDL en UART_RX.vhd (21) cerca del texto "Â"; esperando > "begin", o una declaración de declaración

¿Puedes ayudarme a encontrar el error?     

pregunta hendrik2k1

1 respuesta

2

Encontré el problema. Había algunos caracteres dentro del código que el editor y / o la herramienta de síntesis no conocen. Yo era la A con circunflejo por encima de ella. Pero la carta no se mostraba en la ventana del editor en esta línea. Quizás se integró allí desde una fuente diferente al copiar algo.

    
respondido por el hendrik2k1

Lea otras preguntas en las etiquetas