目录
原题复现
这篇博文意义不大,纯粹练习一下,用逻辑门对向量(多比特数据)的操作。
在 in[99:0]中为您提供了100位输入向量。我们想知道每个位与其邻居之间的一些关系:
out_both:此输出矢量的每一位都应指示相应的输入位及其左侧的邻居是否均为“ 1”。例如,out_both [2]应该指示in [2]和in [3]是否都为1。由于in [3]在左边没有邻居,答案很明显,所以我们不需要知道out_both [3 ]。
out_any:此输出向量的每一位都应指示相应输入位及其右侧的邻居是否为“ 1”。例如,out_any [2]应该指示in [2]或in [1]是否为1。由于in [0]在右边没有邻居,答案很明显,所以我们不需要知道out_any [0 ]。
out_different:此输出向量的每一位都应指示相应的输入位与其左侧的邻居是否不同。例如,out_different [2]应指示in [2]与in [3]是否不同。对于此部分,将向量视为环绕,因此in [99]的左邻是in [0]。
我的设计
对应的RTL电路设计为:
module top_module(
input [99:0] in,
output [98:0] out_both,
output [99:1] out_any,
output [99:0] out_different );
assign out_both = in[99:1] & in[98:0];
assign out_any = in[99:1] | in[98:0];
assign out_different = in[99:0] ^ {in[0], in[99:1]};
endmodule