请教verilog存储器的读写
改变地址就可以了。你是用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了。
