Корзина

0 Товары - 0.00 RUB
В корзину

Курсы Валют

Курсы Валют  Дата ЦБ
Нал.USD
24.11 58.46
Нал.EUR
24.11 69.18
Нал.CNY
24.11 88.80

Оплата

visa

Реклама

Блог

Игра сапер на FPGA.

На сайте habrhabr.ru мы натолкнулись на статью Minesweeper на FPGA, в которой рассказывается о создании игры сапер для FPGA фирмы Xilinx. Думаю найдется мало людей, которые не знакомы с этой игрой. Для тех кто по какой то причине прошел мимо этой игры, напомню ее суть. Плоское или объёмное игровое поле разделено на смежные ячейки (квадраты, шестиугольники, кубы и т. п.), некоторые из которых «заминированы»; количество «заминированных» ячеек известно. Целью игры является открытие всех ячеек, не содержащих мины.

Основная концепция игры

Правила для игры:

Управление с клавиатуры:

  • "WSAD" — кнопки-стрелки для перемещения по экрану;
  • "Enter" — проверка поля на наличие/отсутствие мины;
  • "Space" — начать новую игру;
  • "Esc" — завершить текущую игру;
  • "Y/N" — для начала новой игры;

Поле 8х8, всего 8 мин на поле;

Остальные правила как в обычной игре сапёр;

Язык программирования ПЛИС: VHDL.

Иерархия проекта:

На одном из первых этапов проектирования необходимо прикинуть, а как же будет выглядеть проект и сколькими компонентами его удобнее описать. Я придумал следующую структуру:

  • --> Верхний уровень
  • ----> Контроллер PS/2
  • ----> Контроллер VGA 640x480
  • ----> Контроллер игры
  • -------> Блок отрисовки границ прямоугольника,
  • -------> Блок для отрисовки закрашенных полей 8х8
  • -------> Блок для отрисовки мин и цифр на поле
  • -----------> Память для расстановки мин
  • -----------> Память для символов
  • -------> Блок для отрисовки текста и диалоговых сообщений
  • -----------> Память для символов

Верхний уровень

Он описывает основные порты ввода-вывода, содержит блок синтеза частоты DCM для преобразования входной частоты с 50 МГц в 25 МГц. Код верхнего уровня выглядит следующим образом:

Verilog Code:
  1. entity top_minesweeper is
  2. port(
  3. -- PS/2 IO --
  4. PS2_CLK : in std_logic; -- CLK from PS/2 keyboard
  5. PS2_DATA : in std_logic; -- DATA from PS/2 keyboard
  6. -- CLOCK 50 MHz --
  7. CLK : in std_logic; -- MAIN CLOCK 50 MHz
  8. -- VGA SYNC --
  9. VGA_HSYNC : out std_logic; -- Horizontal sync
  10. VGA_VSYNC : out std_logic; -- Vertical sync
  11. VGA_R : out std_logic; -- RED
  12. VGA_G : out std_logic; -- GREEN
  13. VGA_B : out std_logic; -- BLUE
  14. -- SWITCHES --
  15. RESET : in std_logic -- Asynchronous reset: SW(0)
  16. );
  17. end top_minesweeper;
  18.  

Для переноса проекта на нашу плату VE-XC6SLX9, в принципе достаточно переопределить сигналы описанные в модуле top_minesweeper. В оригинальной статье неплохо описана вся логика работы проекта. Поэтому мы ограничимся видео работы и исходниками:

Проект игры Сапер: minesweeper.zip

Перевод

Вход

Или классический вход:

Время

Карта сайта Визуальная электроника