此次使用的 ssram型号为 CY7C1462AV33
ssram的读和写都在两个时钟周期内完成,即写时钟周期内,第一个clk上升沿时采集 addr ,w_n等有效信号,第三个clk上升沿时将要写的数据采样进去。
ssram主要用在存储ccd的图像,40MHz的速度。
一开始采用的想法是状态机来实现一个读和写的周期,及完成一个读和写需要两个时钟周期。按照这个想法写了一下verilog代码。
后来发现这个速度跟不上,而其对于官方给的ssram的读写时序就是一个流水线的操作。这样可以利用每个时钟周期。给出verilog代码:
module line_ssram(
clk,
addr,
w_data,
r_data,
cs_n,
w_n,
r_n,
ssram_clk,
ssram_data,
ssram_addr,
ssram_be_n,
ssram_ce1_n,
ssram_ce2,
ssram_ce3_n,
ssram_we_n,
ssram_oe_n,
ssram_cen_n,
ssram_adv_ld_n,
ssram_mode,
ssram_zz
);
input clk;
input [20:0] addr;
input [15:0] w_data;
output [15:0] r_data;
input cs_n;
input w_n;
input r_n;
output ssram_clk;
inout [15:0] ssram_data;
output [20:0] ssram_addr;
output [1:0] ssram_be_n;
output ssram_ce1_n;
output ssram_ce2;
output ssram_ce3_n;
output ssram_we_n;
output ssram_oe_n;
output ssram_cen_n;
output ssram_adv_ld_n;
output ssram_mode;
output ssram_zz;
reg ce3_n_temp;
reg