首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅将稀疏内存位发送到另一个模块

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

Stack Overflow用户
提问于 2015-07-07 12:49:31
回答 1查看 347关注 0票数 0

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

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

EN

回答 1

Stack Overflow用户

发布于 2015-07-07 14:36:52

如果您的稀疏位的位置是固定的(固定的内存地址和固定的数据位地址),您可以只获取每个位,并将它们打包到总线中,例如:

代码语言:javascript
复制
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位信号发送到另一个模块。

简单的内存总线接口:

代码语言:javascript
复制
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_;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31259945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档