引言
今天继续常春藤名校之一——康奈尔大学的FPGA课程ECE 5760典型案例分享:基于DE1-SOC开发板的FPGA数独谜题求解器。
1. 项目概述
项目说明
介绍项目之前先介绍数独游戏。
数独游戏是一种广受欢迎的数学游戏。在其基本且被广泛认可的形式中,数独包含一个 9 × 9 的网格,其中某些方格已填入数字。该游戏的目的是通过填入剩余的方格来完成网格,同时确保每一行、每一列以及九个 3 × 3 子网格都恰好包含数字 1 到 9 各一次。解决该游戏的诀窍在于利用网格中包含的数字作为线索来推导出可能的解。下图是世界最难的数独谜题之一示例。
它极具挑战性,因为只有一种解法,而提供的线索非常有限。如果您感兴趣,不妨尝试自行解决这个谜题,并将结果与本文的FPGA实现结果进行对比。
该项目是在友晶DE1-SOC开发板实现数独谜题求解器,用户可以使用鼠标和键盘控制Sudoku网格。我们利用FPGA上的反向追踪算法高效解决谜题。片上CPU在FPGA的帮助下,在VGA屏幕上显示Sudoku网,用户可以输入数字并直观地看到谜题。FPGA实时处理解题过程,更新网格并提供即时反馈。
求解器的速度取决于数独谜题的难度和解的数量。对于一个简单的数独谜,求解者可以在几百微秒内完成。然而,对于一个较难的谜题,或者如果第一个空格的解是一个较大的数字,可能需要大约10000微秒才能完成。
2. 反向追踪算法
从第一个空格开始,依次测试从1到9的数字。如果一个数字满足所有三个条件——这意味着它没有出现在同一行、列或块中——就将该数字放入该格中。然后继续到下一个空格,并使用更新的Sudoku棋盘重复这个过程。继续时可能会遇到一个在1到9之间的数字不匹配的格。当这种情况发生时就返回到之前的格并尝试替代数字。鉴于一个Sudoku谜题只有一个解,系统将不断拒绝无效解,直到找到一个符合所有条件的正确解。
3. 硬件设计
硬件设计分为四个模块:控制单元、数独寄存器、更新器和检查器,如下图所示。每个模块具有不同的功能,并通过图中指示的信号进行通信:
4. 软件设计
该项目使用运行在HPS上的Linux操作系统来编译和执行Sudoku谜题解法所必需的C程序。
C程序的主要目标包括:
在VGA显示器上绘制数独网格。
通过鼠标和键盘处理用户的输入和交互。
将数独谜题数据发送到FPGA进行处理。
从FPGA接收解决方案并将其显示在VGA上。
5. 源码下载
https://github.com/dengyutu/CU-Project-FPGA-Sudoku-Solver
-
FPGA
+关注
关注
1646文章
22069浏览量
619728 -
寄存器
+关注
关注
31文章
5440浏览量
124947 -
开发板
+关注
关注
25文章
5725浏览量
105605
原文标题:【开源项目分享】基于DE1-SOC开发板的FPGA数独谜题求解器
文章出处:【微信号:友晶FPGA,微信公众号:友晶FPGA】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
基于DE1-SOC开发板的oneAPI实验教程(2)

DE1-SOC新货转让
DE1-SoC官方自带ControlPanel代码解读与AV图像采集处理?
小弟求购Altera DE1-SOC开发板,哪位大神玩剩下了传承一下,多谢!
de1-soc FPGA(Quartus工程含Qsys系统) + HPS 操作步骤
如何在DE1-SOC开发板上搭建NIOS II处理器运行UCOS
DE1-SoC开发工具包的详细用户和使用手册资料免费下载

ALTERA公司的DE1 SoC FPGA开发板的培训教程免费下载

评论