Verilog学习日志(2021.8.18&2021.8.19)

2021.8.18

(107)设计一个带有左右方向移位和置位端的移位寄存器。

这题我认为解法有两种:

  • 通过与或门直接把逻辑函数通过最小项之和的形式列出来;
  • 通过在always过程块当中的多次条件语句来进行赋值。

//使用第①种方法的时候出现incorrect:

不知道这个逻辑函数有没有什么问题...

//不过使用第②种方法可以完美解开题目。

(108)设计一个带有使能端、置位端和控制端的算术移位寄存器,其中控制端控制移位的方向和算术移位的位数。做这题既可以使用之前的多重if-else结构,也可以使用之前的case结构。

//这题向我科普了算术移位的定义。算术左移和逻辑左移是一样的,而算术右移需要保留移位前信号的符号端(也就是最高位)。

(109)设计一个LFSR(Linear Feedback Shift Register,线性反馈移位寄存器)。Galois LFSR是一种特殊的移位寄存器,虽然不知道它的功能和内部结构是啥,但是根据电路图还是可以把它设计出来的..

//可以看一下参考答案的代码,和我自己的好像有很大的不同。

//之后有时间去学一下LFSR和Galois LFSR是啥玩意。

//Galois LFSR是一种伪随机数生成器,相比普通的多级寄存器组,会在不同级的寄存器输入端多一个异或逻辑的反馈回路。

(110)设计另外一个LFSR。这题有两种思路:

①我的思路是设计一个有MUX和D触发器的module,然后再通过层次化设计的思路来设计出整个电路。

②是中文导学上面的思路,观察这个电路图发现三个D触发器的作用可以用向量对向量的过程赋值作用来一次表示,所以用这个思路写出来的代码代码量小,而且思路很巧妙,很nb。

(111)设计一个足够长(有32位)的LFSR,这个LFSR相当于一个用32个D触发器,然后第32、22、2、1位有异或逻辑的移位寄存器。

//实现这种LFSR实例化是行不通的,除非你想实例化32次...所以只能用向量的方法

//但是我的代码出现了问题...

​​​​​​​

//以上代码出现了仿真不一致的问题。不知道问题出在哪..中文导学上面的答案跟我的差不多,只不过它没有wire向量d,而是直接通过“{}”把tap端的异或关系绑在q里面了。

2021.8.19

1.把移位寄存器部分的题目做完吧。

(112)按照电路图设计一个移位寄存器,我使用了三种思路:generate for语句结构多重实例化、向量法设计触发器、平面设计,三种思路都做出来了。

(113)按照电路图设计一个移位寄存器,我使用的思路照样是设计一个包含D触发器和两个MUX的module,然后用generate for语句结构多重实例化。

(114)设计一个3输入的LUT。先实例化8个DFF,让它们首尾相连,然后让一个输入接在最后的DFF的D接口。把8个DFF的输出接口Q端接上一个8选1的MUX,最后再通向输出Z。

//按照原参考答案,使用了这样的语句来表示MUX:

​​​​​​​

我表示学到了。

(115)设计一个序列生成器。不懂题目所要介绍的规则具体是啥,反正能做出来就行。这题指出的rule90对我未来的设计似乎并不重要。

(116)同上一题,就是逻辑规则没有直接跟你说,要你自己找出来而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值