Перейти к содержанию
    

sany_v

Участник
  • Постов

    6
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Спасибо за ссылку на модель памяти, нашел на сайте микрон еще более свежую версию модели и там ее можно сконфигурировать под нужные параметры, как итог нашел ошибку в контроллере памяти, она оказалась как всегда, по причине не внимательности. Сигнал маскирование SDRAM я выставлял в '00'(LDQM,UDQM) а нужно было в '11' , по этому и был черный экран, теперь картинка появилась но рассинхронизированная, будет время и это разберу. Всем спасибо!
  2. Спасибо за предложением, но c TMDS проблем нет(то есть с блоками clock, vga_gen, dvi_out) я могу выводить заполнение любым цветом присваивая статическая значения в модуле reader или же на входе dvi_out, более того я уже наигрался с рисование цветных полос, квадратов модифируя vga_gen, а так же пробовал различные разрешения, с HDMI нет ни каких проблем от слова совсем он простой и я бы даже сказа примитивный. Проблема с контроллером памяти о чем я и писал?
  3. Добрый день уважаемые коллеги, И я снова зашел в тупик, на картинке вы найдете блок схему устройства. Функциональные назначения блоков: Clock – генератор всех синхросигналов pixel_clk – 40Мгц mem_clk – 80Мгц vga_gen – генератор развертки видео 800x600 dvi_out – генератор HDMI сигнала sdram – sdram контролер с имитацией двухпортовости в реальности у сигнала чтения приоритет над сигналом записи writer – модуль запись тестового паттерна ‘ffff’ во фреймбуфер работает 1 раз до заполнения всего фреймбуфера reader – модуль вычитки содержимого фреймбуфера и записи его в буфер FIFO буфер hdmi, стартует по сигналу конца экрана от модуля vga_gen. fifo - буфер на внутричиповой памяти BRAM хранит 1024 элемента регистры led и выводы для отладки на осцилограф и светодиоды. Как итог на экран всегда выводиться пустота то есть с контроллера sdram модуль чтения всегда вычитывает нули пробовал (задержки в модуле чтения менять думал может быть данные не готовы на микросхеме sdram от 2 до 9 тактов картинка не меняется) если в модуле reader на выходную шину повесить константу то заливка экрана меняется на нужную, так что грешу на контроллер памяти, но его делал на базе работающего проекта и там он отрабатывает корректно. Смоделировать работу этого модуля не могу так как нет модели на микросхему памяти это AS4C16M16S-6TCN В общем нужна помощь?! Проект в атаче. VGA_OUT.zip
  4. Добрый день уважаемые форумчане, Начал осваивать разработку ПЛИС, и вроде простые примеры начали получаться, Тестовая задача была принимать изображение с камеры, для наложения на него информации и все это выводить на монитор, Для этого были изучены рефересные дизайн DVI-OUT, а также позаимствованы блоки для инициализации и настройки камеры. И даже получились синтезировать рабочие проекты, которые собирались, но картинка с камеры была не в том разрешений. Захотел все переделать так что бы все блоки были мне понятны, то есть написаны с нуля. Начал с замены модуля генерации развертки vga_gen. И он таки получился и заработал, но затем я решил создать проект с нуля. И скопировал туда этот блок, в итоге при синтезе блок собирается не, верно, Сигнал вертикальной сигнализации почему-то тупо зануляется. Прошу помощи в чем тут проблема? В логах вот такие сообщения: WARNING:Xst:1293 - FF/Latch <v_count_0> has a constant value of 0 in block <vga_gen>. This FF/Latch will be trimmed during the optimization process. Код модуля: module vga_gen( // Clock input input wire pixel_clk, // output's output wire h_sync, output wire v_sync, output wire video_enable, // pixel data output reg [23:0] pixel_addres, output reg pixel_get ); // VGA timings https://timetoexplore.net/blog/video-timings-vga-720p-1080p localparam HS_STA = 40; // horizontal sync start localparam HS_END = 168; // horizontal sync end localparam HA_STA = 296; // horizontal active pixel start localparam VS_STA = 1; // vertical sync start localparam VS_END = 5; // vertical sync end localparam VA_STA = 28; // vertical active pixel start localparam VA_END = 628; // vertical active pixel end localparam LINE = 1096; // complete line (pixels) localparam SCREEN = 628; // complete screen (lines) reg [9:0] h_count; // line position reg [9:0] v_count; // screen position assign h_sync = ((h_count >= HS_STA) & (h_count < HS_END)); assign v_sync = ((v_count >= VS_STA) & (v_count < VS_END)); // active: high during active pixel drawing assign video_enable = ((h_count >= HA_STA) & (v_count >= VA_STA) & (v_count <= VA_END)); initial begin h_count <= 0; v_count <= 0; end always @ (posedge pixel_clk) begin if (h_count == LINE) // end of line begin h_count <= 0; v_count <= v_count + 1; end else h_count <= h_count + 1; if (v_count == SCREEN) // end of screen v_count <= 0; end endmodule
×
×
  • Создать...