自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HDLBits刷题Day28,3.2.5.14 3.2.5.14 one-hot FSM

您在state[9:0]中获得当前状态,并且必须生成next_state[9:0]和两个输出。(测试台将使用非一个热输入进行测试,以确保您不会尝试做更复杂的事情)。假设此状态机使用 one-hot 编码,其中state[0]到state[9]分别对应于状态 S0 到 S9。除非另有说明,否则输出为零。分析:可以联系3.2.5.6 Simple one-hot state transitions 3。单热状态转换逻辑的逻辑方程可以通过查看状态转换图的边缘来导出。

2024-03-27 11:44:01 159

原创 HDLBits刷题Day27,3.2.5.13 Lemmings 4

虽然旅鼠可以行走、摔倒和挖掘,但旅鼠并非刀枪不入。如果旅鼠摔倒的时间过长,然后撞到地面,就会飞溅。特别是,如果旅鼠跌落超过 20 个时钟周期后撞到地面,它就会飞溅,并永远停止行走、跌落或挖掘(所有 4 个输出都变为 0)(或直到 FSM 被重置)。旅鼠在落地前的下落距离没有上限。旅鼠只有在落地时才会飞溅,在半空中不会飞溅。分析:相比于lemmings1-lemmings3,本题多出了以下情况。关于计数器如下(解释代码中为什么将count的初值设为1)扩展你的有限状态机来模拟这种行为。

2024-03-26 16:37:28 290

原创 HDLBits刷题Day26,3.2.5.12 Lemmings 3

除了走路和摔倒之外,旅鼠有时会被告知做一些有用的事情,比如挖掘(当dig=1时它开始挖掘)。如果旅鼠当前在地面上行走(ground=1并且没有下落),它可以挖掘,并且会继续挖掘直到它到达另一边(ground=0)。),然后一旦再次撞到地面,就继续沿原来的方向行走。与坠落一样,挖掘时被撞到没有效果,并且在坠落或没有地面时被告知要挖掘被忽略。(换句话说,一只行走的旅鼠可以跌倒、挖掘或切换方向。如果满足这些条件中的一个以上,则跌倒的优先级高于挖掘,挖掘的优先级高于切换方向。扩展您的有限状态机来模拟这种行为。

2024-03-17 17:36:22 219

原创 HDLBits刷题Day25,3.2.5.10 Lemmings 1 - 3.2.5.11 Lemmings 2

除了左右走动和碰撞时改变方向外,当ground=0时,旅鼠会摔倒并说“啊啊!当地面重新出现 ( ground=1 ) 时,旅鼠将继续沿与坠落前相同的方向行走。跌倒时被撞不影响行走方向,与地面消失(但尚未跌倒)同一个周期被撞,或仍在跌倒时再次出现地面时,也不影响行走方向。在旅鼠的 2D 世界中,旅鼠可以处于以下两种状态之一:向左行走或向右行走。特别是,如果 Lemming 撞到左边,它会向右走。如果它同时在两侧碰撞,它仍然会切换方向。除了左右行走之外,如果地面消失在旅鼠脚下,旅鼠还会摔倒(并且可能会“啊啊!

2024-03-16 15:33:08 189

原创 HDLBits刷题Day24,3.2.5.9 Design a Moore FSM

1.s=000时,打开fr1,fr2,fr3和补充水dfr。2.s=001时,打开fr1,fr2。3.s=011时,打开fr1。5.当水位下降时,打开dfr。4.s=111时,关闭。

2024-03-08 16:25:22 327

原创 HDLBits刷题Day23,3.2.5.7 Simple FSM 3 (asynchronous reset) - 3.2.5.8 Simple FSM 3 (synchronous reset)

以下是一输入一输出四状态的摩尔状态机的状态转移表。包括将 FSM 重置为状态 A 的同步重置。(这与Fsm3的问题相同,但有同步重置。下面是一输入一输出四状态的摩尔状态机的状态转移表。包括将 FSM 重置为状态 A 的异步重置。

2024-03-06 11:11:51 210

原创 HDLBits刷题Day22,3.2.5.3 Simple FSM 2 (asynchronous reset) - 3.2.5.6 Simple one-hot state transitions

由于采用了单击编码,测试 "currently in state A" 的逻辑方程就是状态 A 的状态位,从而得出状态位 A 的下一状态的最终逻辑方程:next_state[0] = state[0]&(~in) | state[2]&(~in)。虽然了解这种算法对于 RTL 级设计并不是必需的(逻辑合成器会处理这个问题),但它说明了为什么独热 FSM 通常具有更简单的逻辑(以更多状态位存储为代价),而且这个话题经常出现在数字逻辑课程的考试中。下面是一输入一输出四状态的摩尔状态机的状态转移表。

2024-03-05 17:07:38 417

原创 HDLBits刷题Day21,3.2.5.1 Simple FSM 1 (asynchronous reset) - 3.2.5.2 Simple FSM 1 (synchronous reset)

这是一个具有两种状态的摩尔状态机,一种输入和一种输出。请注意,重置状态为 B。本练习与fsm1相同,但使用异步复位。这是一个具有两种状态的摩尔状态机,一种输入和一种输出。请注意,重置状态为 B。本练习与fsm1相同,但使用同步复位。相关知识:关于状态机的定义、分类以及写法可以参考。

2024-03-03 16:09:21 264

原创 HDLBits刷题Day20,3.2.4.3 Conway‘s game of life 16*16

例如,角单元 (0,0) 有 8 个邻居:(15,1) , (15,0) , (15,15) , (0,1) , (0,15) , (1,1)、(1,0)和(1,15)。16x16 的网格由一个长度为 256 的向量表示,其中每行 16 个单元格由一个子向量表示:q[15:0] 为第 0 行,q[31:16] 为第 1 行,以此类推(此工具接受 SystemVerilog,因此您可以根据需要使用 2D 向量。“游戏”是在一个二维单元格上进行的,其中每个单元格要么是 1(活着),要么是 0(死去)。

2024-02-28 08:30:00 229

原创 HDLBits刷题Day19,3.2.4.1 Rule 90 - 3.2.4.2 Rule 110

在规则 110 中,每个单元格的下一个状态仅取决于它自己和它的两个邻居。在此电路中,创建一个 512 单元系统 ( q[511:0] ),并在每个时钟周期前进一个时间步长。在此电路中,创建一个 512 单元系统 ( q[511:0] ),并在每个时钟周期前进一个时间步长。在每个时间步,每个单元的下一个状态是单元的两个当前邻居的 XOR。(“规则 110”的名称来自阅读“下一个状态”列:01101110 是十进制的 110。(“规则 90”的名称来自阅读“下一个状态”列:01011010 是十进制的 90。

2024-02-27 16:14:18 280

原创 HDLBits刷题Day18,3.2.3.7 Shift register - 3.2.3.9 3-input LUT

移位寄存器输入应称为S,它馈入 Q[0] 的输入(首先移入 MSB)。使能输入控制是否移位。然后,将电路扩展为具有 3 个附加输入A、B、C和一个输出Z。电路的行为应该如下:当 ABC 为 000 时,Z=Q[0],当 ABC 为 001 时,Z=Q[1],依此类推。(旁白:该电路称为 3 输入查找表 (LUT))。在这个问题中,您将为 8×1 存储器设计一个电路,其中写入存储器是通过移入位来完成的,而读取是“随机访问”,就像在典型的 RAM 中一样。然后,您将使用该电路实现 3 输入逻辑功能。

2024-02-27 15:28:57 341

原创 HDLBits刷题Day17,3.2.3.4 5-bit LFSR - 3.2.3.6 32-bit LFSR

伽罗瓦 LFSR 是一种特殊的安排,其中带有“抽头”的位位置与输出位进行异或运算以产生其下一个值,而没有抽头位置进行移位。n 位的最大长度 LFSR 在重复之前循环通过 2 的n次方-1 个状态(永远不会达到全零状态)。将R输入连接到SW开关,将 Clock 连接到KEY[0],并将L连接到KEY[1]。提示:从 1 开始的前几个状态是00001 , 10100 , 01010 , 00101 , ... LFSR 应该在返回00001之前循环通过 31 个状态。复位应将 LFSR 复位为 1。

2024-02-24 08:30:00 426

原创 HDLBits刷题Day16,3.2.3.1 4-bit shift register - 3.2.3.3 Left/right arithmetic shift by 1 or 8

与丢弃移出位并移入零的移位器不同,旋转器从寄存器的另一端移入移出的位。考虑算术右移的另一种方法是,它假设被移动的数字是有符号的并保留符号,因此算术右移将带符号的数字除以 2 的幂。移位器可以向左和向右移动 1 位或 8 位位置,由数量选择。load :用data[99:0]加载移位寄存器而不是旋转。load :用data[63:0]加载移位寄存器而不是移位。load :用data[3:0]加载移位寄存器而不是移位。ena:右移(q[3]变为零,q[0]移出并消失)。2'b10:右移 1 位。

2024-02-23 08:30:00 319

原创 HDLBits刷题Day15,3.2.2.7 4-digit decimal counter - 3.2.2.8 12-hour clock

两道题的逻辑和3.2.2.6大致相同。

2024-02-22 08:30:00 185 1

原创 HDLBits刷题Day14,3.2.2.5 Counter 1-12 - 3.2.2.6 Counter 1000

还要从您使用的每个 BCD 计数器输出使能信号(c_enable[0] 为最快的计数器,c_enable[2] 为最慢的)。clk是每秒一千次,OneHertz是每秒一次,题目的意思就是用三个十进制计数器把1000hz“减速”为1hz。分析:本题相当于用c_enale、c_load和c_d[3:0]三个控制信号来控制题目中给我们提供的4-bit计数器,使得该计数器的计数范围改变为1~12。c_enable 、c_load和c_d输出是分别进入内部计数器的enable、load和d输入的信号。

2024-02-21 13:19:29 803

原创 HDLBits刷题Day13,3.2.2.1 Four-bit binary counter - 3.2.2.4 Slow decade counter

构建一个从 0 到 9 计数的十进制计数器,周期为 10。复位输入是同步的,应该将计数器复位为 0。构建一个从 0 到 15(含)计数的 4 位二进制计数器,周期为 16。复位输入是同步的,复位将计数器复位为 0。构建一个从 0 到 9(含)计数的十进制计数器,周期为 10。复位输入是同步的,应将计数器复位为 0。制作一个从 1 到 10 的十进制计数器,包括 1 到 10。复位输入是同步的,应将计数器复位为 1。提示:这是一个带有启用控制信号的常规十进制计数器。

2024-02-20 17:59:18 117

原创 HDLBits刷题Day12,3.2.1.17 Edge capture register - 3.2.1.18 Dual-edge triggered flip-flop

③3.2.1.15题pedge的高电平只维持一个时钟周期,而本题在复位信号到达之前out会保持高电平(红色画圈处,类似于SR触发器,体现了题目'capture'捕获一词)在下图示例波形的最后4个时钟周期中,reset事件比set事件早一个周期出现,因此这里没有前述冲突。每一个输出位就像一个RS触发器,即当对应位出现1 to 0的变化时,输出位将置1。而当reset信号为高电平,输出位将在下一个时钟的上升沿被复位。(注意:它不一定完全等效:触发器的输出没有毛刺,但模拟这种行为的更大组合电路可能会。

2024-02-19 22:12:40 820 1

原创 HDLBits刷题Day11,3.2.1.14 Create circuit from truth table - 3.2.1.16 Detect both edges

前一个时钟周期下输入位为0,我们可以利用D触发器,将当前输入in滞后一个时钟周期设为previous_in(也是保存了前一个时钟周期的in),与当前输入in进行比较(~previous_in&in //前一个时钟输入位为0当前时钟输入位为1)对于8位向量中的每一位,检测输入信号在一个时钟周期内从0变化到下一个时钟周期的1(类似于正边缘检测)。分析:和上一题相同,只是输入位无论从0到1还是从1到0都要检测到,previous_in^in //改成异或即可。分析:我们要判断当前时钟周期下输入位为1。

2024-02-17 23:24:14 177 1

原创 HDLBits刷题Day10,3.2.1.7 D Latch - 3.2.1.13 DFFs and gates

锁存器是电平敏感(非边沿敏感)电路,因此在一个始终块中,它们使用电平敏感灵敏度列表。但是,它们仍然是顺序元素,因此应该使用非阻塞赋值,D 锁存器在启用时就像一条线,在禁用时保留当前值。给定如图所示的有限状态机电路,假设 D 触发器在机器开始之前初始复位为零,建立这个电路。确保每个 D 触发器的Q非·输出确实是其 Q 输出的倒数,即使在模拟的第一个时钟沿之前也是如此。考虑下面的时序电路,假设您要为此电路实现分层 Verilog 代码,使用其中具有触发器和多路复用器的子模块的三个实例化。

2024-02-15 08:30:00 342 1

原创 HDLBits刷题Day9,3.2.1.1 D flip-flop - 3.2.1.6 DFF with byte enable

相关知识:同步复位、异步复位、异步复位和同步释放

2024-02-14 08:30:00 687 1

原创 HDLBits刷题Day8,3.1.4 Karnaugh Map to Circuit

对于下面的卡诺图,给出使用一个 4 对 1 多路复用器和若干2 对 1 多路复用器的电路实现,但使用尽可能少。具有四个输入(a、b、c、d)的单输出数字系统在输入上出现 2、7 或 15 时生成逻辑 1,当输入上出现 0、1、4、5、6 、9、10、13 或 14 出现时生成逻辑 0。例如,7 对应于 a、b、c、d 分别设置为 0、1、1、1。实现下面卡诺图描述的电路,在编码之前尝试简化 k-map。(原始考试问题要求简化 SOP 和 POS 形式的函数)注意卡诺图中 x[4:1] 输入位的顺序。

2024-02-13 08:00:00 867 1

原创 HDLBits刷题Day7,3.1.3 Airthmetic Circuits

加法器将两个 3 位数字和一个进位相加产生一个 3 位加和和进位。cout[2] 是最后一个全加器的最终进位,也是您通常看到的进位。您的加法器应该将两个 4 位 BCD 数字(打包成 16 位向量)和一个进位相加,以产生一个 4 位加和和进位。为您提供了一个名为bcd_fadd的 BCD(二进制编码的十进制)一位加法器,它将两个 BCD 数字和进位相加,并产生一个加和和进位。加法器将两个 100 位数字和一个进位相加,产生一个 100 位加和和进位。全加器将三位相加(包括进位)并产生和和进位。

2024-02-12 09:00:00 308 1

原创 HDLBits刷题Day6,3.1.2 Multiplexers

创建一个 4 位宽、256 对 1 的多路复用器。sel=0 应该选择[3:0]中的位, sel=1 选择[7:4]中的位, sel=2 选择[11:8]中的位等。创建一个 1 位宽、256 对 1 的多路复用器。sel=0 应该选择in[0], sel=1 选择[1]中的位, sel=2 选择[2]中的位,等等。sel=0 选择 a,sel=1 选择 b,等等。对于未使用的情况(sel=9 到 15),将所有输出位设置为“1”。当 sel=1 时,选择 b。当 sel=1 时,选择 b。

2024-02-12 08:00:00 253 1

原创 HDLBits刷题Day5,3.1.1.15 - 3.1.1.17

out_both:此输出向量的每个位都应指示相应的输入位及其左侧的邻居(较高的索引)是否都是“1”。例如,out_both[2]应该表明in[2]和in[3]是否都为 1。例如,out_both[98]应该表明in[98]和in[99]是否都是 1。例如,out_any[2]应该指示in[2]或in[1]是否为 1。例如,out_any[2]应该指示in[2]或in[1]是否为 1。例如,out_diff[2]应该指示in[2]是否与in[3]不同。在 [99:0] 中给定一个 100 位的输入向量。

2024-02-11 17:11:30 292 1

原创 HDLBits刷题Day4,3.1.1.13 - 3.1.1.14

两道题都是一种思维上的转变,从输入什么时输出为什么变化为输出为什么时输入需要为什么。

2024-02-06 21:38:44 350

原创 HDLBits刷题Day3,3.1.1.1 - 3.1.1.12

3.1.1.1 - 3.1.1.7参考3.1.1.6。

2024-02-04 20:50:05 256

原创 HDLBits刷题Day2,2.5.7 Generate for-loop:100-digit BCD adder

BCD加法器:首先要知道什么是BCD码,通常为8421码,我们可以用四位二进制数0000~1001对应表示一位十进制数0~9,其中0000~1001就是一位十进制数的BCD码。那如果是两位十进制数呢,我们以37为例,3=2+1=(8421码)0011,7=4+2+1=(8421码)0111,所以37转换成8421码为0011 0111。最后运算的sum应该加上6(4'b0110)才是在0~9之间的正确和,即sum[3:0] = sum_temp[3:0] + 4'b0110;

2024-02-04 10:43:15 307

原创 HDLBits刷题Day1,2.5.6 Generate for-loop:100-bit binary adder 2

等波纹进位加法器:最低的比特位先进行简单的全加器计算(A0+B0),生产的和作为最终sum的最低位sum0,然后其进位cout0参与下一位的全加器计算(A1+B1+cout0),其和为sum1,进位为cout1。

2024-02-03 10:41:37 260 1

原创 Multisim14.0图标过小问题

软件图标右键,属性,兼容性,更改高DPI设置,选中替代高DPI缩放行为,下拉框把应用程序改成系统/系统(增强),确定更改重启后如果图标过大,右键设计工具栏,自定义界面,选项,取消勾选大图标关于系统/系统(增强)的区别👉https://weibo.com/ttarticle/x/m/show#/id=2309404793331975848139&_wb_client_=1(转载)小白分享,不足之处请指正

2023-01-19 22:35:20 2410

空空如也

空空如也

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

TA关注的人

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