如何只将稀疏内存位发送到另一个模块

时间:2015-07-07 04:49:31

标签: verilog

我有一个包含512位的缓冲区,我想只将稀疏位发送到Verilog中的其他模块。

我的记忆就像reg[511:0]mem[68]。另一个模块一次可以接受32位,它不需要存储器中的所有512位,只需要稀疏位。如何在Verilog中发送这些稀疏位?

1 个答案:

答案 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_;