jchdl - RTL Value Propagation】的更多相关文章

https://mp.weixin.qq.com/s/2_0yQYdHlSQzPw7vX7NuHA     ​​ 因为建模方式的不同,RTL值的传播不同于GSL值的传播.   jchdl GSL模型的信息较多,知道Port的upstream Port和downstream Ports,也就是知道值的变化从哪里传过来,又要传到哪里去.所以GSL模型,使用推式传播(Push),即如果portA的值发生变化,则把变化事件推给portA的所有downstream ports.   jchdl RTL为了…
https://mp.weixin.qq.com/s/nMxYVC2djk7DdAforerZPA   使用jchdl RTL实现MOS6502 CPU的ALU.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/Mos6502/Alu.java   1.创建Alu.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输出线作为类成…
https://mp.weixin.qq.com/s/gNN2eiJnr9N02xdZVQceDQ   ​​   相较于GSL层对物理连接的建模,RTL层提高了一个抽象层次: 把物理的触发器提取为抽象的寄存器数据类型,简化了从触发器中存取值的操作. 把物理的门和开关原语的逻辑,提取为操作符号& | ~等,甚至常见的逻辑也提取为操作符号,如移位,相等判断等:把相关物理模块之间的逻辑联系,转换为寄存器之间值的运算和操作关系:   程序 = 数据 + 算法 使用数据类型(寄存器)描述数据,使用各种操作…
https://mp.weixin.qq.com/s/Sr4ffU4TPPoUJpdInwWd6w ​​ jchdl Module类在概念上对应Verilog的module,作为所有用户自定义模块的父类. 所有用户创建的节点,必须继承Module类.Module为用户创建模块提供了很多支持方法,但把logic()方法留给子类自行定义.   如同Verilog一样,Module的logic()中,只包含Assign和Always这两种块的构建.   一. 类结构   ​​   主要属性 paren…
https://mp.weixin.qq.com/s/P9uoJwIYdM-mbiR9WCtJCg   hardware modeling基于事件驱动模型,RTL中定义了多种事件. jchdl 参考了Verilog中的事件类型.   ​​   一. PosEdgeEvent   上升沿事件.对应Verilog中的posedge关键字. 使用方式为:PosEdgeEvent.of(regA),意为:观察regA的值是否从0变为1,即发生上升沿事件.   二. NegEdgeEvent   下降沿事…
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…
https://mp.weixin.qq.com/s/JhUB3M1WhjAyUrN1HPIPTA   AndAnd是三输入与门模块,输出为相与的结果.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/AndAnd.java   1.创建AndAnd.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输出线作为类成员存在.使用注…
https://mp.weixin.qq.com/s/86d_sFN0xVqk1xRaRyoAkg   使用rtl语法,实现简单的与门.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/And.java   1.创建And.java, 并生成构造方法和logic()方法 ​​ And类继承自Module类.And类的构造方法第一个参数为父模块,用以创建模块Hierarchy.log…
https://mp.weixin.qq.com/s/H2UBmZa9fpM6_FM2_MucTQ   实现一个SoC作为顶层模块,包含Cpu.Mem两个子模块,并驱动运行.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/Mos6502/Soc.java   1.创建Soc.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输…
https://mp.weixin.qq.com/s/OguQKMU64GGdinCJjgyeKw   实现MOS6502 CPU,主要是实现状态机.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/Mos6502/Cpu.java   1.创建Cpu.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输出线作为类成员存在.使用…
https://mp.weixin.qq.com/s/ST8q-VWOT47kcYg10-4AQw   实现一个简单的内存模块,匹配MOS6502 CPU使用.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/Mos6502/Mem.java   1.创建Mem.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输出线作为类成员…
https://mp.weixin.qq.com/s/PQIPkDymvcGc_re8ux50vA   结构体可以嵌套使用.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/And2/And2And.java   1.创建And2And.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输出线作为类成员存在.使用注解标明是inp…
https://mp.weixin.qq.com/s/qTgeBF9N0mx5UK3xWDb3jg   jchdl对Verilog做了增强,增加了用户自定义结构体类型.使用自定义结构体,可以对输入和输出接口进行分类,并简化模块输入输出接口的定义.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/And2/And2.java   1.创建And2.java, 并生成构造方法和logi…
https://mp.weixin.qq.com/s/j4zLmjKgau2vRXVNfm0SIA   带进位的加法.   参考链接 https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/rtl/example/Adder4Carry.java   1.创建Adder4Carry.java, 并生成构造方法和logic()方法 略   2. 根据逻辑原理,添加输入输出接口 ​​ 输入输出线作为类成员存在.使用注解标明是inp…
https://mp.weixin.qq.com/s/pR6b6i98P9dRU8bhZkKaww   观察Verilog代码可以发现,对逻辑的描述中都是assign和always代码块.这正对应了硬件电路中的一个个并行电路模块.   参考Verilog,jchdl支持Assign和Always两种block.   ​​ 一. Block   ​​ Block依赖于一组事件,如果其中一个事件触发,则需要执行对应的逻辑(runnable),这个逻辑一般是为某个线或寄存器赋值.   Block不能直…
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/hWYW1Bn---WhpwVu2e98qA   一. Bit ​​ 类结构如下: ​​   主要属性: value: bit的值,只支持0,1, 分别为 Bit.BIT_0 和 Bit.BIT_1:   主要方法: 构造方法 Bit(): 创建一个Bit,值为默认值0: Bit(int value): 创建一个Bit,值为参数value: Bit(boolean): 创建一个Bit,boolean参数为true,则比特值为1,反之为0:  …
https://mp.weixin.qq.com/s/uWU6i30_q7wJT3yVJ8yqnQ   jchdl:Jianchang Constructed Hardware Description Library,使用Java语言开发的硬件描述库.(Java是商标不让用,那就用名字 :-)   一. 设计目标   1.设计目标   打通IC开发和Java生态,以Java生态的赋能IC开发.   2. 当前路径   当前的路径是基于Java语言,建立硬件建模库(library).使用jchdl…
这几天看了下SystemC,发现与jchdl相似的地方,或者jchdl与之相似的地方. 但总体而言: 1. jchdl的模型更简单,更清晰: 2. jchdl还有一些建模需要的工具需要补充,比如: inout port, RTL需要增加logic以支持四值逻辑,再者jchdl要考虑如何实现sal或者SystemC里面的tlm: 3. SystemC还是把建模和验证混在一起,虽然相对Verilog而言好一些,但仍是个杂烩(中性,就不用大了): 进展: 1. GSL暂时不会添加Inout port支…
起因 学习Spring的时候就知道aop有一个应用是声明式注解..反正往Service上一丢@Transactional就完事了..不用自己去开启hibernate的session,很简单. 但是@Transactional里有很多属性一直没有用过...其中最让我在意的便是Propagation属性...其他属性都还是蛮好理解的..但是这个属性一直不怎么懂,也一直没怎么去研究.. 大部分情况下的确是使用@Transactional不用额外设置就OK了.因为默认的Propagation是Propa…
Android MarginLeft与MarginStart的区别http://blog.csdn.net/zhufuing/article/details/40181815 在写layout布局的时候,我们会发现有这样几个比较相似的属性:MarginStart   MarginLeft MarginEnd    MarginRight 这些属性的区别是什么?  根据api注释,我们得知MarginStart指的是控件距离开头View部分的间距大小,MarginLeft则指的是控件距离左边Vie…
待补充…… AP算法,即Affinity propagation,是Brendan J. Frey* 和Delbert Dueck于2007年在science上提出的一种算法(文章链接,维基百科) 现在只是初步研究了一下官网上提供的MATLAB源码:apcluster.m %APCLUSTER Affinity Propagation Clustering (Frey/Dueck, Science 2007) % [idx,netsim,dpsim,expref]=APCLUSTER(s,p)…
The principle of Affinity Propagation Algorithm is discribed at above. It is widly applied in many fields.…
BIDI 双向文字就是一个字符串中包含了两种文字,既包含从左到右的文字又包含从右到左的文字. 大多数文字都是从左到右的书写习惯,比如拉丁文字(英文字母)和汉字,少数文字是从右到左的书写方式比如阿拉伯文(ar)跟希伯来文(he).对于需要国际化支持的web应用来说,由于阅读习惯的不同在web页面排版和布局中会给开发人员带来麻烦.这种情况多数出现在从右到左的文字中,比如字符串中出现阿拉伯文.英文字母.数字以及标点符号.本文就是我在工作中遇到该类问题的总结. 在现代计算机应用中,最常用来处理双向文字的…
1. Introduction The Saga of Ryzom is a persistent massively-multiplayer online game (MMORPG) released in September 2004 throughout Europe and North America, localised in 3 languages so far. It has been developed by Nevrax since 2000, and was taken ov…
0×00 前言 近期因为有个从异地捕获无线信号的需求,便尝试着用OpenWrt+公网IP搭建了一台SDR服务器.如果有小伙伴嫌SDR硬件天线看起来太乱.或者电脑没有足够的USB接口也可在局域网搭建SDR服务器通过TCP/IP调用SDR硬件. HiWiFi router 0×01 获取root 刚买的极路由关闭了root功能,需要开启路由的开发者模式后才能通过SSH连入shell交互界面.申请开发者模式流程:进入路由器后台-云平台-路由器信息-高级设置-申请-绑定手机-输入验证码-绑定微信-微信账…
Windows 版本号标识区别一览表: 版本缩写 版本全称 版本意义 Alpha版 Alpha 内部测试版,一般不会向外部发布,会有很多Bug,只供测试人员使用,如果您看到Alpha版本了,一般来讲对于微软来讲可能是个不好的消息. Beta版 Beta 也是测试版,是继Alpha之后推出,这个阶段的版本会不断加入新的功能,改动也会较大,也会面向市场测试. RC版 ReleaseCandidate 测试候选版本,WINDOWS RC版不会再加入新功能,主要测试软件内的BUG.需要激活. RTM版…