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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Реализация LookUp Table для видеовывода, нечёткое изображеине
%-)
сообщение Dec 15 2009, 22:57
Сообщение #16


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

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(VasiaMVR @ Dec 15 2009, 22:15) *
Не стоит делить частоту на триггере и затем использовать её в качестве тактовой если потом надо перепривязывать назад к 50. Лучший вариант, когда всё работает от одной тактовой с разрешениями. Есть DLL, PLL и др. блоки предназначенные для этого
я бы сделал так:


Спасибо за ваш развёрнутый ответ smile.gif

А как можно сделать палитру?

Мы должны считать с памяти слово (16 бит). Затем на одном такте его биты 0..7 загнать в индекс массива палитры, на другом такте биты 8..15 в палитру. И так по кругу.

Тоесть в палитровом режиме частота чтения в 2 раза меньше должна быть, но частота вывода останется таже - 12.5 МГц. На первом такте биты 0..7 на втором 8..15

тоесть:

данные на частоте 12.5 / 2 МГц:

Код
SRAM_Address<=ReadAddr+1;


на первом такте 12.5 МГц:

Код
Video_R<=Palette(conv_integer(SRAM_D_Reg(7 downto 0)))(14..10);
Video_G<=Palette(conv_integer(SRAM_D_Reg(7 downto 0)))(9..5);
Video_B<=Palette(conv_integer(SRAM_D_Reg(7 downto 0)))(4..0);

на втором такте 12.5 МГц:

Код
Video_R<=Palette(conv_integer(SRAM_D_Reg(15 downto 8)))(14..10);
Video_G<=Palette(conv_integer(SRAM_D_Reg(15 downto 8)))(9..5);
Video_B<=Palette(conv_integer(SRAM_D_Reg(15 downto 8)))(4..0);



как оптимальнее и правильнее сделать?
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 16 2009, 02:53
Сообщение #17


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

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



ещё вопрос по генерации адреса.
нужно удваивать строки. тогда адреса генерируются так: 0..319, 0..319, 320..639, 320..639, 640.....

делаю пока так:

if rising_edge(Clk) then
if PixelClockEn='0' then
if Blank='1' then
if F(conv_integer(V(0)))=153599 then
F(conv_integer(V(0)))<=(others => '0');
else
F(conv_integer(V(0)))<=F(conv_integer(V(0)))+1;
end if;
end if;
...

тоесть завёл массив из двух счётчиков и инкрементируем их по-очереди (номер 0-1 задается нулевым битом номера строки)

как можно быстрее и проще?
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 16 2009, 04:17
Сообщение #18


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(%-) @ Dec 15 2009, 16:57) *
А как можно сделать палитру?


какая задача знакомая..... %)

зачем читать палитру с SRAM, которую туда кто то загрузил через FPGA, грузите сразу декодеры палитры и используйте их.


--------------------
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 16 2009, 04:25
Сообщение #19


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

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(des00 @ Dec 16 2009, 07:17) *
какая задача знакомая..... %)

зачем читать палитру с SRAM, которую туда кто то загрузил через FPGA, грузите сразу декодеры палитры и используйте их.


вы наверное меня не поняли smile.gif

загружаю палиру через регистры вовнутренние std_logic_vector'а

в SRAM'е палитры нет - просто из SRAM мы вычитываем слово(16 бит) - байты которых - код ццета - индекс массива палитры

памагите сзделать ;-)

гыыы... вот:

Код
process(Clk)
begin
if rising_edge(Clk) then
  if PixelClockEn='0' then
   if Blank='1' then
    --Direct Color 16bpp R:G:B = 1:5:5:5
    if R_M(0)='0' then
     if R_P='0' then
      RGB<=VRAM0_D(14 downto 0);
     else
      RGB<=VRAM1_D(14 downto 0);
     end if;
    --Palette Color 8bpp
    else
     if R_P='0' then
      if R_M(1)='0' then                                --VGA
       if F(conv_integer(V(0)))(2)='0' then
        RGB<=R_RGB(conv_integer(VRAM0_D( 7 downto 0)));
       else
        RGB<=R_RGB(conv_integer(VRAM0_D(15 downto 8)));
       end if;
      else                                              --NTSC
       if F(0)(2)='0' then
        RGB<=R_RGB(conv_integer(VRAM0_D( 7 downto 0)));
       else
        RGB<=R_RGB(conv_integer(VRAM0_D(15 downto 8)));
       end if;
      end if;
     else
      if R_M(1)='0' then                                --VGA
       if F(conv_integer(V(0)))(2)='0' then
        RGB<=R_RGB(conv_integer(VRAM1_D( 7 downto 0)));
       else
        RGB<=R_RGB(conv_integer(VRAM1_D(15 downto 8)));
       end if;
      else                                              --NTSC
       if F(0)(2)='0' then
        RGB<=R_RGB(conv_integer(VRAM1_D( 7 downto 0)));
       else
        RGB<=R_RGB(conv_integer(VRAM1_D(15 downto 8)));
       end if;
      end if;
     end if;
    end if;
   end if;
  end if;
end if;
end process;

process(Clk)
begin
if rising_edge(Clk) then
  if PixelClockEn='0' then
   RGB_Reg<=RGB;
   if Blank='1' then
    Video_R<=RGB_Reg(14 downto 10);
    Video_G<=RGB_Reg( 9 downto  5);
    Video_B<=RGB_Reg( 4 downto  0);
   else
    Video_R<=(others => '0');
    Video_G<=(others => '0');
    Video_B<=(others => '0');
   end if;
  end if;
end if;
end process;
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 16 2009, 06:23
Сообщение #20


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

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



люди!
памагите!

сроки поджимают, а мы(контора) до конца не сделали!

палитру подскажите как делать плиз...

--------------
пока такая идея: потактово - вычисление адреса, вычитывание байта, считывание палитры, выод на экран
Go to the top of the page
 
+Quote Post
torik
сообщение Dec 16 2009, 12:21
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Палитра как рассчитывается? Если значений палитры немного, дык сделать таблицу перекодировки в ончип памяти. Если много, то надо знать формулу преобразования...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 17 2009, 02:07
Сообщение #22


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

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



палитра не считается по формуле.

всего 256 цветов - они хранятся в видеопамяти по 1 байту на 1 точку

этот байт - и есть номер(смещение) массива палитры. (массив хранит R,G,B в 15 битах)

описание массива палитры:

Код
type R_RGB_Type is array(255 downto 0) of std_logic_vector(14 downto 0);
signal R_RGB:R_RGB_Type;


запись в регистры палитры:

Код
*(short*)(BaseAddr+RegOffs)=0x7000|Color;
*(short*)(BaseAddr+RegOffs)=0x8000|(R<<10)|(G<<5)|B;


Код
process(ClkPLL)
begin
if rising_edge(ClkPLL) then
...
   when "0111"=>                                        
      R_C:=D1(7 downto 0);

   when "1000"=>      
      if D1(15)='1' then
       R_RGB(conv_integer(R_C))<=D1(14 downto 0);
      end if;
...


При синтезе массив палитры преобразуется в двухпортовую синхронную память, тактируемую ClkPLL (200МГц)

Вывод видеоданных на VGA происходит на другом клоке - Clk=50 МГц

Возможно , нечёткое изображение (когда используется палитра) из-за разных тактовых клоков

Сообщение отредактировал %-) - Dec 17 2009, 02:12
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 17 2009, 04:07
Сообщение #23


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(%-) @ Dec 16 2009, 20:07) *
При синтезе массив палитры преобразуется в двухпортовую синхронную память, тактируемую ClkPLL (200МГц)
Возможно , нечёткое изображение (когда используется палитра) из-за разных тактовых клоков


в чем проблема заменить двухпортовую синхронную одноклоковую на двухпортовую синхронную двухкловую? в N-ый раз повторяю читайте хендбуки с www.altera.com, там все написано. Ответ на большинство ваших вопросов ищется в хендбуке за 10-15 минут + немного логики здравого смысла, но вы по прежнему прете в слепую на баррикады уповая на помощь форума, неправильно это.


--------------------
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 17 2009, 05:39
Сообщение #24


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

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(des00 @ Dec 17 2009, 07:07) *
в чем проблема заменить двухпортовую синхронную одноклоковую на двухпортовую синхронную двухкловую? в N-ый раз повторяю читайте хендбуки с www.altera.com, там все написано. Ответ на большинство ваших вопросов ищется в хендбуке за 10-15 минут + немного логики здравого смысла, но вы по прежнему прете в слепую на баррикады уповая на помощь форума, неправильно это.


во-первых: синтезатор сам автоматом мне сделал такую память из M4K блоков (ему видней, значит так надо)

во-вторых: что-то мы сомневаемся, что алтера изобилует экзамплами вга-контроллеров , особенно с применением колор-меппера

в-третьих: почти весь OpenSource в 90% представляет собой г@вно, которое не работает либо работает не так

в-четвртых: кроме нас думается никто в точности не знает что надо получить ;-)
Go to the top of the page
 
+Quote Post
torik
сообщение Dec 17 2009, 06:15
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Цитата
во-вторых: что-то мы сомневаемся, что алтера изобилует экзамплами вга-контроллеров , особенно с применением колор-меппера

Да, вещь действительно уникальнейшая, потому примеров нет ниииигде.

Цитата
в-четвртых: кроме нас думается никто в точности не знает что надо получить ;-)

Да на самом деле, господин des00 вам правду сказал насчет памяти. Сгенерируйте тогда это ОЗУ (и нафига двухпортовое?) в мегавизарде, да вставьте как модуль.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 17 2009, 06:18
Сообщение #26


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(%-) @ Dec 16 2009, 23:39) *
во-первых: синтезатор сам автоматом мне сделал такую память из M4K блоков (ему видней, значит так надо)


"не зная броду, не суйся в воду" (с) Народная мудрость. Дальнейший разговор с вами, при такой вашей позиции, считаю бессмысленным и буду ставить в игнор. Желаю удачи %)


--------------------
Go to the top of the page
 
+Quote Post
%-)
сообщение Dec 17 2009, 07:19
Сообщение #27


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

Группа: Участник
Сообщений: 118
Регистрация: 13-09-09
Пользователь №: 52 331



Цитата(des00 @ Dec 17 2009, 09:18) *
"не зная броду, не суйся в воду" (с) Народная мудрость. Дальнейший разговор с вами, при такой вашей позиции, считаю бессмысленным и буду ставить в игнор. Желаю удачи %)


напоминает разговор слепого с глухим. чесслово...

ожидаю здравых ыслей по палитре - а мне подсовывают формулы??? в недоумении...

тогда нах форум этот нужен вообще, если ответы можно в другом месте искать?

толку ~0


Цитата(torik @ Dec 17 2009, 09:15) *
Да на самом деле, господин des00 вам правду сказал насчет памяти. Сгенерируйте тогда это ОЗУ (и нафига двухпортовое?) в мегавизарде, да вставьте как модуль.


неправда.

двухпортовое озу просто необходимо - нужно одновременно и оперативно писать и вычитывать.
Go to the top of the page
 
+Quote Post
torik
сообщение Dec 17 2009, 07:29
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Цитата
неправда.

двухпортовое озу просто необходимо - нужно одновременно и оперативно писать и вычитывать.


Хорошо, пусть так. Тогда хоть объясните что вы собрались записывать в память с палитрой? Я думал, что палитра - это массив констант, однопортовое ПЗУ. Адрес = номер цвета, а выход = нужное значение. Не вижу принципиальных проблем. Чего так настойчиво отказываться от предложенного выше. Через мегавизард хоть одно хоть двухпортовую память можно сделать...


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
Builder
сообщение Dec 17 2009, 08:14
Сообщение #29


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(%-) @ Dec 17 2009, 09:19) *
напоминает разговор слепого с глухим. чесслово...
Ну, то-же самое про Вас можно сказать. С одной стороны из Вас так и прёт непрофессионализм в этой области, с другой стороны вы упрямо доказываете что Вы правы. Причём безапеляционно. Осебенно это видно, если перечитать Ваши последние темы.
Цитата(%-) @ Dec 17 2009, 09:19) *
ожидаю здравых ыслей по палитре - а мне подсовывают формулы??? в недоумении...
Да Вы сами не знаете что Вам нужно. Если-бы знали - не говорили-бы так. Зачем было ввязываться в проект, с такими знаниями.
Цитата(%-) @ Dec 17 2009, 09:19) *
тогда нах форум этот нужен вообще, если ответы можно в другом месте искать?
толку ~0
Форум для того, что-бы обсуждать проблемы, делится опытом и знаниями. А не для того, что-бы вместе Вам писать проект.
Вам надавали информации, по которой без напряга Ваш проект делается за время, меньшее чем Вы обсуждаете его тут, на форуме.
Но это конечно если знать что и как делать.
Цитата(%-) @ Dec 17 2009, 08:39) *
во-первых: синтезатор сам автоматом мне сделал такую память из M4K блоков (ему видней, значит так надо)
Синтезатор делает не больше чем Вы ему сказали, так что не расслабляйтесь.

Цитата(torik @ Dec 17 2009, 10:29) *
Хорошо, пусть так. Тогда хоть объясните что вы собрались записывать в память с палитрой? Я думал, что палитра - это массив констант, однопортовое ПЗУ. Адрес = номер цвета, а выход = нужное значение. Не вижу принципиальных проблем. Чего так настойчиво отказываться от предложенного выше. Через мегавизард хоть одно хоть двухпортовую память можно сделать...
Как я понял, ему нужно то что Вы написали, но не ПЗУ, а ОЗУ, коды палитры могут в процессе работы перегружатся, они не константны.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Dec 17 2009, 16:07
Сообщение #30


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(%-) @ Dec 17 2009, 08:39) *
во-первых: синтезатор сам автоматом мне сделал такую память из M4K блоков (ему видней, значит так надо)

во-вторых: что-то мы сомневаемся, что алтера изобилует экзамплами вга-контроллеров , особенно с применением колор-меппера

синтезатор синтезирует то, что ВЫ ему дали на съедение...
Мегавизар - генерирует в соответствии с Вашими параметрами(всякие галочки, ввод/выбор различных цифр), которые Вы установили. Ему все равно, что Вы там поставили...(единственно за чем Мегавизард следит так это чтобы не было перебора с ресурсами ПЛИС)


Цитата(%-) @ Dec 17 2009, 10:19) *
напоминает разговор слепого с глухим. чесслово...

ожидаю здравых мыслей по палитре - а мне подсовывают формулы??? в недоумении...

тогда нах форум этот нужен вообще, если ответы можно в другом месте искать?

Значит Вы некорректно задаете вопрос или не полностью делитесь проблемой

!!!почитай Вам будет интересно!!!

ЗЫ прежде чем говорить что либо, подумай говорят помогает.


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 7th July 2025 - 11:12
Рейтинг@Mail.ru


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