自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个人要像一支队伍

大海可以容纳百川,而队长则收藏各种旁门左道

  • 博客(194)
  • 资源 (1)
  • 论坛 (3)
  • 收藏
  • 关注

原创 线性代数实用总结

一、前言。线性代数主要讲述了两个东西。1、点和向量的描述。2、点和向量在不同的基上的表示。二、行列式。行列式最实用的还是求解方程组。1、行列式的计算。2、用行列式解方程组(克拉默法则)。三、矩阵。在数字图像处理中,图像能直观地反映为矩阵,以RGB色彩空间来说,左图可分成三个矩阵,分别对应红、绿、蓝中的颜色值。...

2021-08-04 22:24:37 16

原创 设计模式——状态模式

使用QT新建Widget工程。widget.h如下:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QDebug>class Context;class State {public: virtual void doAction(Context* context)=0;public: virtual void toString()=0;public: virtual ~State()

2021-07-28 22:45:24 36

原创 设计模式——单例模式

使用QT新建控制台工程。main.cpp如下:#include <QCoreApplication>#include <QDebug>class Singleton { private: Singleton(); private: static Singleton* m_singleton; public: static Singleton* getInstance();};Singleton* Singleton::m_singleto

2021-07-27 23:20:41 18

原创 设计模式——DAO模式

使用QT,新建QWidget工程。widget.h如下:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QList>#include <QDebug>namespace Ui {class Widget;}class Student {private: QString m_name;public: QString getName(); voi

2021-07-22 23:13:37 40 1

原创 设计模式——MVC模式

使用QT,新建Qml(qt quick)工程。main.qml如下:import QtQuick 2.12import QtQuick.Window 2.12import QtQuick.Controls 2.5Window { visible: true width: 300 height: 300 title: qsTr("Hello World") ListModel { // Model id : listModel

2021-07-20 22:47:28 24 2

原创 设计模式——策略模式

使用QT,新建QWidget工程。widget.h如下:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QDebug>namespace Ui {class Widget;}class TaxStrategy {public: virtual double Calculate(QVariantMap var) = 0; virtual ~TaxStrategy();

2021-07-20 22:33:54 21

原创 设计模式——抽象工厂

使用QT,新建QWidget工程。widget.h如下:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QDebug>namespace Ui {class Widget;}class DbConnectInterface { // 抽象类};class DbCommandInterface {};class DbDataReaderInterface {};cla

2021-07-19 23:07:13 8

原创 设计模式——工厂方法

使用QT,新建QWidget工程。widget.h如下:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QDebug>namespace Ui {class Widget;}class SplitterInterface { // 抽象类public: virtual void split()=0; virtual ~SplitterInterface();};

2021-07-14 23:44:08 40 2

原创 设计模式——观察者模式

新建QWidget工程。widget.h如下:#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QDebug>namespace Ui {class Widget;}class ProgressInterface {public: virtual void DoProgress(int value)=0; virtual ~ProgressInterface();}

2021-07-14 00:16:43 26

原创 设计模式——模板方法

未使用设计模式时,代码如下:#include <QCoreApplication>//程序库开发人员class Library{public: void Step1(){}};//应用程序开发人员class Application{public: void Step2(){}};int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Library lib

2021-07-08 23:03:03 22

原创 色彩理论基础

一、色彩理论。1.1 色彩原理。1.1.1 光与色。当光线进入三棱镜后,光线会被分离为红、橙、黄、绿、青、蓝、紫,所以自然光是七色光的混合,这种现象称为光的分解或者光谱。红色的波长最长,紫色的波长最短。1.2 色彩三要素。1.2.1 色相。色相是色彩的相貌,以波长划分,波长相同则色相相同。如果把光谱的6种色带首尾相连,可以得到色相环。在6种基本色相中插入中间色,可以得到十二色相环。再进一步插入中间色,可以得到二十四色相环。1.2.2 饱和度。饱和度是指色彩的纯

2021-06-30 23:28:18 41

原创 数字信号处理——Chirp Z变换

一、前言。Chirp Z变换也叫czt变换或者线性调频变换。二、CZT原理。三、CZT的算法步骤:四、CZT的特点(与FFT比较):五、CZT的Matlab实现。function [] = chirpz() clear;close all;clc;x = [1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0];A0 = 1; % 起始取样点的半径,A0<=1phi0 = 0; % 起始取样点Z0的相角psi0 =

2021-06-15 22:55:57 212

原创 数字信号处理——多速率信号处理

一、前言。二、抽取滤波器。三、内插滤波器。四、多相分解。五、两通道滤波器组。

2021-06-08 22:19:59 112

原创 数字信号处理——数字滤波器实现

一、IIR滤波器基本结构。1.1 直接型。由IIR滤波器的系统函数,直接得到结构。将系统函数的分子、分母分开实现,再级联起来,可以得到直接I型。交换系统函数的分子、分母的位置,再共用中间的延时单元,可以得到直接II型。1.2 级联型。1.3 并联型。二、FIR滤波器基本结构。2.1 直接型。2.2 级联型。三、有效字长效应。3.1 输入量化误差。3.2 系数量化误差。3.3 乘积运算量

2021-06-08 22:12:57 103

原创 数字信号处理——FIR滤波器设计

一、线性相位。二、窗函数设计法。三、频率抽样法。四、优化设计。

2021-06-03 22:52:12 99

原创 数字信号处理——IIR滤波器设计

IIR滤波器是利用模拟滤波器经过变换得到数字滤波器。所以要先介绍模拟滤波器的设计。

2021-05-31 23:12:54 126

原创 数字信号处理——快速傅里叶变换

一、前言。快速傅里叶变换不是一种新的变换,而是离散傅里叶变换的快速算法,而且这个快速算法有很多种,都统称为快速傅里叶变换FFT。如果直接用公式计算DFT,其时间复杂度为O(n^n),这是难以应用在工程当中的。而FFT的时间复杂度为O(n*log(n)),随着序列的点数增加,其运算效率大大提高。其中最常用的是基2时域抽取的FFT,下面来详细说明。二、旋转因子。三、蝶形图。...

2021-05-13 23:09:23 118

原创 数字信号处理——离散傅里叶变换

一、四种信号的傅里叶分析。连续周期信号 连续时间傅里叶级数 连续非周期信号 连续时间傅里叶变换 离散周期信号 离散傅里叶级数 离散非周期信号 离散傅里叶变换 ...

2021-05-10 22:32:52 253

原创 数字信号处理——离散信号与系统分析

一、离散信号的产生。数字信号处理,一般是建立在下图的架构中,由FPGA/DSP为核心,以ADC和DAC为桥梁,来处理外部的模拟信号。其中FPGA/DSP处理的都是数字信号,而数字信号属于离散信号。数字信号:时间、幅度都为离散的。离散信号:时间离散,幅度可以是离散、也可以是连续的。二、基本的离散信号。2.1、单位脉冲序列。2.2、单位阶跃序列。2.3、矩形序列。2.4、实指数序列。2.5、虚指数序列。2.6、正弦序列。...

2021-05-06 22:51:18 182

原创 QT编译liblzma

liblzma库是xz utils的子集,这里先下载xz utils源码。新建xz_lib文件夹。解压xz utils源码,取出extra,lib,src三个文件夹,并放入xz_lib文件夹中。再将config.h.in重命名为config.h,放入xz_lib文件夹中,并修改成下面这样:#ifndef CONFIG_H#define CONFIG_H/* Prefix for symbols exported by tuklib_*.c files */#define TUKL

2021-04-15 23:35:49 68

原创 QT编译libjpeg

先下载libjpeg源码。将源码解压,新建jpeglib文件夹,将源码中所有.c和.h文件复制到jpeglib文件夹中。再将jconfig.txt改名为jconfig.h,再复制到jpeglib文件夹中。在jpeglib文件夹中,删除以下文件:cjpeg.cckconfig.cdjpeg.cexample.cjcapimin.cjdapimin.cjmemansi.cjmemdos.cjmemmac.cjmemmgr.cjmemname.cjmemnobs.cjmem

2021-04-13 22:06:41 79

原创 QT编译Xpdf

先参考本博客的《QT编译bzip2和zlib》、《QT编译libpng》、《QT编译FreeType和Little CMS》完成这些依赖库的编译。下载xpdf源码。复制以下文件到xpdflib文件夹中,其中aconf.h.in修改文件名为aconf.h。再将aconf.h修改为下面所示(我这里没有使用Little CMS,如有需要,请自行添加源文件并将以下文件中相应的条件编译改为#define HAVE_LCMS 1)。/* * aconf.h * * This file is mo

2021-04-08 23:32:27 116

原创 Qml FileDialog发布

Qml的FileDialog有两种,其中labs的比较好用,如下图所示。但是在使用windeployqt发布应用时,发现界面不显示了。需要将platform文件夹,复制到应用的目录中,也是对应Qt/labs。如下图所示,放到Qt/labs文件夹中,如果没有对应的路径,则需要自己新建文件夹。最后在platform文件夹中,可以删掉其中一个dll,看你是debug发布(文件名最后面带d),还是release发布(文件名最后面不带d)。...

2021-04-08 22:33:10 49

原创 QT编译FreeType和Little CMS

FreeType是个开源字体引擎,可以移植到arm中,也可以在桌面软件中使用。下载FreeType。这里使用FreeType 2.10.4版本。使用QT Creator新建工程,工程名为FreeType。解压后,只取出src和include两个文件夹,并放在freetype目录中。删除src文件夹中tools和gxvalid。将src和include中的.c和.h文件都添加到工程中。在.pro中添加下面这行。INCLUDEPATH += \freetype/inclu

2021-04-06 23:15:37 103

原创 QT编译libpng

libpng依赖zlib,先参考本博客的《QT编译bzip2和zlib》,完成zlib的编译。接下来,下载libpng源码。点击下图所示按钮即可。解压后,新建lpng文件夹,复制目录下的以下文件到lpng中,均为最上顶目录的文件。另外还需要scripts目录下的pnglibconf.h.prebuilt,将其重命名为pnglibconf.h。再修改pnglibconf.h,添加#include "../zlib/zlib.h"再将zlib的源码复制到工程目录中,顶层文

2021-04-01 22:57:20 100

原创 QT编译bzip2和zlib

bzip2没有什么依赖,源码编译比较简单。先下载bzip2源码。新建src文件夹,把以下文件放在src文件夹中。因为bzip2.c中有main()函数,这里用条件编译把它注释掉。在bzip2.c中增加#if 0和#endif,如下图所示。创建工程,main.c中改为下图所示,好了,可以使用bzip2的api了。接下来,可以使用bzip2的源码来编译成dll。...

2021-03-09 22:13:14 106

原创 PS2接口

一、简介。PS2是一种非常古老的接口,随着USB接口的普及,目前已经有很多电脑不支持PS2接口了。PS2接口主要应用在鼠标、键盘。PS2缺点是体积大,不支持热插拔;优点是全键无冲突。(也有部分USB键盘可以做到全键无冲突)PS2母座有双层的,一个键盘、一个鼠标;也有单层的只支持一个键盘或一个鼠标;也有单层的同时支持一个键盘和一个鼠标。所以有的电脑只有一个单层PS2座的话,那么你得用一分二的线,再接到键盘、鼠标。二、PS2协议。PS2协议跟串口协议非常像,也有是起始位、数据位、校验

2021-02-21 23:04:19 2711

原创 基于FPGA的等精度频率计

一、简介。测频常常使用等精度测频法,它可以在整个测量范围内保持相同的精度。二、等精度测频的结构。三、仿真结果。四、其它问题。

2021-01-12 22:58:30 522 1

原创 基于FPGA的异步FIFO设计

异步FIFO的结构如下图所示:具体的逻辑如下图所示:空满标志逻辑如下图所示:fifo_async.v代码如下:`timescale 1ns / 1psmodule fifo_async #(parameter ADDR_WIDTH=5,BIT_WIDTH=8) // DEPTH = 32,ADDR_WIDTH=ADDR_WIDTH( input iResetN ,input iWriteClk,iWriteEnable // write part

2021-01-08 23:15:40 303

原创 基于FPGA的MSK调制

MSK调制的结构如下图所示。1、基带信号经过差分编码,然后为1bit的信号。2、串并转换后为2bit的信号,分为高位和低位。高位和低位再分别映射为+1和-1。3、再把低位的+1、-1延时基带信号的一个周期。4、最后高位和低位的+1、-1(wSignedHigh、wSignedLow)分别与子载波(wSubCarrierI、wSubCarrierQ)相乘。5、子载波相乘后(wSubCosI和wSubSinQ)再与主载波相乘,最终相加,可以得到MSK已调信号。

2021-01-06 23:28:47 654

原创 基于FPGA的QAM调制

QAM调制的结构如下图所示。1、先将基带信号串并转换为4位的并行信号。2、再将4位的并行信号通过星座映射为高两位和低两位,其取值范围为+1、-1、+3、-3。3、再将星座映射后的信号与载波相乘,这里用有符号乘法器。4、最终相加,得到QAM已调信号。仿真结果如下图所示:其它问题。1、一些教科书中载波那里会写成移相90度,其实就是sin载波移相90度为cos载波,可以不用管移相这个步骤,直接合成sin和cos载波即可。2、QAM为既调幅又调相,从仿真图中可以看出,幅值有3

2021-01-05 09:22:45 709

原创 基于FPGA的DPSK/QPSK调制

一、DPSK调制。DPSK调制的结构图如下图所示:DPSK就是差分编码+2PSK,如果不加入差分编码,则会出现倒pi现象,那么调制后也无法还原出基带信号。差分编码只对基带信号进行编码,与调制无关。仿真结果如下图所示:二、QPSK调制。...

2020-12-21 23:52:07 1314

原创 基于FPGA的ASK/FSK调制

一、ASK调制。2ASK也就是OOK,在433MHz的无线通信模块中用的多,速率不高,其结构如下图所示:仿真结果如下图所示:二、FSK调制。2FSK在433MHz的无线通信模块中用的多,速率不高,其结构如下图所示:仿真结果如下图所示:...

2020-12-17 23:10:49 612

原创 基于FPGA的Chirp调制

Chirp信号在雷达、通信中有广泛的应用,这里介绍它的调制方法。Chirp调制的结构如下图所示:其中锯齿波的相位累加器需要将其右移(也就是缩小),再与载波的相位累加器进行相加。仿真结果如下图所示:...

2020-12-16 23:46:15 303

原创 基于FPGA的AM/FM调制

AM调制的结构如下图所示:由正弦表和相位累加器,可以构成DDS。那么两个DDS,一个用于产生调制信号,一个用于产生载波信号。由于正弦表一般为无符号数,所以要转为有符号数,再送进乘法器,最终可以得到AM已调信号。(乘法器需要使用IP,为全并行乘法器)正弦表可以自己写脚本生成,也可以使用mif maker生成,再存在ROM中。仿真结果如下图所示:...

2020-12-14 23:13:44 668

原创 Zeta电路的参数计算及仿真

Zeta电路的参数计算较为简单,可以用matlab来完成,代码如下。clear;clc;Vin = 12; %输入电压单位VVout = 18; %输出电压单位VFs = 5000000; %开关频率单位HzIout = 1; %输出电流单位ADeltaIin = 0.2; %输入电流纹波单位ADeltaIout = 0.2; %输出电流纹波单位ADeltaVc = 0.01; %输出电压纹波单位VTs = 1/Fs; %开关周期duty = Vout / (Vout+Vin);

2020-12-09 22:20:43 402

原创 Sepic电路的参数计算及仿真

Sepic电路的参数计算较为简单,可以用matlab来完成,代码如下。clear;clc;Vin = 12; %输入电压单位VVout = 6; %输出电压单位VFs = 5000000; %开关频率单位HzIout = 1; %输出电流单位ADeltaIin = 0.2; %输入电流纹波单位ADeltaIout = 0.2; %输出电流纹波单位ADeltaVc = 0.01; %输出电压纹波单位VTs = 1/Fs; %开关周期duty = Vout / (Vout+Vin);

2020-12-04 22:50:14 885

原创 Cuk电路的参数计算及仿真

Cuk电路的参数计算较为简单,可以用matlab来完成,代码如下。clear;clc;Vin = 12; %输入电压单位VVout = 18; %输出电压单位VFs = 5000000; %开关频率单位HzIout = 1; %输出电流单位ADeltaIin = 0.2; %输入电流纹波单位ADeltaIout = 0.2; %输出电流纹波单位ADeltaVc = 0.01; %输出电压纹波单位VTs = 1/Fs; %开关周期duty = Vout / (Vout+Vin);

2020-12-02 23:01:23 1100

原创 Buck-Boost电路的参数计算及仿真

Buck-Boost电路的参数计算较为简单,可以用matlab来完成,代码如下。clear;clc;Vin = 12; %输入电压单位VVout = 6; %输出电压单位VFs = 5000000; %开关频率单位HzIout = 1; %输出电流单位ADeltaIL = 0.2; %电流纹波单位ADeltaVc = 0.01; %电压纹波单位VTs = 1/Fs; %开关周期duty = Vout / (Vout+Vin);VL = Vin;L = (VL * duty *

2020-11-24 22:20:34 2356

原创 Boost电路的参数计算及仿真

Boost电路的参数计算较为简单,可以用matlab来完成,代码如下。clear;clc;Vin = 5; %输入电压单位VVout = 10; %输出电压单位VFs = 5000000; %开关频率单位HzIout = 1; %输出电流单位ADeltaIL = 0.2; %电流纹波单位ADeltaVc = 0.01; %电压纹波单位VTs = 1/Fs; %开关周期duty = (Vout - Vin)/Vout;VL = Vin;L = (VL * duty * Ts) /

2020-11-23 23:46:23 2416

现场总线CAN原理与应用技术(饶运涛 邹继军 郑勇芸)

CAN总线技术教程的电子书,有兴趣的,可以看一下哦。

2014-05-28

队长-Leader的留言板

发表于 2020-01-02 最后回复 2020-02-25

不能删除评论

发表于 2018-01-28 最后回复 2018-01-28

为什么我的博客被封了

发表于 2017-09-15 最后回复 2017-09-16

空空如也

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

TA关注的人 TA的粉丝

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