Я составил самый простой процессор на Ниосе....
Попробивал запустить и откомпилировать. Всё работает! дальше...
Написал VGA модуль на VHDL:
CODE
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY vga_sync_gv IS
PORT
(
clk : IN STD_LOGIC;
v_sync : out STD_LOGIC;
h_sync : OUT STD_LOGIC;
h_out, v_out : INOUT INTEGER RANGE 0 TO 1023;
VGA_Blank, VGA_sync : INOUT STD_LOGIC;
blue, red, green : OUT STD_LOGIC_VECTOR(9 DOWNTO 0)
);
END vga_sync_gv;
ARCHITECTURE a OF vga_sync_gv IS
SIGNAL h, v: INTEGER RANGE 0 TO 1023;
BEGIN
PROCESS
VARIABLE video_on_h, video_on_v: STD_LOGIC;
BEGIN
WAIT UNTIL RISING_EDGE(clk);
IF h < 800 THEN --skaita 800 horizontâlos pixeïus (ieskaitot palîgpixeïus)!
h <= h + 1;
ELSE
h <= 0;
END IF;
IF ( h <= 755 ) AND (h >= 659 ) THEN
h_sync <= '0';
ELSE
h_sync <= '1';
END IF;
IF ( v >= 524 ) AND ( h >= 699 ) THEN
v <= 0;
ELSIF ( h = 699 ) THEN
v <= v + 1;
END IF;
------------------------------------------
IF ( v <= 494 ) AND ( v >= 493 ) THEN
v_sync <= '0';
ELSE
v_sync <= '1';
END IF;
IF ( h <= 639 ) THEN
video_on_h := '1';
h_out <= h;
ELSE
video_on_h := '0';
END IF;
IF ( v <= 479 ) THEN
video_on_v := '1';
v_out <= v;
ELSE
video_on_v := '0';
END IF;
VGA_Blank<= (video_on_h AND video_on_v);
END PROCESS;
PROCESS (VGA_Blank, v_out, h_out)
BEGIN
blue<= "0000000000";
red<= "0000000000";
green<= "0000000000";
IF (h_out > 100) AND (h_out<400) AND (v_out > 100) AND (v_out<300) THEN
green<= "0011100000";
blue<= "1001100000";
red<= "1111100000";
END IF;
END PROCESS;
END a;
USE ieee.std_logic_1164.ALL;
ENTITY vga_sync_gv IS
PORT
(
clk : IN STD_LOGIC;
v_sync : out STD_LOGIC;
h_sync : OUT STD_LOGIC;
h_out, v_out : INOUT INTEGER RANGE 0 TO 1023;
VGA_Blank, VGA_sync : INOUT STD_LOGIC;
blue, red, green : OUT STD_LOGIC_VECTOR(9 DOWNTO 0)
);
END vga_sync_gv;
ARCHITECTURE a OF vga_sync_gv IS
SIGNAL h, v: INTEGER RANGE 0 TO 1023;
BEGIN
PROCESS
VARIABLE video_on_h, video_on_v: STD_LOGIC;
BEGIN
WAIT UNTIL RISING_EDGE(clk);
IF h < 800 THEN --skaita 800 horizontâlos pixeïus (ieskaitot palîgpixeïus)!
h <= h + 1;
ELSE
h <= 0;
END IF;
IF ( h <= 755 ) AND (h >= 659 ) THEN
h_sync <= '0';
ELSE
h_sync <= '1';
END IF;
IF ( v >= 524 ) AND ( h >= 699 ) THEN
v <= 0;
ELSIF ( h = 699 ) THEN
v <= v + 1;
END IF;
------------------------------------------
IF ( v <= 494 ) AND ( v >= 493 ) THEN
v_sync <= '0';
ELSE
v_sync <= '1';
END IF;
IF ( h <= 639 ) THEN
video_on_h := '1';
h_out <= h;
ELSE
video_on_h := '0';
END IF;
IF ( v <= 479 ) THEN
video_on_v := '1';
v_out <= v;
ELSE
video_on_v := '0';
END IF;
VGA_Blank<= (video_on_h AND video_on_v);
END PROCESS;
PROCESS (VGA_Blank, v_out, h_out)
BEGIN
blue<= "0000000000";
red<= "0000000000";
green<= "0000000000";
IF (h_out > 100) AND (h_out<400) AND (v_out > 100) AND (v_out<300) THEN
green<= "0011100000";
blue<= "1001100000";
red<= "1111100000";
END IF;
END PROCESS;
END a;
Прикрепил его к Ниосу:
Получилось:
При компиляции выдаёт ошибку.....
Скажите пожалуйста что я делаю не так?