一种高速读写RAM的接口电路及方法与流程

文档序号:15466790发布日期:2018-09-18 19:29阅读:774来源:国知局

本发明涉及一种数据并行读写的接口电路,主要应用于芯片仿真调试领域,特别涉及高速读写RAM的接口电路及方法。



背景技术:

对于智能卡芯片,通常采用RAM来仿真芯片的FLASH、EEPROM、ROM、RAM等存储器,仿真芯片的调试接口对RAM的读写速度直接影响到调试速度。调试接口在仿真器中常采用JTAG、UART等串行接口实现,这些串行接口数据访问速度慢,对大容量存储器数据的访问速度需要提升。为实现动态、实时访问芯片存储器,有必要设计独立于CPU和存储器之间的读写通道,以方便仿真和快速调试。为解决此问题,本发明设计一种高速读写RAM的并行接口电路并提出实现。



技术实现要素:

本发明所解决的技术问题是,如何设计一种高速读写RAM的接口电路。本发明采用多根数据总线的并行接口,在一个时钟周期可以读出更多的数据。

本发明的接口电路,实现一个从设备的并行接口,包括数据总线IO_DATA和3个控制信号。数据总线信号个数(即数据总线位宽),建议为字节的整数倍,根据实际电路接口信号线IO个数来确定,数据总线位宽越宽,对RAM读写速度越快,但对IO数要求越高。控制信号包括时钟信号I_CLK、读写信号I_R/W_n、命令使能信号I_CMD 3个信号,与数据总线一起,通过特定的时序实现对RAM的高速访问。

所述的接口电路包括:IO接口模块、寄存器控制模块、RAM接口模块三部分;

各组件功能说明如下:

IO接口模块,在读写信号I_R/W_n控制下实现IO_DATA的输入和输出功能,产生输入数据i_data和输出数据o_data;

寄存器控制模块,实现模式寄存器sfr_mode、高位地址寄存器sfr_addr_h、低位地址寄存器sfr_addr_l三个寄存器的写操作;模式寄存器用于记录当前的工作模式,高位地址寄存器存储访问RAM的高位地址,并产生RAM选择信号,实现对多块RAM的选择访问,低位地址寄存器存储访问RAM的低位地址,RAM的高位地址和RAM的低位地址一起组成访问RAM的地址信号ram_addr;设置sfr_mode要求在一个时钟周期完成,sfr_mode的长度不能大于数据总线IO_DATA位宽;sfr_addr_h和sfr_addr_l的长度,建议为字节的整数倍,例如设计为16bit,组成32bit地址信号ram_addr,可能访问4G的RAM容间,在一个或多个时钟周期完成这两个寄存器的设置。

RAM接口模块,包括:时序接口模块,片选ram_ceb的选择逻辑,地址信号ram_addr的选择逻辑与信号ram_dout的选择逻辑四部分,RAM接口模块用于生成读写RAM的接口信号,实现对多块RAM的选择操作,并将读到的信号ram_dout通过IO接口模块输出到数据总线IO_DATA;

各组件连接关系如下:

I_R/W_n连接到IO接口模块,I_CLK、I_R/W_n、I_CMD连接到寄存器控制模块,I_CLK、I_R/W_n连接到RAM接口模块,IO接口模块输出的i_data连接到寄存器控制模块,IO接口模块输入的o_data连接到RAM接口模块;

寄存器控制模块中的sfr_mode与RAM接口模块中的时序接口模块相连,通过I_CMD选择i_data产生的ram_data与RAM接口模块中的时序接口模块相连,寄存器控制模块中的sfr_addr_h、sfr_addr_l与RAM接口模块相连。本发明的接口电路,实现3种操作方式:配置地址操作、连续读RAM操作、连续写RAM操作。配置地址操作用于设置高位地址寄存器sfr_addr_h;连续读RAM操作和连续写RAM操作用于实现对RAM的读写。连续读RAM操作和连续写RAM操作,要先设置低位地址寄存器sfr_addr_l,再进行对RAM的连续读或写操作,每进行一次读或写操作,sfr_addr_l的值自动加一,而sfr_addr_h保持不变,sfr_addr_h只能通过配置地址操作改写。

高位地址寄存器sfr_addr_h有两个功能,一个功能是产生RAM选择信号,在写RAM操作时选中一块或多块RAM,支持对多块RAM同时写相同数据的操作,在读RAM操作时每次只能选中一块RAM,通过更改高位地址寄存器实现对所有RAM轮询操作;;另一个功能是产生RAM的高位地址,将RAM操作的高位地址固定,连续读RAM操作和连续写RAM操作实现对低位地址存储空间的读写操作,不用频繁设置高位地址节省通讯和操作的时间。。

本发明的接口电路,实现4种工作模式:ADDR模式、MEMRD模式、MEMWR模式、IDLE模式,当I_R/W_n为低电平且I_CMD为高电平时,在I_CLK上升沿将输入数据i_data写入模式寄存器sfr_mode实现模式切换。ADDR模式下执行“配置地址操作”,MEMRD模式下执行“连续读RAM操作”,MEMWR模式下执行“连续写RAM操作”,IDLE模式用于停止“连续读RAM操作”和停止“连续写RAM操作”,以便开始另一种操作方式。

本发明的接口电路,实现一个带有时钟信号I_CLK的并行接口,在每一个I_CLK周期完成一次对RAM的读或写操作,支持连续读和连续写操作,通过调整I_CLK的频率和数据总线IO_DATA的位宽提升对RAM的读写速度。

本发明的接口电路,实现一个带有读写信号I_R/W_n的并行接口,由主设备控制I_R/W_n通过IO接口模块实现IO_DATA读写操作,通讯过程不会产生IO_DATA上的电平冲突。I_R/W_n高电平表示读操作,低电平表示写操作,只有在“连续读RAM操作”读数据的周期I_R/W_n才会出现高电平。在I_CLK的下降沿I_R/W_n变为高电平,紧临的I_CLK的上升沿读取数据;主设备完成所有数据读出后,将I_R/W_n在I_CLK的下降沿设为低电平,之后接口电路停止对RAM的读操作。

本发明的接口电路,实现一个带有命令使能信号I_CMD的并行接口,在I_R/W_n为低电平时,I_CLK采集I_CMD由高变低后才能启动一次操作;当I_R/W_n为低电平且I_CMD为高电平时,在I_CLK上升沿修改sfr_mode会终止当前的操作。

本发明的一种高速读写RAM的方法,应用于本发明的接口电路,实现如下操作

1)按以下步骤实现配置地址操作:

步骤1,工作模式设置为ADDR模式;

步骤2,按sfr_addr_h的数据长度分多次连续输入高位地址,要求先写入高字节,当最后一次写入后,sfr_addr_h自动更新,此后再输入数据无效。

2)按以下步骤实现连续读RAM操作:

步骤1,工作模式设置为MEMRD模式;

步骤2,按sfr_addr_l的数据长度分多次连续输入低位地址,要求先写入高字节;

步骤3,连续读出RAM数据;

步骤4,工作模式设置为IDLE模式,终止当前操作。

3)按以下步骤实现连续写RAM操作:

步骤1,工作模式设置为MEMWR模式;

步骤2,按sfr_addr_l的数据长度分多次连续输入低位地址,要求先写入高字节;

步骤3,连续向RAM写入数据;

步骤4,工作模式设置为IDLE模式,终止当前操作。

附图说明

图1是高速读写RAM的接口电路结构图。

图2是配置地址操作时序图。

图3是连续读RAM操作时序图。

图4是连续写RAM操作时序图。

具体实施方式

下面结合附图对本发明接口电路进行详细说明。

如图1所示,接口电路实现一个并行接口,包括3个输入控制信号I_CLK、I_R/W_n、I_CMD,和一组双向的数据总线IO_DATA,图中IO_DATA[n]表示第n线数据信号线。接口电路包括:IO接口模块、寄存器控制模块、RAM接口模块3部分;

IO接口模块,在输入的I_R/W_n控制下实现IO_DATA的输入和输出功能,将IO_DATA转成输入数据i_data送到寄存器控制模块,并将RAM接口模块产生的信号ram_dout输出到IO_DATA。

寄存器控制模块,在输入的I_R/W_n为低电平,I_CMD为高电平时,将i_data写入sfr_mode,修改工作模式;在I_R/W_n和I_CMD都为低电平时,在sfr_mode为ADDR模式下,将i_data写入sfr_addr_h;在I_CMD为低电平时,在sfr_mode为MEMRD模式下,先将I_R/W_n设低电平,将i_data写入sfr_addr_l,之后将I_R/W_n设高电平,由RAM接口模块产生连续读RAM操作;在I_R/W_n和I_CMD都为低电平时,在sfr_mode为MEMWR模式下,先将i_data写入sfr_addr_l,将i_data输出到RAM接口模块中的“时序接口模块”,由此模块将i_data写入RAM。sfr_addr_h产生RAM选择信号,选中一块或多块RAM进行操作,同时产生RAM的高位地址,由sfr_addr_l产生RAM的低位地址。

RAM接口模块,只在MEMRD和MEMWR模式下此模块工作,产生RAM接口时序完成对RAM读写访问。“时序接口模块”输出ram_clk/ram_web/ram_din到所有的RAM接口,见图中RAM1、RAM2、……、RAMn,RAMn表示连接的第n块RAM。输出的ram_ceb信号,经过sfr_addr_h输出RAM选择信号的控制,产生各块RAM的片选信号;连续读RAM操作时,在sfr_addr_h输出RAM选择信号的控制下,只有一块RAM输出数据连接接到信号ram_dout。在RAM接口模块中,RAM的高位地址与RAM的低位地址一起组成RAM地址信号ram_addr,输出到所有的RAM接口。

图2、图3、图4为具体实施方式操作时序说明举例,IO_DATA按8bit位宽设计,sfr_mode长度为8bit,sfr_addr_h和sfr_addr_l的长度均为16bit。

如图2所示,为配置地址操作时序图。此操作I_R/W_n一直为低电平。I_CMD为高电平表示IO_DATA总线上为命令,IO_DATA设为ADDR模式,在I_CLK的上升沿sample1时刻,写入sfr_mode。在I_CLK的下降沿sample2时刻,I_CMD设为低电平,表示后续IO_DATA总线上为数据。在紧临的两个时钟周期,依次输入高字节地址Addr H1,低字节地址Addr H0,在紧临的下一个时钟周期,I_CLK的上升沿sample4时刻,Addr H1和Addr H0合并为Addr H1H0写入sfr_addr_h,完成一次配置地址操作。之后,只要I_CMD为低电平,I_R/W_n和IO_DATA的数据变化都无效,直到I_CMD变为高电平对sfr_mode再次操作。

如图3所示,为连续读RAM操作时序图。I_R/W_n设为低电平,I_CMD设为高电平,在I_CLK的上升沿sample1时刻,设置sfr_mode为MEMRD。在I_CLK的下降沿sample2时刻,I_CMD设为低电平,依次输入高字节地址Addr L1,低字节地址Addr L0,在I_CLK的上升沿sample4时刻,Addr L1和Addr L0合并为Addr L1L0写入sfr_addr_L,和sfr_addr_h中的值Addr H1H0,产生ram_ceb此时变低有效,同时产生地址信号ram_addr信号addr(addr为Addr L1L0中地址位数据作为高位地址,和Addr H1H0作为低16位地址共同组成)。在I_CLK的下降沿sample5时刻,产生ram_clk进行一次读RAM操作,并将I_R/W_n设为高电平,后续在每次I_CLK上升沿完成一次RAM读操作。在半个I_CLK周期后sample7时刻,读出ram_dout的值dout0,此时sfr_addr_L自动加一,ram_addr也跟随自增,以后每个I_CLK的上升沿读到RAM输出信号ram_dout。在I_CLK的上升沿sample8时刻,当完成最后一次读操作后,在I_CLK高电平期间sample9时刻,将I_R/W_n设为低电平,表示后续不再进行读操作。在紧临的I_CLK的上升沿sample11时刻,设置sfr_mode为IDLE,此时ram_ceb变高对RAM选择无效,完成一次连续读RAM操作。整个读RAM操作过程中RAM接口的ram_web一直为高电平表示读操作,输入的ram_din无效。

如图4所示,为连续写RAM操作时序图。此操作I_R/W_n一直为低电平。I_CMD设为高电平,在I_CLK的上升沿sample1时刻,设置sfr_mode为MEMWR。在I_CLK的下降沿sample2时刻,I_CMD设为低电平,依次输入高字节地址Addr L1,低字节地址Addr L0,在I_CLK的上升沿sample4时刻,Addr L1和Addr L0合并为Addr L1L0写入sfr_addr_L。在I_CLK的下降沿sample5时刻,IO_DATA输出要写的数据din 0。在半个I_CLK周期后sample6时刻,sfr_addr_L中的值Addr L1L0和sfr_addr_h中的值Addr H1H0,产生ram_ceb和ram_web,此时两信号变低有效,将IO_DATA中din 0输出到ram_din,并产生地址信号ram_addr信号addr,此时sfr_addr_L自动加一。在半个I_CLK周期后I_CLK的下降沿sample7时刻,产生ram_clk进行一次写RAM操作,以后每个I_CLK的下降沿完成一次RAM写操作。在I_CLK的上升沿sample8时刻,当完成最后一次写操作后,在紧临的I_CLK的上升沿sample9时刻,设置sfr_mode为IDLE,此时ram_ceb变高对RAM选择无效,ram_web也变高,完成一次连续写RAM操作。整个写RAM操作过程中RAM接口输出的ram_dout无效。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1