​​
 
硬件模型编程,即Hardware Model Programming。在RTL抽象级别,硬件模型使用RTL代码描述。所谓编程指的是编写RTL代码。
 
程序 = 数据 + 算法
 
所以可以从两个方面来看硬件模型编程的局限性。
(以Verilog的RTL编程为例)
 
一. 数据能力
 
1. 数据表达能力
 
Verilog的RTL编码,数据只能使用一个个的wire和reg变量表达,没有高级的数据结构表达能力,用户无法自定义数据结构类型。
 
2. 数据获取能力
 
a. Verilog的RTL编码,数据存放在一个个的wire和reg变量中,无法一次性的获取一组数据。wire和reg所能存放的数据是十分有限的;
b. reg数组的代价高昂;
c. 除wire/reg数据类型外,无论是RAM/ROM,数据获取都不是实时的,需要等待数个clk之后,才能拿到想要的数据。这种交互方式较为复杂,需要使用状态机同步。
d. 为每一个逻辑单元提供RAM/ROM访问能力是可以的,但之后我们发现这样的每一个逻辑单元都成为了一个CPU或者一个核。使用一个具有全信息访问能力的核实现一段硬件逻辑,和在这个核上跑软件实现的同样一段逻辑,这两者之间需要权衡。
 
3. 数据存储能力
 
a. 存储临时数据的能力有限,比如需要临时存储一组数据或者一个表格。
 
二. 算法能力
 
1.表达能力
 
软件算法使用三种基本结构描述:顺序结构、选择结构、循环结构。硬件模型编程无法使用循环结构。
硬件模型的循环结构需要使用状态机控制,在多个clk之间进行循环。
 
2.时间限制
 
硬件逻辑最小单元的长度需要控制在一个clk内完成,不然则需要划分到多个clk内实现,并且使用状态机控制。
 

使用RTL进行硬件模型编程的局限性的更多相关文章

  1. 阅读基于sketch的软件定义网络测量数据平面硬件模型

    概要 硬件实现 基于sketch 功能:采集包数.流长数据,恢复五元组 重点:高速条件下性能较好,节省硬件资源 摘要: 提出一种基于sketch 数据结构的软件定义测量数据平面硬件模型,并在以现场可编 ...

  2. WSAEventSelect模型编程 详解

    转自:http://blog.csdn.net/wangjieest/article/details/7042108 WSAEventSelect模型编程 WSAEventSelect模型编程这个模型 ...

  3. 编程模型&编程思想

    编程模型 1.面向对象编程OOP 2.面向切面编程AOP Java静态接口,Java动态代理,字节码提升. 面向切面的两个方面: 拦截判断:方法,注解,参数,异常 拦截执行:前置,后置,返回,异常 3 ...

  4. 【java高级编程】jdk自带事件模型编程接口

    事件类 java.util.EventObject java.beans.PropertyChangeEvent 事件监听接口 java.util.EventListener java.beans.P ...

  5. delphi异步选择模型编程TCP

    Server端: unit U_FrmServer; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, ...

  6. Sockit 硬件接口编程——点亮一个LED

    1.话不多说上代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include < ...

  7. hdl - 软件编程与硬件建模

    https://mp.weixin.qq.com/s/Y75I9e3s4fDPZuv-CyiNDA   介绍软件编程思维与硬件建模思维的不同与相似之处.   ​​   1. 软件编程思维   编程,意 ...

  8. 网络编程学习——Linux epoll多路复用模型

    前言 后端开发的应该都知道Nginx服务器,Nginx是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器.后端部署中一般使用的就是Nginx反向代理技术. ...

  9. IOCP模型与网络编程

    IOCP模型与网络编程 一.前言:        在老师分配任务(“尝试利用IOCP模型写出服务端和客户端的代码”)给我时,脑子一片空白,并不知道什么是IOCP模型,会不会是像软件设计模式里面的工厂模 ...

随机推荐

  1. Coursera课程笔记----Write Professional Emails in English----Week 3

    Introduction and Announcement Emails (Week 3) Overview of Introduction & Announcement Emails Bas ...

  2. Spring Cloud 系列之 Config 配置中心(一)

    服务配置现状 配置文件是我们再熟悉不过的,在微服务系统中,每个微服务不仅仅只有代码,还需要连接其他资源,例如数据库的配置或功能性的开关 MySQL.Redis .Security 等相关的配置.除了项 ...

  3. 【Linux基础总结】Linux基本命令

    Linux基本命令 Linux系统下的文件类型.权限.所属用户与组 文件类型 - (文件) d(目录) ->类似windows系统下的文件夹 l (链接) ->类似windows系统下的快 ...

  4. 利用 Maven 构造 Spring Cloud 微服务架构 模块使用 spring Boot构建

    采用Maven 聚合工程搭建 Spring Cloud 使用工具: IntelliJ IDEA    版本: 2019.2.2 maven             版本: 3.6.0 JDK      ...

  5. 设计模式之GOF23责任链模式

    责任链模式chain of responsibility 将能够处理同一类请求的对象连成一条链,所提交的请求依次在链上传递,直到传递至有能力处理该请求的对象,不能则传给链上下一个 场景: -打牌时 - ...

  6. Jmeter-函数助手之${__RandomString(,,)}使用

    ${__RandomString(,,)}使用方法 1.在日常写脚本中,可以随机生成指定的几个字符串作为入参的value,那么jmeter 的这个工具就特别好用.  应用: 2.填写接口入参, 3.运 ...

  7. ASA failover配置(A/S)

    环境描述 1. 两条公网出口,分别为移动,联通 2. 两台ASA做主备配置,实现出口故障转移 3. 内网两台核心做堆叠配置(由于模拟器无法实现堆叠,此处使用HSRP) 需求描述 1. 当一条公网链路故 ...

  8. python装饰器在接口自动化测试中的应用

    在讲解装饰器在接口自动化测试项目的应用之前,我们先来介绍一下python装饰器到底是个什么 装饰器 说装饰器就不得不提一下函数这个一等公民了,在python中函数有几个特性先来了解一下 函数的一些特性 ...

  9. 使用react的一点提醒17/10/26

    1.不直接操作dom 今天在和同学讨论的时候,发现了一些以前没注意的问题. 这段时间自己学习时一直都是用原生js写代码,但是以前在公司经常使用jq,也不知不觉间让我习惯了操作dom的倾向. 使用vue ...

  10. hdu2138 How many prime numbers 米勒测试

    hdu2138 How many prime numbers #include <bits/stdc++.h> using namespace std; typedef long long ...