Jump to content

    

VGA доступ к пикселю

Клок какой подаете ?

Share this post


Link to post
Share on other sites

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;

 

Edited by Alexey87

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
1 час назад, Alexey87 сказал:

50 Mhz

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

Share this post


Link to post
Share on other sites
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 (отличаются сотыми)

Edited by Alexey87

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
20 minutes ago, Plain said:

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

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

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

Edited by Alexey87

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 19.09.2019 в 16:42, Alexey87 сказал:

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

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

 

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

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

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

KAA_counter_sload.vhd

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now