%-) 0 15 декабря, 2009 Опубликовано 15 декабря, 2009 · Жалоба Не стоит делить частоту на триггере и затем использовать её в качестве тактовой если потом надо перепривязывать назад к 50. Лучший вариант, когда всё работает от одной тактовой с разрешениями. Есть DLL, PLL и др. блоки предназначенные для этого я бы сделал так: Спасибо за ваш развёрнутый ответ :) А как можно сделать палитру? Мы должны считать с памяти слово (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); как оптимальнее и правильнее сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
%-) 0 16 декабря, 2009 Опубликовано 16 декабря, 2009 · Жалоба ещё вопрос по генерации адреса. нужно удваивать строки. тогда адреса генерируются так: 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 задается нулевым битом номера строки) как можно быстрее и проще? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 16 декабря, 2009 Опубликовано 16 декабря, 2009 · Жалоба А как можно сделать палитру? какая задача знакомая..... %) зачем читать палитру с SRAM, которую туда кто то загрузил через FPGA, грузите сразу декодеры палитры и используйте их. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
%-) 0 16 декабря, 2009 Опубликовано 16 декабря, 2009 · Жалоба какая задача знакомая..... %) зачем читать палитру с SRAM, которую туда кто то загрузил через FPGA, грузите сразу декодеры палитры и используйте их. вы наверное меня не поняли :) загружаю палиру через регистры вовнутренние 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
%-) 0 16 декабря, 2009 Опубликовано 16 декабря, 2009 · Жалоба люди! памагите! сроки поджимают, а мы(контора) до конца не сделали! палитру подскажите как делать плиз... -------------- пока такая идея: потактово - вычисление адреса, вычитывание байта, считывание палитры, выод на экран Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 16 декабря, 2009 Опубликовано 16 декабря, 2009 · Жалоба Палитра как рассчитывается? Если значений палитры немного, дык сделать таблицу перекодировки в ончип памяти. Если много, то надо знать формулу преобразования... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
%-) 0 17 декабря, 2009 Опубликовано 17 декабря, 2009 (изменено) · Жалоба палитра не считается по формуле. всего 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 МГц Возможно , нечёткое изображение (когда используется палитра) из-за разных тактовых клоков Изменено 17 декабря, 2009 пользователем %-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 декабря, 2009 Опубликовано 17 декабря, 2009 · Жалоба При синтезе массив палитры преобразуется в двухпортовую синхронную память, тактируемую ClkPLL (200МГц) Возможно , нечёткое изображение (когда используется палитра) из-за разных тактовых клоков в чем проблема заменить двухпортовую синхронную одноклоковую на двухпортовую синхронную двухкловую? в N-ый раз повторяю читайте хендбуки с www.altera.com, там все написано. Ответ на большинство ваших вопросов ищется в хендбуке за 10-15 минут + немного логики здравого смысла, но вы по прежнему прете в слепую на баррикады уповая на помощь форума, неправильно это. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
%-) 0 17 декабря, 2009 Опубликовано 17 декабря, 2009 · Жалоба в чем проблема заменить двухпортовую синхронную одноклоковую на двухпортовую синхронную двухкловую? в N-ый раз повторяю читайте хендбуки с www.altera.com, там все написано. Ответ на большинство ваших вопросов ищется в хендбуке за 10-15 минут + немного логики здравого смысла, но вы по прежнему прете в слепую на баррикады уповая на помощь форума, неправильно это. во-первых: синтезатор сам автоматом мне сделал такую память из M4K блоков (ему видней, значит так надо) во-вторых: что-то мы сомневаемся, что алтера изобилует экзамплами вга-контроллеров , особенно с применением колор-меппера в-третьих: почти весь OpenSource в 90% представляет собой г@вно, которое не работает либо работает не так в-четвртых: кроме нас думается никто в точности не знает что надо получить ;-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 17 декабря, 2009 Опубликовано 17 декабря, 2009 · Жалоба во-вторых: что-то мы сомневаемся, что алтера изобилует экзамплами вга-контроллеров , особенно с применением колор-меппера Да, вещь действительно уникальнейшая, потому примеров нет ниииигде. в-четвртых: кроме нас думается никто в точности не знает что надо получить ;-) Да на самом деле, господин des00 вам правду сказал насчет памяти. Сгенерируйте тогда это ОЗУ (и нафига двухпортовое?) в мегавизарде, да вставьте как модуль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 17 декабря, 2009 Опубликовано 17 декабря, 2009 · Жалоба во-первых: синтезатор сам автоматом мне сделал такую память из M4K блоков (ему видней, значит так надо) "не зная броду, не суйся в воду" (с) Народная мудрость. Дальнейший разговор с вами, при такой вашей позиции, считаю бессмысленным и буду ставить в игнор. Желаю удачи %) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
%-) 0 17 декабря, 2009 Опубликовано 17 декабря, 2009 · Жалоба "не зная броду, не суйся в воду" (с) Народная мудрость. Дальнейший разговор с вами, при такой вашей позиции, считаю бессмысленным и буду ставить в игнор. Желаю удачи %) напоминает разговор слепого с глухим. чесслово... ожидаю здравых ыслей по палитре - а мне подсовывают формулы??? в недоумении... тогда нах форум этот нужен вообще, если ответы можно в другом месте искать? толку ~0 Да на самом деле, господин des00 вам правду сказал насчет памяти. Сгенерируйте тогда это ОЗУ (и нафига двухпортовое?) в мегавизарде, да вставьте как модуль. неправда. двухпортовое озу просто необходимо - нужно одновременно и оперативно писать и вычитывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 17 декабря, 2009 Опубликовано 17 декабря, 2009 · Жалоба неправда. двухпортовое озу просто необходимо - нужно одновременно и оперативно писать и вычитывать. Хорошо, пусть так. Тогда хоть объясните что вы собрались записывать в память с палитрой? Я думал, что палитра - это массив констант, однопортовое ПЗУ. Адрес = номер цвета, а выход = нужное значение. Не вижу принципиальных проблем. Чего так настойчиво отказываться от предложенного выше. Через мегавизард хоть одно хоть двухпортовую память можно сделать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Builder 1 17 декабря, 2009 Опубликовано 17 декабря, 2009 · Жалоба напоминает разговор слепого с глухим. чесслово...Ну, то-же самое про Вас можно сказать. С одной стороны из Вас так и прёт непрофессионализм в этой области, с другой стороны вы упрямо доказываете что Вы правы. Причём безапеляционно. Осебенно это видно, если перечитать Ваши последние темы. ожидаю здравых ыслей по палитре - а мне подсовывают формулы??? в недоумении... Да Вы сами не знаете что Вам нужно. Если-бы знали - не говорили-бы так. Зачем было ввязываться в проект, с такими знаниями. тогда нах форум этот нужен вообще, если ответы можно в другом месте искать? толку ~0 Форум для того, что-бы обсуждать проблемы, делится опытом и знаниями. А не для того, что-бы вместе Вам писать проект. Вам надавали информации, по которой без напряга Ваш проект делается за время, меньшее чем Вы обсуждаете его тут, на форуме. Но это конечно если знать что и как делать. во-первых: синтезатор сам автоматом мне сделал такую память из M4K блоков (ему видней, значит так надо)Синтезатор делает не больше чем Вы ему сказали, так что не расслабляйтесь. Хорошо, пусть так. Тогда хоть объясните что вы собрались записывать в память с палитрой? Я думал, что палитра - это массив констант, однопортовое ПЗУ. Адрес = номер цвета, а выход = нужное значение. Не вижу принципиальных проблем. Чего так настойчиво отказываться от предложенного выше. Через мегавизард хоть одно хоть двухпортовую память можно сделать...Как я понял, ему нужно то что Вы написали, но не ПЗУ, а ОЗУ, коды палитры могут в процессе работы перегружатся, они не константны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 17 декабря, 2009 Опубликовано 17 декабря, 2009 · Жалоба во-первых: синтезатор сам автоматом мне сделал такую память из M4K блоков (ему видней, значит так надо) во-вторых: что-то мы сомневаемся, что алтера изобилует экзамплами вга-контроллеров , особенно с применением колор-меппера синтезатор синтезирует то, что ВЫ ему дали на съедение... Мегавизар - генерирует в соответствии с Вашими параметрами(всякие галочки, ввод/выбор различных цифр), которые Вы установили. Ему все равно, что Вы там поставили...(единственно за чем Мегавизард следит так это чтобы не было перебора с ресурсами ПЛИС) напоминает разговор слепого с глухим. чесслово... ожидаю здравых мыслей по палитре - а мне подсовывают формулы??? в недоумении... тогда нах форум этот нужен вообще, если ответы можно в другом месте искать? Значит Вы некорректно задаете вопрос или не полностью делитесь проблемой !!!почитай Вам будет интересно!!! ЗЫ прежде чем говорить что либо, подумай говорят помогает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться