微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教verilog存储器的读写

请教verilog存储器的读写

时间:10-02 整理:3721RD 点击:
新学verilog,我现在定义一个reg[3:0] aa[255:0]的存储器数组,然后把一大段不规则bit流按顺序装入a[0]~a[255],a[0]装满后,再装下一个存储单元。怎么装进去,如果要读,怎么按照装的顺序读出来?其实就是对每个存储器单元的各个位怎么读写的问题,请教高手帮帮忙,谢谢!

改变地址就可以了。你是用RAM实现,还是RGF。不一样的

数组只能一次性对全体进行读写,不能单独访问某个比特。
对于比特流,你只能写个缓存器,存满256个数据,一次性写入aa。
读也是,一次性就读书256比特数据。

不要把erilog当c语言用,这个东西就应该开一个ram往里面填。

不懂!

不懂怎样定义可直接存储,使用?

不懂怎样定义可直接存储,使用?

谢谢各位解答,还有个问题,就是,如果有一个RAM,宽度为8,深度是255,我要把bit流数据散乱的放入RAM中,例如:把第一个数据写到第1个单元的第5位。接着第二个数据写入第6个单元的第2位,这般打乱顺序的放数据,如何去实现?

    个人理解:RAM不支持按位读写的,其最小只能按字节读写的

你说的数据的交织吗?

我看小编说的是交织,我以前做过

    正解

我有个想法,不知道是不是靠谱。
module(input din, input clk);
reg [7:0] data;
reg [7:0] aa [0:255];
always@(clk)
begin
data <= (din << $random);
aa[$random] <= data;
end
endmodule
就是不知道$random能不能综合出来,反正随机数产生的电路是又得,或者小编可以自己搭电路。

恩 对 我在做数据交织器,是一个伪随机的交织器,比网上的复杂一些,但还是比较容易,就是有些细节方面的东西不懂



    请问这个问题你是怎么解决的?



   自己写好数据,用$readmemb系统函数

随便想了个办法 你可以把要写的bit放在一个8bit全0寄存器 然后读使能ram中你要写的地址单元 把读出的8bit与你之前寄存的8bit按位异或一下 在写入ram的该地址。不知可否,如果可行,中间时序逻辑需要小费一下周折

随便想了个办法 你可以把要写的bit放在一个8bit全0寄存器 然后读使能ram中你要写的地址单元 把读出的8bit与你之前寄存的8bit按位异或一下 在写入ram的该地址。不知可否,如果可行,中间时序逻辑需要小费一下周折

随便想了个办法 你可以把要写的bit放在一个8bit全0寄存器 然后读使能ram中你要写的地址单元 把读出的8bit与你之前寄存的8bit按位异或一下 在写入ram的该地址。不知可否,如果可行,中间时序逻辑需要小费一下周折

别用C语言的思维去想问题,如果你定义了reg [3:0] a [255:0],那么a[0] ~ a[255]都是独立4 bit的寄存器,你同时写入它们也无所谓,256个4bit寄存器,必须独立操作,操作顺序无所谓。


如果我读数据的时候需要将a[0]~a[255]数据的第0位全部一起读出来该怎么表示呢?

据我所知,verilog 2005可以用a[i][j]这种形式,就方便你选择bit了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top