我有一个包含512位的缓冲区,我只想将稀疏的位发送到Verilog中的其他模块。
我的记忆就像reg[511:0]mem[68]一样。另一个模块一次可以接受32位,它不需要内存中的所有512位,只需要稀疏位。如何在Verilog中发送这些稀疏位?
发布于 2015-07-07 14:36:52
如果您的稀疏位的位置是固定的(固定的内存地址和固定的数据位地址),您可以只获取每个位,并将它们打包到总线中,例如:
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_;https://stackoverflow.com/questions/31259945
复制相似问题