|
Nios II + VGA проблема |
|
|
|
Jun 4 2009, 08:21
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 3-06-09
Пользователь №: 49 896
|
Добрый день! У меня такая проблемка: Я составил самый простой процессор на Ниосе.... Попробивал запустить и откомпилировать. Всё работает! дальше... Написал 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; Прикрепил его к Ниосу: Получилось: При компиляции выдаёт ошибку..... Скажите пожалуйста что я делаю не так?
Сообщение отредактировал Omen_13 - Jun 8 2009, 15:16
|
|
|
|
|
Jun 4 2009, 10:38
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 3-06-09
Пользователь №: 49 896
|
Цитата(Kuzmi4 @ Jun 4 2009, 13:04) 2 Artur Nikolajev - если в 2-х словах - в компонент эдиторе неправильно сигналы выставили A mozno popodrobnej?
|
|
|
|
|
Jun 5 2009, 04:42
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 3-06-09
Пользователь №: 49 896
|
Цитата(vadimuzzz @ Jun 5 2009, 03:02) первый видимо вызван тем, что на vga подается клок 27МГц, а проц работает на 100. надо бы переделать: регистры vga должны писаться/читаться по клоку процессора. когда переходите от одного клока к другому, принято ставить FIFO. а почему не используете это : http://www.altera.com/literature/hb/nios2/qts_qii55006.pdf ? второй говорит, что у вас шина 10 бит, а у авалона 32. либо ставьте byteenable, либо сделайте 32 бита, а старшие можно игнорить внутри модуля. А как правельно усановить byteenable?
|
|
|
|
|
Jun 7 2009, 14:53
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 3-06-09
Пользователь №: 49 896
|
Цитата(vadimuzzz @ Jun 5 2009, 02:02) первый видимо вызван тем, что на vga подается клок 27МГц, а проц работает на 100. надо бы переделать: регистры vga должны писаться/читаться по клоку процессора. когда переходите от одного клока к другому, принято ставить FIFO. а почему не используете это : http://www.altera.com/literature/hb/nios2/qts_qii55006.pdf ? второй говорит, что у вас шина 10 бит, а у авалона 32. либо ставьте byteenable, либо сделайте 32 бита, а старшие можно игнорить внутри модуля. Извините, может за глупий вопрос. А если устанавливать 32 бита, то это в каких сигналах нужно делать?
|
|
|
|
|
Jun 7 2009, 16:54
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 3-06-09
Пользователь №: 49 896
|
Цитата(vadimuzzz @ Jun 7 2009, 19:33) шина данных Шина данных Это там где avalon_slave интерфейс?
|
|
|
|
|
Jun 9 2009, 07:59
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 3-06-09
Пользователь №: 49 896
|
Цитата(vadimuzzz @ Jun 8 2009, 14:24) да, туда проц пишет/читает, а у него мастер 32 бита. Уменя с avalon_slave связано: input address; input cs; input write; input [7:0] fifo_data; output fifo_not_full; output lastpixel; Как это правельно записать? Так: input [31:0] address; input [31:0] cs; input [31:0] write; input [31:0] fifo_data; output [31:0] fifo_not_full; output [31:0] lastpixel;
|
|
|
|
|
Jun 9 2009, 13:54
|
Гуру
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988
|
Цитата(Artur Nikolajev @ Jun 9 2009, 14:59) Уменя с avalon_slave связано: input address; input cs; input write; input [7:0] fifo_data; output fifo_not_full; output lastpixel; Как это правельно записать? Так: input [31:0] address; input [31:0] cs; input [31:0] write; input [31:0] fifo_data; output [31:0] fifo_not_full; output [31:0] lastpixel; точно не так какой хотите интерфейс? Avalon Memory Mapped? я выше пример приводил http://www.altera.com/support/examples/nio...celeration.htmlдля MM надо адрес(сколько бит внутреннее адр. пространство модуля) данные(запись, чтение) - для простоты 32 бита clk,rst,cs,wr,rd по 1 бит внешние сигналы - как вам надо. всем сигналам сделать префиксы для авт. распознавания. p.s. может задачку поконкретнее сформулируете?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|