jchdl-GSL-实例 - 使用Intellij IDEA创建Mux
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的更多相关文章
- jchdl - GSL实例 - Mux4(使用Mux)
https://mp.weixin.qq.com/s/GrYJ4KXEFRoLLmLnAGoMSA 原理图 参考链接 https://github.com/wjcdx/jchdl/blob/ma ...
- jchdl - GSL实例 - Mux4(使用WireVec简化输入线声明)
https://mp.weixin.qq.com/s/yJx_dV6ScUStJtPWVuD38w 原理图 参考链接 https://github.com/wjcdx/jchdl/blob/ma ...
- jchdl - GSL实例 - Assign
https://mp.weixin.qq.com/s/MtHR3iolPd5VQq6AUE-JPg Assign是一个节点,把输入线直接赋值给输出线.在转换成Verilog时,这种类型的节点会直接 ...
- jchdl - GSL实例 - Mux4
https://mp.weixin.qq.com/s/hh0eExVFC6cxzpvNI1cA9A 使用门实现四选一选择器. 原理图 参考链接 https://github.com/wjcdx/ ...
- jchdl - GSL实例 - Counter
https://mp.weixin.qq.com/s/BjQtQE8DfaKP1XwcTiCwVg 摘自康华光<电子技术基础 · 数字部分>(第五版) 参考链接 https: ...
- jchdl - GSL实例 - Register
https://mp.weixin.qq.com/s/uD5JVlAjTHQus2pnzPrdLg 多个D触发器可以组成一组寄存器. 摘自康华光<电子技术基础 · 数字部分>(第 ...
- jchdl - GSL实例 - Add
https://mp.weixin.qq.com/s/6xcYYdYZTBPTf25xFluzBQ 使用FullAdder级联实现加法器 参考链接: https://github.com/wj ...
- jchdl - GSL实例 - DFlipFlop(D触发器)
https://mp.weixin.qq.com/s/7N3avTxTd2ZUnAcKg4w3Ig D触发器对边沿敏感,只有当相应的边沿出现时,才会触发D的值传播到输出Q. 引自:htt ...
- jchdl - GSL实例 - MulC2(有符号数的乘法)
这里的实现,先把符号位取出来,使用两个正数相乘,然后在把符号加到乘积上. 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jch ...
随机推荐
- GoF23:设计模式概述
目录 学习设计模式的意义 GoF23 创建型模式(5种) 结构型模式(7种) 行为型模式(11种) OOP七大原则 开闭原则(总的纲领) 里氏替换原则 依赖倒置原则 单一职责原则 接口隔离原则 迪米特 ...
- mybatis实现增删改
mybatis实现增加数据 1.在dao接口中声明添加方法 2.在mapper文件中实现该方法 3.测试 mybatis实现修改数据 1.在dao接口中声明修改方法 2.在mapper中实现该方法 3 ...
- 【HBase】协处理器是什么?又能干什么?怎么用?
目录 简单了解 官方帮助文档 协处理器出现的原因 协处理器的分类 Observer Endpoint Phoenix 协处理器的使用 加载方式 静态加载 动态加载 协处理器的卸载 协处理器Observ ...
- Day_09【常用API】扩展案例2_测试小字符串在大字符串中出现的次数
分析以下需求,并用代码实现 1.键盘录入一个大字符串,再录入一个小字符串 2.统计小字符串在大字符串中出现的次数 3.代码运行打印格式: 请输入大字符串: woaiheima,heimabutongy ...
- [hdu5402 Travelling Salesman Problem]YY
题意:给一个n*m的矩形,每个格子有一个非负数,求一条从(1,1)到(n,m)的路径(不能经过重复的格子),使得经过的数的和最大,输出具体的方案 思路:对于row为奇数的情况,一行行扫下来即可全部走完 ...
- [hdoj5192] 树状数组
枚举所有的区间.对于确定的区间,假设最终的高度为h, 代价是max(∑(Hi−h),∑(h−Hj))(Hi>h,Hj≤h) 等价于max(∑Hi−cnt(i)∗h,cnt(j)∗h−∑Hj) ( ...
- dedecms织梦建站后怎么防止被黑,加强安全漏洞措施?
dedecms织梦建站后怎么防止被黑,加强安全漏洞措施? 很多人反映dedecms织梦网站被黑的情况,因为织梦相对来说漏洞还是挺多的,特别是新建设的站点,有些目录.文件该删的删,权限及安全都要设置,以 ...
- 24个经典的MySQL索引问题,你都遇到过哪些?
索引 1.什么是索引? 2.索引有哪些优缺点? 3.索引使用场景(重点) 4.索引有哪几种类型? 5.索引的数据结构(b树,hash) 6.索引的基本原理 7.索引算法有哪些? 8.索引设计的原则? ...
- 我,不是说了PID要平均值吗?
前几日写了一篇PID算法学习笔记,并幻想了一个场景进行算法仿真.经过不断探索后,博主发现,PID算法的精髓不在算法逻辑,而在于PID三个参数的值.本篇随笔将延续上次的仿真实验进行调试,总结PID调参的 ...
- SpringBoot+SpringCloud面试题整理
什么是SpringBoot?1.用来简化spring初始搭建和开发过程使用特定的方式进行配置(properties或者yml文件)2.创建独立的spring引用程序main方法运行3.嵌入Tomcat ...