- 博客(43)
- 资源 (1)
- 收藏
- 关注
原创 vivado在implementation时出现错误[Place 30-494] The design is empty的一个可能原因和解决方法
经过我的排查,这一报错在我的工程中出现的原因是我的顶层文件中有多个内部输出没有分配输出端口,所以在设计实现时vivado才会报错告诉我需要有输出端口,用上述做法固然能解决报错,但设计实现时却会因为内部输出没有输出端口而被优化掉,这解释了为什么设计实现后出现结果异常。这样做的确可以让设计实现的过程顺利进行,但是会发现在summary中,设计实现的资源量与分析综合的资源量有较大差距,在设计实现的资源量表格中几乎无资源占用(我的工程中甚至只占用了一个IO口),并且时序报告中显示NA,这显然是不正确的。
2024-06-17 20:56:55
1449
原创 线性分组码的奇偶校验矩阵均匀性分析
在这篇文章中,并不是要讨论信道编码的性能,而是介绍线性分组码中一个非常有趣的性质,即在一维奇偶校验码中,生成码字的校验位总是趋于均匀的,这样的均匀位使得奇偶矩阵在一些信息的生成矩阵中获得了广泛的应用。上例是用80000个三位信息数据进行奇偶校验的matlab代码,有趣的是无论导入数据test.mat中的信息序列是否均匀,通过奇偶校验得到的校验位n中的0、1分布都是近似均匀的,这一点可以通过执行命令。结果不完全均匀是由于码字长度不够长造成的。
2023-11-26 13:45:35
408
原创 解决win11系统下vivado使用RTL分析闪退、小蓝熊easy anti chat无法启动问题
最近在接触使用vivado时被这个软件庞大的包体和繁多的报错搞得焦头烂额,经过多次尝试,我解决了两个困扰我许久的关乎软件正常使用的问题,将解决办法分享给大家。
2023-07-10 19:16:52
4478
4
原创 通信原理总结(一)傅里叶基础
傅氏变换在信通领域有着广泛的应用,学习通信原理的基础就是一些常用的傅氏变换与性质,下面我将简单总结这方面的知识。
2022-10-07 23:17:41
4069
2
原创 C++初始化临时量的概念
初始化常量引用时,不再硬性要求引用的类型必须与所引用对象一致,例如:double a=3.14;const int &x=a;//这样初始化不会报错,而且引用x也不是指向a因此会有一个临时量的概念,很好的解释了这一初始化特例,在常量引用初始化时,实际上过程为:double a=3.14;const int temp=a; //此时temp为整型,得到的对象temp值为3是个常量const int &x=temp; //常量引用指向temp这一临时量引用x指向了一个未命名的
2022-01-07 23:11:00
379
原创 C++指针与引用的区别
1.指针指向内存中某个对象,引用绑定到内存中某个对象2.指针本身就是一个对象,而引用只是绑定对象的一个“别名”3.指针无需在定义时赋初值,引用必须在定义时赋初值int a=100;int *p; //定义指针,可以不立即赋初值*p=0; //给指针赋零,指针仍有效,表示一个空指针*p=&a; //给指针赋a的地址,指针指向aint &s=a; //定义引用,必须在定义时赋初值...
2022-01-07 21:16:41
546
原创 微机原理常用汇编指令
基本知识:8086/8088各寄存器的使用1.数据寄存器:AX,BX,CX,DX,都可以拆分为_L与_H使用,即将16位的通用寄存器分为低八位和高八位使用(如AL、AH)2.地址指针寄存器:SP:堆栈指针寄存器,内容为栈顶偏移地址BP:基址指针寄存器,常用于访问内存时存放内存单元偏移地址3.变址寄存器:SI、DI,常用于指令间的变址寻址或间接寻址4.段寄存器:CS:16位代码段,8086/8088复位后只有CS值不为0,为FFFFHDS:16位数据段ES:16位附加段SS:16位堆栈段
2022-01-04 19:22:11
15371
3
原创 数字信号处理计算线性卷积的两种方法
在数字信号处理问题中常见各类线性卷积计算,对于序列较短的线性卷积用一般方法即可计算,这一点在上一篇文章中已经提到了。而对于序列长度长,且取值小于序列长的例子,我们有如下两种快捷的计算方法。法一、重叠相加法法二、重叠保留法...
2021-11-15 20:05:07
3018
原创 区分线性卷积、周期卷积、循环卷积及其计算方法
对于数字信号处理初学者来说,线性卷积、周期卷积、循环卷积的各种问法总是令人头疼,下文我将通过简单的例子来区分这三种卷积与对应的计算方法。一、线性卷积这是最常见的卷积方式,若被卷积序列x[n]与h[n]的序列长度分别为M和N,则卷积得到的y[n]序列长为L=M+N-1,计算线性卷积的简单方法为进位保留法。二、循环卷积循环卷积与周期卷积最大的区别与联系在于循环卷积是取两周期序列主值进行区别于线性卷积的卷积后的结果,而周期卷积则是以此结果为主值进行周期延拓。循环卷积与周期卷积使用的卷积方法相较于线性卷积
2021-11-14 20:59:25
25396
6
原创 verilog中区分wire、reg、always、assign
在初学verilog语言时,常常对各种模块中的语句块、变量声明的使用条件不清楚,其中最典型的就是对reg型和wire型数据类型的区分,以及对always语句和assign语句使用条件的理解,在这篇文章中我将分享我的一些学习总结。区分wire与reg,从二者的归属讲起wire是verilog的默认数据类型,即未指定类型的变量都是wire型。wire是net型数据变量,net型数据相当于硬件电路中的各种物理连接(如导线),特点是输出值紧跟输入值变化而变化。reg型是variable型数据变量,variab
2021-09-27 08:19:03
9045
2
原创 c++简述构造函数与析构函数
在学习c++中,与C语言学习最大的分歧从类的定义开始,c++引入的类的概念,使其相较于C语言更具模块性,编写的程序封装性、继承性都相对更好。在类的学习中,有一大难点在于“构造函数”与“析构函数”,在此,我将分享一些自己关于二者的学习体会。...
2021-08-27 16:34:44
335
原创 c++递归实现汉诺塔问题
#include <iostream>#include <cstdlib>using namespace std;void hanoi(int n,char x,char y,char z);int main(){ int n; cin >> n; hanoi(n, 'A', 'B', 'C'); return 0;}void hanoi(int n, char x, char y, char z){ if (n > 0) {
2021-08-24 17:10:23
209
原创 C++浅谈二维数组与指针
在C++中数组与指针有着紧密的联系,用指针对数组进行操作使得程序更加简洁高效,但是二者的衔接中往往会出现许多诸如格式,空间大小等方面不对应的问题,下面我将通过几个实例来简述二维数组与指针的关系。首先来看最简单的将指针指向一维数组。char a[10]; //先定义一个一维字符型数组achar *p[10]; //这种定义得到的是指针数组,即整个数组中全部存放字符型指针char (*p)[10]; //这样定义得到指向数组的指针*p=a;上例体现了一个很重要的注意点:运算符的优先级。指针运
2021-08-22 19:49:30
515
原创 C++“没有与参数列表匹配的重载函数“strcpy_s”实例”报错解决方法
在使用c++继承自C语言的“string.h”库(在c++中写为cstring库)时,我们常会用到strcpy函数为字符数组赋值,这种赋值方法是几种字符串赋值方法中最简便快捷的,但是当我们在vs2019中使用此函数时却被告知函数不安全,建议使用"strcpy_s"的格式,而当我们使用此格式编程后,便会出现标题所示的错误。这项报错的意思是我们使用此函数的格式不正确,在VS2019中可以将鼠标停留在写下的strcpy_s函数上,软件将会给出它希望得到的格式。如上图,软件希望我们使用strcpy_s时按
2021-08-20 09:34:34
19219
3
原创 c++string库常见处理指令的使用方式
string库是c++的一个非常重要的标准库,相较于C语言中的字符串,使用string定义的是可变字符串,能够避免很多因为字符串空间固定、字符串不易改变带来的麻烦。下面将介绍几种基础的string库操作指令。1、初始化string对象的几种方式:对string对象的初始化大致可分为直接初始化和拷贝初始化两种。拷贝初始化通过“=”将需要赋的值拷贝给对象,直接初始化使用“()”,将括号内的字面值或对象值直接赋给对象。string s1="abandon"; //拷贝初始化string s2(s1)
2021-07-31 19:17:22
415
原创 c++auto与decltype的区别
auto和decltype是两种类型推断方式,二者区别主要在三个方面。第一,auto类型说明符用编译器计算变量的初始值来推断类型,而decltype虽然也通过编译器分析得到他的类型,但不计算表达式的值,表达式内的变量并不因decltype操作而发生改变。第二,编译器判断的auto类型有时是不符合我们预期的,编译器将适当改变结果类型使其更符合初始化规则,其中最典型的一条就是auto会忽略顶层const而保留底层const(对于顶层const和底层const,最简单的记法是顶层const表示定义变量本身是个
2021-07-28 10:34:43
450
原创 c++浅谈decltype类型指示符
decltype类型指示符相当于auto指示符的改进版,使用此类型指示符能让被定义变量的类型指定为程序中已有,而我们不好直接写出的(比如某个函数的输出结果有多种数据类型的可能,而下面我们要定义的变量类型需与函数返回值类型一致),便可以使用decltype类型指示符。例如:decltype (f()) sum=x;//sum的类型为函数f的返回类型应注意,在其他类型指示符下,引用都作为所指对象同义词出现,但用在decltype下,引用类型由decltype()括号中的引用类型决定。例如:const
2021-07-28 10:05:48
295
原创 C++中“指向常量的指针”和“常量指针”辨析
无论是在学习C语言还是学习C++语言时我们都会遇到这样一个很复杂的概念辨析——什么是指向常量的指针,什么又是常量指针,下面分享一些我的理解。一、从表现形式来看指向常量的指针在使用时应写为:const int *a=&p;//p是一个常量常量指针使用时写为:int *const a=&p;二、从使用特性来看和常量引用一样,指向常量的指针没有规定其所指的对象必须是个常量,所谓指向常量的指针仅仅要求不能通过该指针改变对象的值,而没有规定那个对象不能通过其他途径改变。简单来说,指向
2021-07-21 16:36:41
168
原创 quartus 13.1常见报错解决方法
在使用quartus中会遇到很多由于安装或设置不规范造成的错误。我就目前我遇到的一些错误以及我的解决方法分享给大家,这个文章将会持续更新,如果读者有遇到软件中错误无法解决的问题,也欢迎在评论区留言。一、编译出现lience错误在对设计的电路编译时,系统在程序运行3秒内即结束并报错,大概意思为现有的证书不支持编译。这个常见问题源自破解不成功,这里读者很有可能犯的错误是在使用破解器的时候没有区分x86(即32-bit)和x64软件破解器对应的文件夹。如图所示有两种破解器,分别对应32位和64位的软件,大部
2021-06-09 21:59:35
32795
1
原创 c++的一个书店销售记录累加程序
主要是对类的应用#include <iostream>#include"Sales_item.h"using namespace std;int main(){ Sales_item total; //用于保存对某本书的交易记录,在这个程序里保存的是销售额之和 if (cin >> total) //读入第一本书的销售情况,并直接作为加和的第一项 { Sales_item trans; //用于输入下一条数据 while (cin >> tra
2021-06-08 23:07:39
308
原创 二级C语言易错点归纳
公共基础知识部分:1.整数在计算机中存储和运算通常采用的是补码的形式2.在操作系统中,将文件名转换为文件存储地址的结构是文件目录,文件目录是计算机系统建立的文件索引,是文件名和文件物理位置之间的映射关系。3.树中结点数=树中所有结点的度之和+14.循环队列Q(1:m)初始状态为空,在循环运转起来后,若rear-front>0,则队列中元素为rear-front个,若rear-front<0,则队列中元素个数为rear-from+m个。5.还是这个循环队列,若rear=front=m,则
2021-04-02 21:35:30
1762
原创 C语言对文件的输入输出程序设计
之前很多C语言程序都是面向终端的程序,这些程序的处理对象是终端,也即我们对电脑的操作。从终端流入,依靠的是我们使用的键盘等,从终端流出,靠的是显示器、打印机等。而现在要讲到的是面向文件的C语言程序。其特点在于输入流、输出流都是相对文件进行的。最典型的例子就是在以终端为对象时,我们有puts、gets函数。puts函数用于输出给终端,gets用于从终端获取。而以文件为对象,有类似的函数fputs、fgets、fputc、fgetc。它们的作用是在文件中获取/填入(字符/字符串)。因此对文件的处理,我们应该“
2021-02-26 17:17:10
319
原创 C语言如何使用共用体结构
共用体union类型,与结构体struct类型很相似。两者的区别在于,结构体类型的空间是结构体类型成员所占空间之和,而共用体类型的空间是其成员中占用空间最大的成员空间大小。对于结构体,它可以同时给所有成员赋值,而对共用体,在每一瞬间只能存放其中一个成员的内容。利用共用体,我们能够简化结构体类型在描述成员属性高度相似的结构体构造。例如下例,我们要构造一个结构体数组,存入一名学生和一名老师的信息,但学生和老师的区别在于学生的属性中有一项“班级”,而老师的属性中有一项“职务”,除此之外二人其他属性相同。如果不使
2021-02-23 16:04:29
500
原创 C语言用结构体构造动态链表
非常实际的一个问题,我们需要通过构造动态链表来输入一组学生的成绩信息,代码及注释如下:#include <stdio.h>#include <stdlib.h> //调用malloc函数需要stdlib库#define LEN sizeof(struct student) //可以简单的理解为将程序中所有的"LEN"替换为"sizeof(struct student)"struct student{ long num; float score; stru
2021-02-23 09:13:51
675
原创 C语言使用结构体制作的票数统计算法
结构体是在C语言中用户自定义的变量类型,它可以由若干个类型的变量组成。结构体变量、结构体数组常用于对多个包含多项属性的成员的处理。设计程序统计得票是对结构体的简单应用,代码如下:#include <stdio.h> #include <string.h> int main(){ struct H { char name[20]; int num; }join[3]={"Wang",0,"Xie",0,"Zhang",0};//定义结构体数组join并赋初值
2021-02-18 10:32:49
1565
原创 C语言指针与一维数组、二维数组之间的关系
在C语言中,指针与数组总有密不可分的联系,这之中衍生了许多易于混淆的概念,在这里我就我的学习经验总结一下。1.指针与一维数组的关系。这无疑是最简单的,我们常见的有p=a,其p是指针变量,a是数组名。这里需要注意的是数组名和数组元素的区别。数组名代表数组的首地址,可以直接让指针指向它。而数组元素是值,需要取地址符才能指向,实例如下:int a[2];int *p;p=a;p=&a[0];虽然上述两个指向都使得p指向数组首地址,但指向方式不同,这种区别会在多维数组中体现。2.(*(p+
2021-02-18 00:13:27
1286
原创 C语言实现字符串删除字符函数
要求输入一个字符串内有若干个字符,再输入一个字符,使得输出字符串中这一字符全部被删除。对于这个问题,我们考虑构造delete_me函数(delete是已定义过的函数不能再做变量名)来实现。我们首先想到的思路当然是使用两个字符串数组,一个输入原始字符串,一个进行删减处理后输出,代码如下:#include <stdio.h>int main(){ char a,str[100]; void delete_me(char str[],char ch); printf("请输入字符串\n"
2021-01-22 11:55:33
22463
2
原创 C语言解决汉诺塔问题
Hanoi塔问题,讲的是有三个座A,B,C,开始时A座上有一定数量的盘子,盘子大小不等,大的在下,想要将A座上的盘子移到C座,要求每次只移动一个盘,在移动过程中保持大盘在下小盘在上,要求用编程输出移动的步骤。从简单的入手,我们先看3个叠在一起要如何操作:记由上而下盘子为1,2,3号盘子。把1号放c处,2号放b处,1号放b处,3号放c处,1号放a处,2号放c处,1号放c处,完成移动。在上面这个过程中,不难发现撇开3号放c处这一步骤不看,前三个步骤和后三个步骤不同之处只在于是对cb位置和ac位置的操作。
2021-01-20 18:22:32
1036
2
原创 C语言字符串处理相关问题
在最近翻阅《C程序设计》一书时,在6.3.7节字符串数组应用举例中我发现了一个值得学习的例子。题目如下:输入一行字符,统计其中有多少个单词,单词之间用空格隔开这个程序的设计思路并不难,我们对单词的特性很清楚,只要有空格说明出现了单词数量变化。而为了避免因为输入不规范出现多个空格影响单词个数判断的...
2021-01-10 20:37:02
287
原创 C语言中插入法的应用
我们由一个问题引入对插入法的介绍:我们希望在一个数组中插入任意指定的一个数,要求这个数能依照大小顺序插入到正确的位置。这个问题是一个非常好的插入法例子,在问题中,我们需要考虑两个问题,其一是如何在数组空间足够时插入元素,其二是如何保证插入到的地方满足大小关系。对数组的处理,由于数组元素的繁多,我们无疑会考虑到循环语句。对于这个问题,for循环语句和while循环语句都可以解决问题,但通过while循环语句设计出来的程序将会更为简洁巧妙。先考虑for循环,在循环中,我们要让所有比插入的数大的往后挪一位,
2021-01-04 19:30:29
5352
1
原创 C语言中关于选择法的一些问题
选择法是C语言中关于数组元素处理的一种重要方法,利用选择法我们可以从数组中筛选出最大最小项,可以对数组元素进行重排序。对数组元素的处理是在之后处理结构体内数据的一个基础。筛选最大项:思路是假定第k个数组元素是最大的,利用for循环让所有数组元素与它依次比较,如果出现第i个数组元素比它大,那么替换为第i个元素继续比较。代码如下:#include "stdio.h"int main(){ int i,k; int a[10]={0,7,3,4,8,2,5,9,1}; for(i=0
2021-01-02 21:19:23
3346
1
原创 一个计算一元二次函数的C语言程序
判断并计算一元二次函数根的情况,在C语言算法设计中是非常简单的。主要依据的就是Δ的正负来判断根的虚实,用Δ的取值来判断根的个数。代码如下://一元二次函数实根和虚根 #include "stdio.h"#include "math.h"int main( ){ float a,b,c,d,x1,x2,lp,ip; printf("请按顺序输入一元二次函数的二次项系数、一次项系数、常数项系数。\n") ; scanf("%f%f%f",&a,&b,&c);
2021-01-01 12:57:22
4448
1
原创 C语言实现概率论中的验血问题
有这样一道概率论题目,我认为将其编写为C程序实现是一件非常有意思的事情,题目如下:在一个人数很多的团体中普查某种疾病,为此要抽验N个人的血。有如下两种方法,法一为逐个抽验,则需验N次,法二为按k个人一组进行分组,把K个人抽来的血液混合在一起检验,如果呈阴性,则这k个人正常,只需要验一次。如果呈阳性,则这k个人逐个化验,则这k个人要验k+1次。现假设每个人化验呈阳性概率为p,且每个人化验结果相互独立,问p、k取不同值时对方法的选择如何。在概率论中,这是一道依照期望来比较的题目,但当我们将它视为一道C语言题
2020-12-30 11:03:34
1298
4
原创 让指针指向数组指定位置的正确写法
分享一个我遇到的小问题,相信很多初学者也犯过和我一样的错误来看一段代码 int a[6]={1,2,3,4,5,6}; int *p=a[2];毫无疑问,在这个代码中我们想做的是定义一个指针p让它指向数组a的第三个元素所在的位置,但显然这种非常感性的写法是错误的。会出现这样的报错:[Error] invalid conversion from ‘int’ to ‘int*’ [-fpermissive]。这个报错的意思是你不能让一个int型的指针指向一个int型的元素。很显然,我们
2020-12-09 22:29:50
3210
原创 C语言如何用while循环实现阶梯输出
今天一个学弟问到这样一道基础的计数问题,我认为处理这种问题的思路是很有用的。题目如下∶用while循环输出12345678910这个题目的解题点在于如何对每一行该有的数计数,因为只有这样才能去做分行操作,我的代码是这样的∶#include<stdio.h>int main(){ int i=1,j=0,n=1; while(i<=10) { printf("%d",i); j++;//现在有几个数 if(j==
2020-11-17 23:07:50
3304
原创 C语言实现倒三角数据输出
今天早上刷csdn看到一个很有意思的题目求助。大概意思是输入一个数n(0-9)输出的数呈倒三角形式。例如输入n=5,则输出为:1111111112222222333334445这样的形式,当时学业繁忙没来得及细想,直至抽空将这道题解了出来代码如下:#include <stdio.h>int main(){ int n,i,j,k,l; scanf("%d",&n); int a[n][2*n-1]; for(i=0;i<=n-1;i++) f
2020-11-16 20:29:40
6918
2
原创 C语言实现斐波那契额数列
一个简单的含数组循环语句//斐波那契数列实现 #include <stdio.h>int main(){ int n; printf("你想看斐波那契数列的前几位?\n"); scanf("%d",&n); int a[n+1]; a[1]=1; a[2]=1; for(int i=3;i<=n;i++) { a[i]=a[i-1]+a[i-2]; } for(int j=1;j<=n;j++) printf("%d ",a[j]);
2020-11-13 23:01:41
1288
1
原创 C语言筛选水仙花数
关键是用除法、取余方式找出每一位数//水仙花数#include <stdio.h>int main(){ int a=100; while(a<1000) { int a1=a/100; int a2=(a%100)/10; int a3=a%10; if(a==a1*a1*a1+a2*a2*a2+a3*a3*a3) { printf("%d是水仙花数\n",a); } a++; }return 0; } ...
2020-11-13 12:47:14
334
原创 C语言实现找闰年问题
简单的if条件语句与while循环语句设计程序//寻找闰年#include <stdio.h>int main(){ int s,e; printf("你想找哪一年到哪一年之间的闰年?\n"); scanf("%d %d",&s, &e); while(s<=e) { if((s%4==0&&s%100!=0)||(s%400==0))//四年一闰,百年不闰,四百年再闰 {printf("%d年是闰年\n",s);} s++;
2020-11-13 10:54:36
645
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人