自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 ASK调制

ASK调制以2ASK为例:当调制信号为2进制数字信号时,这种调制称为二进制数字调制在2ASK调制中,载波的幅度只有两种变化状态,即利用表示数字信息0或1的基带矩形脉冲去键控一个连续的载波,使载波时断时续的输出。有载波输出时表示发送1,无载波输出时表示发送0。载波指的是那个高频率的正弦信号若是4ASK则载波的输出结果就有4种情况,也就是从(0,1/3,2/3,1)乘上载波正弦信号。...

2021-01-07 21:49:38 3719 1

原创 QuartusⅡ Timing Analyzer 使用教程

QuartusⅡ Timing Analyzer 使用教程基本步骤1.将工程进行Synthesis 和 Fitter.2.启动Timing Analyzer,并创建Timing Netlist.3.增加时钟约束,必要时可以加入时钟抖动的约束。结束之后点击UPDATA Timing Netlist进行更新,如果界面出现黄色也说明需要更新一下4.必要时将不重要的路径设置为False Path.5.保存成sdc格式的约束文件6.再次编译工程并运行TimingQuest Timing

2021-01-06 16:53:45 2127 1

转载 波特率/符号速率/传码率/数据速率/比特率/吞吐率/带宽

波特率/符号速率/传码率/数据速率/比特率/吞吐率/带宽最近学习通信数字调制相关内容,涉及到码率的一些基础知识,下面对这些基础概念进行一下区分:参考文章:链接: link.信号在信道上的传输:如上图所述,虽然我们只想传输bit0~bit7,但由于通信机制的限制,我们必须在bit0之前加上start bit,在bit7之后加上stop bit,以及其他冗余部分。以上图来做参考,我们看看上述概念都是如何定义的。波特率(Baud or Baud rate): 单位bps(bit per second)

2020-12-31 11:17:59 8660

原创 FPGA产生正弦信号,仿真没问题,经DA输出,波形颠倒问题

FPGA产生正弦信号,仿真没问题,经DA输出,波形顶部颠倒问题使用 FPGA IP核产生的正弦信号,经过仿真,仿真结果正确,但是经过DA输出的时候就出现了问题,主要是顶部和底部的信号翻转了,具体情况如下所示:后来发现这是因为输出格式与DA的数据格式不匹配导致的,FPGA产生的信号输出是补码,而DA需要的是一个二进制源码的输入,所以需要对输入DA之前的数据进行修改,这里采用的方法是 高位取反,低位保持不变,然后再输入到DA,得到了下图所示的结果:结果正确...

2020-12-14 12:11:24 2280 8

原创 很详细的Quartus软件的SignalTap 使用教程

SignalTap 使用教程SignalTap 的原理SignalTap 与外部逻辑分析仪功能类似,主要用来分析数据的变化。但 SignalTap II 是利用 FPGA 内部的逻辑单元以及 RAM 资源实时地捕捉和显示实时信号,所以需要消耗一定的 FPGA 内部资源。与 Modelsim 仿真不同之处在于,SignalTap II 要与硬件结合,程序在 FPGA 中运行,实时显示真实的数据。可以选择要捕捉的内部信号 ,触发条件,捕捉的时间,捕捉多少数据样本等,帮助工程师查看实时数据进行 debug。

2020-12-09 17:51:38 17105 2

原创 使用IP核时遇到输出有效信号无法拉高情况下的解决方法

使用赛灵思的PLL IP核与quartus的 NCO IP核时,输出信号正常,但是对应的数据有效信号如PLL中的locked信号与NCO IP核中的out_valid信号没有拉高,没有拉高显然不对,我的解决方法是在测试文件中复位信号拉高时间尽可能的长一些,在一开始,复位信号为0,当我10ns之后拉高时,数据有效信号始终无法拉高,当我i100ns之后再将复位信号拉高时,数据有效信号就可以被拉高,结果正确。...

2020-12-09 09:53:07 599

原创 使用Quartus 18.0 的NCO ip核产生一个正弦信号,并用modelsim仿真(解决asj文件not define 问题)

使用Quartus 18.0 的NCO ip核产生一个正弦信号NCO ip核的参数设置.v文件的内容module nco_test(clk,reset_n,clken,phi_inc_i,fsin_o,out_valid); input clk; input reset_n; input clken; input [15:0] phi_inc_i; output [9:0] fsin_o; output out_valid; nco_ip u1( .cl

2020-12-08 20:42:13 5955 7

原创 超详细的Xilinx ISE的PLL锁相环IP核的使用教程与结果分析(ISE与Quartus PLL锁相环使用的区别,以及使用ISE倍频时遇到的问题)

Xilinx ISE的PLL锁相环IP核的使用(ISE与Quartus PLL锁相环使用的区别)ISE PLL IP核的使用IP核的设置代码ucf文件的书写代码分析ISE PLL IP核的使用这次使用的目的是产生25MHz,50MHz,75MHz,100MHz的时钟频率,输入时钟频率为50MHzIP核的设置PLL 所在的IP核位置为 FPGA Features and Deaign->Clocking->Clocking Wizard这个就是PLL IP核的位置关于IBGFG等Xi

2020-08-24 10:38:37 8779 4

原创 数字信号处理(FIR滤波器的设计与原理及基础知识)

FIR滤波器的设计与原理及基础知识有限长单位脉冲响应(FIR)滤波器的设计方法线性相位FIR滤波器的特点:幅度特性:窗函数设计法窗口函数对理想特性的影响:梳状滤波器有限长单位脉冲响应(FIR)滤波器的设计方法窗口设计法,频率采样法FIR滤波器的差分方程描述:可以看到他的差分方程和IIR的差分方程还是有很大的区别FIR数字滤波器的优点:很容易获得严格的线性相位,避免被处理的信号发生相位失真,这一特点在宽频带信号处理、阵列信号处理、数据传输等系统中非常重要线性相位FIR滤波器的特点:线性相位意味着

2020-08-16 19:48:10 14306 1

原创 数字信号处理(IIR滤波器的设计原理与滤波器基础知识,包括巴特沃夫滤波器,切比雪夫滤波器)

IIR滤波器的设计原理与滤波器基础知识无限长单位脉冲响应(IIR)滤波器的设计方法数字滤波器的设计步骤matlab计算双线性变换法的H(z),通过这个函数将模拟滤波器的H(s)转变为数字滤波器的H(z)常用模拟低通滤波器的特性:巴特沃兹滤波器Matlab设计模拟巴特沃兹滤波器切比雪夫滤波器无限长单位脉冲响应(IIR)滤波器的设计方法从差分方程可以看出来滤波器的输出y(n)不仅和输入x(n)有关系还与之前的输出有关系无论是差分方程还是系统函数假定说所有的bi都为0,那么这个系统就是一个所谓的FIR系

2020-08-16 19:34:22 6437

原创 数字信号处理(DTFT与DFT、DFS的详细讲解以及FFT算法)

DTFT与DFT、DFS的详细讲解以及FFT算法DTFT与DFT、DFS的区别在哪里呢?离散傅里叶级数DFS离散傅里叶变换DFT有限长序列的线性卷积和循环卷积利用DFT做连续信号的频谱分析对截短的信号做DFT,这一过程中会遇到的一些问题混叠泄漏栅栏效应DFT的分辨率傅里叶变换的快速算法FFT(按时间抽取,以2为基数的)DTFT与DFT、DFS的区别在哪里呢?DFT是对DTFT的一个离散化下面这个网址对DTFT与DFT有很好的解释https://www.zhihu.com/question/23137

2020-08-15 17:51:56 21848

原创 数字信号处理(DTFT、DFT、FFT、各种时域到频域的转换的相互关系)

DTFT、DFT、各种时域到频域的转换的相互关系时域信号与频域的信号的关系采样与奈奎斯特采样定理奈奎斯特采样定理与归一化角频率离散时间信号的傅里叶变换(DTFT)傅里叶变换、拉普拉斯变换、Z变换的联系是什么?离散时间系统时域信号与频域的信号的关系无论是连续的还是非连续的,周期信号用傅里叶级数来表示,非周期信号用傅里叶变换来表示时域信号是连续非周期的,则傅里叶变换后频域信号是连续非周期的时域信号是连续周期的,则傅里叶级数变换后频域信号是离散非周期的时域信号是离散的非周期时间信号,则DTFT之后,其频

2020-08-15 17:01:57 19666

原创 使用matlab和ISE 的IP核联合设计FIR滤波器

使用matlab和ISE 的IP核联合设计FIR滤波器使用MATLAB的fdatool工具箱生成抽头系数ISE中FIR IP核的使用仿真结果结果分析使用MATLAB的fdatool工具箱生成抽头系数FIR抽头系数可以直接调用matlab的filter design工具箱实现,在命令窗口直接输入fdatool即可调用,出来的界面如下所示:我们假设滤波器的输入信号是100kHz的信号(8位)与2MHz(8位)的信号混合之后的信号(9位)。想把2MHz的信号给滤除对于在生成滤波器参数设置的时候有以下几点

2020-08-15 12:09:20 3180 3

原创 使用matlab导出16进制的数据(第一次使用fopen,fprintf,dec2hex时需要避开的坑)

使用matlab导出16进制的数据(第一次使用fopen,fprintf,dec2hex时需要避开的坑)matlab进行数据类型的转换与数据的导出任务需求遇到问题matlab进行数据类型的转换与数据的导出任务需求产生一个正弦信号,并将其转换位变为8位的数据,并输出,需要导出的数据位16进制的.coe文件clc;clear;N=2^10;F=2^8;s_p = 0:1024;t=s_p/N;sin_data=sin(2*pi*t);%%定点化fix_sin_data=fix(sin_d

2020-08-03 20:26:23 6808 1

原创 傅里叶级数与变换的学习笔记与资料汇总(从宏观与公式推导两方面去理解傅里叶变换,适合小白的教程)

傅里叶级数与变换的学习笔记与资料汇总(从宏观与公式推导两方面去理解傅里叶变换,适合小白的教程)学习资料学习笔记傅里叶级数傅里叶变换学习资料学习数字信号与处理的相关知识,涉及到傅里叶变换的内容,这次就将傅里叶级数与变换的内容进行了重新的学习,在学习的过程中发现了两个很好的资源,分享给大家针对于傅里叶变换的宏观理解,在知乎上有一篇文章,形象生动的描述了什么是傅里叶变换,文章的名字为傅里叶变换之掐死教程,他的链接如下链接: [link] (https://zhuanlan.zhihu.com/p/1976

2020-07-31 14:33:56 555

转载 MATLAB时频工具箱函数说明(包含工具箱的下载,安装,使用)

MATLAB时频工具箱函数说明(包含工具箱的下载,安装,使用)信号产生函数噪声产生函数模糊函数Affine类双核线性时频处理函数Cohen类双核线性时频处理函数其他处理函数时频分析工具箱下载时频分析工具箱安装教程时频分析工具箱使用教程信号产生函数amexpo1s 单边指数幅值调制信号amexpo2s 双边指数幅值调制信号amgauss 高斯幅值调制信号amrect 矩形幅值调制信号amtriang 三角形幅值调制信号fmconst 定频调制信号fmhyp 双曲线频率调制信号f

2020-07-24 14:33:11 5338 1

原创 matlab与FPGA联合产生一个正弦信号发生器(DDS原理介绍)

matlab与FPGA联合产生一个正弦信号发生器(DDS原理介绍)正弦信号的产生流程正弦信号离散化matlab的程序Verilog程序.v文件tb文件DDS的原理介绍DDS的基本结构.v文件正弦信号的产生流程正弦信号离散化1.首先使用matlab产生一个正弦信号,并将连续的正弦信号离散化2.将离散化的正弦波信号一个整周期存储到RAM中2.1 将matlab中的正弦波数据导出进行定点化,RAM的规格设置为256*8.数据规格为1位符号位,7位小数位。负数放入到RAM中都是以补码的形式存放的负数的

2020-07-21 20:34:41 4990 1

原创 matlab实现两个正弦信号的混频并进行傅里叶变换(学会从频域去观察信号的特性)

matlab实现两个正弦信号的混频并进行傅里叶变换(学会从频域去观察信号的特性)理论知识matlab代码信号分析理论知识以前也学过傅里叶变换的知识,但是一直没有理解进行傅里叶变换之后有什么作用,这次通过对两路正弦信号的混频并进行频域的分析,让我对幅频特性有了一个深刻的认识。在数学中我们都学过积化和差公式,两个不同频率的信号相乘可以化简为两个频率的信号相加的而形式。matlab代码clc;clear;fs=50e6;f1=1e6;f2=5e6;n=0:2047;s_1=sin(2*pi*

2020-07-21 17:10:17 12735 4

原创 FPGA中浮点数与定点数的转化原理与转化方法(并使用乘法器进行两个定点数的相乘)

FPGA中浮点数与定点数的转化原理与转化方法(并使用乘法器进行两个定点数的相乘)基础知识什么是浮点数与定点数浮点数转换为定点数浮点数与定点数的相乘在quartusⅡ中使用乘法器完成两个定点数相乘IP核的使用.v文件与测试未见do文件仿真结果基础知识什么是浮点数与定点数浮点数:小数点是浮动的,不是在一个固定的位置上的定点数:小数点的位置是固定的在FPGA内部只能处理定点数无法处理浮点数当浮点数转换成定点数的时候要明确的知道小数有多少位,整数有多少位浮点数转换为定点数3位整数位宽,12位的小数位

2020-07-16 15:43:45 5548 1

原创 使用RAM资源生成一个读写不同步的FIFO(包含源程序和测试程序)

使用RAM资源生成一个读写不同步的FIFO(包含源程序和测试程序)前期基础知识的了解如何区分写满FIFO的逻辑框图双端口RAM的生成RAM IP核的例化写控制模块与读控制模块的设计写控制模块读控制模块顶层文件的书写测试文件的书写前期基础知识的了解1.当采集数据的时候由慢时钟域到快时钟域,肯定需要一个buffer做缓冲,这样才才能完成时钟域的转换,一般这种情况下都选择FIFO来做缓冲。2.当读写FIFO的时钟不同那么称为异步FIFO。3.FIFO就是一个“环形存储器”读操作会把读指针指向下一个读数据,

2020-07-14 15:56:27 1219

原创 学习调用ISE的FIFO IP核(包含ISE IP核文件的 do文件仿真)

学习调用ISE的FIFO IP核FIFO是什么使用ISE调用与设置FIFO的IP核.v文件的书写与例化FIFO是什么fifo: First Input First Output的缩写,先入先出队列,这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。fifo说直白了其实就是一个RAM,只是读写数据的顺序有了规定。一般用于不同时钟域之间的数据传输,当然这种情况下就是异步RAM同步RAM指的是输入和输出使用的是同一个时钟或者同频时钟使用ISE调用与设置FIFO的IP核step

2020-07-10 17:05:26 5496

原创 使用quartusⅡ调用ROM或RAM IP核

使用quartusⅡ调用ROM或RAM IP核ROM IP核的使用IP核的调用过程调用IP核ROM初始化仿真ROM IP核的使用常常用来实现从快速时钟域到慢速时钟域的处理或慢速时钟域到快速时钟域的处理。对于一些数据可以先不发出,先把它存储起来,等到了一定的数目再发出。ROM只能读出数据,不能写入数据。在进行ip核名命的时候一定要注意规范 比如我们数据的存储宽度为8位,存储深度为256 则命名的名字为rom_8_256,rom是要进行初始化的,常常使用hex文件或mif文件对ROM进行初始化IP核的调用

2020-07-08 16:52:01 16614 2

原创 超详细的quartusⅡ调用PLL IP核过程与原理讲解,实现倍频

超详细的quartusⅡ调用PLL IP核过程与原理讲解,实现倍频任务要求quartusⅡ 调用pll ip核的过程ip核的选择ip核参数的设置模式的选择后续ip核参数设置编写.v文件、测试文件与do仿真文件编写.v文件编写测试文件编写do文件仿真结果任务要求输入为50MHz的时钟信号,要求使用pll 产生一个150MHz核80MHz的输出信号,并包含90度与80度的相移quartusⅡ 调用pll ip核的过程ip核的选择首先选择ip核,在右边的 IP-Catalog目录里输入PLL,选择ALT

2020-06-28 22:59:08 10138 3

原创 使用verilog编写一个mealy状态机,并实现对所编写程序的do文件仿真(对上一篇文章中的do文件相关内容进行补充)

使用verilog编写一个包含6个状态的状态机,使用do文件进行仿真(对上一篇文章中的do文件相关内容进行补充)本状态机的状态示意图状态机的程序代码测试文件代码使用do文件仿真本状态机的状态示意图1/0的意思是指输入的值为1,并且在该状态下输出0状态机的程序代码module mealy( input wire clk,//如果没有说就是定义了一个一位的 input wire rst_n, input wire A, output reg K);parameter s1 =

2020-06-27 17:43:14 1051

原创 使用modelsim do文件进行仿真的基本操作与modelsim do文件的基本语句以及常见错误

使用modelsim do文件进行仿真的基本操作与modelsim do文件的基本语句,以及常见错误modelsim do文件的写法写do文件时一些需要注意的地方添加波形时的注意事项do文件的语法常见错误do文件操作的流程modelsim do文件的写法#这个do文件一边都放在仿真激励文件的目录下#此处是注释#退出现有工程quit -sim#清除命令行显示信息 .main clear#在根目录下建立了一个lib的文件夹,这个根目录其实就是指和我们当前文件在同一个文件夹下vlib ./

2020-06-26 16:59:12 2691 1

原创 在使用quartusⅡ 的ip时,EDA Netlist writer编译不通过,显示无法生成输出文件或IP核的license 出错

在使用quartusⅡ 的ip时,EDA Netlist writer编译不通过,显示无法生成输出文件或IP核的license 出错方法1方法2方法1本人在调用quartusⅡ 的IP核后进行仿真 在编译过程中总是出现204009或204012的错误代码提示,这是因为license中没有对应的IP核的破解;最后解决的方法是在license中增加破解IP核的内容,这样编译就能通过了方法2将仿真工具由modelsim修改为none;这样编译也会通过,但是问题在于采用这种方法则无法调用modelsim进行

2020-06-22 17:04:02 4690 3

原创 Modelsim仿真quartusⅡ IP核 以及在Modelsim中添加仿真库

Modelsim仿真quartusⅡ IP核 以及在Modelsim中添加仿真库,在操作过程中遇到的问题Modelsim中编译IP核仿真库主要流程遇到问题及解决方法无法读取或生成 .ini文件Modelsim中编译IP核仿真库主要流程遇到问题及解决方法无法读取或生成 .ini文件解决方法为:从win64文件夹下将那个.ini文件复制到alter_lib文件中。切记要将这个复制过来的文件只读属性去掉。这时再编译就可以将编译的结果写入 .ini文件中...

2020-06-18 23:06:35 4648 4

原创 使用ISE DDS IP核产生正弦信号

使用ISE DDS IP核产生正弦信号使用ISE DDS IP核产生正弦信号配置DDS IP核生成verilog代码新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入使用ISE DDS IP核产生正弦信号任务要求为 输入时

2020-06-16 20:38:20 6863 1

原创 运算符重载+,-,++,--

运算符重载的原因:虽然类也是一种数据类型,但是用它定义了对象之后,C++编译器默认是不知道该对他如何进行计算的Eg:c1(1,2);c2(3,4) c1,c2是同一种类的两个对象,但是C++编译器并不会去计算c1+c2,他并不知道该如何去进行计算。所以就需要利用运算符重载机制,让自定义数据类型,有机会进行运算符操作。类的类型 operator+(参数1,参数2)参数1和参数2一般也都是类的类型...

2020-02-19 14:18:33 707

原创 stack(静态成员变量与静态成员函数),const

把一个类的成员被说明为static类型时,则所有对象共享这个static成员。即这个变量是共用的,所有的对象的该变量指的是同一个数据。定义方式为 Static 数据类型 变量名在整个类的外部还要写上初始化 即: 数据类型 类名::静态对象名 = 初始化的值静态成员函数 数据类型 static 函数名()在静态数据成员函数中,只能使用静态成员变量。const 修饰谁与 const ...

2020-02-18 13:21:53 198

原创 new与delete语法

new和delete是两个C++的语法,相当于C中的malloc与free,不同的是new 和delete是两个操作符,而malloc 与 free 是两个函数malloc的基本语法类似为:int *p = (int *)malloc(sizeof(int))该语句对应的C++语句为 int *p = new int(10)new可以分配基础类型变量,还可以分配数组变量,还可以分配类new...

2020-02-17 12:40:28 199

原创 构造函数初始化列表(与注意事项)

在B类中,组合了一个A类的对象(A类设计了有参构造函数),根据构造函数的调用规则,写了 就必须要用,但是B并没有机会初始化A,因此编译时系统会出错。因此需要使用新的语法规则:Constructor:: Constructor:m1(v1),m2(v1,v2),m3(v3),举例:#include<iostream>class A{public: A(int m_a) /...

2020-02-16 16:34:29 339

原创 深拷贝和浅拷贝

C++中,NULL被认为int类型的0浅拷贝是指,在对象给对象赋值时,只是把地址进行了赋值 Eg: Name obj2 =obj1 就是把obj1的地址赋给了obj2,在最后析构时会对同一个地址析构两次,从而出错。所以要定义深拷贝构造函数,自己定义的拷贝函数就是深拷贝函数。默认的等号操作符也是浅拷贝,除非重载这个等号操作符。...

2020-02-15 10:17:23 78

原创 C++构造函数

1.构造函数的3种类型 无参Test(); 有参 Test(int a,int b);复制构造函数 Test(const Test2& obj)#include<iostream>class Test2{public: Test2() //无参构造函数 { m_a = 0; m_b = 0; std::cout <<"这是无参构造函数" ...

2020-02-14 12:23:43 118

空空如也

空空如也

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

TA关注的人

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