自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 《大话数据结构》笔记

link:github链接1.数据结构绪论1.3数据结构起源数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。1.4基本概念和术语数据/数据元素/数据项/数据结构数据结构:相互之间存在一种或多种特定关系的数据元素的集合。也就是数据的组织形式1.5逻辑结构和物理结构逻辑结构:集合,线性,树形,图形物理结构:数据的逻辑结构在计算机中的存储形式顺序存储和链式存储1.6抽象数据类型ADT abstract data type指一个数学模型和

2021-09-09 17:50:31 293

原创 《Essential c++》笔记

link:github地址1.c++编程基础1.1如何撰写c++程序类:用户自定义的数据类型class机制,赋予了“增加程序内之类型抽象化层次”的能力声明语句:declaration statement字符常量:character literalmain返回0表示程序执行成功命名空间是一种将库名称封装起来的办法,可以避免与应用程序发生命名冲突的问题。using directive是让命名空间中名称曝光的而最简单方法。using namespace std;1.2对象的定义与初始化de

2021-09-09 17:45:07 341

原创 lambda_c++11_浅析

C++11 – lambdaslambdas其实就是匿名函数,一种编写函数的简便方式优点:代码实现在其逻辑位置(调用的地方)(而不是在此范围之外的地方定义类/函数);不会污染namespace简单例子:std::sort(v.begin(), v.end(), [](int a, int b) { return a > b; }); 降序排序Syntax【】:捕获列表,从外部传递(复制)到lambda表达式内部的变量们(类似于成员变量)():形参列表 执行时传入{}:code简单例子:

2021-03-30 14:18:50 183

原创 详解_阿里云FPGA服务器f3实例RTL开发最佳实践脚本代码

背景:https://help.aliyun.com/product/155039.html?spm=5176.10695662.852251.3.543d78dclwQb081.FPGA云服务器 > 最佳实践 > FPGA RTL开发流程最佳实践 > f3实例RTL开发最佳实践1)compling.shrm cl_hello -rfrm role_mem_if -rf\cp ./sources/dcp/f3_shell_without_cl.dcp f3_shell_with

2021-01-21 21:28:31 3350 1

原创 数据结构与算法分析笔记(c++)_查找树ADT-二叉查找树

二叉树的一个重要的应用是它们在查找中的应用假设树中的每个结点存储一项数据假设它们是些整数,我们还将假设,所有的项都是互异的。使二叉树成为二叉查找树的性质是,对于树中的每个结点X,它的左子树中所有项的值小于X中的项,而它的右子树中所有项的值大于x中的项。注意,这意味着,该树所有的元素都可以用某种一致的方式排序。右边的树在其项是6的结点(该结点正好是根结点)的左子树中,有一个结点的项是7。现在给出通常对二叉查找树进行的操作的简要描述。注意,由于树的递归定义,通常是递归地编写这些操作的例程。因为二叉查找

2021-01-19 20:31:17 201

原创 Verilog HDL 设计与综合/数字集成电路设计方法概述_part7

33.wire类型核reg类型的使用+连续赋值语句和运算符的使用在程序设计中如何正确使用wre和reg类型,可以遵循以下几点:(1)在连续赋值语句(assign)中,因为是对于组合电路的描述,被赋值信号只能使用wire类型(2)在 Initia和always过程语句中,被赋值信号必须定义为reg类型(3)当采用结构级描述时,模块、基本门和开关元器件的输出信号只能使用wire类型。在硬件描述语言中,绝大多数的电路都会采用WIRE类型不管描述的是组合电路还是时序电路当我们用过程语句描述的时候必须是重

2021-01-13 16:45:09 363

原创 Verilog HDL 设计与综合/数字集成电路设计方法概述_part6

31.存储器简介和分类+基于fpga的ip核ram的设计及调用误区:可以用二维向量对存储器进行定义实际上,这在设计过程中是不可行的在基于FPGA的电路设计方法中,一些固定的模块已经作为P核来调用,从而简化设计。在专用集成电路设计过程中,有专用的软件—memory compiler来实现存储器的设计memory compiler的使用也和IP核的调用类似,通过改变一些参数来实现设计中需要的存储器,不同的是 memory compiler设计的存储器是基于具体的工艺的iP核的简介IP(知识产权)核将一

2021-01-13 16:38:36 562

原创 Verilog HDL 设计与综合/数字集成电路设计方法概述_part5

26.时序电路的特点和时序电路的设计方法对于一个时序电路来讲,可以把它分为一部分组合逻辑和一部分存储逻辑输出方程由输入信号和当前的状态所决定驱动方程也是由输入信号和当前的状态所决定组合电路和时序电路的最大区别在于,时序电路会有一部分存储的功能,但是从电路形式来看,既包括了组合逻辑,又包括了存储逻辑1.状态机描述2.结构性描述3.行为级描述27.触发器和移位寄存器目前在集成电路中,最为常用的是D类型触发器,JK触发器和反转触发器等,相对来说使用较少IF、ELSE语句在使用的过程中,一

2021-01-13 16:35:01 250

原创 数据结构与算法分析笔记(c++)_二叉树

4.2二叉树二叉树(binary tree)是一棵每个结点都不能有多于两个儿子的树。叉树的个性质是平均二义树的深度要比结点个数N小得多分析表明,这个平均深度为O(√N),而对于特殊类型的二叉树,即二叉查找树(binary search tree),其深度的平均值是O(logn)。遗憾的是,这个深度也可以大到N-1。4.2.1实现因为个二义树结点最多有两个儿子,所以可以直接链接到它们。树结点的声明在结构上类似于双向链表的声明。在声明中,个结点就是由 element(元素)的信息加上两个到其他结点的

2021-01-12 20:21:10 189

原创 Verilog HDL 设计与综合/数字集成电路设计方法概述_part4

21.组合逻辑电路的特点和描述方式当一个数字电路中的输出信号完全是由输入信号所决定时,这样的电路就称之为组合电路案例最简逻辑表达式是由基本的“与门”或“非门”构成可以通过对于硬件描述语言中间的基本门级元器件的调用,来实现结构性描述硬件描述语言对于组合电路的设计是有多种方式的,应根据电路特点灵活地选择电路描述方式22.数字加法器A和B是加法的加数CIN是低位向本位的进位超前进位加法器可以使得进位标志位能够快速地向高位传输,这样就提高了加法器的运算速度硬件描述语言一个很重要的工作就

2021-01-12 10:59:45 376

原创 Verilog HDL 设计与综合/数字集成电路设计方法概述_part3

13.测试仿真结构、测试激励描述方式对于一个典型的电路测试,一般会有个信号源对它的目标电路进行激励然后通过测试设备,对波形进行观察然后确定电路正确与否仿真和测试模块只有模块名没有输入和输出信号的列表激励信号定义为reg型,显示信号定义为wire型这些激励信号通常公采用 initial或 always语句对它进行产生timescale 1ns/1ns:定义了仿真的时间单位以及可以观察到最小信号的时间单位测试激励描述方式目前,主要有以下3种产生测试激励的方法:(1)直接编辑测试激励波形:在测试环

2021-01-07 17:32:45 516

原创 Verilog HDL 设计与综合/数字集成电路设计方法概述_part2

过程语句行为级描述initial:初始化语句,只执行一遍,顺序执行敏感事件列表就是对于所描述的电路产生触发状态时所用的输入信号的类型,或者是种类在信号的定义形式方面,无论是对时序逻辑电路还是对组合逻辑电路进行描述,Verilog HDL要求在过程语可(initial和 always)中,被赋值信号必须定义为“reg”类型。(1)采用过程语句对组合电路进行描述时,需要把全部的输入信号列入敏感信号列表,且敏感信号列表不允许存在边沿信号。(2)采用过程语句对时序电路进行描述时,需要把时间信号和

2021-01-07 12:37:14 215

原创 深入理解计算机系统笔记_程序的机器级表示_3.9异质的数据结构

C语言提供了两种将不同类型的对象组合到一起创建数据类型的机制:结构(structure),用关键字 struct来声明,将多个对象集合到一个单位中;联合(union),用关键字 union来声明,允许用几种不同的类型来引用一个对象3.9.1结构C语言的 struct声明创建一个数据类型,将可能不同类型的对象聚合到一个对象中。用名字来引用结构的各个组成部分。类似于数组的实现,结构的所有组成部分都存放在内存中一段连续的区域内,而指向结构的指针就是结构第一个字节的地址。编译器维护关于每个结构类型的信息,指示

2021-01-06 16:45:57 153

原创 数据结构与算法分析笔记(c++)_树_预备知识

对于大量的输入数据,链表的线性访问时间太长,不宜使用。本章我们介绍一种简单的数据结构,其大部分操作的运行时间平均为O(logN)。我们涉及的这种数据结构叫作二叉查找树(binary search tree)。二叉查找树是在很多应用程序中都有使用的两个库集合类set和map的实现基础。在计算机科学中树(tree是非常有用的抽象概念,因此,我们将讨论树在其他更一般的应用中的使用。在这一章,我们将·了解树是如何用于实现几个流行的操作系统中的文件系统的。·了解树如何用来计算算术表达式的值。·指出如何利用树支

2021-01-06 15:54:58 128

原创 数据结构与算法分析笔记(c++)_队列ADT

像栈一样,队列(queue)也是表。然而,使用队列时插入是在一端进行的,而删除则是在另一端进行的。队列的基本操作是 enqueue(入队),它是在表的末端(称为队尾)插入一个元素;dequeue(出队),它是删除(并返回)表的开头(叫作队头)的元素。对于每一个队列数据结构,我们保留一个数组 theRay以及位置 front和back,它们代表队列的两端。我们还要记录实际存在于队列中的元素的个数 currentsize。操作应该是清楚的。要 enqueue元素x,可将 currentsize和back

2021-01-05 22:19:56 152

原创 数据结构与算法分析笔记(c++)_栈ADT

3.6 栈ADT栈(stack)是限制插入和删除操作只能在一个位置上进行的表,该位置是表的末端,称为栈的顶(top)。对栈的基本操作是push(进栈)和pop(出栈),前者相当于插入,后者则是删除最后插入的元素。最后插入的元素可以通过使用top例程在执行pop之前进行访问。栈有时又称为LIFO(后进先出)表。普通的清空栈的操作和判断是否空栈的测试都是栈的操作指令系统的一部分,但是,对栈所能够做的所有操作基本上就是push和pop操作一般的模型是,存在某个元素位于栈顶,而该元素是唯一的可见元素。3.

2021-01-05 10:22:45 256

原创 Verilog HDL 设计与综合/数字集成电路设计方法概述_part1

仅做笔记整理课程链接1.概述随着时间推移,数字电路设计方式:元件-单元-RTL-IPSV是系统级仿真和验证的语言采用 Verilog HDl语言进行数字集成电路设计的优点在于:(1)Verilog HDL在硬件描述方面具有效率高、灵活性强的优势;(2)代码易于维护,可植性强;(3)测试和仿真功能强大。2.模块模块是verilog HDL设计基本单元结构输入信号 输出信号 输入输出信号3.模块的调用和结构化建模硬件描述语言建模方式(1)数据流建模(2)行为级建模(3)结构化

2020-12-29 15:04:48 1130

原创 深入理解计算机系统笔记_程序的机器级表示_3.8数组的分配和访问

3.8数组分配和访问C语言允许对指针进行运算,而计算出来的值会根据该指针引用的数据类型的大小进行伸缩。也就是说,如果p是一个指向类型为T的数据的指针,p的值为x,那么表达式p+i的值为xp+L·i,这里L是数据类型T的大小数组引用A〔i]等同于表达式*(A+i)。它计算第i个数组元素的地址,然后访问这个内存位置。扩展一下前面的例子,假设整型数组E的起始地址和整数索引i分别存放在寄存器各rdx和rcx中。下面是一些与E有关的表达式。我们还给出了每个表达式的汇编代码实现,结果存放在寄存器eax(如果是数

2020-12-28 21:53:39 116

原创 数据结构与算法分析笔记(c++)_双向链表(list)的实现

回顾一下,前面提到的ist类将要作为双向链表来实现,并且我们需要修改指向表两端的指针。只要操作是发生在已知位置,这样做就可以保证每个操作的时间消耗为常量。这个已知位置可以是末尾,也可以是迭代器指定的位置。考虑到设计需要,我们需要提供下面的4个类:(1)List类本身。包含连接到表两端的链接、表的大小以及一系列的方法(2)Node类。该类看起来像是私有的嵌套类。一个结点包含数据和用来指向其前和其后的结点的指针,以及适当的构造函数。(3)const iterator类。该类抽象了位置的概念,是一个公有的

2020-12-28 21:24:52 176

原创 数据结构与算法分析笔记(c++)_向量(vector)的实现

3.4向量的实现在本节中,给出了一个可用的 vector类模板的实现。vector是基本类类型,这意味着不同于C++中的基本数组,vecto可以复制并且其占用的内存可以自动回收(通过其析构函数)。我们已经讨论了C+基本数组的一些重要特性数组就是指向一块内存的指针变量:实际的数组的大小必须由程序员单独确定。内存块可以通过new[]来分配,但是相应地也就必须用 delete[]来释放。内存块的大小不能改变(但是可以定义一个新的具有更大内存块的数组,并且用原来的数组来将其初始化,然后原来的内存块就可以释

2020-12-23 19:28:08 303

原创 基于FPGA制作原型方法手册_笔记_FPMM_1.4使用模型制作原型、1.5用户制作模型的优先考虑

FPMM-FPGA based Prototyping Methodology ManualXilinx & SYNOPSYS原型应用:架构探索、软件开发、验证1.4.1架构探索探索:芯片拓扑,性能,功耗,片上通信结构需要收集的信息:cache利用率/缺失率,处理器性能(ipc/cpi),总线带宽,burst rates (突发传输速率),内存利用率一个模型不可能即准确又快速(除了硅片,但此时rtl设计已经稳定),但FPGA原型可以接近真实芯片的速度和准确性。早期与芯片采购方交流时

2020-12-22 20:51:23 483

原创 深入理解计算机系统笔记_程序的机器级表示_3.7过程/函数/方法/子例程

3.7过程过程是软件中一种很重要的抽象。它提供了一种封装代码的方式,用一组指定的参数和一个可选的返回值实现了某种功能。然后,可以在程序中不同的地方调用这个函数。设计良好的软件用过程作为抽象机制,隐藏某个行为的具体实现,同时又提供清晰简洁的接口定义,说明要计算的是哪些值,过程会对程序状态产生什么样的影响。不同编程语言中,过程的形式多样:函数(function)、方法(method)、子例程(subroutine)、处理函数(handler)等等,但是它们有一些共有的特性。要提供对过程的机器级支持,必须要处

2020-12-22 16:51:41 195

原创 数据结构与算法分析笔记(c++)_抽象数据类型(ADT)、表ADT、STL中的向量和表

第三章 表、栈和队列本章讨论最简单和最基本的三种数据结构。实际上,每一个有意义的程序都将明晰地至少使用一个这样的数据结构,而栈则在程序中总是要间接地用到,而不管你在程序中是否进行了声明。本章将:介绍抽象数据类型(ADT)的概念。阐述如何对表进行高效的操作。●介绍栈ADT及其在实现递归方面的应用。●介绍队列ADT及其在操作系统和算法设计中的应用。在本章中,给出了两个库类 vector和1ist的重要子集的实现代码。3.1抽象数据类型(ADT)抽象数据类型(abstract data type,

2020-12-22 12:42:34 978

原创 数据结构与算法分析笔记(c++)_chapter2算法分析_数学基础、模型、分析的问题、运行时间计算

第二章 算法分析算法(algorithm)是为求解一个问题需要遵循的、被清楚地指定的简单指令的集合。本章将讨论·如何估计一个程序所需要的时间。·如何将一个程序的运行时间从天或年降低到不足一秒。·粗心地使用递归的后果。·用于将一个数自乘得到其幂以及计算两个数的最大公因数的非常有效的算法。2.1数学基础我们比较它们的相对增长率(relative rates of growth)。如果我们用传统的不等式来比较增长率,那么第一个定义是说T(N)的增长率小于等于(≤)f(N)的增长率。第二个定义T

2020-12-21 21:00:40 509

原创 FireSim简介-亚马逊云-伯克利合作项目-公共云中FPGA加速的周期精确扩展系统仿真-ISCA18

论文:Karandikar S , Mao H , Kim D , et al. FireSim: FPGA-Accelerated Cycle-Exact Scale-Out System Simulation in the Public Cloud[C]// 2018 ACM/IEEE 45th Annual International Symposium on Computer Architecture (ISCA). IEEE, 2018.AbstractFireSim:an open-so

2020-12-21 14:54:50 1969

原创 数据结构与算法分析笔记(C++)_模板、使用矩阵

1.6模板与许多算法的典型特征一样,顺序扫描算法是类型无关的。所谓类型无关,就是说这种算法的逻辑与存储在数组中的项的类型无关。相同的逻辑可以适用于整数、浮点数或者具有可比性的任何类型。本书描述的算法和数据结构都是类型无关的。本节论述在C++中如何用模板(template)来写类型无关的算法(也称为泛型算法)。我们先讨论函数模板,然后是类模板。1.6.1函数模板函数模板(function template)不是真正的函数,而是一个用以产生函数的公式。template声明的行显示Comparab1e

2020-12-17 11:04:27 305 2

原创 数据结构与算法分析笔记(C++)_c++类、c++细节

1.4C++类本书中提供了许多数据结构。所有的这些数据结构都是用来存储数据(通常是相同类型项的集合)的对象,并且提供处理这些集合的函数。在C++(或者其他编程语言)中,这通过使用类完成。本节讨论C++类。1.4.1基本class语法在C++中类由成员(member)构成。成员可以是数据,也可以是函数,其中函数称为成员函数(member function)。类中的每一个实例都是一个对象。每一个对象包含类中指定的数据成员(除非这些数据成员是static,否则这是一个可以暂时安全忽略的细节)。成员函数作用于

2020-12-15 16:04:04 437

原创 Memory Systems - Cache, DRAM, Disk_Jacob

下载链接:https://wws.lanzous.com/iiDU2jd6mzaJacob 、 Bruce 、 Ng 、 Spencer 、 Wang 、 David 等 著ps:仅供学习交流,严禁用于商业用途,请于24小时内删除

2020-12-14 22:19:39 1125 2

原创 数据结构与算法分析笔记(C++)_数学知识复习、递归的简单介绍

第一章 引论本章阐述本书的目的和目标,并且简要复习离散数学和程序设计的一些概念。1.1本书讨论的内容在许多问题中,写出一个可以工作的程序是不够的。如果这个程序是在大规模的数据集上运行,那么运行时间就成了问题。在本书中我们将看到,对于大规模的输入,如何估计程序的运行时间,更重要的是,弄清如何在尚未具体编码的情况下比较两个程序的运行时间。我们还将看到提高程序的运行速度以及确定程序瓶颈的技巧。这些技巧将使我们能够找到需要着重优化的那些代码段。1.2数学知识复习1.2.1指数1.2.2对数在计算机科

2020-12-14 21:01:46 245

原创 c++ deque容器/数据结构常用操作/方法/函数

1.deque容器基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比vector快vector访问元素时的速度会比deque快,这和两者内部实现有关deque内部工作原理:deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间deque容器的迭代器也是支持随机访问的2

2020-12-10 22:40:50 695

原创 C++vector数据结构容器常用操作/方法/函数

vector数据结构和数组非常相似,也称为单端数组。vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展(所以vector声明时不用指定大小,只用指定存储元素的数据类型。)动态扩展并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,并释放原空间。vector容器的迭代器是支持随机访问的迭代器。1.vector构造vector v; //采用模板实现类实现,默认构造函数vector(v.begin(), v.end()); //将v[begi

2020-12-08 20:12:56 482

原创 集成逻辑分析仪(ILA)简述

来源:网址 关键字:PG172 - Integrated Logic Analyzer v6.2 Product Guide (v6.2)产品手册PG172 October 5, 2016一、概述可定制的集成逻辑分析仪(ILA)IP内核,可用于监视电路设计的内部信号。 ILA内核包括现代逻辑分析仪的许多高级功能,包括布尔触发方程式和边沿触发。由于ILA内核与要监视的设计同步,因此,应用于您的设计的所有设计时钟约束也应当用于ILA内核的组件。特性:1.用户可选的探针端口数量和探针宽度2.多个

2020-12-07 21:35:17 3955

原创 Github快速下载器/git clone速度慢加速--cgit

cgit是一个github快速下载器,使用国内镜像,加快clone速度。目前,已提供了Ubuntu和Mac的预编译程序,如果使用的是其他系统,可以采用源码编译安装。ubuntu下安装:sudo wget http://cgit.killf.info/cgit_linux_latest -O /usr/local/bin/cgit && sudo chmod 755 /usr/local/bin/cgit使用方法:cgit的使用方法git与一样,事实上内部使用的也是git

2020-12-07 16:52:10 455

原创 开源RISCV简单虚拟原型/模拟器:RISC-V-TLM

文章:Màrius Montón. 2020. A RISC-V SystemC-TLM simulator. In Fourth Workshopon Computer Architecture Research with RISC-V (CARRV 2020). ACM,New York, NY, USA, 4 pages. https://doi.org/10.1145/nnnnnnn.nnnnnnn源码:https://github.com/mariusmm/RISC-V-TLM1.虚拟原型

2020-12-02 20:25:19 2205 1

原创 Vivado连接不到miz702n开发板 ERROR: [Labtools 27-2269]

错误信息:ERROR: [Labtools 27-2269] No devices detected on target localhost:3121/xilinx_tcf/Digilent/210249856468.Check cable connectivity and that the target board is powered up thenuse the disconnect_hw_server and connect_hw_server to re-register this har

2020-12-01 20:10:46 24910

原创 VMware workstation 15.x+Ubuntu 18.04安装配置调试

下载VM,我下载的是15 pro,网上有很多资源,找一个下载就可以参考:链接:https://pan.baidu.com/s/1MxbSf7hnbSyxH3Bbv4luoA提取码:33562.下载Ubuntu18.04,我下载的ubuntu-18.04.4-desktop-amd64链接https://releases.ubuntu.com/bionic/3.在vm中创建新的虚拟机-自定义-硬件兼容性不用改(15.x),可以选稍后安装操作系统,也可以选安装程序光盘映像文件进行简易安装。简易安装.

2020-08-29 10:54:52 330

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除