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中的项相交;
 
 

Rocket - decode - SimplifyDC的更多相关文章

  1. Rocket - decode - 几个问题

    https://mp.weixin.qq.com/s/pMsK_E4mQrm3QXdnp7nDPQ   讨论指令解码部分遗留的几个问题.     1. 最小项与蕴含项之间的关系   参考链接: htt ...

  2. Rocket - decode - 解码单个信号

    https://mp.weixin.qq.com/s/0D_NaeBEZX5LBQRdCz2seQ     介绍解码单个信号逻辑的实现.    1. 单个信号   每个指令对应了一组信号,每个信号对应 ...

  3. Rocket - decode - Term

    https://mp.weixin.qq.com/s/CbBWdTlc_DESlUzd8KFcSg   介绍Term类各方法的实现.     ​​   1. prime   表示一个项是否是质项,即这 ...

  4. Rocket - decode - Simplify

    https://mp.weixin.qq.com/s/YWXYNaRU-DbLOMxpzF2bpQ   介绍Simplify如何简化解码逻辑.     1. 使用   Simplify在DecodeL ...

  5. Rocket - decode - 最小项与最大项

    https://mp.weixin.qq.com/s/XrBh9Kapj01HdvBi5MkbgA   介绍布尔代数最小项与最大项相关概念,以及Term类的实现.     参考链接: https:// ...

  6. Rocket - decode - Inst Decode

    https://mp.weixin.qq.com/s/WvepB3yAzjMbQalO3Z82pQ   介绍RocketChip Instruction解码逻辑的实现.   1. RISC-V   R ...

  7. 64位开源处理器Rocket该人士介绍

    最近大概读一点UCB发布时间Rocket处理器的源代码,的每个文件的源代码的功能有一定的一般理解,Mark一点点. Rocket是一家64bit标量处理器,5第一阶段管道,用途risc-v指令集.综合 ...

  8. (转)64位开源处理器Rocket的源代码简单介绍

    转载地址: http://blog.csdn.net/leishangwen/article/details/46604819 最近大概阅读了一下UCB发布的Rocket处理器的源码,对源代码各个文件 ...

  9. flask+sqlite3+echarts2+ajax数据可视化报错:UnicodeDecodeError: 'utf8' codec can't decode byte解决方法

    flask+sqlite3+echarts2+ajax数据可视化报错: UnicodeDecodeError: 'utf8' codec can't decode byte 解决方法: 将 py文件和 ...

随机推荐

  1. P2774 方格取数问题 网络流重温

    P2774 方格取数问题 这个题目之前写过一次,现在重温还是感觉有点难,可能之前没有理解透彻. 这个题目要求取一定数量的数,并且这些数在方格里面不能相邻,问取完数之后和最大是多少. 这个很好的用了网络 ...

  2. 抓住CoAP协议的“心”

    摘要 The Constrained Application Protocol(CoAP)是一种专用的Web传输协议,用于受约束的节点和受约束的(例如,低功率,有损)网络. 节点通常具有带少量ROM和 ...

  3. spring内嵌jetty容器,实现main方法启动web项目

    Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布.开发人员可以将 ...

  4. Git使用教程之在github上创建项目(三)

    继续~ 登录你的github账号,创建一个新项目 1. 2. 至此,github的项目也创建完成了.

  5. What?废柴, 模拟登陆,代码控制滑动验证真的很难吗?Are you kidding???

    1.简介 在前边的python接口自动化的时候,我们由于博客园的登录机制的改变,没有用博客园的登录测试接口.那么博客园现在变成了滑动验证登录,而且现在绝大多数的登录都变成这种滑动验证和验证码的登录验证 ...

  6. css段落样式

    字间距 letter-spacing 首行缩进 text-indent

  7. struts2 进阶--异常捕获机制

    在SpringMvc中有自己的异常处理机制,struts2当然会有此功能,主要是在struts.xml中配置: <bean type="com.opensymphony.xwork2. ...

  8. Java并发编程:线程池ThreadPoolExecutor

    多线程的程序的确能发挥多核处理器的性能.虽然与进程相比,线程轻量化了很多,但是其创建和关闭同样需要花费时间.而且线程多了以后,也会抢占内存资源.如果不对线程加以管理的话,是一个非常大的隐患.而线程池的 ...

  9. Echarts图标宽度变成100px,让图表宽度随着父元素自动适应,Vue实时监听宽度的变化,这可能是史上最好的解决方案!

    最近工作中element后台管理使用Echarts图表,本后台项目分图表模式和列表模式,使用display控制显示隐藏,这样就引出了本文的问题. 问题1:Echarts图标宽度变成100px? 问题2 ...

  10. spark机器学习从0到1主成分分析-PCA (八)

      PCA 一.概念 主成分分析(Principal Component Analysis)是指将多个变量通过线性变换以选出较少数重要变量的一种多元统计分析方法,又称为主成分分析.在实际应用场合中,为 ...