我有一个包含512位的缓冲区,我想只将稀疏位发送到Verilog中的其他模块。
我的记忆就像reg[511:0]mem[68]
。另一个模块一次可以接受32位,它不需要存储器中的所有512位,只需要稀疏位。如何在Verilog中发送这些稀疏位?
答案 0 :(得分:0)
如果您的稀疏位'地方是固定的(固定存储器地址和固定数据位地址),你可以只获取每个位,然后将它们打包成一个总线,例如:
wire [511:0] data_mem0 = mem[x1];
wire [511:0] data_mem1 = mem[x2];
wire [31:0] sparse_bits = {data_mem0[7:0],data_mem1[7:0],data_mem0[511:504],data_mem1[511:504]};
如果稀疏位'地方不固定,那么事情就会变得复杂。您可以通过简单的内存访问总线接口来更好地包装内存。通过该接口,获取所有备用位,然后将它们打包成32位总线。现在您可以将此32位信号发送到另一个模块。
简单的内存总线接口:
module mem_if(
addr,
rw,
din,
dout,
clk,
rst_
);
input [6:0] addr;
input rw;
input [511:0] din;
output [511:0] dout;
input clk;
input rst_;