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

50 Mhz

требуется:

25.175 MHz

640x480

из кода:

   // mod-2 circuit to generate 25 MHz enable tick
   assign mod2_next = ~mod2_reg;
   assign pixel_tick = mod2_reg;

 

Изменено пользователем Alexey87

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А сколько требуется по стандарту Vesa ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Alexey87 сказал:

50 Mhz

Тогда логичнее было с самого начала работы выбрать режим 72 Гц, у которого точка 50 МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Plain said:

Тогда логичнее было с самого начала работы выбрать режим 72 Гц, у которого точка 50 МГц.

всё равно моргает, а на простом мониторе рисует...

вот генератор из 8bitworkshop:

Spoiler

module hvsync_generator(clk, reset, hsync, vsync, display_on, hpos, vpos, r);

  input clk;
  input reset;
  output reg hsync, vsync;
  output display_on;
  output r;
  output reg [8:0] hpos;
  output reg [8:0] vpos;

  // declarations for TV-simulator sync parameters
  // horizontal constants
  parameter H_DISPLAY       = 800; // horizontal display width
  parameter H_BACK          =  64; // horizontal left border (back porch)
  parameter H_FRONT         =  56; // horizontal right border (front porch)
  parameter H_SYNC          = 120; // horizontal sync width
  // vertical constants
  parameter V_DISPLAY       = 600; // vertical display height
  parameter V_TOP           =  23; // vertical top border
  parameter V_BOTTOM        =  37; // vertical bottom border
  parameter V_SYNC          =   6; // vertical sync # lines
  // derived constants
  parameter H_SYNC_START    = H_DISPLAY + H_FRONT;
  parameter H_SYNC_END      = H_DISPLAY + H_FRONT + H_SYNC - 1;
  parameter H_MAX           = H_DISPLAY + H_BACK + H_FRONT + H_SYNC - 1;
  parameter V_SYNC_START    = V_DISPLAY + V_BOTTOM;
  parameter V_SYNC_END      = V_DISPLAY + V_BOTTOM + V_SYNC - 1;
  parameter V_MAX           = V_DISPLAY + V_TOP + V_BOTTOM + V_SYNC - 1;

  wire hmaxxed = (hpos == H_MAX) || reset;	// set when hpos is maximum
  wire vmaxxed = (vpos == V_MAX) || reset;	// set when vpos is maximum
  
  // horizontal position counter
  always @(posedge clk)
  begin
    hsync <= (hpos>=H_SYNC_START && hpos<=H_SYNC_END);
    if(hmaxxed)
      hpos <= 0;
    else
      hpos <= hpos + 1;
  end

  // vertical position counter
  always @(posedge clk)
  begin
    vsync <= (vpos>=V_SYNC_START && vpos<=V_SYNC_END);
    if(hmaxxed)
      if (vmaxxed)
        vpos <= 0;
      else
        vpos <= vpos + 1;
  end
  
  // display_on is set when beam is in "safe" visible frame
  assign display_on = (hpos<H_DISPLAY) && (vpos<V_DISPLAY);
  assign g			= display_on && hpos > 0 && hpos < 799 && vpos > 0 && vpos < 599 ? 1'b1 : 1'b0;

endmodule

 

рисует со всеми генераторами фигуры нормально, но если нарисовать прямоугольник (размер разрешения), начинает моргать.

Если у меня код неправильный это понятно, но примеры которые я привёл выше не могут быть ведь тоже неправильными...

Не знаю где у меня конкретно ошибка, в формировании синхросигналов или с получением текущих координат x и y?

Если смотреть анализатором, то значения почти такие же как и в стандарте vesa (отличаются сотыми)

Изменено пользователем Alexey87

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Повторю, генератор у Вас негодный по причине в первую очередь создаваемых им неопределённых сигналов, но монитор ещё имеет право быть либо неисправным, либо сбоить под влиянием организационных проблем — плохое питание, плохая доставка до него информации, и т.д.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

20 minutes ago, Plain said:

генератор у Вас негодный

а в примерах из книг?

Есть ли 100% рабочий (на ваш взгляд) пример генератора (интересует статья в сети или выдержка из книги)?

Изменено пользователем Alexey87

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам уже несколько раз сказали — цифровой дисплей синхронное устройство, все его входы регистры, чтобы все принимаемые сигналы были однозначными, а значит и выходы их источника, создающие их, должны быть регистрами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 19.09.2019 в 16:42, Alexey87 сказал:

а в примерах из книг?

Есть ли 100% рабочий (на ваш взгляд) пример генератора (интересует статья в сети или выдержка из книги)?

 

А Вам самостоятельно написать слабо ? Синхрогенератор - это  2 простейших цифровых автомата + 2 счетчика. Вот и весь синхрогенератор. Тем более у Вас есть даже готовый пример автомата, генерирующего H_sync.

Вот Вам недостающий счетчик, для моделирования:

P.S. Генерируйте клок 25.175 на PLL....

KAA_counter_sload.vhd

P.S.S Ещё раз повторю. Пока Вы не получите положительный результат моделирования - никаких тестов в "железе".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте прошу вашей помощи!

Сейчас я записываю в video ram 1 байт, 1 символ, число от 0 - 9 и затем на монитор это отображается, а каким образом для отображения на мониторе "работать" с двузначными, трехзначными, четырёхзначными (записать 2х,3х,4х байтное число) и т.п. числами?

Что по этому поводу почитать или посмотреть примеры?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 минут назад, Alexey87 сказал:

Сейчас я записываю в video ram 1 байт, 1 символ, число от 0 - 9 и затем на монитор это отображается, а каким образом для отображения на мониторе "работать" с двузначными, трехзначными, четырёхзначными (записать 2х,3х,4х байтное число) и т.п. числами?

Так монитор не понимает "числа"... Он понимает только символы. Хотите изобразить символами "4х байтное число", ну так переведите это число в символьную строку. А дальше Вы уже умеете...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 минуты назад, Alexey87 сказал:

Здравствуйте прошу вашей помощи!

Сейчас я записываю в video ram 1 байт, 1 символ, число от 0 - 9 и затем на монитор это отображается, а каким образом для отображения на мониторе "работать" с двузначными, трехзначными, четырёхзначными (записать 2х,3х,4х байтное число) и т.п. числами?

Что по этому поводу почитать или посмотреть примеры?

 

 

 

Странный вопрос. Вы записали в память один символ и выводите его на экран. Двузначное число на экране - это два символа в Video_RAM. Значит надо в память записать 2 символа. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Just now, Flip-fl0p said:

Двузначное число на экране - это два символа в Video_RAM. Значит надо в память записать 2 символа. 

Именно, дело в том что изначально у меня (результат вычислений) например 123 - 01111011 в таблицу ascii передаётся - 7B и тогда на экране отрисует символ { .Мне необходимо как-то преобразовать в 3 цифры - 1,2,3.....BCD?

23 minutes ago, iosifk said:

ну так переведите это число в символьную строку

хорошо бы, но устройство у меня в память пишет по одному символу пока.

вот 2020 вывод по одному символу:

 

1111.jpeg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...