Plain 168 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 10 минут назад, RobFPGA сказал: с тех времен он запузырился С каких конкретно времён? Где про это официально почитать? asic-world уже не авторитет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба Приветствую! 11 minutes ago, Plain said: С каких конкретно времён? Где про это официально почитать? asic-world уже не авторитет? Как минимум с 2001. Вышеприведенный пример синтезировался в Vivado 2018.3 с опцией "verilog_version=Verilog 2001" Авторитет это не икона, чтобы себе лоб расшибать. Успехов! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба Ну т.е. где почитать Вы не в курсе, а где сами прочитали не помните. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 20 minutes ago, Plain said: Ну т.е. где почитать Вы не в курсе, а где сами прочитали не помните. Я не буду говорить, что лично видел, но единственный Авторитет и Икона у Вас и у Нас может быть только этот ресурс: 1364-2001 - IEEE Standard Verilog Hardware Description Language Без всяких или и если. Там точно всё написано истинно и безоговорочно (исключением могут быть "левые" компиляторы и симуляторы и то больше для SV не всегда полная поддержка) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба В 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 47 minutes ago, Plain said: Ну т.е. где почитать Вы не в курсе, а где сами прочитали не помните. Ооо... знакомые нотки ... Поможем авторитету на мопеде: 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey87 0 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 9 minutes ago, Plain said: Должно быть так: > VA+FP & < VA+FP+SP. Спасибо исправил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 2 часа назад, Alexey87 сказал: необходимо "напечатать" строку (группу символов), отделять я их буду столбцом заполненным нулями, но эта строка или один символ может начинаться в любой части экрана... Вот так я себе представляю извлечение бита из ROM 8x8 и его отображение на экране cntX - posX > 0 & cntX - posX < dimX & cntY - posY > 0 & cntY - posY < dimY — это условие для отображения Вашего массива. Нормализованные указатели соответственно: (cntX - posX), (cntY - posY). Дальше разбирайтесь с его внутренней адресацией, потому что пока не видно, чтобы в ней был порядок, т.е. чтобы Вы пересобирали его указатели. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey87 0 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 2 minutes ago, Plain said: cntX это значение горизонтального счётчика (hcount)? а вот эти переменные: posX, dimX , за что отвечают? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба Позиции и размеры объекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 168 29 июля, 2019 Опубликовано 29 июля, 2019 · Жалоба 2 часа назад, Nick_K сказал: единственный Авторитет ... только ... IEEE Standard Verilog Имелся ввиду авторитет краткого курса — не у всех есть возможность читать такие простыни, когда требуется одноразово решить простую задачу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey87 0 14 августа, 2019 Опубликовано 14 августа, 2019 · Жалоба Всем спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey87 0 26 августа, 2019 Опубликовано 26 августа, 2019 · Жалоба Снова здравствуйте, устройство отображения символов реализовано по книге 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 26 августа, 2019 Опубликовано 26 августа, 2019 · Жалоба Ознакомьтесь с этой статьёй на хабре : https://habr.com/ru/post/129746/ Хоть и на VHDL, но там очень красивые и полезные картинки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexey87 0 26 августа, 2019 Опубликовано 26 августа, 2019 (изменено) · Жалоба 22 minutes ago, Flip-fl0p said: Ознакомьтесь с этой статьёй благодарю, но каким образом (возможно я пропустил что-то в статье) это даст ответ на мой вопрос применительно к моему устройству в целом и к моей ROM в частности? Я спросил: Каким образом использовать ОЗУ для решения описанной мной задачи? т.е. меня интересует: как данные (символы) должны располагаться в памяти, когда записывать? Как, что и когда (данные) из памяти извлекать для отображения на экране? p.s. извиняюсь если я непонятно сформулировал. Можно разбить задачу на составляющие? 1. 2. 3. и т.п. Изменено 26 августа, 2019 пользователем Alexey87 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться