2 FPGA实现SPI接口--SPI接口芯片的实际使用( 八 )

<例化模块>----------------------------------------------------------------//全擦除控制模块spi_bulk_erase_ctrl spi_bulk_erase_ctrl_inst(.sys_clk(sys_clk ),.sys_rst_n(sys_rst_n ),.send_done(send_done ),.spi_start(spi_start ),.spi_end(spi_end ),.data_send(data_send ));//SPI驱动spi_drive spi_drive_inst(.sys_clk(sys_clk ),.sys_rst_n(sys_rst_n ),.spi_start(spi_start ),.spi_end(spi_end ),.data_send(data_send ),.data_rec(),.send_done(send_done ),.rec_done(),.spi_miso(spi_miso ),.spi_sclk(spi_sclk ),.spi_cs(spi_cs),.spi_mosi(spi_mosi ));endmodule
2.4.3、及仿真结果
比较简单直接例化全擦除模块和仿真模型即可 。需要注意的是的全擦除需要等待的时间较长(40s),为了尽快完成仿真,我把这个等待参数改成了1s 。
//------------------------------------------------//--SPI驱动仿真--全擦除仿真//------------------------------------------------`timescale 1ns/1ns//时间单位/精度//------------<模块及端口声明>----------------------------------------module tb_spi_bulk_erase();regsys_clk;regsys_rst_n ;wire spi_miso ;wire spi_sclk ;wire spi_cs;wire spi_mosi ;//------------<例化被测试模块>----------------------------------------//全擦除模块spi_bulk_erase spi_bulk_erase_inst(.sys_clk (sys_clk ),.sys_rst_n (sys_rst_n ),.spi_miso (spi_miso ),.spi_sclk (spi_sclk ),.spi_cs(spi_cs),.spi_mosi (spi_mosi ));//m25p16仿真模型m25p16memory (.c(spi_sclk ), .data_in(spi_mosi), .s(spi_cs), .w(1'b1), .hold(1'b1), .data_out(spi_miso)); //------------<设置初始测试条件>----------------------------------------initial beginsys_clk = 1'b0;//初始时钟为0sys_rst_n <= 1'b0;//初始复位#20//20个时钟周期后sys_rst_n <= 1'b1;//拉高复位,系统进入工作状态 end//------------<设置时钟>----------------------------------------------always #10 sys_clk = ~sys_clk;//系统时钟周期20nsendmodule
仿真结果如下:
命令窗口打印内容如下(单位:ps):约3us处开始进行扇区擦除操作,1s后扇区擦除操作完成 。与预期结果一致 。
2.4.4、上板验证
我们首先使用写模块往区域1(扇区0x00页0x00地址0x00~0x09)写入10个数据(从0x00开始累加2),然后往区域2(扇区0x10页0x10地址0x10~0x19)写入10个数据(从0x00开始累加4) 。
接着调用全擦除模块,接着再使用读数据模块读取这两个区域的数据,根据读出的数据来验证数据是否被全部擦除了 。
区域1写数据波形图(依次写入0x00、0x02````0x12):
区域2写数据波形图(依次写入0x00、0x04````0x24):
全擦除模块波形图:与仿真波形图一致 。
接着调用读数据模块读取区域1的数据:读取的数据全部为0xFF,说明数据被擦除了 。
接着调用读数据模块读取区域2的数据:读取的数据全部为0xFF,说明数据被擦除了 。
以上就证明我们的全擦除模块是成功擦除了所有扇区 。
3、其他