0%

析构函数

构造函数(constructor)在创建对象时被系统自动调用,而析构函数(Destructor)在对象被撤销时被自动调用,相比构造函数,析构函数要简单的多。析构函数有如下特点:

  • 与类同名,之前冠以波浪号,以区别于构造函数。
  • 析构函数没有返回类型,也不能指定参数。因此,析构函数只能有一个,不能被重载。
  • 对象超出其作用域被销毁时,析构函数会被自动调用。
Read more »

类的定义

C++当中使用class来定义一个类,基本形式如下:

1
2
3
4
5
6
7
8
9
10
class 类名
{
public:
//公有数据成员和成员函数
protected:
//保护数据成员和成员函数
private:
//私有数据成员和成员函数
};


Read more »

cpp的类型转换

在C当中,类型转换的风格很简单:

1
TYPE a = (TYPE)EXPRESSION;

直接将要转换的变量前面加上需要的目标类型。
C风格的类型转换可以在任意类型之间转换。比如可以把一个指向const对象的指针转换成指向非const对象的指针,把一个指向基类对象的指针转换成指向一个派生类对象的指针。这在某些时候是比较危险的。

Read more »

什么是引用?

在理解引用概念前,先回顾一下变量名。 变量名实质就是一段连续内存空间的别名。那一段连续的内存空间只能取一个别名吗? 显然不是,引用的概念油然而生。在C++中,引用是一个已定义变量的别名。
其语法是:

1
2
3
4
5
6
7
类型 &引用名 = 目标变量名;
void test0()
{
int a = 1;
int &ref1 = a;
// int &ref2; // error, 定义引用的时候,必须初始化
}

Read more »

const修饰类型

const 可以用来修饰char/short/int/long类型的数据,使用const修饰的变量,他的值不能再被修改,是一个常量。
下面是一个简单的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using std::cout;
using std::endl;

int main(int argc, char *argv[]){

int a= 1;
const int b= 2;

a = 2;
b = 2; // error, const is not editable

return 0;
}

Read more »

什么是命名空间

名字冲突就是在同一个作用域中有两个或多个同名的实体,为了解决命名冲突 ,C++中引入了命名空间,所谓命名空间就是一个可以由用户自己定义的作用域,在不同的作用域中可以定义相同名字的变量,互不干扰,系统能够区分它们。
通俗的说,每个命名空间都是一个名字空间域,存放在命名空间域中的全局实体只在本空间域内有效。命名空间对全局实体加以域的限制,从而合理的解决命名冲突。

Read more »

FPGA multiboot

1. 关于multiboot的介绍

关于multiboot网上介绍的很多,直接看xapp1247上面的介绍就可以。

主要来说multiboot的主要优点有:

  1. 可以在Flash里面存储多个bit文件,根据用户的需求加载对应的bit文件,这样就可以在一个FPGA上在不同的时刻执行不同的功能。
  2. 在远程对FPGA的FLash进行更新的时候,通过使用multiboot的手段,保证FPGA更新后的程序能够正常工作,如果更新的过程当中出错,也能使FPGA完成最基本的工作。

在这里记录一下上面的第二个功能,也就是远程更新Flash的功能。

Read more »

前言

在前面有使用过cocotb进行一些简单的操作仿真操作,了解了cocotb当中的基础使用方法,并且能够使用cocotb来关联modelsim/questasim 进行Vivado当中IP的仿真。
cocotb可以使用python来提供测试数据源,这对DSP算法的FPGA实现实很友好的,之前在FPGA上如何想要实现DSP的算法的验证,可能需要先从matlab生成测试数据,然后再将数据导入到仿真平台当中,在cocotb当中,我们可以使用numpy和scipy能够很容易地生成这些测试数据,并将这些数据灌入到我们自己的实现的HDL模块当中。
这篇博客,记录一下使用cocotb来完成仿真fft ip的功能仿真。

Read more »

在之前学习了PYQT最基本的显示界面的方法,时间已经过去很久远了,因为不是做软件的,所以很多东西也就没有深入地去了解。
最近在制作一个原型,使用PYQT可以快速地显示界面,因此又稍微深入地了解了一下。

Read more »

前言

最近开始整理和无人机相关的东西,在网上找了一圈,发现了两个比较好的开源项目,这两个开源项目都能够实现的DJI OcuSync 2.0 Droneid协议的解调。
DroneSecurity
dji_droneid
在参考了上述两个仓库之后,给了我很多启发,通过阅读上面的代码,也让我对DJI的Droneid帧有了更加深刻的认识。

Read more »