Необязательно иметь «классический» фреймбуфер, где всю картинку хранить.
Можно хранить только текущее состояние игры/поля, для этого 16Кб должно хватить)
[Либо даже на регистрах всё сделать, если совсем мало получается].
Дальше уже иметь модуль, который из такой памяти «состояния» игры отрисовывает картинку.
Можно даже сначала только одну память (один буфер) — с двумя портами: одна для чтения ( её читает VGA модуль, и отрисовывает что-то на экране ), другая для чтения и записи — её читает/пишет логика, которая обеспечивает игру. Да, в таком подходе, возможно в какой-то момент будет отрисовываться неправда, но, возможно, глаз это не заметит :)
Увы, данных про самые популярные в мире платы у меня нет :) Платы от Терасика для Альтеры, да, на слуху. Но являются ли они самыми популярными — не знаю.
Замечу, что у Терасика есть кит DE1 c Cyclone II, а тот кит, который использовал я (DE1-SoC) использует Cyclone V.
Да, фреймбуфера не было. Просто генерировал цвета в зависимости от pixel_x, pixel_y. см. файлы draw_*
Я не думаю, что мой взгляд на разницу Verilog от Systemverilog'a отличается от общепринятого :)
Из того, что я использовал в этом проекте:
В стандарте 2001 года не было struct и enum.
always_comb — не надо думать о списке чувствительности когда описываешь комбинационку. always_ff — это триггер.
logic — не надо думать о reg/wire.
В других проектах использую и интерфейсы, и package.
Как отличия помогли в проекте?
Ну, например, если бы не было структуры game_data_t, то мне было бы лень тащить сигнал game_over_state, а так добавил в структуру — она появилась в модуле draw_strings. Либо например структура block_info_t — содержит информацию о блоке. Удобно — вместо пяти строчек обьявления сигналов — получается одна.
Либо move_t — сначала их было всего четыре, и в классической ситуации надо было бы заводить 2-х битную переменную и делать типа `define MOVE_DOWN 2'b00 и т.п. Потом добавился MOVE_APPEAR — и пришлось бы делать 3-х битную переменную, а так это всё автоматически.
Вы правы, процессор может помочь в «запуске» более серьезных игр.
В некоторых реализациях того же тетриса используют «софтовый» процессор (NIOS) внутри самой FPGA. Я намеренно отказался от такого, т.к. мне было интересно сделать без процессора)
Можно попробовать написать какой-нибудь экшен, типа пакмана (на чистом Verilog'e без процессора), но я не знаю трюков для видеоотображения, которые применяли разработчики того времени.
Здесь фактически я отрисовываю статичную картинку, т.к. меняется очень редко, а в экшене немного не так)
Этот девкит и не позиционируется для домашних поделок :)
В предыдущей статье автора ( habrahabr.ru/post/231007/ ) можно найти и цену на него и сферы применения)
Да, tshark/wireshark вместе с Lua может быть удобной связкой для анализа протоколов/сетевой активности. Как-то приходилось писать диссектор на Lua для TWAMP-протокола, а так же пакетов, генерируемых всем известой утилиты iperf.
Удалось ли добиться точности измерений, которая вас удовлетворила бы?
Можете что-то посоветовать?
Планируете добавлять окна и таймауты?
А какую микросхему предлагаете использовать?
Можно хранить только текущее состояние игры/поля, для этого 16Кб должно хватить)
[Либо даже на регистрах всё сделать, если совсем мало получается].
Дальше уже иметь модуль, который из такой памяти «состояния» игры отрисовывает картинку.
Можно даже сначала только одну память (один буфер) — с двумя портами: одна для чтения ( её читает VGA модуль, и отрисовывает что-то на экране ), другая для чтения и записи — её читает/пишет логика, которая обеспечивает игру. Да, в таком подходе, возможно в какой-то момент будет отрисовываться неправда, но, возможно, глаз это не заметит :)
Даже если это будет 100-1000 тактов — глаз этого не заметит)
У меня общий вопрос:
Вырастает ли скилл стрельбы из реального пистолета при стрельбе из «лазерного»? :) Ведь отдачи нет, вес другой, и пр…
Замечу, что у Терасика есть кит DE1 c Cyclone II, а тот кит, который использовал я (DE1-SoC) использует Cyclone V.
Кому как удобнее.
Xilinx ISE вроде SystemVerilog не поддерживает, а Synplify должен.
Если знакомы с конструкциями Veriloga, то посмотрите «SystemVerilog for Design»)
Да, фреймбуфера не было. Просто генерировал цвета в зависимости от pixel_x, pixel_y. см. файлы draw_*
Я не думаю, что мой взгляд на разницу Verilog от Systemverilog'a отличается от общепринятого :)
Из того, что я использовал в этом проекте:
В других проектах использую и интерфейсы, и package.
Как отличия помогли в проекте?
Ну, например, если бы не было структуры game_data_t, то мне было бы лень тащить сигнал game_over_state, а так добавил в структуру — она появилась в модуле draw_strings. Либо например структура block_info_t — содержит информацию о блоке. Удобно — вместо пяти строчек обьявления сигналов — получается одна.
Либо move_t — сначала их было всего четыре, и в классической ситуации надо было бы заводить 2-х битную переменную и делать типа `define MOVE_DOWN 2'b00 и т.п. Потом добавился MOVE_APPEAR — и пришлось бы делать 3-х битную переменную, а так это всё автоматически.
ИМХО, упрощение в разработке и красота :)
Есть большой выбор китов: разный диапазон цен и периферии.
Если брать по Альтере, то можно прицениться тут: www.altera.com/products/devkits/kit-dev_platforms.jsp?sortcol=price&sortorder=desc
В принципе, если там интерфейс с дисплеем не сложный, почему бы и нет?
В некоторых реализациях того же тетриса используют «софтовый» процессор (NIOS) внутри самой FPGA. Я намеренно отказался от такого, т.к. мне было интересно сделать без процессора)
Не, вся видеомагия от меня слишком далека)
Можно попробовать написать какой-нибудь экшен, типа пакмана (на чистом Verilog'e без процессора), но я не знаю трюков для видеоотображения, которые применяли разработчики того времени.
Здесь фактически я отрисовываю статичную картинку, т.к. меняется очень редко, а в экшене немного не так)
Ничего «необычного», так что может wget и не фильтруется.
iceweasel: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.2.0
wget: Wget/1.13.4 (linux-gnu)
СПб, InterZet.
В предыдущей статье автора ( habrahabr.ru/post/231007/ ) можно найти и цену на него и сферы применения)
Удалось ли добиться точности измерений, которая вас удовлетворила бы?
Какие-то общие вещи см. Steve Kilts «Advanced FPGA Design».