第36卷第2期 唐山师范学院学报 2014年3月 Vo1.36No.2 Journal ofTangshan Teachers College Mar 2014 基子FPGA的SPI接口Flash控制器设计 及在存储配置数据中的应用 赵庆平,姜恩华 (淮北师范大学物理与电子信息学院,安徽淮北235000) 摘要:介绍了SPI工作原理,给出了一种基于FPGA的SPI控制器的设计方法。利用FPGA丰富的逻辑 资源以及产生精确时序的能力,非常方便地对SPIflash进行读写、擦除等操作,从而能快速、准确地存储数据 阐述SPI控制器的设计过程,使用Modelsim进行仿真验证,并用VHDL硬件描述语言进行编程,下载到FPGA 开发板上进行测试验证,对SPI接口Flash进行操作。证明了系统设计方法的正确性和可靠性。该方法对FLASH 存储控制系统的设计具有普遍适用性,可用于对FPGA配置进行保存。 关键词:SPI控制器;FPGA;VHDL设计;Modelsim仿真 中图分类号:TP332-3 文献标识码:A 文章编号:1009.9115(2014)02.0069.04 D0I:10.3969 ̄.issn.1009-91 15.2014.02.020 Design of SPI Interface Flash Controller Based on FPGA and the .Application in Storing C0nfigurati0n Data ZHAO Qing-ping,JIANG En-hua (School of Physics and Electronic Inform ̄ion,Huaibei Normal University,Huaibei 235000,China) Abstract:It introduces the operating principles of SPI(serial peripheral interface)and gives a designed method by using SPI controller based on FPGA(Field Programmable Gate Array).We can expediently read—write and wipe SPI lfash to quickly and accurately storage data with rich logical resources and accurate time series making by FPGA.It also expounds the designing process of SPI controller,which utilizes the simulation and veriifcation by Modelsim and uses VHDL hardware description language controller to program,and then download the program to FPGA development board to test and verify and finally operates the SPI interface flash.It is proved that the method is correct and reliable,and has general applicability to the system designing of the FLASH controller and can be used to save the FPGA configuration. Key Words:SPI controller;FPGA;VHDL design;Modelsim simulation FPGA(Field Programmable Gat Array,现场可编程门 种高速度、全双工、同步串行通信接口,主要用于微处理 阵列)是在PAL、GAL、EPLD以及CPLD等可编程逻辑 器、微控制器和外围扩展芯片之间的连接【 。利用SPI Flash 器件的基础上发展出来的产物。由于FPGA芯片需要被反 大容量、读写速度快、成本低廉以及数据在断电后不丢失 复烧写,只能采用一种易于反复配置的结构。目前主流 的特点,可以将FPGA的配置数据存储于SPI Flash中I 。 FPGA都采用了基于SRAM工艺的查找表结构。由于FPGA 文中采用赛灵思公司的Virtex.5和意法半导体公司的 采用SRAM工艺,芯片无非易失性,所依掉电后丢失其内 M25P16进行设计。对SPI控制器进行仿真,符合SPI时 部的逻辑配置【】】。 序要求。与PC机进行通信测试,写入和读出的数据吻合。 串行外设接口(Serial Peripheral Interface,SPI)是一 将FPGA配置数据存储在M25P16中,实现了FPGA配置 基金项目:国家自然科学基金(41275027),安徽高校省级自然科学研究项目( 2013z228),安徽高校省级自然科学研究 重大项目(KJ20l2ZD06) 收稿日期:2013.11.2 作者简介:赵庆平(1972.),男,辽宁阜新人,硕士,讲师,研究方向为FPGA及嵌入式系统设计。 .69. 第36卷第2期 数据的掉电不丢失。 1系统总体方案设计 唐山师范学院学报 CS SCK 2014年3月 使用德致司出品的开发板Genesys,该开发板使 Master MISO MOSI Slave 用的FPGA芯片是xilinx公司的 ̄rtex.5,Virtex-5系列采 用第二代高级芯片组合模块(AsMBLTM)列式架构,采 用业界一流的65 nln铜工艺技术,支持多达330 ooo个逻 辑单元,6个时钟管理模块,多达1 200个用户接口,提 图3 SPI接口 主机以及从机之间是通过4根信号线进行连接的,它 们分别是CS、SCK、MOSI和MISO。对它们的定义如下: CS 从机片选信号,由主机控制输出; 供从1.2 V到3.3 V的广泛的I/O标准范围,高达16.4 Mb 的集成模块存储器,与Select IO技术配合使用,简化源同 步接口I 。 Flash芯片采用ST Microelectronics公司的M25P16 该芯片是16 Mbit(2 Mx8)串行flash存储器,兼容高速 SPI接口。M25P16包含32个扇区,每个扇区有256页, 每一页有256个字节。该芯片由2.7V一3.6V单电源供电, 最大50 MHz工作时钟,100 000次的擦除和重写,可以保 持20年时间[5j 本系统的系统框图如图1所示。 图1系统总体方案设计 图1中,FPGA作为电路核心,连接上位机和SPI Flash 存储器。一方面接收来自上位机PC串口的数据,并将数 据存储到Flash中。另一方面,从Flash中读出数据并通过 串口发送到上位机。 在FPGA芯片中需要构建三个模块,分别是UART控 制器,FIFO模块以及SPI控制器。如图2所示。 FPGA 图2 FPGA内部模块设计 上位机和FPGA之间是通过RS232进行通信的。RS232 是PC机通信常用的接口,遵循异步传输标准。RS232采 用UART协议,需要在FPGA内构建UART模块,实现数 据在上位机和FPGA之间的传输。在FPGA中构建SPI控 制器,为flash提供时钟,并对其进行擦除和读写操作。 UART和SPI模块的时钟不同,因此需要添加FIFO作为 两者之间数据缓冲。因为接收的串口数据被串并转换为8 bits,与之相连的FIFO(即先进先出队列)位宽定为8bits, 深度设为256个单元。 2 SPI接口工作原理 SPI接口可以分为主机(Master)以及从机(Slave) 两个部分,其结构框图如图3所示。 .70- SCK:同步时钟信号线,用来对主机和从机的数据传 输进行同步,由主机发出控制输出,从机则在SCK的上升 沿和下降沿接收以及发送数据; MOSI:主机作为输出、从机作为输入信号,主机在下 降沿(或上升沿)由此信号线发数据给从机,而从机在上 升沿(或下降沿)由此信号线接收发来的数据; MISO:主机输入、从机输出信号,从机在上升沿(或 下降沿)通过该信号线发送数据给主机,主机在下降沿(或 上升沿)通过该信号线接收该数据[6】。 其工作原理为:当无数据需要传输在主机和从机之间 时,主机通过控制SCK输出低电平,CS则输出高电平, SPI总线就会处于空闲的状态;如果有数据需要进行传输 时,主机通过控制CS输出为高电平,SCK则输出时钟信 号,SPI总线就会处在工作状态:在某个时钟边沿,从机 或主机并行发送数据,将数据各自传输到MOSI以及 MISO上;而在下一个时钟沿,从机以及主机同时接收数 据,各自将MISO以及MOSI上的数据接收并进行存储; 而当数据所有全部传输完成后,主机就会控制SCK输出为 空闲的电平,CS则输出为无效的电平,而SPI总线就会又 回到空闲的状态。到此,一个完整的SPI数据总线传输过 程完成【7J口 3 SPI控制器 SPI控制器的设计采用的是verilog HDL硬件语言。 Verilog HDL是目前使用非常广泛的硬件描述语言之一。 Verilog描述的器件在编译和综合时适应能力强,系统可以 自动优化。虽然对应语言的解读性能较弱。但是仿真以后 的纠错能力强[8J。 本文设计的SPI控制器主要完成以下两个主要任务: 写flash:将上位机发送来的256字节数据写入flash 的某一页中: 读flash:从flash写有数据的一页中读出并传送到上 位机显示。 将FPGA配置数据存储在Flash芯片内,重新上电, 读取Flash中数据对FPGA重新配置。 写flash操作首先要对flash进行擦除操作,输入擦除 指令并等待3 s,然后进行写操作。写操作要输入8位 第36卷第2期 唐山师范学院学报 2014年3月 Digi!ent公司的FPGA开发板Genesys进行了验证。完成了 [4】佟吉刚,张振新.基于FPGA的无线传感器网络节点设计 [J】.传感技术学报,2009,22(3):417-421. [5]关珊珊,周洁敏.基于Xilinx FPGA的SPI Flash控制器的 设计与验证[J].电子器件,2012,35(2):216-220. SPI Flash控制器的逻辑仿真,对SPI Flash的读写进行了 验证,并且利用此Flash实现了对FPGA的重新上电的自 动配置功能。 , 本设计在FPGA芯片上实现,具有较高的可移植性, 控制器经过简单修改就可以用于控制其它型号的SPI lfash 芯片,因此具有广泛的适用性。 [6】赵新雨,许忠仁,付贵增,朱文伟.基于FPGA与单片机的 SPI接口的实现[J]_工业仪表与自动化装置,2010(2):32- 33. [参考文献】 [1】李冬梅,王延杰,王长宇,等.基于FPGA的高速实时图像 采集和自适应阈值算法[J].吉林大学学报(工学版),2010, 40(2):534-537. [7]王松.基FPGA的串行外围接口SPI设计与实现[J】.微 计算机信息,2010,26(11-2):117.119. [8】王军海.基于Verilog HDL的DDS设计【D】.武汉:武汉理 工大学。2007. [9]孙航.Xilinx可编程逻辑器件的高级应用与设计技巧 [M】.北京:电子工业出版社,2004. [10]范静,陈文艺.基于Modelsim与Matlab/Simulink联合 仿真技术的接口与应用研究[J].西安邮电学院报,2010, 15(3):72・75. [2j罗莉,夏军'邓宇.通用sPI Fl础控制器韵设讳与验证【J】. 计算机工程,201i,37(8):22—27. [3】郑川.Step by st印现场可编程门阵列设计入门与进阶 【M】,西安:西安电子科技大学出l版社,2008. (责任编辑、校对:田敬军) 接 箩27页 地市在居住、家庭设备及服务所占总消费 比例上的变化有滞后效应。 (4)在医疗保健所占总消费上体现出的第一、二类城 的其他地市仍然处于比较低的消费水平。 [参考文献】 [1】张小勇,李培峦,常志勇.我国农村居民消费现状及影响 因素分析[J].数学理论与应用,2009,30(2):53-56. [2】罗彦平.2008年中国农村居民消费支出结构对应分析 [J】.北京:经济研究导刊,2010(19):32-35. 市下降的原因是现在实行的农村医疗合作社,缩减了 农村居民在医疗方面的支出;第三类地市没体现出下降的 原因是,2003年时比较低的医疗支出的低起点和现在农村 医疗合作社在第三类地区推广覆盖范围的约束。 (5)从各类别的八个生活消费指标占总消费的比例的 变化上看,2011年较2003年有了明显的变化,但是在医 疗保健、文教服务、家庭设备及服务上一直比例较低,在 食品和居住上一直都占很高的比例,尤其是第二和第三类 上的食品比例,一直都大于0.46,明显高于第一类的0,41 左右的水平,说明福建农村消费,尤其是厦门、泉州之外 [3】朱建平.应用多元统计分析[M】.科学出版社,2006:62— 128. [4]马欣.各地区农村居民消费结构和水平的聚类分析[J]. 科教文汇(中旬刊),2009(2):211-211. [5】段小红.中国农村居民消费结构的变动趋势及其国际比 较[J].世界农业,2010(8):20-25. (责任编辑、校对:赵光峰) ..72..