An open API service indexing awesome lists of open source software.

https://github.com/yym68686/logical-simplification

基于QT的计算机辅助逻辑化简
https://github.com/yym68686/logical-simplification

Last synced: about 1 month ago
JSON representation

基于QT的计算机辅助逻辑化简

Awesome Lists containing this project

README

          

# 项目介绍
本项目是南京航空航天大学现代电子技术(数字电路)的课程设计
# 使用说明

本项目包括以下文件夹/文件

- Logical_Simplification_release-v1.0
- 这个文件夹是可执行程序所在的文件夹,打开该文件夹,双击Logical_Simplification.exe即可打开图形界面
- 源代码
- 这个文件夹为项目文件夹,这个文件夹下包含所有的.cpp .h文件,安装QT 4.11.1以上环境,即可打开项目文件夹,按CTRL + R即可运行一个一摸一样的软件

# 软件介绍

这是一个基于QT的计算机辅助逻辑化简的程序。这只是一个初始版本,但初始版本并不意味着它不强大,它可以很快的计算出正确答案。

本软件支持的功能有:

- 拥有用户友好型的交互界面
- 只需要利用最小项表达式,点一点鼠标即可完成逻辑表达式的输入
- 高达4个输入变量可供选择
- 高达3个输出变量可供选择

**注意事项**:关闭本软件需要按快捷键 **ALT + F4**

本软件为release v1.0版本,未来的开发方向即需要完善的地方:

- 支持高达10个输入变量
- 支持高达10个输出变量
- 支持文本输入
- 支持五变量以下的卡诺图可视化
- 支持输出所有最简结果
- 支持未定项

# 软件使用说明

打开.\Logical_Simplification_release-v1.0\Logical_Simplification.exe

会出现以下界面:

- 初始化选项卡

- 在这里可以自定义设置输入输出变量的个数
- 设定完了之后,真值表选项卡会同步更新

- 真值表选项卡
- 列表第一一行是输入输出变量的名字
- 根据需要化简的最小项表达式,点按输出列把0变成1,全部输入完毕后,选择最简与或表达式即可看到化简结果,比如最小项表达式为F=m∑(2,4,7),那么就把0010,0100,0111,所在行的输出变量用鼠标点成1,其他保持不变,点按完毕后,选择最简与或表达式选项卡即可看到化简结果

- 最简与或表达式选项卡

- 这里是最后化简结果显示的地方,如果有3个输出变量就会显示三行

# 实现思路

本软件使用QM列表化简法

## 相关定义

- 蕴涵项:在函数的“与或”表达式中,每个“与”项被称为该函数的蕴涵项。
- 质蕴涵项:若函数的—个蕴涵项不是该函数中其它蕴涵项的子集,则此蕴涵
项称为质蕴涵项,简称为质项。
- 必要质蕴涵项:若函数的—个质蕴涵项所包含的某一个最小项不被函数的其
它任何质蕴涵项包含.则此质蕴涵项被称为必要质蕴涵项,简称为必要质项。
列表化简法的思路是先找出给定函数 F 的全部素项,然后找出其中的实质素
项;若实质素项不能覆盖 F 的所有最小项,则进一步找出所需素项,以构成 F 的
最简素项集。

## 化简步骤

一般步骤:

- 将函数表示成“最小项之和”形式,并用二进制码表示每—个最小
项。
- 找出函数的全部质蕴涵项。先将n 个变量函数中的相邻最小项合并,
消去相异的—个变量,得到( n-1 ) 个变量的“与”项,再将相邻的(n-1 ) 个变量的
“与”项合并,消去相异的变量,得到 (n-2 ) 个变量的“与”项,„„依此类推,
直到不能再合并为止。所得到的全部不能再合并的“与”项(包括不能合并的最
小项),即所要求的全部质蕴涵项。
- 找出函数的必要质蕴涵项
- 找出函数的最小覆盖

在本设计中使用 C++ 语言进行实现,则化简步骤如下:

- 将最小项分组
- 将最小项合并,并找出质蕴涵项
- 找出必要质蕴涵项
- 得到最后的必要质蕴涵项
- 保留优势行,消去劣势行
- 保留劣势列,消去优势列
- 多次重复使用行列消去法

其基本原理是通过逐级合并相邻最小项并消去多余因子,其原理跟卡诺图化简法类似