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

10 минут назад, RobFPGA сказал:

с тех времен он запузырился

 

С каких конкретно времён? Где про это официально почитать? asic-world уже не авторитет?

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


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

Приветствую!

11 minutes ago, Plain said:

С каких конкретно времён? Где про это официально почитать? asic-world уже не авторитет?

Как минимум с 2001.  Вышеприведенный пример синтезировался в Vivado 2018.3 с опцией "verilog_version=Verilog 2001"  

Авторитет это не икона, чтобы себе лоб расшибать.  :dash2:

Успехов! Rob.

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


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

20 minutes ago, Plain said:

Ну т.е. где почитать Вы не в курсе, а где сами прочитали не помните.

Я не буду говорить, что лично видел, но единственный Авторитет и Икона у Вас и у Нас может быть только этот ресурс:

1364-2001 - IEEE Standard Verilog Hardware Description Language

Без всяких или и если. Там точно всё написано истинно и безоговорочно (исключением могут быть "левые" компиляторы и симуляторы и то больше для SV не всегда полная поддержка)

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


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

В 27.07.2019 в 01:12, Alexey87 сказал:

	assign hsync = hcounter > HVisible_area && hcounter < HVisible_area + HFront_porch + HSync_pulse;
	assign vsync = vcounter > VVisible_area && vcounter < VVisible_area + VFront_porch + VSync_pulse;

один раз отрисовал квадрат, а потом пишет (на мониторе) no signal

Это потому, что вместо синхроимпульсов Вы создали синхроуровни. Должно быть так: > VA+FP & < VA+FP+SP.

 

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


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

 

47 minutes ago, Plain said:

Ну т.е. где почитать Вы не в курсе, а где сами прочитали не помните.

Ооо...  знакомые нотки ... :girl_mad:   Поможем  авторитету на мопеде:

Quote

IEEE HARDWARE DESCRIPTION LANGUAGE Std 1364-2001
Copyright © 2001 IEEE. All rights reserved. page 55

...

The next example declares an array of 256 by 256 8-bit elements and an array 256 by 256 by 8 1-bit elements:
  reg [7:0] twod_array [0:255][0:255];
  wire threed_array [0:255][0:255][0:7];

The syntax for access to the array shall consist of the name of the memory or array and an expression for each addressed dimension:
  twod_array [addr_expr][addr_expr]
  threed_array[addr_expr][addr_expr][addr_expr]

As before, the addr_expr can be any expression. The array twod_array accesses a whole 8-bit vector,
while the array threed_array accesses a single bit of the three dimensional array.


To express bit selects or part selects of array elements, the desired word shall first be selected by supplying
an address for each dimension. Once selected, bit and part selects shall be addressed in the same manner as net and reg bit and part selects (see 4.2.1).

Examples:
  twod_array[14][1][3:0] // access lower 4 bits of word
...

Успехов! Rob.

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


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

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

необходимо "напечатать" строку (группу символов), отделять я их буду столбцом заполненным нулями, но эта строка или один символ может начинаться в любой части экрана...

Вот так я себе представляю извлечение бита из ROM 8x8 и его отображение на экране

cntX - posX > 0 & cntX - posX < dimX & cntY - posY > 0 & cntY - posY < dimY — это условие для отображения Вашего массива. Нормализованные указатели соответственно: (cntX - posX), (cntY - posY). Дальше разбирайтесь с его внутренней адресацией, потому что пока не видно, чтобы в ней был порядок, т.е. чтобы Вы пересобирали его указатели.

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


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

2 minutes ago, Plain said:

cntX

это значение горизонтального счётчика (hcount)?

а вот эти переменные:  posX, dimX , за что отвечают?

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


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

2 часа назад, Nick_K сказал:

единственный Авторитет ... только ... IEEE Standard Verilog

Имелся ввиду авторитет краткого курса — не у всех есть возможность читать такие простыни, когда требуется одноразово решить простую задачу.

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


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

Снова здравствуйте, устройство отображения символов реализовано по книге Pong chu "FPGA Prototyping By Verilog Examples".

В данном случае устройство отображает символ из ПЗУ в необходимом месте экрана (как и хотел).

// ROM with synchonous read (inferring Block RAM)
// character ROM
//  - 8-by-16 (8-by-2^4) font
//  - 128 (2^7) characters
//  - ROM size: 512-by-8 (2^11-by-8) bits
//              16K bits: 1 BRAM

module font_rom
   (
    input wire clk,
    input wire [10:0] addr,
    output reg [7:0] data
   );
   
   // signal declaration
   reg [10:0] addr_reg; 

   // body
   always @(posedge clk) 
      addr_reg <= addr;
      
   always @*
      case (addr_reg)
         //code x00
         11'h000: data = 8'b00000000; // 
         11'h001: data = 8'b00000000; // 
         11'h002: data = 8'b00000000; // 
         11'h003: data = 8'b00000000; // 
         11'h004: data = 8'b00000000; // 
         11'h005: data = 8'b00000000; // 
         11'h006: data = 8'b00000000; // 
         11'h007: data = 8'b00000000; // 
         11'h008: data = 8'b00000000; // 
         11'h009: data = 8'b00000000; // 
         11'h00a: data = 8'b00000000; // 
         11'h00b: data = 8'b00000000; // 
         11'h00c: data = 8'b00000000; // 
         11'h00d: data = 8'b00000000; // 
         11'h00e: data = 8'b00000000; // 
         11'h00f: data = 8'b00000000; // 
         //code x01
........................

Извлечение пикселей символа:

  //Память ROM
   font_rom font_unit
   (.clk(clk), .addr(rom_addr), .data(font_word));
   // Сигналы знакогенератора
   wire [10:0] rom_addr;
   wire [6:0] char_addr;
   wire [3:0] row_addr;
   wire [2:0] bit_addr;
   wire [7:0] font_word;
   wire font_bit, text_bit_on;
   //ROM
   assign char_addr = 7'h41;
   assign row_addr = pixel_y[3:0];
   assign addr = {char_addr, row_addr};
   assign bit_addr = pixel_x[2:0];
   assign font_bit = data[bit_addr];
   assign text_bit_on = (pixel_x[10:3] == 2 && pixel_y[10:4] == 3) ?
                        font_bit : 1'b0;
   //ROM

"отрисовка":

always@(posedge clk)
begin
         if (text_bit_on)
           r <= 1'b1;
         else
           r <= 1'b0;
end

Хотелось бы отображать символы последовательно например инкрементируя код символа:

char_addr = code;

code <= code + 1'b1;

для этого необходима ОЗУ (если я не ошибаюсь).

Каким образом использовать ОЗУ для решения описанной мной задачи?

Память (я думаю) подойдёт однопортовая:

  reg [7:0] data;
  reg [2:0] addr;
  reg        we;
  reg [7:0]  ram [15:0];
  reg [2:0]  addr_r;

  always @(posedge clk) 
  begin
      if (we)
          ram[addr] <= data;//write
	else
      addr_r <= addr;
  end
  assign q = ram[addr_r]; //read

 

 

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


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

Ознакомьтесь с этой статьёй на хабре https://habr.com/ru/post/129746/ 

Хоть и на VHDL, но там очень красивые и полезные картинки.

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


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

22 minutes ago, Flip-fl0p said:

Ознакомьтесь с этой статьёй

благодарю, но каким образом (возможно я пропустил что-то в статье) это даст ответ на мой вопрос применительно к моему устройству в целом и к моей ROM в частности?

Я спросил: Каким образом использовать ОЗУ для решения описанной мной задачи?

т.е. меня интересует: как данные (символы) должны располагаться в памяти, когда записывать? Как, что и когда (данные) из памяти извлекать для отображения на экране?

p.s. извиняюсь если я непонятно сформулировал.

Можно разбить задачу на составляющие?

1.

2.

3.

и т.п.

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

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


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

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

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

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

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

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

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

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

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

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