реклама на сайте
подробности

 
 
> Nios II + VGA проблема
Artur Nikolajev
сообщение Jun 4 2009, 08:21
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Копейкин
сообщение Aug 7 2009, 13:32
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 190
Регистрация: 7-11-07
Из: С-Петербург
Пользователь №: 32 134



Я разобрался с чтением из FIFO, подключенным к Авалон ММ:
В редакторе нового компонента создал компонент с сигналами:
clk
readdata[7..0]
read
address[1..0] - вывел, но не использовал.
Файлы описания не подключал и SOPC билдер вывел эти сигналы наружу из процессора.
Еще указал в свойствах интерфейса:
Все времена задержек = 0
и в Deprecated параметрах указал тип адресации NATIVE а не DYNAMIC.
Если этого не сделать то при 8-битной шине будут проводится 4 чтения подряд.!!!
Сам интерфейс чтения у FIFO должен быть: Show-ahead sinchronouse FIFO mode.
Тактовая частота та же, что и для процессора.
Таким образом заработало.
Теперь добиваю запись в FIFO...
-------------------------
Подскажите еще:
Если тип адресации DYNAMIC, то как при 8-битной шине данных избежать 4-х кратного чтения.
Для записи вроде сигнал byteenable[] должен помочь.
Или выводить шину address[1..0] и строить дешифратор для доступа к младшему байту.
Или я вообще ни разу не прав?????
Всем откликнувшимся громадное спасибо!!!

Цитата(Sergey'F @ Aug 7 2009, 16:08) *
1. Периферийный модуль может тактироваться любым клоком...
2. В Вашем случае стоит посмотреть в сторону Avalon-ST и компонент типа Avalon-ST Dual Clock FIFO.
3. Если лень разбираться с Avalon-ST, то можно посмотреть примеры и сделать периферийный модуль на Avalon и в нем обратиться к FIFO. Там внутри и с разрядностью разберетесь как надо.

1. Этого не требуется
2. К сожалению переход между Avalon-ST и Avalon-MM остался выше моего понимания.
Я так понял, нужно ставить Scatter-Gather DMA и все равно делать свой компонент для вывода сигналов Avalon-ST наружу из процессора.
Это мне кажется слишком сложно для обработки изредка приходящих команд управления.
3. Avalon-ST Dual Clock FIFO все равно никак не подключается к шине Avalon MM.
А мне надо, чтобы NIOSII получал эти байты команд...
Спасибо за советы laughing.gif


Цитата(torik @ Aug 7 2009, 15:52) *
Для записи надо напрямую подключить данные шины авалон на вход FIFO, а в качестве сигнала записи - datavalid. В шину выдать сигнал готовности при необходимости (переполнение фифо).
Для чтения по аналогии.

А как быть с таймингами?
Для dcfifo запись/чтение производится по положительным перепадам clk.
rdreq/wrreq являются только сигналами разрешения.
Пока они активны с каждым перепадом будет запись/чтение.
А для чтения FIFO отдельная заморочка с выдачей данных...
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение Aug 7 2009, 14:14
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Цитата(Копейкин @ Aug 7 2009, 17:32) *
3. Avalon-ST Dual Clock FIFO все равно никак не подключается к шине Avalon MM.

Я не про компонент ST FIFO, я про обычный пользовательский модуль со slave портом на avalon-mm. И в нем внутри осуществляется обращение к Вашему FIFO, которое Вы уже создали. Можно как пример вставить в проект модуль PIO и посмотреть после генерации его исходники. Там понятно, как разбираться с адресом, чипселектом и т.д..

Но Вы уже все равно сделали, так что это ни к чему.

dynamic alignment:
Если master пишет в slave большей разрядности, шина выставляет byteenable на нужные байты (естественно, slave их должен корректно обработать).
Если master читает из slave большей разрядности, читается слово целиком и выбираются данные из нужных байт.
Если master пишет в slave меньшей разрядности, шина формирует n записей по последовательным адресам (и пока не закончит, master ждет).
Если master читает из slave меньшей разрядности, шина формирует n чтений по последовательным адресам (и пока не закончит, master ждет).

Ели такое поведение не нужно - проще всего не использовать deprecated параметры, тем более про включение native alignment в документации написано очень размыто, а, например, объявить 32-х разрядный порт, а в устройстве использовать только младшие 8 бит (читать младшие 8 при записи от шины и выставлять младшие 8, а остальные нули при чтении от шины).

Сообщение отредактировал Sergey'F - Aug 7 2009, 14:33
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Artur Nikolajev   Nios II + VGA проблема   Jun 4 2009, 08:21
- - Serhiy_UA   Посмотрите в an333.pdf Еще в http://electronix.ru...   Jun 4 2009, 09:02
- - Kuzmi4   2 Artur Nikolajev - если в 2-х словах - в компонен...   Jun 4 2009, 10:04
|- - Artur Nikolajev   Цитата(Kuzmi4 @ Jun 4 2009, 13:04) 2 Artu...   Jun 4 2009, 10:38
- - torik   Вы когда делали компонент для SOPC, обратили внима...   Jun 4 2009, 11:13
- - Artur Nikolajev   Подскажите пожалуйста! как избавится от следую...   Jun 4 2009, 16:13
|- - vadimuzzz   Цитата(Artur Nikolajev @ Jun 4 2009, 23:1...   Jun 4 2009, 23:02
|- - Artur Nikolajev   Цитата(vadimuzzz @ Jun 5 2009, 03:02) пер...   Jun 5 2009, 04:42
||- - vadimuzzz   Цитата(Artur Nikolajev @ Jun 5 2009, 11:4...   Jun 5 2009, 05:44
|- - Artur Nikolajev   Цитата(vadimuzzz @ Jun 5 2009, 02:02) пер...   Jun 7 2009, 14:53
|- - vadimuzzz   Цитата(Artur Nikolajev @ Jun 7 2009, 21:5...   Jun 7 2009, 16:33
|- - Artur Nikolajev   Цитата(vadimuzzz @ Jun 7 2009, 19:33) шин...   Jun 7 2009, 16:54
|- - vadimuzzz   Цитата(Artur Nikolajev @ Jun 7 2009, 23:5...   Jun 8 2009, 11:24
|- - Artur Nikolajev   Цитата(vadimuzzz @ Jun 8 2009, 14:24) да,...   Jun 9 2009, 07:59
|- - vadimuzzz   Цитата(Artur Nikolajev @ Jun 9 2009, 14:5...   Jun 9 2009, 13:54
- - Копейкин   Уважаемые всезнающие господа, помогите советом пож...   Aug 7 2009, 07:39
|- - Sergey'F   Цитата(Копейкин @ Aug 7 2009, 11:39) Уваж...   Aug 7 2009, 12:08
- - torik   Для записи надо напрямую подключить данные шины ав...   Aug 7 2009, 11:52
- - torik   ЦитатаА как быть с таймингами? Для dcfifo запись/ч...   Aug 10 2009, 05:07


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 00:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01466 секунд с 7
ELECTRONIX ©2004-2016