该压缩包包含使用Verilog语言编写的FPGA Cyclone2与SRAM IS61LV25616之间通信的代码以及相关的Quartus项目配置文件,适用于硬件设计和验证。
Cyclone2 FPGA读写SRAM IS61LV25616 实验Verilog逻辑源码Quartus工程文件
```verilog
module SRAM_TEST (
input sys_clk, // 系统时钟信号输入
input sys_rst_n, // 系统复位信号,低电平有效
inout [15:0] SRAM_DQ,
output reg [17:0] SRAM_ADDR,
output reg SRAM_CE,
output reg SRAM_OE,
output reg SRAM_WE,
output reg SRAM_UB,
output reg SRAM_LB,
output reg [ 7:0] LED
);
// 寄存器定义
reg [3:0] div_cnt;
reg sram_clk;
reg [5:0] ctrl_cnt;
reg [15:0] sram_data_lck;
reg [15:0] sram_din;
// 主程序
// 用于将系统时钟信号分频为SRAM控制时钟(周期为32个系统时钟)
always @(posedge sys_clk or negedge sys_rst_n) begin
if (sys_rst_n == 1b0)
div_cnt <= 4b0;
else
div_cnt <= div_cnt + 4b1;
end
// 生成SRAM控制时钟信号
always @(posedge sys_clk or negedge sys_rst_n) begin
if (sys_rst_n == 1b0)
sram_clk <= 1b0 ;
else if (div_cnt < 8d7 ) // 注意这里的条件表达式应为 div_cnt < 4d7
sram_clk <= 1b1;
else
srm_clk <= 1b0;
end
// SRAM控制信号生成
always @(posedge sram_clk or negedge sys_rst_n) begin
if (sys_rst_n == 1b0)
ctrl_cnt <= 6b0;
else
ctrl_cnt <= ctrl_cnt + 6b1;
end
// 控制地址计数器,用于读写操作的控制信号生成
always @(posedge sram_clk or negedge sys_rst_n) begin
if (sys_rst_n == 1b0)
SRAM_ADDR <= 18b0;
else if (ctrl_cnt < 6d32 ) // 注意这里的条件表达式应为 ctrl_cnt<6d32
SRAM_ADDR <= SRAM_ADDR + 1;
end
```
注意:上述代码中,`div_cnt < 4d7` 和 `ctrl_cnt < 6d32` 表达式的具体数值可能需要根据实际设计需求进行调整。