Quiero diseñar un receptor / transmisor UART y ya he desarrollado el receptor vhdl , 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?