本发明涉及一种在片上系统(systemonchip,soc)中通过该发明接口,虚拟spiflash的功能,从而实现实体spiflash的功能。
背景技术:
soc通常将微处理器、模拟ip核、数字ip核和存储器(或片外存储控制接口)集成在单一芯片上。soc可以使应用产品实现小型、轻量、低功耗、多功能、高速度和低成本,因此具备较强的市场竞争力,主要广泛用于计算机、通信、消费、工控、交通运输等领域。
对于多核架构的微系统,不同处理器需要外挂各自独有的非易失性存储器作为上电重启的代码存储,因此会浪费很多的存储芯片。而该设计可以通过虚拟存储器的接口功能,将实际的存储空间整合,将不同核的代码放在同一块存储空间中,完成虚拟存储器功能,实现节省存储的功能。
技术实现要素:
鉴于现有技术不同核的代码需要存储在各自的存储器中。本设计发明了一种模块以两种操作模式解决以上问题。为了实现上述目的,本发明采用了如下技术方案,虚拟flash电路包括:soc总线模块、mux模块、寄存器模块、数据缓存模块、数据备份模块、控制模块以及spi从模块。
所述soc总线模块主要为总线接口,如ahb、apb、axi等。主要用于处理总线协议。
所述mux模块为选择模块,用于选择总线对寄存器还是数据缓存模块进行操作。
所述寄存器模块主要为模块实现可配置,包括中断寄存器用于中断使能、模式寄存器用于对两种操作模式进行选择,源地址寄存器用于配置目标文件的地址,状态寄存器用于读取该模块现在的状态、字节计数寄存器用于配置传输文件的大小。
所述数据缓存模块用于缓存从源地址搬运过来的数据。
所述数据备份模块用于备份已通过spi接口发送的数据,从而实现校验从发过程。
所述控制模块用于对数据进行选择和转换。
所述spi从模块用于外部接口通信,与其他核的spi主接口相连,从而代替实际的spiflash的spi从接口。
所述的两种模式分别为连续传输模式和非连续传输模式。对于连续传输模式预先通过soc进行模式选择和源地址配置后,通过dma或cpu将数据按存储空间顺序搬运,直到字节计数器计数为0。对于非连续模式,spi从接口通过接受24位地址,在完成20位地址采样后,产生中断进行数据的搬运。实现数据的预先搬取。
本发明的有益效果为:第一,通过接口模块代替了实际的spiflash芯片,从而达到节约芯片的效果。第二,相比于普通的spi从接口,具有速度较快,可备份已发送数据,具有数据预先传输的功能。第三,具有两种操作模式,可考虑实际情况和要求而合理选择。从而提高效率。
附图说明
图1为采用该发明与传统方式对比图。
图2为接口模块的架构示意图。
图3为连续发送模式的流程图。
图4为非连续发送模式的流程图。
图5为数据预取的时序图;
具体实施方法
为使本发明的目的,计数方案和优点更加清楚,下面将结合附图对本发明实施方案作进一步的详细描述。
图1为采用虚拟spiflash与dsp通过传统spi加载方式时的架构对比图,通过该发明与soc相连接实现了dsp可通过以spi方式正常加载,并且可将存储空间用于存储多个芯片的程序。
图2为模块架构图,模块有两个接口,一个是和总线连接的ahb接口,一个是和外部连接的spi从接口,总共7个模块。其中可通过ahb总线访问的模块有寄存器模块和数据缓存模块。
数据的操作模式分为两种,连续发送模式和非连续发送模式。
图3为连续模式的发送流程图,该模式下发送数据的发送顺序需要连续的。该模式相比较于普通的spi从接口可以实现自动的数据备份,在校验从发时无需再从源地址取数据,而直接可以从数据备份区取数据。省去了总线操作时间,可以加速传输速度。操作过程如下:1.通过cpu初始化,配置模式、源地址、字节计数寄存器,若需要使用dma传输数据,还需要配置dma相应寄存器;
2.dma/cpu从源文件头传输数据缓存空间大小数据到接口的数据缓存区;
3.控制模块将数据从数据缓存模块取出到逻辑控制模块,并对数据备份模块写入相同数据。等待spi接受完指令和地址后对数据进行选择和发送;
4.每当控制模块从数据缓存模块取一半的数据,寄存器会产生一次中断,dma/cpu再传输相应大小的数据到数据缓存模块。同时控制模块从数据缓存模块取数据,对数据备份模块写数据,判断是否接收到新地址,若是则跳到(5),否则直到传输完成跳到(7);
5.每当spi从接受到一个地址后与上个地址进行对比,判断是否相同,若相同,则跳转到(6),若不同,则跳转到(3);
6.控制模块从数据备份模块取数据,完成选择和发送。判断是否接受到新地址,若是,则跳到(5),否则跳到(4);
7.结束。
图4为非连续模式的发送流程图,该模式下发送数据的发送顺序可以为非连续的。该模式可以实现数据预期和已发送数据的备份功能。相比较上一种模式而言可以实现数据的非连续读取,但速度没连续模式的速度快。操作过程如下:
1.通过cpu初始化,配置模式、源地址、字节计数寄存器;
2.spi从机等待指令和地址,完成指令采样和24位地址的前20位地址采样后产生中断信号;3.删除数据缓存模块中的数据,cpu或dma从采样到的20位加4’b0000地址取4x32bit数据发送给数据缓存模块;
4.控制模块从数据缓存模块取出数据同时向数据备份模块写入读出的数据,并根据后4bit数据进行选择,发送给spi从机;
5.每当控制模块从数据缓存模块取一半的数据,寄存器会产生一次中断,dma/cpu再传输相应大小的数据到数据缓存模块。同时控制模块从数据缓存模块取数据,对数据备份模块写数据,判断是否接受到新地址,若是则跳到(6),否则直到传输完成跳到(8);
6.每当spi从接受到一个地址20bit后与上个地址的20bit进行对比,判断是否相同,若相同,则跳到(7),若不同,则跳到(3);
7.控制模块从数据备份模块取数据,完成选择和发送。判断是否接受到新地址,若是,则跳到(6),否则跳到(4);
8.结束。
图5为数据预取时序图,mosi为spi主发送的数据,传输开始时会有8bit指令和24bit地址。从机在sclk上升沿采样。当从机采样完指令和20bit地址后虚拟spiflash开始从源地址取数据,即图中的a。在采样完24bit地址后spi从机开始发送数据,即图中b位置。