https://mp.weixin.qq.com/s/zZTnDdbCUCRGGpgpfAZsYQ   一的补码指对二进制数的每一位分别求补(二进制运算下0,1互为补数),实际运算即为对每一位取反.最高位为符号位.n位二进制数a的一的补数为2^n - 1 - a.   The ones' complement of a binary number is defined as the value obtained by inverting all the bits in the binary re…
https://mp.weixin.qq.com/s/10fgjqPt2pRvIJzjDGYgBg   概念辨析   <IC-二进制, 自然数, 有符号数>:https://mp.weixin.qq.com/s/9rGs9yN-OvLvEclnDZr87Q   两个结论: 1. 如果不把符号位编码编进二进制数里面,那么符号位就要单独考虑.保证被减数一定要大于减数,不然减出来的差(负数)无法表示.比如:在小学一二年级的时候,做减法必须保证被减数大于减数,如果反过来不够减,学生就不知道该怎么表示了…
https://mp.weixin.qq.com/s/Gh2xJJvfg1SlyuayK4LRyQ   二的补码指对二进制数的所有位数整体求补.二进制运算下0,1互为补数,n位二进制数a的补数为2^n - a   The two's complement of an N-bit number is defined as its complement with respect to 2N. For instance, for the three-bit number 010, the two's…
https://mp.weixin.qq.com/s/6xcYYdYZTBPTf25xFluzBQ   使用FullAdder级联实现加法器   参考链接: https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/Add.java     1.创建Add.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理图,添加输入输出线 ​​     3. 在构造方法中…
https://mp.weixin.qq.com/s/7N3avTxTd2ZUnAcKg4w3Ig   D触发器对边沿敏感,只有当相应的边沿出现时,才会触发D的值传播到输出Q.   ​​ 引自:https://www.cnblogs.com/IClearner/p/6443539.html   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/sequential/ff/DFlipFlop.java  …
因为对除法研究不深,这里略去不表.   有兴趣可以参考链接: https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/Div.java  …
  这里的实现,先把符号位取出来,使用两个正数相乘,然后在把符号加到乘积上.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/MulC2.java     1.创建MulC2.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理图,添加输入输出线 ​​   3. 在构造方法中搜集输入输出线并调用construct()方法 ​​   4.…
  这里实现最原始的阵列乘法,逐位相乘然后加到一起.   参考链接 https://github.com/wjcdx/jchdl/blob/edcc3e098d4f1cb21677e86e87a1147db31ed2a9/src/org/jchdl/model/gsl/operator/arithmetic/Mul.java     1.创建Mul.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理图,添加输入输出线 ​​   3. 在构造方法中搜集输入输出线并调用con…
https://mp.weixin.qq.com/s/WNm4bLWzZ0oWHWa7HQ6Y6w   逻辑左移,继承自Shifter类.只需要实现shift方法即可.   参考链接 https://github.com/wjcdx/jchdl/blob/edcc3e098d4f1cb21677e86e87a1147db31ed2a9/src/org/jchdl/model/gsl/operator/shift/LogicalLeft.java     1.创建LogicalLeft.java,…
https://mp.weixin.qq.com/s/ngQji-xi4FCCbL_2ihUi_A   Shifter是移位节点的父类,定义了输入输出线,但是没有定义具体的移位方式,这个留给子类去实现.   参考链接 https://github.com/wjcdx/jchdl/blob/edcc3e098d4f1cb21677e86e87a1147db31ed2a9/src/org/jchdl/model/gsl/operator/shift/Shifter.java     1.创建Shif…
https://mp.weixin.qq.com/s/oJY6Xj9_oM1gSmvH_dHkJg   Concat节点把多根输入线线组合成一排线输出.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/concat/Concat.java     1.创建Concat.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理图,添加输入输出线 ​​   3. 在…
https://mp.weixin.qq.com/s/MtHR3iolPd5VQq6AUE-JPg   Assign是一个节点,把输入线直接赋值给输出线.在转换成Verilog时,这种类型的节点会直接单独处理.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/assign/Assign.java     1.创建Assign.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原…
https://mp.weixin.qq.com/s/GrYJ4KXEFRoLLmLnAGoMSA 原理图 ​​ 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/example/Mux4.java 1.创建Mux4.java, 并生成构造方法和logic()方法 ​​ 2. 根据逻辑原理图,添加输入输出线 ​​ 3. 在构造方法中搜集输入输出线并调用construct()方法 ​​ 4. 在logic…
https://mp.weixin.qq.com/s/yJx_dV6ScUStJtPWVuD38w 原理图 ​​ 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/example/Mux4.java 1.创建Mux4.java, 并生成构造方法和logic()方法 ​​ 2. 根据逻辑原理图,添加输入输出线 ​​ 需要注意的是,这里使用了WireVec,而不是Wire来声明输入线,以便统一处理一排线.…
https://mp.weixin.qq.com/s/hh0eExVFC6cxzpvNI1cA9A 使用门实现四选一选择器. 原理图 ​​ 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/example/Mux4to1.java 1.创建Mux4.java, 并生成构造方法和logic()方法 ​​ 2. 根据逻辑原理图,添加输入输出线 ​​ 3. 在构造方法中搜集输入输出线并调用construct(…
https://mp.weixin.qq.com/s/5mcYAllizuxyr3QSNrotrw 全加器是能够计算低位进位的二进制加法电路.与半加器相比,全加器不只考虑本位计算结果是否有进位,也考虑上一位对本位的进位,可以把多个一位全加器级联后做成多位全加器. 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/FullAdder.java 1. 填充构造方法,添…
https://mp.weixin.qq.com/s/Y97bIro7UlPPFCoPlzgmOQ 半加器电路是指对两个输入相加,输出一个结果位和,没有进位输入的电路. 是实现两个一位二进制数的加法运算电路. 逻辑图 ​​ 真值表 ​​ 参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/HalfAdder.java 1.创建HalfAdder.java,并生成构造…
https://mp.weixin.qq.com/s/BjQtQE8DfaKP1XwcTiCwVg   ​​ 摘自康华光<电子技术基础 · 数字部分>(第五版)   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/sequential/Counter.java   1.创建Counter.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理图,添加输入输出线 ​​   3. 在…
https://mp.weixin.qq.com/s/uD5JVlAjTHQus2pnzPrdLg   多个D触发器可以组成一组寄存器. ​​ 摘自康华光<电子技术基础 · 数字部分>(第五版)   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/sequential/Register.java   1.创建Register.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理…
https://mp.weixin.qq.com/s/c8kDgye50nKJR4tkC0RzVA D锁存器对电平敏感,当使能位使能时,输出Q跟随输入D的变化而变化.   ​​ 摘自康华光<电子技术基础 · 数字部分>(第五版)   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/sequential/latch/DLatch.java   1.创建DLatch.java, 并生成构造方法和logi…
https://mp.weixin.qq.com/s/CtT08xZON0YxnheqDM2FAw 全加器是能够计算低位进位的二进制加法电路.与半加器相比,全加器不只考虑本位计算结果是否有进位,也考虑上一位对本位的进位,可以把多个一位全加器级联后做成多位全加器. 逻辑图 ​​ 真值表 ​​ 参考链接 无 1.创建FullAdder.java, 并生成构造方法和logic()方法 ​​ 2. 根据逻辑原理图,添加输入输出线 ​​ 3. 在构造方法中搜集输入输出线并调用construct()方法 ​…
https://mp.weixin.qq.com/s/Oa4qgjIUccu5Y-Jlqcyn_A   org.jchdl.model.gsl.core.meta.Node.java   ​​ generated by Intellij IDEA powered by yFiles   Node为所有节点的父类.所有用户创建的节点,必须继承Node类.Node为用户创建了节点提供了很多支持方法,但把logic()方法留给子类自行定义.   一. 类结构   ​​   主要属性: netI:连接在…
https://mp.weixin.qq.com/s/4w_wwwCd6iBhh0QR2wK81Q   org.jchdl.model.gsl.core.datatype.net.Wire.java   ​​ generated by Intellij IDEA powered by yFiles.   一. 类结构   ​​   主要属性: in Input port.   out Output port.   主要方法: 赋值方法 assign(Value)是在Wire的Input上赋值为V…
https://mp.weixin.qq.com/s/DVmMrCFgNLuZDtssQ85w7A   org.jchdl.model.gsl.core.meta.Port.java   ​​ generated by Intellij IDEA powered by yFiles.     一. 类结构   ​​ 主要属性: value 代表接口的值,Value类的对象,有四种值:0, 1, x, z.默认值为x.   owner Port的所有者,Wire的Port的所有者为Wire,Nod…
https://mp.weixin.qq.com/s/jLUz757FQZjMEYzYb2AIww   MOS6502是简单,但是曾经相当流行的一款CPU.网上有很多模拟程序可供学习使用.这里使用一个较为精简的Verilog项目,介绍MOS6502这款CPU的运行机制,然后使用jchdl进行模拟.   参考项目:https://github.com/Arlet/verilog-6502 该项目只包含两个文件:alu.v, cpu.v.这里首先介绍alu.v.     1. 注释部分简介了ALU的…
https://mp.weixin.qq.com/s/jgMljoca-Cwe9x0NaTLzZg   GSL的拓扑模型是线和节点连接的模型,值的传播,即是值在线和节点之间传播和转化的过程.   值的传播有两种方式: 深度优先: 广度优先:   如果值不变,则终止传播.这样可以破除触发器那样带环的拓扑结构导致的死循环.   一. 深度优先   优先传递给Port的downstream Port,如果downstream Port有下一级的Port,则优先传递给下一级的Port.   拓扑结构没有…
https://mp.weixin.qq.com/s/xtvMj5f-Uvx3vesVnH0P_A   计数器.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/Counter4.java   1.创建Counter4.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输出线作为类成员存在.使用注解标明是input port还是…
https://mp.weixin.qq.com/s/9S29BCTcJfbpR62ALjSidA   加法器.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/Adder4.java   1.创建Adder4.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输出线作为类成员存在.使用注解标明是input port还是outp…
https://mp.weixin.qq.com/s/OmQRQU2mU2I5d-qtV4PAwg   二选一输出.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/Mux.java   1.创建Mux.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输出线作为类成员存在.使用注解标明是input port还是output p…
https://mp.weixin.qq.com/s/p4-379tBRYKCYBk8AZoT8A   输入两组线相与,结果输出到寄存器.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/AndReg.java   1.创建AndReg.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输出线作为类成员存在.使用注解标明是inp…