1.boolean logic

常用的boolean logic有AND OR NOT,其性质如下

事实上,可用AND和NOT来表示OR

x or y = NOT(NOT(x) AND NOT(y))

但没法只用AND或NOT,于是出来了NAND,x NAND y = NOT(x AND y),其真值表如下

于是可以用NAND表示AND和NOT

NOT(x) = x NAND x

x AND y = NOT(x NAND y)

2. HDL逻辑门接口

3.HDL实现

1)Mux4Way16

/**
* 4-way 16-bit multiplexor:
* out = a if sel == 00
* b if sel == 01
* c if sel == 10
* d if sel == 11
*/

自己做的时候超级傻逼。我就想啊,首先用 And(a = sel[0],b = sel[1],out = outd);这样就能通过outd是否为1判断是否选择d,然后把16个元素依次通过And(a = d[0],b = outd,out = out4[0])得到4个长度为16的输出,再把他们相加就得到了最后的输出,超级麻烦超级傻逼。

然后偷偷瞄了下答案,真是哭了,充分利用二进制的结构特性,先看sel[0]来决定用a还是b 或者 c还是d 得到两个备选,再看sel[1]来决定用最后输出,就两行,真是惊呆...

CHIP Mux4Way16 {
    ], b[], c[], d[], sel[];
    ];

    PARTS:
    // Put your code here:
    Mux16(a = a,b = b,sel = sel[],out = out1);
    Mux16(a = c,b = d,sel = sel[],out = out2);
    Mux16(a = out1,b = out2,sel = sel[],out = out);
}

2)DMux4Way

哈哈这个题做得好搞,完全不动脑型,把Mux的思路逆着来就行

CHIP DMux4Way {
    ];
    OUT a, b, c, d;

    PARTS:
    // Put your code here:
    DMux(],a = out1,b = out2);
    DMux(],a = a,b = b);
    DMux(],a = c,b = d);
}

最新文章

  1. laypage分页
  2. Linux:-杀进程的技巧
  3. springmvc 添加Junit4
  4. [U3D 导出Xcode工程包,用Xcode给U3D脚本传递参数]
  5. 利用crontab自动更新SVN代码
  6. java:IO-读写大文件
  7. java.lang.NoClassDefFoundError: javax/servlet/ServletContext
  8. Linux搭建SVN 服务器(转)
  9. 基本SQL练习题--选课经典例题
  10. java计算两个日期相差多少天
  11. Android View绘制和显示原理简介
  12. 大数据学习总结(5)参考elk技术架构
  13. 开源干货!!!.NET Core + JWT令牌认证 + Vue.js(iview-admin) 通用动态权限(RBAC)管理系统框架[DncZeus]开源啦!!!
  14. webstorm2018.1 汉化
  15. MyBatis 缓存机制
  16. Java相关查询记录
  17. Future接口和Callable接口以及FeatureTask详解
  18. IntelliJ IDEA远程调试运行中的JAVA程序/项目
  19. [SublimeText] 之 Packages
  20. COM如何区分套间线程(apartment thread)和自由线程(free thread)

热门文章

  1. 【SQL】SqlServer中Group By后,字符串合并
  2. HDFS 开发中的文件配置优先级
  3. hostnamectl 修改 CentOS7 主机名
  4. JDBC-Batch 批量执行
  5. 标签中的onclick调用js方法传递多个参数的解决方案
  6. HDU 6374(拼三角形 **)
  7. 历史SQL语句之一
  8. C#中ICollection介绍
  9. 转--select/poll/epoll到底是什么一回事
  10. SpringBoot系列: Spring MVC视图方法的补充