如何在Quartus 5中使用 Mega
2012-11-14
标签:

megafuction是一种可以在Quartus中使用的模块库。从MAX + PLUS开始就可以使用了。在Quartus中,该库增加了很多新模块,使得设计变得更加容易。

要使用megafuction,可以使用Tools菜单中的MegaWizard Plug-In Manager进行定制。该向导可以创建或者编辑设计文件来定义用户的meagfuction实例。也就是定制LPM功能。

下面举个altsyncram的例子。该megafunction是一种Quartus自带的模块。

该模块支持Cyclone、Cyclone II、HardCopy II、HardCopy Stratix、Stratix、Stratix II、Stratix GX系列芯片。这些芯片都是FPGA。

需要强调的一点是,在CPLD上做RAM是没有前途的。因为CPLD上没有专用的RAM,因此如果要用CPLD实现RAM,需要数量巨大的门电路,这样非常浪费芯片资源,而且RAM的尺寸做不大。

altsyncram的定义如下:

FUNCTION altsyncram (wren_a, wren_b, data_a[OPERATION_MODE != "ROM" ? WIDTH_A - 1 : 0..0],

data_b[(OPERATION_MODE == "BIDIR_DUAL_PORT") ? WIDTH_B - 1 : 0..0],

address_a[WIDTHAD_A - 1..0],

address_b[(OPERATION_MODE == "BIDIR_DUAL_PORT" # OPERATION_MODE == "DUAL_PORT") ?WIDTHAD_B - 1 : 0..0],

clock0, clock1, clocken0, clocken1, rden_b, aclr0, aclr1, addressstall_a,addressstall_b,

byteena_a[OPERATION_MODE != "ROM" ? ((WIDTH_A > 15) ? ((WIDTH_BYTEENA_A > 1 ?WDTH_BYTEENA_A-1 : 0)) : 0 ): 0..0],

byteena_b[OPERATION_MODE == "BIDIR_DUAL_PORT" ? ((WIDTH_B > 15)? (WIDTH_BYTEENA_B > 1? WIDTH_BYTEENA_B-1 : 0) : 0 ): 0..0] )

WITH (OPERATION_MODE, WIDTH_A, WIDTHAD_A, NUMWORDS_A, INDATA_ACLR_A, WRCONTROL_ACLR_A,

ADDRESS_ACLR_A, WIDTH_B, WIDTHAD_B, NUMWORDS_B, INDATA_REG_B, INDATA_ACLR_B,

WRCONTROL_WRADDRESS_REG_B, WRCONTROL_ACLR_B, ADDRESS_ACLR_B, OUTDATA_REG_A,

OUTDATA_ACLR_A, BYTEENA_ACLR_A, RDCONTROL_REG_B, RDCONTROL_ACLR_B, ADDRESS_REG_B,

OUTDATA_REG_B, OUTDATA_ACLR_B, BYTEENA_REG_B, BYTEENA_ACLR_B, INIT_FILE,

INIT_FILE_LAYOUT, MAXIMUM_DEPTH, WIDTH_BYTEENA_A, WIDTH_BYTEENA_B, BYTE_SIZE,

READ_DURING_WRITE_MODE_MIXED_PORTS, READ_DURING_WRITE_MODE_PORT_A,

READ_DURING_WRITE_MODE_PORT_B,

RAM_BLOCK_TYPE, CLOCK_ENABLE_INPUT_A, CLOCK_ENABLE_INPUT_B, CLOCK_ENABLE_OUTPUT_A,

CLOCK_ENABLE_OUTPUT_B, LOW_POWER_MODE, DEVICE_FAMILY )

RETURNS (q_a[WIDTH_A - 1..0],

q_b[(OPERATION_MODE == "DUAL_PORT" # OPERATION_MODE == "BIDIR_DUAL_PORT") ? WIDTH_B -1 : 0..0] );

这些参数的意思是:

wen_a:(可选)。输入写使能。当OPERATION_MODE参数被设置成ROM模式时,wren_a端口不可用。

wen_b:(可选)。输入写使能。当OPERATION_MODE参数被设置成BIDIR_DUAL_PORT时,wen_b端口可用

rden_b:(可选)。输入读使能输入端口。

data_a[](可选)。数据输入端口。数据宽度WIDTH_A-1..0。

data_b[](可选)。数据输入端口。数据宽度WIDTH_B-1..0。

address_a[](必要)。内存地址端口。地址宽度WIDTHAD_A-1..0。

address_b[](必要)。内存地址端口。地址宽度WIDTHAD_B-1..0。

clock0(必要)。存取时钟。

clock1(可选)。存取时钟。

clocken0(可选)。clock0的时钟使能。

clocken1(可选)。clock1的时钟使能。

aclr0(可选)。同步清除输入端1。

aclr1(可选)。同步清除输入端2。

byteteena_a[](可选)。字节使能输入端口。

byteteena_b[](可选)。字节使能输入端口。

addressstall_a(可选)。端口A的地址输入。

addressstall_b(可选)。端口B的地址输入。

输出端口

q_a[](必要)。数据输出端口0。输出端口WIDTH_A-1..0。该端口在OPERATION_MODE为SINGLE_PORT、BIDIR_DUAL_PORT或者ROM时有效。

q_b[](必要)。数据输出端口1。输出端口WIDTH_B-1..0。该端口在OPERATION_MODE为SINGLE_PORT、BIDIR_DUAL_PORT或者ROM时有效。

可能会用到的工具/仪表
相关文章
推荐文章
热门文章
章节目录
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号