自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HDLBits刷题(3_2_1_6)Dff16e

byteena[1]控制高字节d[15:8],而byteena[0]控制低字节d[7:0]。同步复位,所以resetn不用写在敏感列表里,上升沿触发——posedge,所以先判断resetn,用if else结构,当resetn为1时,再分别判断byteena两位的取值,以给q赋值。1.有一个逻辑,byteena使能端只是决定将不将当前d的值赋值给q,当使能端为1时,便将对应的d赋值给q,但我第一种写法的错误在于,当使能端不为1时也不用去将q的值清零,复位清零这件事是交给resetn来做的。

2023-09-04 17:28:21 108

原创 HDLBits刷题(3_2_1_5)Dff8ar

需要异步复位,也就是不管时钟脉冲clk是否来临,只要复位键按了,就得复位。所以我的最开始思路是写两个always,一个由areset控制,另一个由clk控制。1.语法的实现很简单。将异步复位areset加入 always 块的敏感列表当中。创建具有高电平有效异步复位的 8 个 D 触发器。所有 DFF 均应由 clk 的上升沿触发。敏感列表中的areset也是可以写到模块中的。

2023-09-01 20:17:43 89

原创 HDLBits刷题(3_2_1_4)

创建具有高电平有效同步复位的 8 个 D 触发器。触发器必须重置为 0x34 而不是零。所有 DFF 均应由 clk 的下降沿触发。3.0x34又称预设默认值,vlg里面不可以直接写0x34,要转化成8‘h34。1.上升沿:posedge;下降沿:negedge。2.reset用if,else逻辑;

2023-09-01 19:55:30 113

原创 HDLBits刷题(3_1_4_8)Exams/ece241 2014 q3

对于下面的卡诺图,给出使用一个 4 对 1 多路复用器和所需数量的 2 对 1 多路复用器的电路实现,但使用的数量尽可能少。您不能使用任何其他逻辑门,并且必须使用 a 和 b 作为多路复用器选择器输入,如下面的 4 选 1 多路复用器所示。您仅实现标记为 top_module 的部分,以便整个电路(包括 4-to-1 mux)实现 K-map。mux_in[0]的取值与ab为00时,cd的取值有关,所以看卡诺图第一列,按照逻辑写即可。参考答案是用二选一选择器的逻辑在写。

2023-09-01 17:03:05 95

原创 HDLBits刷题(3_1_4_5)Exams/ece241 2013 q2

具有四个输入 (a、b、c、d) 的单输出数字系统在输入上出现 2、7 或 15 时生成逻辑 1,在输入上出现 0、1、4、5、6 时生成逻辑 0 、 9、 10、 13 或 14 出现。例如,7对应于a、b、c、d分别设置为0、1、1、1。:找出真值表中所有输出为0的表项,按照输入的情况,为1用反变量表示,为0则用原变量表示,得出若干求和项,然后求积。:找出真值表中所有输出为1的表项,按照输入的情况,为1用变量表示,为0则用反变量表示,得出若干乘积项,然后求和。

2023-09-01 16:58:58 30

原创 HDLBits刷题(3_1_4_4)Kmap4

卡诺图化简不了,公式法看了之后太麻烦,只能按照提示给的逻辑,观察得,a与b,c与d不一样时为1,且两个不同时不一样时也为1。对于此函数,更改任何一个输入的值总是会反转输出。它是一个简单的逻辑函数,但不能轻易地表达为SOP或POS形式。

2023-08-30 20:49:58 36

原创 HDLBits刷题(3_1_4_3)Kmap3

d是无关项,1,0都可以。

2023-08-30 19:53:06 46

原创 HDLBits刷题(3_1_4_2)

数电基础知识,化简。

2023-08-30 18:43:27 25

原创 HDLBits刷题(3_1_4_1)Kmap1

实现逻辑图,要么一项一项,要么合并,要么直接看出大逻辑,这一题大逻辑容易看出来。

2023-08-30 18:34:32 60

原创 HDLBits刷题(3_1_3_7)Bcdadd4

为您提供了一个名为 bcd_fadd 的 BCD(二进制编码十进制)一位数加法器,它将两个 BCD 数字和进位相加,并产生总和和进位输出。模块 bcd_fadd ( 输入[3:0]a, 输入[3:0]b, 输入cin, 输出计数, 输出[3:0]总和);实例化 4 个 bcd_fadd 副本以创建 4 位 BCD 纹波进位加法器。加法器应将两个 4 位 BCD 数字(打包为 16 位向量)和一个进位输入相加,以产生 4 位和并执行。实例化并对好接口就行。写法竖着写更加简洁。

2023-08-30 18:22:42 71

原创 HDLBits刷题(3_1_3_6)Adder100

就是100位加法器,之前用generate for循环生成多个实例来组合。现在可以直接用verilog语法的+就行,和前面一道题很像,会自动生成进位。创建一个 100 位二进制加法器。加法器将两个 100 位数字和一个进位输入相加,产生 100 位和并输出。

2023-08-30 18:02:50 30

原创 HDLBits刷题(3_1_3_5)Exams/ece241 2014 q1c

这题刚开始看了半天没懂是什么意思,以为a,b都是数据位,后面复习了一下原码,反码,补码的知识才懂的,ab都是补码,a[7],b[7]都是符号位,0正1负。1.第一种溢出是两个正数相加:例如0110+0111,本来正数(0)+正数应该为正数才对,但由于数位不够导致数据位的110+111产生了向符号位的进位,导致符号位错误,因此当a[7],b[7]都为0时,s[7]如果是正确的话就应该也是0才对,因为正数加正数按理还是正数。假设您有两个 8 位 2 的补码,a[7:0] 和 b[7:0]。

2023-08-30 17:41:47 54

原创 HDLBits刷题(3_1_3_4)Exams/m2014 q4j

1.sum = x + y,加法在语言里自动产生进位,还能自动将进位与下一级相加计算,这么简洁的吗。2.用实例化定义端口即可。

2023-08-30 16:43:29 36

原创 HDLBits刷题(3_1_3_3)Adder3

现在您已经了解了如何构建全加器,可以创建它的 3 个实例来创建一个 3 位二进制纹波进位加法器。加法器将两个 3 位数字和一个进位输入相加,产生 3 位和并输出。为了鼓励您实际实例化全加器,还可以输出纹波进位加法器中每个全加器的进位。cout[2] 是最后一个全加器的最终进位,也是您通常看到的进位。实例化三个全加器,然后定义好每一位就行。

2023-08-29 20:39:44 41

原创 HDLBits刷题(3_1_3_2)Fadd

全加器,见之前的题目。

2023-08-29 20:26:37 27

原创 HDLBits刷题(3_1_3_1)Hadd

半加器将两个位相加(没有进位输入)并产生总和和进位输出。两个都为1时才能进位,两个不一样时相加所得个位数才是1。

2023-08-29 20:21:57 41

原创 HDLBits刷题(3_1_2_5)Mux256to1v

创建一个 4 位宽、256 比 1 多路复用器。256 个 4 位输入全部打包到一个 1024 位输入向量中。sel=0 应选择[3:0]中的位,sel=1 选择[7:4]中的位,sel=2 选择[11:8]中的位,等等。2.新写法,in[sel*4 +: 4], in[sel*4+3 -: 4]。1.写法是错误的,利用四个然后{}串联起来的方法还挺妙的。不知道in[4*sel+4:4*sel]这种写法可不可以。

2023-08-29 20:10:16 71

原创 HDLBits刷题(3_1_2_4)Mux256to1

创建一个 1 位宽、256 比 1 多路复用器。256 个输入全部打包到一个 256 位输入向量中。sel=0 应选择 [0] 中的位,sel=1 选择 [1] 中的位,sel=2 选择 [2] 中的位,等等。sel其实就是用二进制代表的位次,out要输出的就是in向量中sel所代表的位次,那么怎么将sel的二进制转换成十进制的数放进去in的[]里就行了。1.in里面是可以放不是十进制的数的。2.in里面是可以放变量的。

2023-08-29 15:55:02 56

原创 HDLBits刷题(3_1_2_3)Mux9to1v

把每一位赋值为1,有新的写法。out = '1;

2023-08-29 15:40:50 24

原创 HDLBits刷题(3_1_2_2)Mux2to1v

创建一个 100 位宽、2 比 1 多路复用器。当sel=0时,选择a。当sel=1时,选择b。和前面的思路一样,三元运算符选择。为什么那种写法就不可以了呢。

2023-08-29 15:27:05 29

原创 HDLBits刷题(3_1_2_1)Popcount3

咋一看,我以为参考答案是错误的,但是一想逻辑确实没错,通过sel来控制是哪个括号,但是如果括号里的ab也是0的话岂不是就没有括号被选中,但仔细一想也对,没选中就是0呗,刚好就是a或b为 0的情况。那这肯定不是逻辑想出来的写法,而是逻辑表。out为1的可能正好就是这两个括号,所以先与再或就是逻辑表的写法。这是假设不知道三元运算符的基本写法。

2023-08-29 15:03:07 74

原创 HDLBits刷题(3_1_1_17)Gatesv100

out_both:该输出向量的每一位应指示相应的输入位及其左侧的邻居是否均为“1”。例如,out_both[98] 应该指示 in[98] 和 in[99] 是否都是 1。由于 in[99] 左边没有邻居,所以答案很明显,所以我们不需要知道 out_both[99] ]。例如,out_ different[98] 应指示 in[98] 是否与 in[99] 不同。例如,out_any[2] 应该指示 in[2] 或 in[1] 是否为 1。在[99:0]中给你一个100位的输入向量。

2023-08-29 14:53:20 29

原创 HDLBits刷题(3_1_1_16)Gatesv

1.硬件思路方法中对向量每一位依次进行操作,写出来就像自带了循环可以对每一位运算一样。2.参考答案中对out_different的特殊项处理更加简洁,直接用{}重新连接出了闭环后的in向量与原向量进行按位运算操作。

2023-08-29 14:35:19 44

原创 HDLBits刷题(3_1_1_15)Popcount3

参考答案给了三种解法:1.硬件思路:把所有输入情况以及对应的输出情况列了出来。然后对out的每一位进行单独的逻辑门组合。这一步是我没有想到的,但是感觉也太麻烦了。2.硬件思路:针对这一题的特殊方法,将输入in的每一位单独拿出来相加,因为某一位是1刚好输出就需要加1。很妙。3.软件思路:用的case,那还不如for循环。

2023-08-01 16:50:49 101

原创 HDLBits刷题(3_1_1_14)Thermostat

硬件写法和答案不同的地方在于fan的情况,我考虑的再进一步,因为空调加热器只要打开,fan—_on是0或1,fan都得打开。空调加热器都是0时,fan和fan_on取值相关,所以应该是三项直接相或,我的写法多余了,不是最简的写法。其实化简逻辑表达式也是可以得到标准答案。

2023-08-01 16:30:18 58 1

原创 HDLBits刷题(3_1_1_13)Ringer

正如提示中说到的,逆向考虑,以及软硬转换都是很重要的思路。硬件中的逻辑,本人总爱用串联后与二进制数值作判断,不知道是否有什么不好的地方。

2023-08-01 01:58:30 64 1

原创 HDLBits刷题(3_1_1_12)Mt2015 q4

写子模块是真的方便。

2023-08-01 01:28:42 36 1

原创 HDLBits刷题(3_1_1_11)Mt2015 q4b

1.和上一篇一样,写子模块可以让主模块随意实例。2.仿真波形可以转化成真值表,又和之前写真值表的方法一样。简单的倒是可以直接看出来。

2023-08-01 01:11:00 35 1

原创 HDLBits刷题(3_1_1_10)Mt2015 q4a

掌握好写模块以及实例的格式。

2023-08-01 01:02:57 32 1

原创 HDLBits刷题(3_1_1_9)Mt2015 eq2

1.当三元运算符号后,ture为1,false为0时,也可以直接将判断条件式赋值给输出。省代码。2.向量名相当于全部元素。

2023-08-01 00:53:11 60 1

原创 HDLBits刷题(3_1_1_8)Truthtable1

1.赋值真值表的两种方法。

2023-08-01 00:46:18 48 1

原创 HDLBits刷题(3_1_1_7)7420

就是简单的门电路,看怎么写便捷。

2023-08-01 00:18:45 53 1

原创 HDLBits刷题(3_1_1_6)Gates

1.注意nand和and not的区别。

2023-08-01 00:18:24 36 1

原创 HDLBits刷题(3_1_1_5)Exams/m2014 q4g

1.要记住常见的逻1.辑门的图形表示:直是&,弯是|,圆圈是~,多一根线是x。异或取反就是同或。2.~^是规约运算符,而^~是同或(其实和前面的一样,应该是~先计算,再进行^计算,而和另外一个端口的取反的异或也就是和该端口同或)。

2023-07-31 20:47:54 34 1

原创 HDLBits刷题(3_1_1_4)Exams/m2014 q4f

实现以下电路:就是将in1和in2的取反 相与后赋值给out。

2023-07-31 20:33:02 25

原创 HDLBits刷题(3_1_1_3)Exams/m2014 q4e

1. ~|是规约运算符,是对一个向量中的所有项进行操作。所以我用串联符{}将它们串联。就可以用了,不是二元运算符,不可以in1 ~| in2 ,会报错。

2023-07-31 20:28:46 48

原创 HDLBits刷题(3_1_1_2)Exams/m2014 q4i

1.接地,即恒等于0。

2023-07-31 20:17:38 21 1

原创 HDLBits刷题(3_1_1_1)Exams/m2014 q4h

1.assign赋值是在always外的。

2023-07-31 20:03:53 25 1

原创 HDLBits刷题(2_5_7)Bcdadd100

1.就是generate for的格式,for begin后要接 :模块名称。2.中间定义了cout_next来寄存每一次的进位信息,最后要记得将模块的cout赋值为cout_next的最后一位。3.generate使用的i,一定要用genvar来定义,在generate内外定义均可。4.数的乘法就是用 *符号。

2023-07-31 18:09:39 370 1

原创 HDLBits刷题(2_5_6)Adder100i

为了鼓励您实际实例化全加器,还可以输出纹波进位加法器中每个全加器的进位。cout[99] 是最后一个全加器的最终进位,也是您通常看到的进位。100位全加器,也就是三个100位a,b,cin对应位相加,然后再用一个100位向量cout来记录每一位的进位,cin的第一位就是外部输入的进位信号,而后每一位cin其实等于上一位的cout。1.根据思路,只有第一位的sum[0],cout[0]是用到外部cin,其余位的cin都是上一位cout,所以将第一位单独拿出来赋值即可,后续都满足循环格式。

2023-07-31 16:51:23 161 1

空空如也

空空如也

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

TA关注的人

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