内部存储器RAM和ROM用户指南1、介绍内部存储器模块本用户指南介绍了实现以下内存模式的宏功能:■RAM:1-Port—Single-portRAM单口RAM■RAM:2-Port—Dual-portRAM双口RAM■ROM:1-Port—Single-portROM单口ROM■ROM:2-Port—Dual-portROM双口ROMAltera公司提供了两种宏功能来实现内存模式:ALTSYNCRAM和ALTDPRAM宏功能。QuartusII软件会自动选择其中一个宏功能来实现内存模式。选择那种宏功能模式取决于目标器件,存储器模式和RAM和ROM的功能。本用户指南会让您熟悉宏功能,以及如何创建它们。如果您不熟悉的Altera宏功能或“theMegaWizard™Plug-InManager”,请参阅介绍宏功能用户指南。内部存储器具有如下功能:■内存模式配置■存储模块类型■端口宽度设置■存储器最大深度设置■时钟模式和时钟使能■地址时钟使能■字使能■异步清零■读使能■同时读写■存储器初始化■错误校正码2、参数设置Altera建议您使用参数编辑器来配置来构建您的RAM和ROM内存块,以确保您所选择的选项组合是有效的。下表是双口RAM参数设置选项有效值默认值功能描述你将如何使用双端口RAM?一个读/写端口或者两个读/写端口一个读端口和一个写端口指定如何使用双口RAM你想指定的存储器的位宽?一个字的数量或者一个位的数量一个字的数量确定用字或者位来指定内存大小存储器的有多少个字?—256指定存储器有多少个字或者字节不同的端口使用不同的数据宽度开/关关指定不同的端口使用不同的数据宽度当你选择单端口读/写时,以下选项有用:输出总线q_a位宽?输入总线data_a位宽?输出q宽度?—8指定输入输出端口位宽当你选择双端口读/写时,下面的选项有效:输出总线q_a位宽?输出总线q_b位宽?存储块类型是什么?M-RAM,M4K,M512,M9K,M10K,M144K,MLAB,M20K,LCsAUTO指定存储块的类型,选择什么样存储块类型的取决于目标设备内存该如何实现?使用默认的逻辑单元模式或者StratixM512仿真逻辑单元模式使用默认的逻辑单元模式指定逻辑单元实现选项。只有当你选择LCS内存类型时此项才有效。设置存储器的最大深度32,64,128,256,512,1024,2048,4096AUTO指定内存的最大深度。只有当你选择内存类型是“AUTO”时此选项有效使用什么样的时钟模式当你选择单端口读/写时,下面的值有效:■单时钟■双时钟:用单独的输入输出时钟■双时钟:用单独的读写时钟当你选择两个读写端口时,下面的值有效:■单时钟■双时钟:用单独的输入输出时钟■双时钟:对A和B端口分别使用单独的时钟单时钟单时钟:一个时钟和一个时钟使能控制内存块中所有的寄存器双时钟:使用单独的输入和输出时钟,一个输入和一个输出时钟控制相关的所有寄存器的数据输入和输出/内存块,包括数据,地址,字使能,读使能,和写使能。双时钟:使用单独的读写时钟,一个写时钟控制数据输入,写地址,写使能,而读时钟控制数据输出,读地址,读使能寄存器。双时钟:A和B端口分别使用单独的时钟。时钟A控制A端口所有的寄存器。时钟B控制B端口所有的寄存器。每个端口还支持单独的时钟使能。当你选择单端口读写时,下面的选项有效:创建一个读使能信号:“rden”—off对端口B是否创建一个读使能信号当你选择双端口读/写时,下面的选项有效:创建读使能信号:“rden_a”和“rden_b”对端口A和B是否创建读使能信号端口A创建字节使能—Off指定对端口A和B是否创建字节使能。端口B创建字节使能使能ECC来检查和纠正单比特错误和检查双比特错误On/offoff指定是否使能ECC特性来纠正单比特错误和检查双比特错误在存储器的输出端。这个选项只有在内存块模式是M144K的器件中有效。使能ECC来检查和纠正单比特错误,两相邻比特错误和检测三相邻位错误On/offOff指定是否使能ECC特性来检查和纠正单比特错误,两相邻比特错误和检测三相邻位错误。此选项只有在支持内存块类型是M20K的器件中有效那个端口需要寄存?当你选择一个读端口和一个写端口时,以下选项可用:◆写输入口‘data’,‘wraddress’,‘wren’◆读输入口‘raddress’and‘rden’◆读输出口:‘q’当你选择两个读写端口时,以下选项可用:◆写输入口‘data_a’,‘wraddress_a’,‘wren_a’◆读输出口:’q_a’‘q_b’On/offoff指定是否寄存读/写输入和输出端口是否创建时钟使能信号?On/OffOff指定是否打开这个选项,来为每个时钟信号创建一个时钟使能信号。时钟使能选项双端口RAM的使用方式选择为“一个读端口”和“一个写端口”时可以选择Useclockenableforwriteinputregisters写入寄存器使用时钟使能;双端口RAM的使用方式选择为“两个端口都可用读/写”时的可选项包括:UseclockenableforportAinputregisters(端口A输入寄存器使用时钟使能)、UseclockenableforportBinputregisters(端口B输入寄存器使用时钟使能)、UseclockenableforOn/OffOff端口B的输入和输出寄存器的时钟使能是默认选中的,只需要指定端口A的输入和输出寄存器是否使用时钟使能。portAoutputregisters(端口A输出寄存器使用时钟使能)、UseclockenableforportBoutputregisters(端口B输出寄存器使用时钟使能)。时钟使能选项双端口RAM的使用方式选择为“一个读端口”和“一个写端口”时可以选择:Createan‘wr_addressstall’inputport.(创建一个wr_addresstall输入端口)和Createan‘rd_addressstall’inputport.(创建一个rd_addresstall输入端口);双端口RAM的使用方式选择为“两个端口都可用读/写”时的可选项包括:Createan‘addressstall_a’inputport(创建一个addresstall_a输入端口)和Createan‘addressstall_b’inputport.(创建一个addresstall_b输入端口)。On/OffOff指定是否为地址寄存器创建时钟使能,创建这些端口可以作为地址寄存器的低电平时钟使能输入。为寄存器端口创建异步清零信号aclrOn/OffOff指定是否为为寄存器端口创建异步清零信号aclr当一个内存位置同时读/写操作时,如何控制输出Q?显示内存原来的值/不定值不定值当读写同时发生时,指定输出的类型。显示内存原来的值:RAM的输出反映的是写操作之前改地址所指的旧数据。不定值:此选项功能不同,当你打开它取决于以下内存块类型选择:当你设置内存块的类型为:Auto,M144K,M512,M4K,M9K,M10KM20K或者其他类型,在同时进行读写操作时RAM输出不定值,不需要考虑时序路径。不分析读操作和写操作之间的时序。在同一时刻向同一存储器地址进行读写操作时亚稳态问题无法解决。On/OffOff当你想让RAM输出不确定值时,打开此选项,在进行读写操作时不分析时序路径。此功能只对LUTRAM有效,并且只有当你设置存储块类型为MLAB时才能使用此功能。是否初始化RAM?不初始化,空的RAM,或者初始化,用文件数据来初始化RAM。不初始化指定存储器的初始内容。选择置空RAM时,初始化存储器为零。选择用文件初始化时,使用一个内存初始化文件(.mlf)或者是(.hex)文件写期间读时q_a的输出Newdata(新数据),OldData(原来的数据)Newdata(新数据)当读写同时发生指定输出行为。NewData(新数据):在写数据的同一个时钟周期的上升沿新写入的数据可用;Olddata(原来的数据):RAM的输出是写入新数据之前原来存储在存储器中的数据。写期间读时q_b的输出使用字节使能时用X(不定值)代替原来的数据On/offOn打开此功能时在被屏蔽的字节位置获得X值。