APP下载

基于有限状态机的SRAM分区地址发生器的设计与实现

2018-09-10王雪丽罗文广覃永新

广西科技大学学报 2018年4期

王雪丽 罗文广 覃永新

摘 要:根据多通道数据按分时方式保存于同一随机存储器中的不同分区空间的需求,设计了一种基于有限状态机设计方法的存储器分区地址产生电路.本文以8 Mb的SRAM为设计对象,采用有限状态机方式对随机存储器的读写地址的产生进行控制.将SRAM的存储空间划分为320×240的4个分区,每个分区空间的写地址不是连续产生而是以逐行扫描方式产生,使得4个通道的数据能够准确存储于对应分区的每个存储单元内.设计的顶层文件在QuartusⅡ软件环境下进行编译和时序仿真.仿真结果表明:采用有限状态机方法设计的分区地址产生电路能正确地实现SRAM分区地址的产生,并具有容易拓展的优点,为高速数据的存储工作方法提供了新的思路.

关键词:分区地址发生器;多通道数据分区存储;有限状态机;存储方法;FPGA

中图分类号:TP333 DOI:10.16375/j.cnki.cn45-1395/t.2018.04.012

0 引言

存储器是计算机硬件系统的记忆设备,用来存放程序以及信息处理过程中的各种数据.计算机中大部分内存通常是由随机存储器RAM组成的,存储器一般按地址访问,给出对应地址便可对存储单元进行读写操作.通常情况下,存储器按行、列排列组成二维存储矩阵,这种结构形式也使得存储器的地址总线分成行向地址线(简称行地址)和列向地址线(简称行地址)两部分.高位字节表示列地址,低位字节表示行地址.为了满足信息处理的高速性、实时性和准确性,数据存储控制器的设计就极其重要[1].

数据存储技术一般采用全息存储、专用软件、专用芯片或编程数据处理器压缩存储大量的数据.FPGA芯片因其高速、低功耗和高可靠性等特点在数据存储控制方面具有明显优势,从而成为存储控制技术中最常用的器件.国内外一些科研机构已经研发出以FPGA为主控芯片的嵌入式高速数据采集及存储系统,其中也包含了基于FPGA的利用分布式数据库提供数据存储和管理、将数据分为块状进行存储的系统.该系统具有良好的性能,且有很大提升空间[2-3],例如:在用于多点监控的多视频通道合成系统中,需要将多个视频通道的数据先以分区方式写入帧缓存器,然后再逐行逐列读出送入显示器.写入帧缓存器的单元地址信号,就可以利用FPGA灵活的编程方式来产生.本次设计中,8 Mb的帧缓存器SRAM分为4个分区,对应于4个视频数据通道,由FPGA产生4个通道数据的写地址信号,能够满足数据处理高速性、实时性的要求.

本设计以存储容量为8Mbit的静态随机存储芯片IS61LV51216为目标对象,设计了SRAM的4分区地址发生器,该地址发生器能够随着时钟驱动连续产生4个视频通道数据在一块SRAM中的写地址信号.每个分区的容量为320×240,4个分区总容量为640×240,虽然不能写满整个存储器空间,但是在读出这些视频数据时所需的读地址信号,就可以随时钟信号按照加1递增的方式来产生,非常便利.设计中利用Altera公司的Cyclone Ⅳ系列芯片EP4CE6F17C8為核心控制部件,采用有限状态机的设计方法来完成设计,而且利用Verilog硬件描述语言可以使整个流程变的轻松[4].此设计方法不但提高了设计效率,而且使整个设计具有灵活、易实现、易扩展性的特点.

1 随机存储器中分区地址发生电路的设计要求

将RAM存储阵列分为等容量的4个分区S0—S3(每个分区的容量为320×240)来存储4个通道的视频数据如图1所示.每个分区中写地址信号数据的变化规则是:首先,在分区中按照从左到右、从上至下的规则递增,这个规则类似于逐行扫描方式.比如分区S0的写地址阵列中,第一行共320个存储单元的列向地址为000H,第二行的列向地址为001H,最后一行的列向地址为0EFH,每一行的行向地址是从000H—13FH.扫描到S0分区最后一个存储单元后,跳转到S1分区(转折点C0的列向地址为0EFH,行向地址为13FH).在分区S1中,写地址信号的产生仍然遵循逐行扫描规则,每扫描一行后,列向地址递增1;当扫描至转折点C1 后跳转到S2分区,以此类推,可得出分区S0、S1、S2和S3的各个存储单元的行向和列向地址.读取数据时,先向地址引脚提供列向地址和行向地址,指定需读的内存单元地址,当地址信号稳定之后,使片选信号CE低电平有效,则指定单元的数据在数据引脚上输出.

由于这4个分区的写地址信号是按照一定的时序来产生,所以使用有限状态机的方法进行设计,将4个分区的地址产生作为4个状态,以是否到达转折点为状态转移的条件来实现状态循环.在每个状态下,每扫描完一行320个存储单元,列向地址递增1,当列向地址的增幅达到240,则此状态结束进入下一个状态.

2 分区地址发生器的设计

2.1 存储器芯片选型

IS61LV51216是ISSI公司的512K×16位的高速异步静态RAM,采用高性能CMOS制作工艺,具有高可靠性和低功耗的优点.芯片具有19根地址线A18—A0,16根数据线I/O15—I/O0,还具有工作使能端CE、输出使能端OE、写使能端WE、上个字节的控制端UB和低字节控制端LE.如果将它的19根地址线分为9位列地址线和10位行地址线,就构成了1 024×512的二维存储阵列.使用一片IS61LV51216来存储一帧640×480图像的数据是足够的,也足够存储一帧由4个320×240压缩图像组成的拼接图像.

2.2 存储器内部数据分布

根据设计要求,确定内部数据分布,在每个状态转换前后行列向地址的变化情况如表1所示.

2.3 分区地址信号控制电路的实现框图

本设计中选用了Alter公司研发的Cyclone IV系列的EP4CE6F17C8,此款FPGA拥有179个I/O接口,62 792个逻辑单元,392个乘法器,RAM的容量为276 480 b,内核电压为1.15~1.25 V,且功耗低[5].基于FPGA的SRAM分区地址发生电路的整体实现框图如图2所示.在QuartusⅡ中新建工程,设置目标芯片型号为EP4CE6F17C8、系统复位信号RST、时钟驱动信号CLK(系统时钟20 MHz)和来自外围器件的16位输入数据datain[15…0];当需要将数据datain存入SRAM时,首先设置片选信号CE和写允许信号WB为低电平有效、OE为数据输出允许(低电平时读取数据信息)、高8位控制端UB和低8位控制端LB在16位宽的数据线上分开访问高低字节,随着时钟信号CLK的每产生一个地址信号,就将datain信号送至双向数据端口dataout,存入SRAM内部相应的分区存储单元中.

2.4 基于有限状态机的分区地址发生器的设计与实现

有限状态机 (Finite State Machine,FSM) 是描述有限个状态以及在这些状态之间进行转移和操作等行为的数学模型[6].它广泛应用于自动控制系统、数字逻辑系统等领域,譬如PLC控制器的顺序控制功能、CPU的指令执行控制等,均是FSM的典型应用范例[7].在电子系统设计中,FSM成为有力工具.有限状态机FSM把复杂的控制逻辑分解成有限个稳定的状态,在每个状态上判断事件,变连续处理为离散处理,符合计算机工作特点;同时FSM具有有限个状态,

可以在工程上实现[8].在使用硬件描述语言VerilogHDL编程时,首先简单地定义状态变量,每个状态均可以表达为case语句结构中一条选择值语句,而状态是否转移通过if语句判断,从而实现所需功能.

本设计的程序流程图如图3所示.在程序中首先设置行计数器x_add和列计数器y_add,分别来计算分区中行向地址信号和列向地址信号的个数.

分址电路存储基本过程为:先设置复位信号rst、时钟信号clk、数据流datain、行列地址和块写满后的标志信号full.系统不复位的时候,在每个时钟的上升沿使用case语句判断状态控制信号,即地址信号addout,如果不是转折点对应的状态控制信号,则将输入信号datain送入SRAM的数据端dataout,同时地址信号按照图1所描述的规则变化.例如,分区S0状态的主要的程序语句如下:

case(state)

2[′]b00:if ((y_add==9[′]hef)&&(x_add==10[′]h13f))

begin

full<=1; state<=2[′]b01; //如果到达转折点C0,则状态值变为S1

dataout<=datain;

x_add<=10[′]h140; y_add<=9[′]h000;// 写地址变为S1分区的起始地址

end

else begin

full<=0;

if (y_add<=9[′]hef) //如果没有扫描到最后一行

if(x_add<10[′]h13f) //如果没有扫描到本行的最后一个单元

begin

dataout<=datain;

x_add<=x_add+1;y_add<=y_add;//则行地址加一,列地址保持

end

else begin dataout<=datain;

x_add<=0; y_add<=y_add+1;//每行扫描完毕后,列地址加一

end

end

程序经过编译和综合后,可以在工具Tools中看到软件综合后生成的状态转换图,如图4所示.

3 仿真实验及说明

图5是基于有限状态机的分区地址发生器的仿真波形图,从图中可以看到4块存储块的存储情况,图5(a)是分区S0地址存满时的波形,由图可看出分区S0最后一个数据列向地址为0EFH,行向地址为13FH,存满之后full显示高电平1,跳转到分区S1时第一个数据列向地址为000H,行向地址为140H.同理,由图5(b)—图5(d)可看出分区S1最后一个数据列向地址为0EFH,行向地址为27FH,跳转到分区S2时第一个数据列向地址为0F0H,行向地址为000H;分区S2最后一个数据列向地址为1DFH,行向地址为13FH,跳转到分区S3时第一个数据列向地址为0F0H,行向地址为140H;分区S3最后一个数据列向地址为1DFH,行向地址为27FH,跳转到分区S0时第一个数据列向地址为000H,行向地址为000H.从波形的输出结果来看,本次设计在每个状态转换前后的行列向地址信号值与表1中的相符,说明本设计是符合既定要求的.

4 总结

本文主要利用有限状态机的工作原理,将4块存储区的写信号产生设置成4个状态,设计了一种分区地址产生电路,将程序综合后的网表文件下载至FPGA开发板的配置芯片中进行硬件的边界扫描测试,结果显示输入的数据流以块状的形式存储并能准确读出,并且输入的数据有序的存储,在第一块存储区地址没存满之前,数据流的地址不会流向下一存储区,这样此分址电路有利于提高存储器的资源占用率.

参考文献

[1]仝欣.基于FPGA的视频图像处理系统的研究[D].西安:西安电子科技大学,2012.

[2]柯寶中.基于FPGA的乒乓式存取高速数据采集通道设计[J].广西科技大学学报,2015,26(1):43-47.

[3]邵磊,倪明.基于FPGA的高速数据采集系统设计与实现[J].计算机工程,2011,37(19):221-223.

[4]任杰,李克俭,潘绍明,等.双口RAM读写正确性自动测试的有限状态机控制器设计方法[J].广西科技大学学报,2015,26(4):36-38.

[5]高俊岭,陈志飞,章佩佩.基于FPGA的实时视频图像采集处理系统设计[J].电子技术应用,2018,44(2):10-19.

[6]孙宏旭,邢薇,陶林.基于有限状态机的模型转换方法的研究[J].计算机技术与发展,2012,22(2):10-13.

[7]冯建文.有限状态机在FPGA硬件实验中的应用[J].实验室研究与探索,2017,6(36):138-141.

[8]李云,冯永浩,孟涛.基于VHDL有限状态机控制器的设计方法[J].微计算机信息,2010,26(13):74-75.

Design and implementation of SRAM partition address generator based on finite state machine

WANG Xueli, LUO Wenguang*, QIN Yongxin

(School of Electric and Information Engineering, Guangxi University of Science and Technology, Liuzhou 545006, China)

Abstract: To meet the needs of storing different storage spaces in random storage according to the multi-channel data, a block address circuit based on Finite state machine is designed. In this design, an 8 Mb SRAM is designed to control the reading and writing address of the random memory by using the finite state machine. We first divide the storage space of SRAM into four partitions with an area of 320 by 240. Then the address of the four block Spaces is generated from left to right, from top to bottom, and the address in the storage space of each block is generated in the same order, so that the data of the four channels can be accurately stored in each storage unit of the corresponding partition. The top of the design documents are compiled and timing simulated in the Quartus Ⅱ software environment. The simulation results show that this block address generation circuit can realize the generation of SRAM partition address correctly. It has good timeliness and expansibility, and it provides a new way of thinking for data storage.

Key words: partition address generator; multi-channel data partition storage; finite state machine; storage methods; field programmable logic array

(學科编辑:张玉凤)