- 博客(36)
- 收藏
- 关注
原创 编程思想-设计模式
高内聚、低耦合提供了程序更好。可读性、稳定性、可扩展性、可复用性。指导我们设计程序的思想,设计程序时要让代码符合高内聚、低耦合。
2023-09-19 20:33:03
201
1
原创 cache 分类
《超标量处理器设计》《计算机体系结构量化研究方法》Cache指的是高速缓存简称缓存,原始意义是指访问速度比一般随机存取存储器(RAM)快的一种RAM,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。在CPU中,Cache是介于内存和处理器之间的缓存,用于存放CPU即将可能使用的数据,当CPU要使用的数据在Cache中取到时,便不再需要到内存去存取数据,从而减少处理器访问内存的次数。
2023-09-10 11:10:56
470
原创 RISC-V汇编
其中一些伪指令,Pseudoinstruction会被翻译为已经存在的指令。如ret使用指令jalr x0 x1 0实现。这个是更加专业的手册,可以直接参考,riscv的汇编内容很多很全,之后可以总结翻译一下。instruction是汇编指令,描述是对他的解释。读写汇编指令时可以参考,这个PDF。
2023-09-09 21:27:59
143
原创 了解RISC-V调用约定
在这些笔记中,我将尝试解释RISC-V调用约定,并试图让您理解为什么我们使用这种约定。希望通过理解这些笔记,您能更好地理解RISC-V程序,从而使调试工作更加容易。
2023-09-09 19:36:39
557
原创 scala 中的集合操作
在 for 循环中,yield 可以将循环中每个元素转换为集合中的一个元素,并返回一个新的、包含这些元素的集合。将一个可迭代的集合与另一个可迭代的集合组合成一对一对应的元素,并返回一个新的可迭代的集合。包含由该可迭代集合和that的对应元素组成的一对的新的可迭代集合。返回的集合的长度是该可迭代集合和that长度的最小值。map对集合中的每个元素使用匿名函数处理,并将返回值组会成一个新的集合。对每个元素都应用f,于map的区别是,不返回新的集合。B - 返回的一对中的第二部分的类型。unzip于zip相反。
2023-09-09 09:55:20
147
原创 CMAKE
CMake 是一个管理源代码构建的工具。最初,CMake 被设计为各种方言的生成器Makefile,如今 CMake 生成现代构建系统,以及NinjaVisual Studio 和 Xcode 等 IDE 的项目文件。CMake 广泛用于 C 和 C++ 语言,但它也可用于构建其他语言的源代码。第一次接触 CMake 的人可能有不同的初始目标。要了解如何构建从互联网下载的源代码包,请从User Interaction Guide。
2023-09-01 16:31:54
93
原创 基于fpga的实时视觉SLAM特征提取
同步定位和映射(SLAM)是构建或更新未知环境地图的问题,同时跟踪代理在其中的位置。如何在移动甚至物联网级设备上健壮和持久地实现SLAM是当今行业面临的主要挑战。我们需要解决的主要问题是: 1.) 如何加速 SLAM 管道以满足实时性要求;2.) 如何减少 SLAM 能耗以延长电池寿命。在深入研究问题后,我们发现特征提取确实是性能和能耗的瓶颈。
2023-09-01 11:11:44
751
原创 ac2SLAM: FPGA加速高精度SLAM与Heapsort和并行关键点提取器
摘要-为了满足应用层的丰富功能,鲁棒和准确的同步定位和映射(SLAM)技术对机器人非常关键。然而,由于缺乏足够的计算能力和存储能力,在嵌入式设备中高效地欺骗高精度SLAM是具有挑战性的。在这项工作中,我们提出了一种基于ORB-SLAM2算法的完整加速方案ac2SLAM,包括前端和后端,并在FPGA平台上实现它。具体来说,提出的ac2SLAM特征:1)可扩展并行ORB提取器,提取足够的关键点和分数,吞吐量匹配误差为4%;
2023-08-31 21:34:28
964
原创 体系结构优化 性能和缓存 [第五期“一生一芯”计划 - P19]
处理器分为前端和后端,划分的依据在于是否改变处理器的状态。前端设计报取值和译码,不改变程序状态,后端设计到计算,写回,访存会修改处理器状态。
2023-08-31 20:01:17
87
原创 用于嵌入式视觉SLAM的UHD视频流的高效实时fpga的ORB特征提取
特征点的检测和描述是许多计算机视觉系统的重要组成部分。例如,在自动驾驶无人机(UAV)领域,这些方法构成了所谓的视觉里程计(VO)和同步定位和映射(SLAM)算法的基础。在本文中,我们提出了一个硬件特征点检测系统,能够实时处理4K视频流。我们使用 ORB 算法——面向 FAST(加速段测试的特征)和旋转简要(二进制鲁棒独立基本特征)来检测和描述图像中的特征点。
2023-08-31 14:57:41
574
1
原创 eSLAM: FPGA平台上实时ORB-SLAM节能加速器
同步定位和映射 (SLAM) 是自主导航的关键任务。然而,由于SLAM算法的计算复杂度,在低功耗平台上很难实现实时实现。我们提出了一种基于实时ORB(面向FAST和旋转BRIEF)的视觉SLAM系统的节能架构,通过加速FPGA平台上特征提取和匹配的最耗时的阶段。此外,原始的 ORB 描述符模式被重新形成为旋转对称方式,这更加硬件友好。进一步利用重调度和并行化等优化来提高吞吐量并减少内存占用。
2023-08-31 11:27:44
1002
原创 RISCV Control and Status Registers (CSRs)
系统主操作码(SYSTEM:11100 11)用于编码RISC-V ISA中的所有特权指令。它们可以分为两个主要类:原子读修改-写控制和状态寄存器(csr),它们在Zicsr扩展中定义,以及所有其他特权指令。特权体系结构需要Zicsr扩展;需要哪些其他特权指令取决于特权体系结构特性集。除了本手册第一卷中描述的非特权状态外,实现还可能包含额外的CSR,可以使用第一卷中描述的CSR说明访问特权级别的某些子集访问。在本章中,我们绘制出CSR地址空间。
2023-08-16 11:13:15
956
原创 verilog 门级建模
5.1门的类型Verilog通过预定义逻辑门原语来支持用户使用逻辑门设计电路,调用这些门级原语与调用自己定义的模块相同,直接使用无需声明。1、与门或门或非门,都具有一个标量的输出端口和多个标量的输入端,一旦输入端口的值产生变化输出端的值立即重新计算2、缓冲器(buf),非门(not)一个输入标量,多个输出标量3、三态门,当控制信号有效的情况下才能传输数据,如果控制信号无效,则输出为高抗组Z三态门当一个信号由多个驱动源驱动时,可以这样设计驱动源:让它们的控制信号的有效时间相互错开,从而避.
2022-03-01 17:10:37
677
原创 verilog 数据流建模
连续赋值语句:任何一个操作数发送变化,表达式会被立即重新计算。普通延迟赋值:隐式连续赋值更加简便的写法将延迟放在线网上,达到同样的效果负数要使用整数或实数来表示负数...
2022-03-01 17:10:13
92
原创 verilog 行为级建模
行为级建模随着设计复杂程度不断提高门级建模变得极其复杂,行为级建模更加灵活简单。在Verilog中有两种结构化的过程语句:initial语句和always语句,他们是行为级建模的两种基本语句。其他所有的行为语句只能出现在这两种结构化过程语句里。Verilog在本质上是并发而非顺序的,Verilog中的各个执行流程并发执行,而不是顺序执行的。每个语句代表一个独立的执行过程,每个执行过程从仿真时间0开始执行。并且两种语句不能嵌套使用。always语句包括的所有行为语句构成了一个always语句块
2022-03-01 17:09:54
746
原创 verilog 实用建模技术
过程连续赋值允许在有限时间段内将表达式的值连续加到寄存器或网线。使用限制:过程连续赋值语句,赋值后寄存器值被动态改写。使用deassign取消,后其值保持不变直到被其他过程赋值语句覆盖。这里有一个问题当,没有被deassign取消是,覆盖会发生什么?这个似乎就是强制修改,但是过程连续赋值没有改变。force也是过程连续赋值语句改写参数有两种方式更改模块内的参数defparam语句通过模块调用参数赋值在调用前,用defparam语句声明进行赋值。进行参数传递赋值有
2022-03-01 17:09:00
134
原创 verilog 时序和延迟
延迟模型的类型路径延迟建模模块路径延迟:模块的源引脚和目标引脚直接的延迟用法左侧称为原域右侧称为目标域。这种行为就是预定义,将延迟提取到一个变量,通过调整变量的值,修改建模内的全部相同类型的延迟。条件路径延迟,根据程序现在的状态动态设置延迟。共有4个数值,一共有12种变化都被规定了。比较复杂,需要的时候再学。时序检查不理解这里的检查脉冲宽度,保持时间,建立时间。以后再总结...
2022-03-01 17:08:44
313
原创 verilog 开关级建模
用开关级为基础进行的设计。开关级建模元件1、NMOS开关:control信号为1时导通,为0时输出高组态2、PMOS开关:control信号为0时导通,为1时输出高组态3、CMOS开关:ncontrol为1且pcontrol信号为0时,开关导通4、CMOS开关:ncontrol为0且pcontrol信号为1时,开关高阻5、tran:连接两个信号,而tranif0当control为0时连接...
2022-03-01 17:08:10
774
原创 verilog 用户自定义原语
用户自定义原语设计者希望使用自己编写的原语,及用户自定义原语(User-Defined-Primitive,UDP)。UDP分为两类其实UDP就是通过真值表输出真值。输出端的z值被默认看做x值。无关项?代表0,1,x自动扩展对比调用方法完全相同UDP有一个很大的缺陷,随着输入端口个数的增加,UDP的状态表迅速扩大。表时序逻辑的UDP同一行中存在多个输入的跳变沿是违法的。总结...
2022-03-01 17:07:56
1909
原创 verilog 编程语言接口
编程语言接口(PLI)提供了一组接口子程序,用于访问(读/写)内部的数据表示,并可以提供仿真环境信息。编程语言接口这里没有写一些子程序举例,以后补上
2022-03-01 17:07:39
217
原创 verilog 逻辑综合
逻辑综合是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转成优化门级网表的过程。设计约束:时序,面积,可测试性,功耗等。大部分运算符都可以进行逻辑综合综合举例门级网表的验证逻辑综合建模技巧设计划分水平划分:将大的问题划分为多个小问题,在组合得到问题的解。设计约束指定时序电路综合举例有限状态自动机:类似于动态规划,得到输入后进行状态转移,这是一种求解问题的思路。然后根据逻辑写出RTL描述确定使用目标工艺库进行设
2022-03-01 17:06:51
246
原创 verilog HDL 基本概念,端口,模块
1 HDL发展1.1基础概念IC(Integrated Circuit)集成电路:将逻辑门安装在单个芯片上。SSI(Small Scale Integreted)小规模集成电路:逻辑门的数量很少MSI(Medium Scale Integreted)中规模集成电路:逻辑门数量有上百个LSI(Large Scale Integreted)大规模集成电路:数千个逻辑门EDA(Electronic Design Automation):电子设计自动化,因为LSI的设计过程变得复杂,希望设计阶段自动完成
2022-02-25 15:10:47
1530
原创 个人感悟-自我思考-20/10/8
Coack_k:无痛人生做这期视频的原因:觉得现代人对很多事情和评价太在乎了。引出一种现象:某个人的开心会使你开心,某个人的伤心会使你悲伤。举例:楷杰小学语文老师的一个夸奖就会使楷杰十分高兴,因此对于语文成绩有很大的渴望。相反对于楷杰初中不喜欢的语文老师,楷杰的语文成绩一落千丈。引申:很多人太在乎老师同学,老师同学的一句话就决定了自己的开心与否。举例印证:当我们去一个陌生的没有认识的朋友的聚会,会感觉手足无措。自我思考:这里引起我的共鸣,我想知道产生的原因和解决的办法。...
2020-10-08 17:24:53
276
原创 JavaWebServlet请求和响应
1JavaWeb请求和响应Servet最主要的作用就是处理客户端请求,并向客户端做出响应。浏览器发送HTTP请求信息,Web服务器接收请求信息。Web服务器创建HttpServletRequest对象封装请求信息。Web服务器创建HttpServletResponse对象封装响应信息。Web服务器调用Serlet,通过service()方法从HttpServletRequest对象读取请求信息,将响应数据封装到HttpServletResponse对象。Web服务读取响应信息,发送HTTP响应信息给浏览
2020-10-05 17:50:53
634
原创 Linux---设置centos显示中文
修改centos7系统语言1、查看当前语言包locale2、查看系统拥有语言包locale -a(zh_CN.UTF-8是简体中文,如果没有zh_CN.UTF-8,就安装语言包,如果存在可以直接设置)安装简体中文语言包yum install kde-l10n-Chinese设置为中文LANG=“zh_CN.UTF-8” #修改为中文LANG=“en_US.UTF-8” #修改为英文永久修改就要把配置写入文件里面方法(一)vi /etc/locale.conf##加下面内容到第
2020-10-02 10:29:39
577
原创 区间dp---加分二叉树
加分二叉树这个思路十分简单,枚举根节点。暴力算就可以了,很明显有重复的状态使用记忆化搜索,搜索后需要使用一个数组记录这个状态的来源。最后从结果逆推就可以得到中序遍历。前序遍历是指,根左右的访问。中序遍历是指,左根右的访问。#include<iostream>using namespace std;const int N = 31;int n,a[N],ans = 0,b[N],m = 0; int d[N][N],f[N][N];//最大值和路径 int dfs(int l,i
2020-10-02 08:35:29
77
原创 区间dp---数字游戏
数字游戏很明显是区间dp,这次写区间dp遇到就几个常见错误。首先没有写成首位相接的形式,然后写成首位相接的形式后,没有写对区间。我们需要求解1~2*n-1这个区间内的最优解。因此每次i和j左右区间枚举的范围都需要覆盖整个区间。`#include<iostream>#include<algorithm>#include<cstdio>using namespace std;const int N = 110,M = 10;int d[N][N][M],f[N]
2020-10-02 07:54:07
113
原创 P1038 神经网络
添加链接描述通过题目描述可以想到一种广搜的方法。去计算这个值,然后输出。注意一些细节就可以了。#include<iostream>#include<vector>#include<cstdio>#include<queue>using namespace std;vector<int> w[110],v[110];int c[110],u[110];int is[110],isq[110];queue<int> q
2020-09-30 16:52:52
57
原创 p1021 邮票面值设计
题目连接正常的搜索是不容易搜索到答案的,因为无法确定最大的内个max值。但是我们可以这样考虑,首先搜索的范围是递增的。这个范围的下界是上一个数+1,上界的确定,考虑背包问题。d[i]代表拼成i最少的数是多少个。因此搜索到答案后,我们对d[i]进行计算就可以得到最大能拼成的值。#include<iostream>#include<cstdio>using namespace std;const int N = 1e9;int n,k,d[500010],a[20],ans[
2020-09-30 16:05:02
91
原创 20/9/29落谷刷题1
A、方格取数1、解题思路:首先会想到贪心的取,但是第一次取到最大值并不能让第二条路径取到最大值。2、题目特性:当两个路径同时走的时候,相同的位置只会取到一次数,不相同的位置一定都可以取到。因为每条路径只能向下或右走,所以两天路径取到相同数的时候一定在同一点。3、解法:考虑到这一点。题目就简单很多。同时搜索两条路径即可。但是同一个状态,我们只关心最优的取数。直接DP就可以做出。dp[x1,y1,x2,y2],这个dp可以优化,我们可以通过走过的步数,加上x推出,所在的位置y。dp[x1,x2,step
2020-09-30 15:14:09
162
原创 鸟哥的linux--linux文件与目录管理
1 文件与路径1.1 绝对路径和相对路径绝对路径:从根节点开始相对路径:从当前目录开始相对路径是从当前工作目录的路径开始。相对路径的用法主要是某些软件用户可以自定义安装位置,这是绝对路径就不好用了。绝对路径正确度比较好,管理系统的条件下最好用绝对路径。1.2 目录的相关操作此层目录上层目录前一个工作目录目前使用者所在的家目录代表某个账户的家目录.…-~~account每层目录下一定会有".“与”…"两个目录,但是根目录中二者指代同一个目录,当前目录。
2020-09-14 18:06:48
64
原创 python程序设计与算法基础教程--概述
1 Python简介Python是一种解释型语言面向对象语言,1989年底发明。特点:简单,高级,面向对象,可扩展性,免费开源,可移植性,丰富的库,可嵌入性。应用范围:操作系统管理,科学技术,Web应用,图形化界面,其他版本问题:Python 2于2000年发布,Python 3于2008年发布3不向下兼容2。通过小工具可以将2的某些源代码迁移到3。Python解释器用于解释和执行Python语句和程序,下面介绍一下常用的解释器。CPython:使用c实现Jython:使用java语言实现,
2020-09-14 09:57:47
1329
原创 鸟哥的linux--linux的文件权限与目录配置
linux最优秀的地方之一就在于它的多人多任务环境。而为了让各个用户具有保密的文件数据,文件的权限管理就很重要。1、用户身份对于一个文件用户有三种身份,文件拥有者(User),用户组(Group),其他人(Others)。2、linux权限概念2.1linux文件属性使用ls -al查看文件属性1234567权限链接拥有者用户组文件容量修改日期文件名首先看权限的详细含义第一个字符代表文件是目录,文件,链接文件d-lbc
2020-09-14 07:56:13
119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人