【Verilog-HDLBits刷题】2022.02.25学习笔记

1、进行移位的时候,如果整体中只有个别位置的值是特殊的,则可以先统一赋值,然后将特殊位置的值再赋值一遍,覆盖掉之前的赋值,这样就可以减少很多麻烦。(当然用位拼接的方法也可以,但当位数过多时,容易混乱)
例:
【Verilog-HDLBits刷题】2022.02.25学习笔记_第1张图片
移位的代码:

always @(*) begin
		q_next = q[4:1];	// Shift all the bits. This is incorrect for q_next[4] and q_next[2]
		q_next[4] = q[0];	// Give q_next[4] and q_next[2] their correct assignments
		q_next[2] = q[3] ^ q[0];
	end

简单明了。

2、左移n位相当于乘2的n次方,左移时无需考虑是否为有符号数,但右移时需要注意符号位,移位后补最高符号位。

3、为了方便操作,q[0]还可以表示成q[{0,0,0}],看着奇奇怪怪的,但结果是正确的!

4、对于对一个数值左右两边进行操作的运算,可以将原来的数进行左移和右移,然后,对左移和右移的数进行按位操作即可。
例:将Rule90游戏,当前数值等于左右两个数的异或值: q <= {1’b0,q[511:1]} ^ {q[510:0],1’b0};

5、康威的生命游戏。

你可能感兴趣的:(学习,fpga开发,verilog)