自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 资源 (2)
  • 收藏
  • 关注

转载 vivado RAM使用

1.双口RAM概述双口RAM(dual port RAM)在异构系统中应用广泛,通过双口RAM,不同硬件架构的芯片可以实现数据的交互,从而实现通信。例如,一般情况下,ARM与DSP之间的通信,可以利用双口RAM实现,ARM通过EBI总线连接到双口RAM的A口,DSP通过EMIF总线(也可以是uPP总线,取决于速度需求)连接到双口RAM的B口,两者对同一块存储区域进行操作,即可实现两者的数据交互。但是,因为双口RAM的A口和B口都可以对相同的内存地址进行操作,这就引出了一个问题——假如通信双方在两个端

2020-06-14 16:56:28 2657

转载 memmove函数实现和优化过程

手动实现一个内存拷贝函数memmove,以此引申代码的优化过程!!!写一个函数,完成内存移动(拷贝),并为其写一个简单的测试用例来进行测试。博客源地址:https://blog.csdn.net/essity/article/details/105359586...

2020-05-29 15:45:32 450

转载 a++和++a的区别

以前对a++与++a的理解仅限于:a = a++先赋值后计算,a = ++a先计算后赋值。单从应用的角度来讲,这么简单理解是没有问题的。这篇博客用来深入理解并测试二者真正的区别。一句话说到前头,a = a++与a = ++a均为先计算后赋值,不同的是:a = a++中变量先压栈,后计算,最后栈顶元素弹出赋值于a;a = ++a中变量先计算,后压栈,最后栈顶元素弹出赋值...

2019-11-15 09:48:41 1096

转载 卷积神经网络入门详解

回顾之前所写过的博客  在之前的博客《十四、卷积神经网络(1):介绍卷积神经网络》《十五、卷积神经网络(2):卷积神经网络的结构》中只是介绍性的给出了一些关于卷积神经网络的知识。这主要因为《Neural Networks and Deep Learning》这本书中的大部分章节在介绍神经网络,而仅在最后一个部分介绍了卷积神经网络,只介绍了卷积神经网络中的相关概念,如“感受野”、“卷积层”、“池化...

2019-11-07 17:20:53 1026

转载 FPGA中bram和dram差别

选择distributed memory generator和block memorygenerator标准:Dram和bram差别:1、bram 的输出须要时钟,dram在给出地址后既可输出数据。2、bram有较大的存储空间。是fpga定制的ram资源;而dram是逻辑单元拼出来的。浪费LUT资源3、dram使用更灵活方便些补充:在Xilinx A...

2019-11-07 15:04:30 958

转载 为什么CNN中的卷积核一般都是奇数?

本博客只用于自身学习,如有错误,虚心求教!!!为什么CNN中的卷积核一般都是奇奇数*奇数,没有偶数*偶数的?咱们经常见到的多为 3 * 3、5*5;怎么从来没有见过 4*4,6*6 之类的卷积核?无论奇数 or 偶数,都是能够做卷积的呀之前学习的时候真的没有想过这些问题,再复习时,觉得全是 Why?说明之前还是没有搞明白从AlexNet模型的11*11、5*5、3*3,还有V...

2019-11-07 11:55:11 401

转载 为什么CNN中的卷积核大小都是奇数?

主要有两点原因:1.便于进行padding。在卷积时,若要卷积前后的尺寸不变。需要对原图进行padding。假设图像的大小,也就是被卷积对象的大小为n∗nn*nn∗n,卷积核大小为k∗kk*kk∗k当padding的幅度设为k−12\frac{k-1}{2}2k−1​ 时,卷积后的输出就为n−k+2∗k−121+1=n\frac{n-k+2*\frac{k-1}{2...

2019-11-07 11:52:42 474

转载 c语言中的volitile用法

volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如:volatile int i=10;int j = i;...int k = i;volati...

2019-09-30 09:47:31 697

转载 关于modelsim仿真时出现红线(不定态hx)或者蓝线(高阻态hz)的问题

在用modelsim进行时序仿真时,出现高阻态信号(蓝线)或者不定态信号(红线)的问题,如下图。出现这样的情况,有一种可能的原因就是没有对这些信号进行初始化,所以在modelsim中认为输入信号为高阻态(z),输出信号为不定态(x)。解决办法:对于输入信号在测试文件(tb)中一定要赋值;输出信号将其复位为一个确定的初始状态,比如采用异步复位的方式(如下图),此时的复位信号rst_n在测试文...

2019-09-27 16:53:05 5342

转载 Verilog有符号数与无符号数的数值运算

一、无符号数1.高位溢出赋给一个位宽不够的数wire [3:0] a=4'b1111;//15wire [3:0] b=4'b0010;//2wire [3:0] c;assign c = a + b;//17=10001wire [3:0] a=4'b1111;wire [3:0] b=4'b0010;wire [2:0] c;assign c = a + b;...

2019-09-26 21:40:52 858

转载 于DMA,TCM(ITCM和DTCM)和Cache的理解!

关于DMA,TCM(ITCM和DTCM)和CacheDMADMA=Direct Memory Access。这是一种通过硬件实现的数据传输机制。简单的说,就是不在CPU的参与下完成数据的传输。DMA是一种硬件设备。这种设备的工作原理是这样的:——首先CPU告诉DMA设备,要有一堆数据需要传输,为了效率而请它出马。(DMA请求)——DMA收到CPU的消息,开始准备。此时CPU把数据源...

2019-09-25 11:44:51 1062

转载 真正理解C语言中一维数组的数组名的真正含义

程姚根,华清远见嵌入式学院讲师。这一段代码的运行结果如下:从运行结果我们知道,&a和a的值是一样的,但是a + 1 和&a +1的结果就完全不一样,这是为什么呢?我们知道a是数组名,代表数组的首地址,a+1,就是数组的下一个元素的地址。 a = 0xbfea014c , a + 1 = 0xbfea0150 相差多少?a+1正好是下一个元素的地址吧。我们再来看看&a...

2019-09-22 16:51:50 1268 1

转载 uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型

在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看, 好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问: 以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少。那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉...

2019-09-22 16:21:22 212

转载 C语言函数的定义和声明

本科学C语言的时候,就对函数的定义和声明的作用很迷糊,刚看到一篇博客,写得非常清楚,贴出来与各位共享!一、函数的声明1.在C语言中,函数的定义顺序是有讲究的:默认情况下,只有后面定义的函数才可以调用前面定义过的函数1 int sum(int a, int b) {2 return a + b;3 }4 5 int main()6 {7 int c = ...

2019-08-08 14:38:17 74544 22

原创 Rocket Chip里面的Decoupled(解耦)接口

图1.Decoupled 接口 如图1所示,Decoupled接口是一个与握手信号Valid和Ready有关的接口。Producer(生产者)驱动数据(bits)和Valid线,Consumer(消费者)驱动Ready线。当生产者产生的数据准备就绪时,生产者将Valid信号拉高。当消费者准备接收数据时,消费者把Ready信号拉高。如果Valid和Ready信号...

2019-07-26 13:20:31 1496

转载 使用 VSCode 编辑远程服务器文件

使用 VSCode 编辑远程服务器文件在远程服务器上使用 vim 编辑文件一直觉得不太顺手,个人比较喜欢用 VSCode ,终于解决了使用 VSCode 编辑远程文件。介绍两种方法:1、Remote VSCode 插件2、SFTP 插件Remote VSCode安装 Remote VSCode发现一款插件 Remote VSCode,可以实现这个功能如图,好评数还是...

2019-07-24 18:29:44 3043

转载 tensorflow模型的保存和恢复

将训练好的模型参数保存起来,以便以后进行验证或测试,这是我们经常要做的事情。tf里面提供模型保存的是tf.train.Saver()模块。模型保存,先要创建一个Saver对象:如saver=tf.train.Saver()在创建这个Saver对象的时候,有一个参数我们经常会用到,就是max_to_keep 参数,这个是用来设置保存模型的个数,默认为5,即max_to_keep=5...

2019-07-11 16:05:51 328

转载 10进制小数转化成二进制小数

一、二进制数转换成十进制数由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。例1105把二进制数110.11转换成十进制数。二、十进制数转换为二进制数十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。1. ...

2019-07-11 14:47:13 1223

转载 python如何将浮点数转换为16进制的数

最佳答案这在python中有点棘手,因为不希望将浮点值转换为(十六进制)整数.相反,您尝试将浮点值的IEEE 754二进制表示解释为十六进制.我们将使用内置struct库中的pack和unpack函数.浮点数是32位.我们首先将它打包成binary1字符串,然后将其解压缩为int.def float_to_hex(f): return hex(struct.u...

2019-07-11 14:37:59 12887 1

转载 float数据在内存中的存储方法

浮点型变量在计算机内存中占用4字节(Byte),即32-bit。遵循IEEE-754格式标准。一个浮点数由2部分组成:底数m 和 指数e。 ±mantissa × 2exponent(注意,公式中的mantissa 和 exponent使用二进制表示)底数部分 使用2进制数来表示此浮点数的实际值。指数部分 占用8-bit的二进制数,可表示...

2019-07-11 14:11:21 327

转载 LUT......FPGA查找表

 FPGA工作的原理是什么?https://blog.csdn.net/sanjay_f/article/details/29368389

2018-10-31 14:02:12 825

转载 Ubuntu环境如何上传项目到GitHub网站?

参考链接中的文章:https://blog.csdn.net/ajianyingxiaoqinghan/article/details/70544159?tdsourcetag=s_pcqq_aiomsg

2018-10-30 23:15:12 190

转载 Verilog中for循环的处理办法

 在C语言中,经常用到for循环语句,但在硬件描述语言中for语句的使用较C语言等软件描述语言有较大的区别。     在Verilog中除了在Testbench(仿真测试激励)中使用for循环语句外,在Testbench中for语句在生成激励信号等方面使用较普遍,但在RTL级编码中却很少使用for循环语句。主要原因就是for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源...

2018-10-14 22:13:09 17235

转载 cache 写回策略

写回策略主要分两种: 写回(write back )和 写通(write through)1. write back只有在一个cache行被选中替换回主存时,如果cache 行的数据是修改过的(dirty),才将它写回主存。这种策略,要在Cache中设置一个脏位(dirty bit),用来表示缓存中的cache 行是否被修改过。如果 一个内存块在加载到Cache后未被修改过,...

2018-08-23 21:09:36 15967 1

转载 图解数据读写与Cache操作

 高速缓存(Cache)主要是为了解决CPU运算速度与内存(Memory)读写速度不匹配的矛盾而存在, 是CPU与内存之间的临时存贮器,容量小,但是交换速度比内存快。  百度百科是这样介绍缓存读取的:  CPU要读取一个数据时,首先从Cache中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入Cache中...

2018-08-18 13:52:33 3236 1

转载 如何学习数字集成电路:数字IC必读书籍

数字IC必读书籍本文将从简单到复杂的顺序依次列出数字IC设计需要阅读的书籍。1、数字电路基础数字IC设计最基础的书籍了,相关书籍比较多,可以随意挑选:主要是为了弄清楚与或门电路,触发器、译码器、脉冲产生、逻辑化简等待。读书策略: 用时短、打基础、必读认真阅读、把书中的习题都做一遍、每章节重点必须要掌握。书籍选择:  数字电路与系统(第3版) 戚金清,王兢 编 2、《...

2018-08-17 09:32:52 19361 2

转载 什么是recovery time和removal time?

什么是recovery time和removal time?在同步电路中,输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输,防止亚稳态。同样的道理,对于一个异步复位寄存器来说,同样异步复位信号同样需要和时钟满足recovery time和removal time 才能有效进行复位操作和复位释放操作,防止输出亚稳态。1、recovery time:恢复...

2018-08-17 09:26:25 2734

转载 altera小实验——TimeQuest Timing Analyzer初步使用

时序分析是FPGA开发过程中极为重要的一环。在一些简单的工程中时序约束可能会被忽略,但是时序约束仍然是保证系统正常工作的关键因素之一。quartus ii的时序约束可以通过TimeQuest Timing Analyzer来完成。https://blog.csdn.net/moon9999/article/details/73610455...

2018-08-05 14:09:17 630

转载 时序分析/约束(一):相关概念

时序分析时FPGA设计中永恒的话题,也是FPGA开发人员设计进阶的必由之路。慢慢来,先介绍时序分析中的一些基本概念。见以下链接讲解:https://blog.csdn.net/shengzhuzhu/article/details/29622705...

2018-08-03 20:46:11 830

转载 GNU汇编程序中的分段

https://blog.csdn.net/tigerjibo/article/details/7673061

2018-07-24 14:33:49 191

转载 linux汇编.section与.globl

https://blog.csdn.net/mm275666594/article/details/36672723

2018-07-24 14:25:11 3196

转载 RISC-V架构的低功耗机制

      处理器指令架构本身并不会定义低功耗机制,但处理器架构中通常会定义一条休眠指令。WFI(Wait For Interrupt)指令是RISC-V架构定义的一条休眠指令。当处理器执行到WFI指令之后,将会停止执行当前的指令流,进入一种空闲状态。这种空闲状态可以被称为“休眠;"状态,直到处理器接收到中断(中断局部开关必须被打开,由mie寄存器控制),处理器便被唤醒。处理器被唤醒后,如果中断被...

2018-07-22 14:16:21 4072 1

转载 RISC-V架构是否支持中断嵌套?

        不支持。        对于RISC-V架构而言,进入异常之后,mstatus寄存器中的MIE域将会被硬件自动更新成0(意味着中断全局被关闭,从而无法响应新的中断)。 退出中断后,MIE域才被硬件自动恢复成中断发生之前的值(通过MPIE域得到)。从而再次全局打开中断。        由此可见,一旦响应中断进入异常模式后,中断被全局关闭再无法响应新的中断,因此RISC-V架构...

2018-07-22 09:50:37 2899 1

转载 RISC-V架构中断定义

        RISC-V架构定义的中断类型分为4种:外部中断、计时器中断、软件中断和调试中断。        (1)外部中断是指来自于处理器核外部的中断,譬如外部设备UART、GPIO等产生的中断。        (2)计时器中断是来自计时器的中断。        (3)软件中断是指来自软件自己触发的中断。        (4)调试中断,专用于实现调试器(Debugger)...

2018-07-22 09:30:57 5455 1

转载 RISC-V架构的工作模式

        RISC-V的架构有机器模式(Machine Mode)、用户模式(User Mode)和监督模式(Supervisor Mode)。并且规定机器模式是必须具备的模式,其他模式均是可选而非必选的模式。...

2018-07-22 08:29:06 3883

转载 指令的发射和派遣

      在处理器设计中,派遣和发射是两个常被混用的定义。      在简单的处理器中,二者往往是说同一个概念,都是表示指令经过译码过后,被派发到不同的运算单元执行的过程。因此派遣和发射一般发生在流水线的执行阶段。      在一些比较高端的超标量处理器核中,流水线级数非常多,派遣和发射可能存在不同的含义。派遣往往表示指令经过译码之后被派发到不同的运算单元的等待队列中的过程。而发射往往表...

2018-07-21 15:20:12 1714

转载 分支预测之方向预测

(1)BTB      分支目标缓存( BTB,Branch Target Buffer)技术是指使用容量有限的缓存保存最近执行过的分支指令的PC值,以及它们的跳转目标地址。对于后续需要取指的每条PC值,将其余BTB中存储的各个PC值进行比较,如果出现匹配,则预测这是一条分支指令,并使用其对应存储的跳转目标地址作为预测的跳转地址。(2)RAS(Return address stack,RA...

2018-07-21 14:02:37 2094

原创 如何提高处理器取指的速度

    为了能够使得处理器以最快的速度取指,通常使用ITCM和I-Cache的方法。(1)ITCM(Instrction Tightly Coupled Memory)    指令紧耦合存储器,是指配置一段较小容量(一般几十KB)的存储器(通常使用SRAM),用于存储指令,且在物理上里处理器核很近,专属于处理器核,能够取得很小的访问延迟(通常一个时钟周期),可以保证系统的实时性。ITCM的...

2018-07-20 15:09:37 672

转载 时间空间的局部性原理

https://blog.csdn.net/u013315650/article/details/56347793

2018-07-20 14:48:48 793

转载 处理器的流水线级数是否越深越好?

加深流水线有什么影响?正面影响:流水线的级数越多,意味着流水线被切得越细,每一级流水线内容纳硬件逻辑越少,意味着运行更高的主频。主频越高,流水线的吞吐率越高。负面影响:(1)每一级流水线都由寄存器组成,更多的流水线级数意味着消耗更多的寄存器,产生更大的面积开销,功耗也会增大。(2)每一级流水线需要握手,流水线的最后一级反压信号可能会一直串扰到最前一级造成严重的时序问题。(3)流...

2018-07-19 17:36:20 10971

用scala脚本语言验证cordic算法

用scala脚本语言实现cordic算法,可以求出0到360度角的正弦余弦值

2018-01-24

cordic的verilog实现包含testbench

用veriolg实现16级流水线结构的cordic加速器,该加速器可求出正弦,余弦值。文件中采用了两种测试机制。一种是从外部读取测试向量;另一种是用循环扫描的方式测试。测试结果都已文件的形式输出,并且在控制台上打印。

2018-01-19

空空如也

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

TA关注的人

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