- 博客(31)
- 收藏
- 关注
原创 MATLAB矩阵的构造
矩阵的构建方式有两种,一种与单元数组相似,可以直接对变量进行赋值;另一种是MATLAB中提供构建特殊矩阵的指令,如下所示。构建一个m✖n✖p的矩阵,其元素为零均值、单位方差的正态分布随机数构建一个(n+|k|)✖(n+|k|)维的矩阵,该矩阵的第k条对角线元素取自向量x,其余元素都为0,(关于参数k,参考上个命令)
2024-08-13 08:25:19
562
原创 MATLAB矩阵和数组的概念及其区别
而数组运算是MATLAB软件定义的规则,其目的是为了数据管理方便,操作简单,命令形式自然,执行计算有效。二者间联系主要体现在:在MATLAB中,矩阵是以数组的形式存在的,因此,一维数组相当于向量,二维数组相当于矩阵,所以矩阵是数组的子集。数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。对矩阵的基本操作,主要有矩阵的构建、矩阵维度与矩阵大小的改变、矩阵的索引、矩阵属性信息的获取7矩阵结构的改变等。1)矩阵是数学上的概念,而数组是计算机程序设计领域的概念。
2024-08-12 22:37:22
267
1
原创 MATLAB MAP容器类型
map本意为映射,就是可以将一个量映射到另一个量。比如将一个字符串映射为一个数值,那这个字符串就是map的键(key),那这个值就是map的数据(value)。由此,可以将map容器理解为一种快速查找数据结构的键。对一个map元素进行寻访的索引称为“键”。一个“键”可以是以下任何一种数据类型:1)1✖N字符串。2)单精度或双精度实数标量。3)有符号或无符号标量整数。这些键和其对应的数据储存在map中。一个map的每一个条目都包括唯一的键和相对应的数据。
2024-08-12 10:17:38
623
原创 使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器
当L[3]为1时,他表示高8位有数据为1,此时输出值记为Y1,此时不用管低8位,则输出L的构成为{1,Y1},当L[3]为0时,此时不管高8为,输出记为Y2,此时L构成为{0,Y2}.首先对于A[15:8],在他全为0时,开始进行后面的判断,即:1、他的优先级高于低8位;2、他如果不为0,只需要判断高8位即可,为0,判断低8位。因为要使用8位去处理16位的工作,因此要先将16位分为两个8位的,分别为A[15:8]与A[7:0]。即L[3]表示他是低8位还是高8位,L[2:0]表示他的数值。
2024-07-01 05:26:23
839
原创 优先编码器Ⅰ
注意:如果他不是连续的,例如Y[1],他是在I[7]、I[6]、I[3]、I[2]为1时,Y[1]为1,但是不能只判断这几位:例如:47转化为二进制为00101111,如果只判断上述几位,则为1,但是按照功能表来说应该为0.但是对于I[0]来说,却没有上述的问题。2、对于EO,在EI等于0时等于0,在EI不等于0时,于GS值相反。1、首先对于GS,在EI等于0或EI不等于0且I等于0时,他为0。3、Y[2]在I[7:4]任意一位为1时,他为1,否则为0.4、Y[1]与Y[0]与Y[2]类似。
2024-06-30 00:56:28
547
原创 用优先编码器实现键盘编码电路
10个按键分别对应十进制数0-9,按键9的优先级别最高;按键悬空时,按键输出高电平,按键按下时,按键输出低电平;那么只要有一个被摁下,结果就是0,但是使能需要用1去表示被摁下,所以要对使能进行取反。摁键悬空时,为1,摁下时为0.且使用8421BCD码,为高电平有效。请使用优先编码器实现键盘编码电路,可添加并例化题目中已给出的优先编码器代码。要求:键盘编码电路要有工作状态标志,以区分没有按键按下和按键0按下两种情况。首先10个摁键0-9,9的优先级最高,所以取高9位进行判断。因此,需要对结果进行取反。
2024-06-25 07:34:13
253
原创 优先编码器电路①
不过由于在判断时只判断部分位,所以要区分case、casex、casez的区别。只需要采用case语句将每种情况进行描述,根据输入选择不同的输出。①请用System Verilog实现此优先编码器。case:进行全等匹配,只有全部相等才进行下一步。casez:不处理高阻值的位,视为正常z状态。casex:高阻值与不定值都忽略,不关心。下表是某优先编码器的真值表。
2024-06-23 07:47:43
313
原创 4bit超前进位加法器电路
和:𝑆𝑖=𝑃𝑖⊕𝐶𝑖−1Si=Pi⊕Ci−1,进位:𝐶𝑖=𝐺𝑖+𝑃𝑖𝐶𝑖−1Ci=Gi+PiCi−1。按照逻辑表达式进行编写即可。
2024-06-22 21:49:58
256
原创 4位数值比较器电路
本题目为简单的判断大小问题,A>B,Y2为1,其余为0;A=B,Y1为1,其余为0;请用system Verilog语言采用门级描述方式,实现此4位数值比较器。某4位数值比较器的功能表如下。
2024-06-21 08:07:04
285
原创 使用函数实现数据大小端转换
在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改。请用函数实现一个4bit数据大小端转换的功能。实现对两个不同的输入分别转换并输出。这个模块实现两个数据的大小端转换,使用generate函数刚好解决这个问题。使用Verilog HDL实现以上功能并编写testbench验证。rst_n:异步复位信号,低电平有效。a,b:4bit位宽的无符号数。c,d:8bit位宽的无符号数。
2024-06-21 07:44:41
296
原创 使用子模块实现三输入数的大小比较
使用子模块进行比较大小,子模块为两个数比较大小,因此需要先写子模块为两个数比较大小,输出较小值,将较小值与第三个数进行比较输出最小值,因此需要进行两次两个数比较大小。在数字芯片设计中,通常把完成特定功能且相对独立的代码编写成子模块,在需要的时候再在主模块中例化使用,以提高代码的可复用性和设计的层次性,方便后续的修改。在第一次比较时,因为使用时序逻辑,再使用第一次后,会有一拍的延迟,因此需要将第三个数打一拍,否则,你就是用上一刻的两个值与这一刻的第三个值进行比较。a,b,c:8bit位宽的无符号数。
2024-06-21 07:04:04
189
原创 使用generate…for语句简化代码
在某个module中包含了很多相似的连续赋值语句,请使用generata…for语句编写代码,替代该语句,要求不能改变原module的功能。本题目就是简单的使用generate...for语句将多个句子进行整合。data_out:8bit位宽的无符号数。data_in:8bit位宽的无符号数。
2024-06-20 20:30:58
263
原创 求两个数的差值
根据输入信号a,b的大小关系,求解两个数的差值:输入信号a,b为8bit位宽的无符号数。如果a>b,则输出a-b,如果a≤b,则输出b-a。对a与b进行比较,然后判断输出哪一个。rst_n:复位信号,低电平有效。a,b:8bit位宽的无符号数。c:8bit位宽的无符号数。
2024-06-20 08:24:22
191
原创 多功能数据处理器
根据指示信号select的不同,对输入信号a,b实现不同的运算。输入信号a,b为8bit有符号数,当select信号为0,输出a;当select信号为1,输出b;当select信号为2,输出a+b;当select信号为3,输出a-b.根据不同的select选择不同的处理结果。需要注意加减是有符号的,需要注意符号。因此将运算的数据全部定义为signed即可避免这个问题。select:2bit位宽的无符号数。rst_n:复位信号,低电平有效。a,b:8bit位宽的有符号数。c:9bit位宽的有符号数。
2024-06-20 07:57:58
241
原创 位拆分与运算
现在输入了一个压缩的16位数据,其实际上包含了四个数据[3:0][7:4][11:8][15:12],根据不同的选择进行不同位相加即可;但是只有选择为0时才更新输入值,否则不更新。现在请按照sel选择输出四个数据的相加结果,并输出valid_out信号(在不输出时候拉低)输出信号 validout out。0: 不输出且只有此时的输入有效。3:输出[3:0]+[15:12]2:输出[3:0]+[11:8]1:输出[3:0]+[7:4]
2024-06-19 07:15:40
294
原创 移位运算与乘法
然后再看波形示意图,143到7这块,说明他已经有新的数据输入了,但是他还是之前的数据继续计算,直到乘以8结束。8位数,乘以1,3,7,8;是对每一个输入的8位数都要进行的,所以是一个死循环,对输入的数据分别乘以1,3,7,8然后输出;已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效)在每一个状态乘以1,3,7,8然后输出,然后回到初始状态。对于使能信号,他只在乘以1的时候进行输出为1,所以只在状态机第一态将他拉高即可。
2024-06-19 06:54:08
209
原创 FPGA奇偶校验
因此此题目为对32位数据进行按位异或输出为奇校验,因为异或为不同为1,即奇数个1为1;所以异或结果为奇校验,取反则为偶校验;奇偶结果根据sel值进行选择。但是对32位进行相加,需要使用for函数,浪费时间,因此只需要满足相加一个数据按位相加即可,即按位异或。现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果(1输出奇校验,0输出偶校验)对32位数据进行奇偶校验,则,32位相加为1为奇,反之为偶;输出信号 check。输入信号 bus sel。
2024-06-18 07:47:35
212
原创 异步复位的串联T触发器
根据T触发器的原理,相当于将此刻输入值与上一个时钟的输入值进行异或。同步复位就是指复位信号只有在时钟上升沿到来时,才能有效。输入为1时,输出进行反转,输入为0时,输出保持。
2024-06-08 05:01:39
273
原创 MATLAB单元数组类型
单元(cell)数组是一种无所不包的广义矩阵。组成单元数组的每一个元素称为一个单元。每一个单元可以包括一个任意数组,如数值数组、字符串数组、结构体数组或另外一个单元数组,因此每一个单元可以具有不同的尺寸和内存占用空间。注:和一般的数值数组一样,单元数组的维数不受限制,可以是一维的、二维或多维。MATLAB中使用单元数组的目的在于,它可以把不同类型的数据归并到一个数组中。注:单元数组的创建有两种方法:使用幅值语句创建单元数组和利用cell函数创建数组。1)使用赋值语句创建单元数组。
2024-06-06 18:34:03
267
原创 MATLAB数组类型
在MATLAB中进行运算的所有数据类型,都是按照数组及矩阵的形式进行存储和运算的,而二者在MATLAB中的基本运算性质不同,阵列强调元素对元素的运算,而矩阵则采用线性代数的运算方式。数组的属性及数组之间的逻辑关系,是编写程序时非常重要的两个方面。利用数组的构建方法可以直接对变量进行赋值。
2024-06-04 21:19:39
202
原创 四选一多路器
根据波形图:已知,d1=0;且sel=0,mux_out=2;制作一个四选一的多路选择器,要求输出定义上为线网类型。输入信号 d1,d2,d3,d4 sel。因为他输出与输出对齐的,所以为组合逻辑;输出信号 mux_out。
2024-06-02 22:13:48
189
原创 MATLAB结构体类型
MATLAB中的结构体类型与与C语言中的结构体类型类似,一个结构体可以通过字段存储多个不同类型的数据,因此,结构体相当于一个数据容器,把多个相关联的不同类型的数据封装在一个结构体对象中。1.使用字段幅值创建结构体。在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的形式书写,对同一结构体可以进行多个字段的赋值。2.使用struct函数创建结构体。
2024-06-02 21:50:45
185
原创 MATLAB函数句柄
函数句柄实际上提供了一种间接调用函数的方法。对MATLAB库函数中提供的各种M文件的函数和使用者自主编写的程序中的内部函数,都可以创建句柄.
2024-03-15 06:00:13
323
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人