https://mp.weixin.qq.com/s/yP9xKeg0iHJChuMPzxdJtA

https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/conditional/Mux.java

​​

Mux根据选择位的值,从两位数据中选择一位输出。

下面基于Intellj IDEA创建Mux选择器,验证基本功能,并生成Verilog。

1. 创建Mux.java类。

​​

2. 添加代码使Mux继承Node类

​​

利用Intellj IDEA强大的提示功能,直接从选项中选择即可:

​​

3. 生成logic()方法

红色波浪线为出错的地方。可以点提示符号看提示:

​​

也可以使用快捷键Alt+Enter:

​​

我们选择实现方法,会询问要实现的父类中的抽象方法:

​​

这里只有一个,直接点OK,可以看到生成了一个logic()方法:

​​

4. 生成构造方法

把构造方法放在logic()方法的上面,添加几个空行,右击选择Generate:

​​

选择Constructor:

​​

即生成构造方法:

​​

5. 为构造方法添加输入和输出

从原理图可以看出,Mux有两个数据输入和一个选择输入,一个输出。

​​

搜集一下输入线和输出线:

​​

调用construct()方法构建节点:

​​

5. 声明节点内部的线

节点内部需要从input/output port引出线连接到内部的子节点上,可以作为Mux类的属性声明;

​​

6. 实现logic()方法:

logic()方法需要从input port引出线连接到子节点,并把子节点的输出线连接到Mux节点的output port上。

从input port 0,1,2分别引出线in0,in1,sel, 创建线out连接到output port 0.

​​

创建子节点并连接:

​​

这样所有的线就连接完成了。

7. 创建inst静态方法返回Mux节点实例,方便使用:

​​

8. 创建main函数执行并验证结果。

​​

点击三角符号运行查看结果:

​​

结果为x,这是因为in0, in1, sel的初值并没有向后传播,所以打印的为out的初值。

使用PropagateManager传播一下值,

​​

运行结果为:

​​

可以看到与真值表中的第3行相同,out的值为in0的值,即0.

改变sel的值,选择输出in1,

​​

因为只有sel的值发生改变,所以只需要传播sel的值即可。运行结果如下:

​​

可以看到与真值表倒数第2行一致,选择了in1的值,即1.

9. 生成Verilog

直接添加一行,调用mux.toVerilog()即可。

​​

运行输出如下:

​​

可以直接拷贝出来使用。

因为节点内部使用的线,没有声明为节点属性。并且暂时没有支持logic()内部局部变量解析,所以使用了普通的命名。

修改一下,作为节点类的属性声明:

​​

运行生成的Verilog如下:

​​

jchdl-GSL-实例 - 使用Intellij IDEA创建Mux的更多相关文章

  1. jchdl - GSL实例 - Mux4(使用Mux)

    https://mp.weixin.qq.com/s/GrYJ4KXEFRoLLmLnAGoMSA 原理图 ​​ 参考链接 https://github.com/wjcdx/jchdl/blob/ma ...

  2. jchdl - GSL实例 - Mux4(使用WireVec简化输入线声明)

    https://mp.weixin.qq.com/s/yJx_dV6ScUStJtPWVuD38w 原理图 ​​ 参考链接 https://github.com/wjcdx/jchdl/blob/ma ...

  3. jchdl - GSL实例 - Assign

    https://mp.weixin.qq.com/s/MtHR3iolPd5VQq6AUE-JPg   Assign是一个节点,把输入线直接赋值给输出线.在转换成Verilog时,这种类型的节点会直接 ...

  4. jchdl - GSL实例 - Mux4

    https://mp.weixin.qq.com/s/hh0eExVFC6cxzpvNI1cA9A 使用门实现四选一选择器. 原理图 ​​ 参考链接 https://github.com/wjcdx/ ...

  5. jchdl - GSL实例 - Counter

    https://mp.weixin.qq.com/s/BjQtQE8DfaKP1XwcTiCwVg   ​​ 摘自康华光<电子技术基础 · 数字部分>(第五版)   参考链接 https: ...

  6. jchdl - GSL实例 - Register

    https://mp.weixin.qq.com/s/uD5JVlAjTHQus2pnzPrdLg   多个D触发器可以组成一组寄存器. ​​ 摘自康华光<电子技术基础 · 数字部分>(第 ...

  7. jchdl - GSL实例 - Add

    https://mp.weixin.qq.com/s/6xcYYdYZTBPTf25xFluzBQ   使用FullAdder级联实现加法器   参考链接: https://github.com/wj ...

  8. jchdl - GSL实例 - DFlipFlop(D触发器)

    https://mp.weixin.qq.com/s/7N3avTxTd2ZUnAcKg4w3Ig   D触发器对边沿敏感,只有当相应的边沿出现时,才会触发D的值传播到输出Q.   ​​ 引自:htt ...

  9. jchdl - GSL实例 - MulC2(有符号数的乘法)

      这里的实现,先把符号位取出来,使用两个正数相乘,然后在把符号加到乘积上.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jch ...

随机推荐

  1. A Simple Problem with Integers 循环节 修改 平方 找规律 线段树

    A Simple Problem with Integers 这个题目首先要打表找规律,这个对2018取模最后都会进入一个循环节,这个循环节的打表要用到龟兔赛跑. 龟兔赛跑算法 floyed判环算法 ...

  2. dp cf 20190615

    A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果 ...

  3. 关于网上quartus ii 生成fft核出现问题解决

    ------------恢复内容开始------------ 关于网上quartus ii 生成fft核出现问题解决 1:必须把软件破解啦 2:必须把IP核破解啦 破解步骤网上也有可以直接看,一定要全 ...

  4. Java爬虫Ins博主所有帖子的点赞和评论导出excel

    前言 某天朋友说,能不能帮忙扒下ins的博主帖子,要所有帖子的点赞和评论,我本来准备让会python的同事写的,最后还是自己顺手写了,本来一开始准备用nodejs或者js写的,想着前端本地测试代理和导 ...

  5. ScrollView 内嵌百度地图问题解决

    在ScrollView上内嵌百度地图遇到两个问题 事件冲突,移动地图的时候屏幕滚动了 移动ScrollView的时候,百度地图出现黑边 问题1的处理就有各种办法了,核心都是拦截事件,我使用的办法是加一 ...

  6. JavaScript之ES5的继承

    自从有了ES6的继承后,ES5的继承也退出了舞台,在实际开发也不会用得着: 先看看ES6的继承 class Father{ constructor(a){ console.log(a); } play ...

  7. 检查点,Block块,参数化

    l 检查点:每次运行时检查服务器返回的数据是否正确,节省人工检查的时间(压测中数据传输次数过多,页面可能会产生传递混乱) l 检查点函数:web_find l 检查点类型:文本检查点:图片检查点 l  ...

  8. promise的理解和使用

    1. Promise是什么 1.1 promise 的理解 1. 抽象表达: Promise 是 JS 中进行异步编程的新的解决方案(旧的是纯回调形式) 2. 具体表达: (1)从语法上说:Promi ...

  9. [Abp vNext 入坑分享] - 7.Automapper与validation的使用

    简要说明 [项目源码] [章节目录] 本文主要介绍Automapper与Validation的使用方法.首先使用Automapper的目的是引入组件完成entity与dto之间的转换以达到简化代码的目 ...

  10. 你不知道的事---SringCloud的feign的继承特性

    前言 说起SpringChoud的feign大家用过的都说好.Feign是Netflix开发的声明式.模板化的HTTP客户端.对于我们微服务来说,微服务之间的api调用,使用feign来说是再方便不过 ...