
DSP
不断思考与总结才能进步。
CLL_caicai
数字IC
展开
-
Cache相关知识
Cache映射关系直接映射缓存考虑一个问题,CPU从0x0654地址读取一个字节,cache控制器是如何判断数据是否在cache中命中呢?cache大小相对于主存来说,可谓是小巫见大巫。所以cache肯定是只能缓存主存中极小一部分数据。我们如何根据地址在有限大小的cache中查找数据呢?现在硬件采取的做法是对地址进行散列(可以理解成地址取模操作)。我们接下来看看是如何做到的?我们一共有8行cache line,cache line大小是8 Bytes。所以我们可以利用地址低3 bits(如上转载 2020-08-19 11:46:55 · 648 阅读 · 0 评论 -
C/C++程序内存的分配
一、一个C/C++编译的程序占用内存分为以下几个部分:栈区(stack):由编译器自动分配与释放,存放为运行时函数分配的局部变量、函数参数、返回数据、返回地址等。其操作类似于数据结构中的栈。 堆区(heap):一般由程序员自动分配,如果程序员没有释放,程序结束时可能有OS回收。其分配类似于链表。 全局区(静态区static):存放全局变量、静态数据、常量。程序结束后由系统释放。全局区分为已初始化全局区(data)和未初始化全局区(bss)。 常量区(文字常量区):存放常量字符串,程序结束后有系统释转载 2020-08-16 10:13:19 · 246 阅读 · 0 评论 -
C语言之-volatile\extern关键字及其在DSP编程中的应用
一、简述1、extern关键字定义方式 :extern int a;显式的说明了a的存储空间是在程序的其他地方分配的,在文件中其他位置或者其他文件中寻找a这个变量。在a.c文件中要引用b.c文件中的变量时,需要在a.c文件中用extern声明所用到的变量。2、volatile关键字定义方式:volatileintvint;简单地说就是防止编译器对代码进行优化。二、volatile关键字详解volatile关键字的本质为:1、防止编译器优化代码2、告..原创 2020-08-08 11:16:12 · 803 阅读 · 0 评论 -
memcpy()函数
一、函数定义void * memcpy ( void * destination, const void * source, size_t num );将source指向的地址处的 num 个字节 拷贝到 destination 指向的地址处。注意,是字节。 实现:void* memcpy(void* dest, const void* source, size_t count){ char *ret = (char *)dest; char *dest_t =原创 2020-08-07 21:18:53 · 425 阅读 · 0 评论 -
sizeof()与#pragma pack()的使用
一、sizeof使用sizeof(a)返回数据a对应的字节(byte)数二、#pragma pack()的使用1、结构体的对齐系数结构体存在对齐系数,即结构体中的数据间并不是无缝连接的,而是有一个对其系数作为最小存储单位的。一个数据实际使用的内存大小为 N*对齐系数,N是使得这一部分内存大于等于数据真实大小的最小空间。如:对齐系数为4byte,char形数据实际占据了4byte空间而不是1byte2、#pragma pack()每个特定平台上的编译器都有自己的默认“对齐系数”(3原创 2020-07-31 11:52:04 · 422 阅读 · 0 评论 -
C语言中const常见用法
一、解析const int a;int const a;const int *a;//即 (const int) *a;int * const a;//即 (int) * const a;const int * const a;int const * const a;前两个的作用一样,表示a是一个常整型数,意味着int形的数a不可修改,只能声明时赋值; 第三个表示a是一个指向常整型数的指针(整型数是不可修改的,但指针指向可修改),如:const int b=2;const .原创 2020-07-31 11:24:41 · 666 阅读 · 0 评论 -
32位机器和64位机器中int、char等数据类型所占字节长度对比
在32位机器和64机器中int类型都占用4个字节。编译器可以根据自身硬件来选择合适的大小,但是需要满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的,而当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节(例如,GCC)。下面列举在GCC编译器下32位机器和64位机器各个类型变量所占字节数:C类型 32位机器(字节) 64位机器(字节) c转载 2020-07-31 11:03:01 · 2710 阅读 · 0 评论 -
FPGA/DSP编程思想---乒乓操作
乒乓操作是DSP以及FPGA中一种常见的处理方式,多用于数据流控制的场合。本文从实际例子出发,介绍了乒乓操作的思想,分析了乒乓操作带来的优势。问题:SAR实时处理系统的一个常见情况就是,数据接收模块录取雷达回波,数据处理模块对存储下来的数据进行处理(各种时频域成像算法)实现成像,成像的结果同样需要传输给输出模块。这就出现一个问题,我们一定希望回波的录取和处理是同时进行的,而不是二者只能交替工作...原创 2020-03-16 17:42:05 · 1769 阅读 · 2 评论