热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RocketdecodeSimplifyDC

https:mp.weixin.qq.coms4uWqBRrMVG6FlnBKmw8U-w介绍SimplifyDC如何简化解码逻辑。1.使用??简化从mint和maxt中查找的逻辑

https://mp.weixin.qq.com/s/4uWqBRrMVG6FlnBKmw8U-w

 

介绍SimplifyDC如何简化解码逻辑。

 

 

1. 使用

 

?技术分享图片?

 

简化从mint和maxt中查找的逻辑。

 

其方法签名如下:

?技术分享图片?

其中:

a. minTerms: 使结果为1的蕴含项;

b. maxTerms:使结果为0的蕴含项;

c. bits:最小项中变量的个数;

 

 

2. 主要过程

 

?技术分享图片?

主要过程与Simplify基本一致:

1) 从minTerms和maxTerms中获取质项,即在卡诺图中画圈,把最小项划入圈中,以合并最小项,但又不能在圈中圈入maxTerms中的项;

2) 从质项中查找必要质项,做出如下区分:

a. 把质项分为必要质项和非必要质项;

b. 把最小项(minTerms)分为必要质项覆盖的最小项和未覆盖的最小项;

c. 从非必要质项中提取出代价最小的能够覆盖未覆盖最小项的质项,并与必要质项合并为cover;

3) cover就是能够覆盖minTerms的最简项的集合;

 

3. 获取质项

 

getPrimeImplicants实现如下:

?技术分享图片?

 

1) 前半部分与Simplify相同,表格示例如下:

 

?技术分享图片?

 

2) 尝试把单元格(i,j)中未合并的质项进行化简

 

化简的方法是消去其中一个值为0的变量,如果消去之后的新项不与maxTerms中的任何项相交,则该化简可以进行。

 

单元格(i,j)相较于(i,j+1)在上面,即above为true。也意味着above的单元格中的质项,其value各位中1的个数少一个。

 

所以尝试把above的单元格中质项的某变量的值从0变为1,而把在下的单元格中执行的某变量的值从1变为0。

 

单元格(i,j)中的质项,合并(merge)吸收一个变量之后,value中1的位数不变,而mask中多了一个1,所以添加到单元格(i+1,j)中。

 

单元格(i,j+1)中的质项,合并吸收一个变量之后,value中1的位数减少一个,而mask中1的位数增加一个,所以也是添加到单元格(i+1,j)中。

 

merge是有方向的:a merge b,则a.value必然大于b.value。这是dc merge a和a merge dc的区别。

 

实现如下:

?技术分享图片?

 

a. 取出单元格(i,j)中未合并的质项;

b. 该单元格在上,above=true;

c. 如果某个变量值为0,且吸收之后不与maxTerms中的任何项相交,则可以用以化简:

 

?技术分享图片?

 

term中的每一个变量都会尝试,碰到第一个可以吸收的变量即返回。

 

3) 尝试把单元格(i,j+1)中未合并的质项进行化简

 

实现如下:

?技术分享图片?

 

a. 取出单元格(i,j+1)中未合并的质项;

b. 该单元格在下,above=false;

c. 如果某个变量值为1,且吸收之后不与maxTerms中的任何项相交,则可以用以化简:

 

?技术分享图片?

 

 

4. 获取必要质项

 

与Simplify相同。

 

5. 获取最后化简结果cover

 

与Simplify相同。

 

6. 验证化简结果

 

?技术分享图片?

 

a. 化简结果要覆盖全部minTerms中的项;

b. 化简结果不能与maxTerms中的项相交;

 

 


推荐阅读
  • 本文详细探讨了BCTF竞赛中窃密木马题目的解题策略,重点分析了该题目在漏洞挖掘与利用方面的技巧。 ... [详细]
  • 1#include2#defineM1000103#defineRGregister4#defineinf0x3f3f3f3f5usingnamespacestd;6boolrev ... [详细]
  • SQL Server 存储过程实践任务(第二部分)
    本文档详细介绍了三个SQL Server存储过程的创建与使用方法,包括统计特定类型客房的入住人数、根据房间号查询客房详情以及删除特定类型的客房记录。 ... [详细]
  • Python 日志记录模块详解
    日志记录机制是软件开发中不可或缺的一部分,它帮助开发者追踪和调试程序运行时的各种异常。Python 提供了内置的 logging 模块,使我们在代码中记录和管理日志信息变得更加方便。本文将详细介绍如何使用 Python 的 logging 模块。 ... [详细]
  • 树莓派4B:安装基础操作系统指南
    本文将详细介绍如何为树莓派4B安装基础操作系统,包括所需材料、镜像下载、镜像烧录以及更换国内源等步骤。 ... [详细]
  • 在编程实践中,正确管理和释放资源是非常重要的。本文将探讨 Python 中的 'with' 关键字及其背后的上下文管理器机制,以及它们如何帮助我们更安全、高效地管理资源。 ... [详细]
  • 材料光学属性集
    材料光学属性集概述了材料在不同光谱下的光学行为,包括可见光透射率、太阳光透射率等关键参数。 ... [详细]
  • 本文提供了《汇编语言 第3版》中检测点11.2的详细参考答案,包括了各指令执行后的状态标志分析。 ... [详细]
  • 题目编号:2049 [SDOI2008]Cave Exploration。题目描述了一种动态图操作场景,涉及三种基本操作:断开两个节点间的连接(destroy(a,b))、建立两个节点间的连接(connect(a,b))以及查询两节点是否连通(query(a,b))。所有操作均确保图中无环存在。 ... [详细]
  • 本文介绍了一个使用mii-tool工具检查网络接口状态的Bash脚本,并将结果记录到日志文件中。 ... [详细]
  • 本文探讨了如何在Windows程序中实现高精度的定时控制,特别是针对需要精确控制发包频率的应用场景,如“小兵以太网测试仪”。 ... [详细]
  • 本文详细介绍了进程、线程和协程的概念及其之间的区别与联系。进程是在内存中运行的独立实体,具有独立的地址空间和资源;线程是操作系统调度的基本单位,属于进程内部;协程则是用户态下的轻量级调度单元,性能更高。 ... [详细]
  • 题目描述:计算从起点到终点的最小能量消耗。如果下一个单元格的风向与当前单元格相同,则消耗为0,否则为1。共有8个可能的方向。 ... [详细]
  • 本文介绍如何通过参数化查询来防止SQL注入攻击,确保数据库的安全性。示例代码展示了在C#中使用参数化查询添加学生信息的方法。 ... [详细]
  • AngularJS 控制器详解
    本文通过一个示例详细介绍了 AngularJS 控制器的使用方法,并探讨了控制器之间数据共享的问题。 ... [详细]
author-avatar
梁琦rx1987_865
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有