SRAM问题。
大家好。请问一下SRAM问题,困扰了好几天了。我是使用SRAM储存图像的,现在实验只存储四个点。现象是,存储后取出来的点,不断的在显示器上闪烁。同时显示的点的颜色也是错误的。因此推断是SRAM存储有问题。下面是写SRAM代码:
if((counter_y==10'd200)&&(counter_x==24'd400))//读取到第一个点
begin
wr_cnt <= 17'b0;//写控制位
state <= WAIT;
send_c <= 1'b0;
wr_cnt <= 17'b1;
sram_we <= 1'b0;
sram_ce <= 1'b0;
sram_oe <= 1'b0;
end
assign sram_data = (state==WAIT)? EDAT:23'hzzz;//EDAT是FPGA 与图像芯片RGB管脚相连接的
SRAM读代码:
else if((counter_y==10'd500)&&(counter_x==24'd400))//读出第一个点
begin
send_c <= 1'b0;
wr_cnt <= 17'b0;
sram_we <= 1'b1;
sram_ce <= 1'b0;
sram_oe <= 1'b0;
Red_1<=sram_data;//Red_1,Grn_1,Blu_1是显示输出数据
Grn_1<=sram_data;
Blu_1<=sram_data;
end
请问这样的存取方法有问题吗?
luleiwangqi 发表于 2015-8-8 15:18
请问这样的存取方法有问题吗?
没看明白你的程序,如果你是单次写,一次最多只能写入16bit数据,如果单次读,一次最多也只能读出16bit数据,因此怀疑你没有搞清楚SRAM读写时序,建议好好阅读下SRAM技术手册
在群里好像看到你把sram的数据端口做成三态的,我用sram都没这么搞过,就算是最简单的单端sram,写端口跟读端口都是独立开来的。
感觉楼主还是应该先弄清楚sram的读写时序,毕竟sram的读写时序是比较简单的。
一片sram的确是16位,但是我是把地址同时给两片sram。这样就是实现实现了24位数据了。我感觉这个时序关系没有问题啊。就是实现不了。
牛见君 发表于 2015-8-8 21:39
在群里好像看到你把sram的数据端口做成三态的,我用sram都没这么搞过,就算是最简单的单端sram,写端口跟读 ...
额,我看了技术手册了,写的时候所有控制位都拉低。读的时候写拉高。但是怎么就实现不了呢。
你用的是外部硬件的sram,还是fpga内部的sram,如果是外部sram,还要考虑硬件故障的可能。
你可以先仿真测试代码的功能再上硬件测试。
牛见君 发表于 2015-8-9 09:07
你用的是外部硬件的sram,还是fpga内部的sram,如果是外部sram,还要考虑硬件故障的可能。
你可以先仿真 ...
硬件是确定没有问题的,因为他其他SOC的SRAM读写是正常的,这个输入比较特别,仿真不太好弄啊。
luleiwangqi 发表于 2015-8-9 09:13
硬件是确定没有问题的,因为他其他SOC的SRAM读写是正常的,这个输入比较特别,仿真不太好弄啊。
对了。是外部SRAM。我感觉很好操作啊。怎么在这就行不通了呢。
如果你仿真功能可以实现的话,那就要检查一下管脚分配,硬件有没有问题了。
页:
[1]