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

 
 
相较于GSL层对物理连接的建模,RTL层提高了一个抽象层次:
  1. 把物理的触发器提取为抽象的寄存器数据类型,简化了从触发器中存取值的操作。
  1. 把物理的门和开关原语的逻辑,提取为操作符号& | ~等,甚至常见的逻辑也提取为操作符号,如移位,相等判断等;把相关物理模块之间的逻辑联系,转换为寄存器之间值的运算和操作关系;
 
程序 = 数据 + 算法
使用数据类型(寄存器)描述数据,使用各种操作符把数据关联成表达式(expression),再使用赋值把表达式关连成语句(statement),这就组成了程序的全部要件。
 
从另外一个角度,每一个模块即是一个 输入、处理、输出的完整系统,输入和输出的数据类型为寄存器,处理使用操作符和赋值来描述。这样也构成了描述模块的全部要件。
 
所以,相较于GSL,RTL不仅提高了抽象层次,提升了表达能力和表达效率,而且构成了一个描述逻辑的完备系统。
 
事实上(使用Verilog的语汇),最简的情况下,只使用reg和module即可完成建模的任务,无论是assign还是always都可以转换为所属module的子module。
 
但是这样建立的模型略显复杂,且表达效率低,比如module虽然可以表达对输入的依赖,但是却不能像always那样,明确的表达对posedge/negedge的依赖。
 
所以,jchdl对RTL层的建模,参考了Verilog和SystemVerilog:
  1. 支持的数据类型有bit/bits/reg;
  1. 支持Verilog提供的一部分操作符;
  1. 支持Verilog的posedge/negedge和changing事件;
  1. 支持Verilog的assign/always代码块;
 
一. Bit
 
Bit可以理解为线。但使用二值逻辑,只支持0, 1两个值。
 
二. Bits
 
Bits为一组线,由多个Bit组成;
Bit和Bits支持assign操作,不支持set;
 
三. Reg
 
寄存器数据类型,有多个Bit组成;
只支持set操作,不支持assign;
 
四. Event
 
RTL建模使用事件驱动模型,支持三种事件:posedge/negedge/changing;
 
比如assign代码块:assign a = b & c; 其中a依赖于b和c的变化事件(Changing Event),如果b和c的值发生变化,则会经由处理逻辑(相与),反映到a的变化上。
 
always代码块则会明确描述所依赖的事件,即敏感表。
 
五. Block
 
参考Verilog,目前支持两种最基本的代码块,即assign和block;
 
六. Module
 
概念上对应Verilog中的module。模块描述了一个输入经过处理逻辑转换为输出的基本单元。
模块可以有子模块和父模块,组成模型结构(hierarchy)。
 
 

jchdl - RTL的更多相关文章

  1. jchdl - RTL Value Propagation

    https://mp.weixin.qq.com/s/2_0yQYdHlSQzPw7vX7NuHA     ​​ 因为建模方式的不同,RTL值的传播不同于GSL值的传播.   jchdl GSL模型的 ...

  2. jchdl - RTL实例 - MOS6502 ALU

    https://mp.weixin.qq.com/s/nMxYVC2djk7DdAforerZPA   使用jchdl RTL实现MOS6502 CPU的ALU.   参考链接 https://git ...

  3. jchdl - RTL Module

    https://mp.weixin.qq.com/s/Sr4ffU4TPPoUJpdInwWd6w ​​ jchdl Module类在概念上对应Verilog的module,作为所有用户自定义模块的父 ...

  4. jchdl - RTL Event

    https://mp.weixin.qq.com/s/P9uoJwIYdM-mbiR9WCtJCg   hardware modeling基于事件驱动模型,RTL中定义了多种事件. jchdl 参考了 ...

  5. jchdl - RTL实例 - Counter4

    https://mp.weixin.qq.com/s/xtvMj5f-Uvx3vesVnH0P_A   计数器.   参考链接 https://github.com/wjcdx/jchdl/blob/ ...

  6. jchdl - RTL实例 - Adder

    https://mp.weixin.qq.com/s/9S29BCTcJfbpR62ALjSidA   加法器.   参考链接 https://github.com/wjcdx/jchdl/blob/ ...

  7. jchdl - RTL实例 - Mux

    https://mp.weixin.qq.com/s/OmQRQU2mU2I5d-qtV4PAwg   二选一输出.   参考链接 https://github.com/wjcdx/jchdl/blo ...

  8. jchdl - RTL实例 - AndReg

    https://mp.weixin.qq.com/s/p4-379tBRYKCYBk8AZoT8A   输入两组线相与,结果输出到寄存器.   参考链接 https://github.com/wjcd ...

  9. jchdl - RTL实例 - AndAnd

    https://mp.weixin.qq.com/s/JhUB3M1WhjAyUrN1HPIPTA   AndAnd是三输入与门模块,输出为相与的结果.   参考链接 https://github.c ...

随机推荐

  1. JAVA设计模式之桥接模式(bridge)

    桥接模式: 分离抽象与具体实现,让他们可以独自发展,防止类爆炸 场景: 过年走亲戚是我们中国人传统的习俗,走亲戚那就少不了要买东西(苹果,牛奶等等),这些具体的东西就是具体的类 蒙牛牛奶,有机苹果,有 ...

  2. String、StringBuffer和StringBuilder比较

    从执行速度效率来说: String为字符串常量,一旦创建就不能修改,第一次创建一个String对象,实例化后有初始值:当第二次创建String对象后,再次赋值,表面上看是改变了第一个String对象的 ...

  3. NDK clang编译器的一个bug

    NDK clang编译器的一个bug 问题代码 float32_t Sum_float(float32_t *data, const int count) { float32x4_t res = vd ...

  4. 1018 Public Bike Management (30分) 思路分析 + 满分代码

    题目 There is a public bike service in Hangzhou City which provides great convenience to the tourists ...

  5. WIn7系统下配置Java环境变量

    给个官网下载地址  :https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 1.首先 ...

  6. SunOS下root账户无法执行crontab问题

    SunOS下root账户无法执行crontab问题   直接步入正题,处理方法如下: 1.查看可执行crontab的用户: more /etc/cron.d/cron.deny 2.修改crontab ...

  7. Atcoder Beginner Contest 166

    VP赛况如下: 前言:感觉这一场题目难度还是比较贴近新生的,我一个codeforces小蓝名一小时居然AK了,F题数据有点水(?)暴力dfs居然都能过... A:A?C 题意:给你字符串,如果字符串是 ...

  8. Winform GDI+绘图二:绘制旋转太极图

    大家好,今天有时间给大家带来Winform自绘控件的第二部分,也是比较有意思的一个控件:旋转太极图. 大家可以停下思考一下,如果让你来绘制旋转的太极图,大家有什么样的思路呢?我今天跟大家展示一下,我平 ...

  9. ql的python学习之路-day11

    前言:本节主要学习python内置的方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:qinjiaxi from collections ...

  10. router-link传参

    果然还好是一小部分一小部分记录的好. <router-link :to="info">中:to特性可以是路径str,也可以是一个对象形式str. 当info是对象时可以 ...