自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言基础笔记2

【代码】C语言基础笔记2。

2023-03-15 21:29:51 691 7

原创 C语言基础笔记1

unsigned u;a=12;b=-24;u=10;c = a+u;d = b+u;可以看到,有符号遇到无符号,一般会将无符号调整为有符号。

2023-03-14 18:52:55 688

原创 关于quartus 13.1出现的问题的一些总结

关于quartus使用过程中出现问题的一些总结

2022-11-29 22:48:05 3023 3

原创 matlab常用了滤波函数小结

在IIR数字滤波器设计中有把模拟的原型滤波器转变成相应的数字滤波器,即通过已知S变换中模拟滤波器的系数求数字滤波器的系数。其中有两种方法来进行这种变换,一种是激冲不变法,另一种是双线性Z变换法。bilinear 函数便是双线性Z变换法。函数中的b和a是原模拟滤波器S变换中的分子和分母系数,该函数可以用来求得系统的频率响应,以及求得序列的离散时间傅里叶变换(DTFT)。's'表示模拟滤波器,缺省时该函数适用于数字滤波器。1,ellipord函数。3,bilinear函数。4,freqz()函数。...

2022-08-17 10:44:40 11739

原创 随机函数及随机化个别变量的理解

下面这道题可以帮助我们理解使用使用randomize()来随机化个别变量。 上述题目的意思是,如果只是调用了r.randomize(low),那么应该选择哪个选项?答案是C。为什么呢?因为med和hi变量使用了rand修饰符修饰,这两个变量定义为随机变量,但是low并没有被定义为rand变量。在程序开始的时候,med和hi变量会直接被赋值为0,因此在定义了句柄r和创建了Rising对象之后直接对low进行随机化的化会报错,因为men=hi=0不符合约束,约束指明了men应该是......

2022-06-17 17:44:27 406

原创 内嵌约束块randomize () with和soft软约束

在SV中允许使用randomize()with来增加一些额外的约束,这和在类里增加约束是等效的。但同时要注意的是内部约束和外部约束之间应该是协调,如果出现相互违背的情况,那么随机数值的求解将会失败。要注意的是在SV中,只要一个约束不满足条件,那么表明整个随机数值求解是失败的,那么编译系统将会报错。.........

2022-06-17 11:15:26 4472 1

原创 类和对象以及句柄

类的三要素:封装、继承以及多态在第一步中指明了t2,t1这两个悬空句柄,即这两个句柄没有指向任何对象;在第二步中实例化了对象,并使用new函数为t1分配了内存,并将句柄赋给了t1,即此时的t1第一次指向了激励数据对象Transaction;第三步为将t1赋给了t2,此时的t1和t2都指向了激励数据对象Transaction;第四步再次使用了new函数为t1分配了空间,并指向了另外一个Transaction。下面悬空的指针只所以很危险的原因是因为悬空的指针不指向任何对象,有可能会被“系统回收”,这是由SV中的

2022-06-16 17:50:38 734

原创 使用VMware、Centos 7的相关命令和出现的问题

使用VMware、Centos 7的相关命令和出现的问题

2022-06-15 15:24:13 285

原创 HDLBITS笔记37:testbench错误检测集合1

目录第一种情况:表达式不对以及输入输出的bit数目不匹配第二种情况:实例引用有误和缺少输出语句第三种情况:实例引用名和子模块中的输出名一致第四种情况:缺乏else的情况和if条件表达式有误 第五种情况:十进制、十六进制的字符表示。此 8 位宽 2:1 多路复用器无法正常工作。修复错误。模块声明module top_module ( input sel, input [7:0] a, input [7:0] b, output [7:0] out ); 应将代码修改如下

2022-06-06 12:32:25 1123

原创 总线协议三(附链接集合)

一、PCI总线二、PCIE总线三、USB接口协议

2022-05-23 22:32:24 437

原创 总线协议二(附链接集合)

一、AMBA总线系统总线:系统芯片中各个模块之间需要有接口进行连接;而总线作为子系统之间共享的通信链路AMNA总线属于系统总线的一种。1,AMBA2.0协议首先2.0是片上总线的标准,其次定义了三种总线,分别为AHB,ASB,APB。AHB为高速总线,ASB一般不使用,APB为慢速总线,一般用于外设。2,AMBA 3.0协议增加了AXI协议层。参考链接http://(2条消息) AMBA总线—APB总线协议详解_SD.ZHAI的博客-CSDN博客_apb总线 https://bl

2022-05-21 11:52:13 2324

原创 总线协议一(UART/RS232/RS485/IIC/SPI)

总线的本质就是一根导线,传递的是电信号,0和1;用于在不同的通信设备之间,如外部设备和单片机之间,进行通信的一种方式。串行通信:指的是通信双方按位进行通信,每一次的数据传输都被“排队”,一个个从低位到高位开始通信,即遵循时序的一种通信方式。并行通信:指的是一组数据不用“排队”,一组数据的各数据位在多条线上同时被传输的通信方式。异步通信:指的是数据的接收方和发送方具有不同的时钟。同步通信:指的是数据的接收方和发送方具有相同的时钟。对于串行通信和并行通信来说,串行通信只有一条总线,并

2022-05-19 16:46:09 8235 2

原创 HDLBITS 笔记36:FSM串行、FSM串行数据

题目1:FSM串行在许多(较旧的)串行通信协议中,每个数据字节都与一个起始位和一个停止位一起发送,以帮助接收方将字节与位流分隔开来。一种常见的方案是使用一个起始位 (0)、8 个数据位和 1 个停止位 (1)。当没有任何内容被传输(空闲)时,该线路也位于逻辑 1 处。设计一个有限的状态机,该状态机将在给定位流时识别何时正确接收字节。它需要识别起始位,等待所有8个数据位,然后验证停止位是否正确。如果停止位未按预期出现,则 FSM 必须等到找到停止位后再尝试接收下一个字节。无错误:未找到停止

2022-05-07 16:16:43 1258

原创 HDLBITS笔记35:独热编码状态机,ps/2数据包解析器,ps/2数据包和数据路径

题目1:detect an edge对于 8 位矢量中的每个位,检测输入信号何时从一个时钟周期中的 0 变为下一个时钟周期中的 1(类似于正边沿检测)。输出位应设置为0到1转换发生后的周期。下面是一些示例。为清楚起见,in[1]和pedge[1]分别显示。模块声明module top_module ( input clk, input [7:0] in, output [7:0] pedge);代码如下:module top_module (

2022-04-28 17:07:36 771

原创 HDLBITS笔记34:Lemmings1、Lemmings2、Lemmings3、Lemmings4

题目1:Lemmings1游戏Lemmings涉及具有相当简单大脑的小动物。如此简单,以至于我们将使用有限状态机对其进行建模。在Lemmings的2D世界中,Lemmings可以处于以下两种状态之一:向左行走或向右行走。如果它碰到障碍物,它会改变方向。特别是,如果一只旅鼠在左边被撞到,它会向右走。如果它在右边被撞到,它将向左走。如果它同时在两侧碰撞,它仍然会改变方向。实现具有两个状态、两个输入和一个输出的摩尔状态机,用于模拟此行为。模块声明module top_module(

2022-04-24 15:14:03 3223 2

原创 HDLBITS笔记33:design a moore FSM(Exams/ece241 2013 q4)蓄水池/水库问题

题目如下图所示:大概意思就是一个大蓄水池供几个用户使用,为了保证水位足够高,三个传感器垂直放置在5英寸的间隔。当水位高于最高传感器(S3)时,输入流量应为零。当水位低于最低传感器(S1)时,水流量应达到最大(公称流量阀和补充流量阀均开启)。水位在上、下两个传感器之间时,水流量由两个因素决定:水位和最后一个传感器变化之前的水位。每个水位都有一个与之相关的标称流速,如下表所示。如果传感器的变化表明前一个水位低于当前水位,则应发生公称流量。如果之前的水平高于现在的水平,则应通过打开补充流量阀(由OFR控制)来增加

2022-04-22 17:24:19 1267 3

原创 HDLBITS笔记32:有限状态机二(Fsm3comb、Fsm3onehot、Fsm3、Fsm3s)

上篇传送门:HDLBITS笔记31:有限状态机一(FSM1、FSM1S、FSM2、FSM2S)_炒鸡无敌大美女的博客-CSDN博客目录题目1:Fsm3comb(简单的状态转换3)题目2:Fsm3onehot(简单的one - hot 状态转换3)题目3:Fsm3(简单的FSM3)异步复位题目4:Fsm3s(简单的FSM3,同步复位)题目1:Fsm3comb(简单的状态转换3)以下是具有一个输入、一个输出和四个状态的 Moore 状态机的状态转换表。使用以下状态编码:...

2022-04-22 15:25:24 2920

原创 HDLBITS笔记31:有限状态机一(FSM1、FSM1S、FSM2、FSM2S)

题目1:FSM1这是一个摩尔状态机,具有两个状态,一个输入和一个输出。实现此状态机。请注意,重置状态为 B。此练习与fsm1s,但使用异步重置。模块声明module top_module( input clk, input areset, // Asynchronous reset to state B input in, output out);...

2022-04-22 10:54:26 5345

原创 HDLBITS笔记30:rule 90、rule 100以及Conway‘s game of life 16*16

目录## 题目1:rule 90规则90是具有有趣属性的一维元胞自动机。题目2:rule 100题目3:Conwaylife## 题目1:rule 90规则90是具有有趣属性的一维元胞自动机。规则很简单。有一个一维的单元格数组(打开或关闭)。在每个时间步长中,每个单元的下一个状态是单元的两个当前邻居的异或。下表是表示此规则的更详细的方式,其中单元格的下一个状态是自身及其两个相邻项的函数:left center right Center's next sta..

2022-04-20 11:50:29 4145 3

原创 HDLBITS笔记29:移位寄存器(包括4位移位寄存器,创建100位左/右旋转器,算术偏移,线性反馈移位寄存器等)

题目1:4位移位寄存器(4-bit shift register)构建一个具有异步复位、同步加载和使能功能的 4 位移位寄存器(右移位)。reset:将移位寄存器重置为零。load: 加载数据[3:0]的移位寄存器,而不是移位。ena:向右移(q[3] 变为零,q[0] 移出并消失)。q:移位寄存器的内容。如果同时load和 ena 输入 (1),则load输入具有更高的优先级。模块声明module top_module(input clk,input areset, // async

2022-04-19 10:42:59 6430

原创 HDLBITS笔记28:计数器综合题(较难)(包括1-12计数器、1000hz信号计数器、4位BCD计数器计数时钟(12-hour clock))

题目1:counter 1-12设计具有以下输入和输出的 1-12 计数器:Reset同步高电平有效复位,强制计数器为 1 Enable设置为高电平以使计数器运行 Clk正边沿触发时钟输入 Q[3:0]计数器的输出 c_enable、c_load、c_d[3:0]控制信号进入提供的4位计数器,因此可以验证正确的操作。您有以下可用的组件:下面的 4 位二进制计数器 (count4),它具有使能和同步并行加载输入(负载的优先级高于使能)。count4模块已提供给您。在电路中实例化它。..

2022-04-17 16:47:23 2873

原创 HDLBITS笔记27:计数器(4位计数器、计算0-9/0-10计数器、具有控制信号的计数器)

题目1:4位二进制计数器(four-bit-binary counter)构建一个 4 位二进制计数器,该计数器的计数范围为 0 到 15(包括 15),周期为 16。复位输入是同步的,应将计数器复位至0。模块声明module top_module ( input clk, input reset, // Synchronous active-high reset output [3:0] q);通过阅读题意可知:计数器的构建是通过计算脉冲个数来计

2022-04-16 16:27:07 2835

原创 HDLBITS笔记26:边沿检测(正边沿、任意边沿,边沿捕获寄存器、双边沿触发触发器)

在这接下来的题目时,首先需要理解什么是边沿检测。**边沿检测:**边沿指的是上升沿或者下降沿,检测指的是检测输入信号的变化,或者FPGA内部电路逻辑信号的跳变。在做边沿检测时,应该注意到复位信号,如果复位信号有效的话,边沿检测是检测不到信号的跳变是上升沿跳变还是下降沿跳变的。上升沿:当前一时刻t0为低电平、t1时刻为高电平时,此时为上升沿。下降沿:当前一时刻t0为高电平、t1时刻为低电平时,此时为下降沿。注意:在使用Verilog对信号的边沿进行检测时,应当设置一个中间变量作为暂存器,通过中间变

2022-04-15 22:38:51 4273

原创 数电笔记:触发器的基础知识

这是一个具有时钟使能端的D触发器,如下图所示。这种触发器于普通的D触发器不同之处在于它是使用一个2选1的数据选择器进行控制。当CE=0时,选择Q端的状态作为输入数据送入到1D端,时钟上升沿到来时,仍然维持着;当CE=1时,选择外部D端作为输入数据,时钟上升沿到来时,实现普通的D触发器功能。...

2022-04-15 20:06:22 17578 1

原创 HDLBITS笔记25:有限状态机电路,JK触发器

题目1:给定有限状态机电路,如图所示,假设在机器启动之前,D触发器最初复位为零。构建此电路。模块声明module top_module ( input clk, input x, output z); 观察电路图可得代码如下:module top_module ( input clk, input x, output z); reg q1,q2,q3; always@(posedge clk)

2022-04-13 15:31:59 1555

原创 HDLBITS笔记24:触发器的进阶练习(锁存器、同步/异步复位触发器、数据选择器综合触发器)

题目1:实现以下电路:请注意,这是一个闩锁,因此预计 Quartus 会发出有关推断出闩锁的警告。模块声明module top_module ( input d, input ena, output q);分析:锁存器是电平敏感(非边沿敏感)电路,因此在始终块中,它们使用电平敏感度列表。 但是,它们仍然是顺序元素,因此应使用非阻塞赋值。 D型锁存器在使能时就像导线(或非反相缓冲器),并在禁用时保留当前值。代码如下:module top_mo

2022-04-13 11:09:08 1361

原创 HDLBITS笔记23:触发器的基础练习(同步清零、异步清零、复位端、字节使能等)

题目1:D触发器是一种电路,它存储位并定期更新,位于时钟信号的(通常)正边。D 触发器在使用时钟始终块时由逻辑合成器创建(请参见始终阻止2).D触发器是最简单的“组合逻辑后跟触发器的斑点”形式,其中组合逻辑部分只是一根线。创建单个 D 触发器。模块声明module top_module ( input clk, // Clocks are used in sequential circuits input d, output reg q );.

2022-04-12 22:01:28 3454

原创 HDLBITS笔记21:创建一个 4 位数的 BCD 纹波进位加法器

系统将为您提供一个名为 bcd_fadd的 BCD(二进制编码十进制)一位数加法器,该加法器将两个 BCD 数字相加并进行转入,并生成总和并执行。module bcd_fadd ( input [3:0] a, input [3:0] b, input cin, output cout, output [3:0] sum );实例化bcd_fadd的 4 个副本,以创建一个 4 位数的 BCD 纹波携带加法器。您的加法器应添加两个 4 位...

2022-04-12 10:29:24 841

原创 HDLBITS笔记22:真值表和卡诺图

题目1:实现下面 卡诺图 图中描述的电路。在编码之前,请尝试简化 k 映射。尝试两种“和”总和“两种形式。我们无法检查您是否具有 k 映射的最佳简化。但是我们可以检查您的约简是否等效,并且我们可以检查您是否可以将k-map转换为电路。代码编写如下:module top_module( input a, input b, input c, output out ); assign out = !(!a&!b&!c).

2022-04-12 10:28:32 2911

原创 HDLBITS笔记20:adder(以FA命名的加法器题)

实现以下电路:(“FA”是一个完整的加法器)模块声明module top_module ( input [3:0] x, input [3:0] y, output [4:0] sum);分析:图中所示的FA是一个1位加法器,图中所给的电路由四个这样的1位加法器组成,sum和输入输出分别连接着对应的位。由模块声明可知:该电路没有画出进位cin和cout,但实际上要有的,否则将会导致结果不正确。要实现上述电路只需要写出FA的描述电路并对其进行模块调用即可。

2022-04-11 10:50:32 698

原创 HDLBITS笔记19:算术电路(半加器、完整加法器、3位二进制加法器)

题目1:创建半加法器。半加法器添加两个位(没有携带),并产生总和和并执行。模块声明module top_module( input a, b, output cout, sum );代码编写:module top_module( input a, b, output cout, sum ); assign sum = a^b; assign cout = a&b;endmodule题目2:创建一个完整的加法器。

2022-04-11 09:45:52 2488

原创 HDLBITS笔记18:多路复用器(包括2对1、9对1、256对1)

目录题目1:题目1:创建一位宽的 2 对 1 多路复用器。当 sel=0 时,选择 a。当 sel=1 时,选择 b。模块声明module top_module( input a, b, sel, output out );通过分析题意可知:这题要求实现的是一个简单的数据选择器。也可以直接用三目条件语句实现或者分析其逻辑结构使用逻辑表达式(真值表)方式来实现。法1:使用数据选择器实现module top_module( input a, ...

2022-04-09 11:38:43 2595

原创 HDLBITS笔记17:4位和100位的gatesv(门和矢量)

题目1(4位的门和矢量练习):在 [3:0] 中,您将获得一个四位输入向量。我们想知道每个位与其邻居之间的一些关系:out_both:此输出向量的每个位都应指示相应的输入位及其左侧的邻居(较高索引)是否为“1”。例如,out_both[2]应该指示in[2]和in[3]是否都是1。由于in[3]左边没有邻居,答案是显而易见的,所以我们不需要知道out_both[3]。 out_any:此输出向量的每个位都应指示任何相应的输入位及其右侧的邻居是否为“1”。例如,out_any[2]应该指示in[2]或i

2022-04-08 16:58:40 310

原创 HDLBITS笔记16:组合电路A和B(combine circuits A and B)、响铃或震动、恒温器设计以及计算输入向量中1的个数

其中IA1和IA2的表示的逻辑表达式由前面的练习可知为:z = (x^y) & x;IB1和IB2所表示的逻辑表达式为:z = (!x & !y) | (x&y)。代码如下:module top_module (input x, input y, output z);wire in1,in2,in3,in4; wire in5,in6; assign in1 = (x^y)&

2022-04-08 15:57:47 999 1

原创 HDLBITS笔记15:组合逻辑之7420芯片

7400系列集成电路是一系列数字芯片,每个芯片有几个门。7420 是一款具有两个 4 输入 NAND 门的芯片。module top_module( input a, b, output out_and, output out_or, output out_xor, output out_nand, output out_nor, output out_xnor, output out_anotb);assig

2022-04-08 11:57:11 3615

原创 HDLBITS笔记14:100位二进制纹波进位加法器和BCD加法器(使用generate语句)

创建100位二进制的纹波进位加法器和实现两输入均为100位的bcd加法器的相加,并拓展了generate语法。

2022-04-08 11:08:42 2347

原创 HDLBITS笔记13:构建100输入与门、或门、异或门的组合电路

HDLBITS笔记12:构建100输入与门、或门、异或门的组合电路、反转100个输入作为输出以及计算255位输入向量中1的个数。

2022-04-07 16:59:02 583

原创 HDLBITS笔记12:利用异或创建奇偶校验电路(reduction operators)

HDLBITS,奇偶校验原理

2022-04-07 15:56:31 2163

原创 HDLBITS笔记11:三目条件运算符(conditional ternary operator,同时区分建模方式)

Verilog 有一个三元条件运算符 ( ? : ),很像 C:(条件 ? if_true : if_false)这可用于根据一行上的条件(多路复用器!)选择两个值之一,而无需在组合始终块中使用if-then。例子:(0 ? 3 : 5) // This is 5 because the condition is false.(sel ? b : a) // A 2-to-1 multiplexer between a and b selected by sel.alwa

2022-04-07 15:17:23 2997

原创 HDLBITS笔记10:always nolatches(给游戏创建一个ps/2键盘)

假设您正在构建一个电路来处理来自 PS/2 键盘的扫描码的游戏。给定收到的最后两个字节的扫描码,您需要指示是否按下了键盘上的某个箭头键。这涉及一个相当简单的映射,可以实现为具有四个事例的事例语句(或 if-elseif)。扫描码 [15:0] 箭头键 16'he06b 向左箭头 16'he072 向下箭头 16'he074 向右箭头 16'he075 向上箭头 别的东西 没有 您的电路具有一个 16 位输入和四个输出。构建此电路,用于识别这四个

2022-04-06 20:43:38 3140

空空如也

空空如也

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

TA关注的人

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