赞
踩
Parameterized Macro: Single-bit Array Synchronizer
MACRO_GROUP: XPM
MACRO_SUBGROUP: XPM_CDC
Families: 7 series, UltraScale, UltraScale+
简介
该宏从源时钟域合成了一组单比特信号到目标时钟域。 为了正确操作,输入数据必须由目标时钟进行两次或更多次采样。您可以定义用于同步器的寄存器级数。在进行同步之前,可以使用可选的输入寄存器来在源时钟域中注册输入。还可以启用仿真功能,以生成报告有关宏的潜在误用的消息。 注意:该宏期望源数组的每一位都是独立的,并且没有需要保留的已定义关系。如果数组的每一位都有需要保留的关系,请使用XPM_CDC_HANDSHAKE或XPM_CDC_GRAY宏。
Port Description
port | IO | Width | Domain | Sense | Handling if | Function |
dest_clk | I | 1 | NA | EDGE | Active | 目标时钟域的时钟信号 |
dest_out | O | WIDTH | dest_clk | NA | Active | 将src_in同步到目标时钟域。此输出已使用时钟打拍 |
src_clk | I | 1 | NA | EDGE | 0 | 当SRC_I_REG=0时不使用。如果SRC_I_REG=1,则为src_in的输入时钟信号 |
src_in | I | WIDTH | src_clk | NA | Active | 要同步到目标时钟域的输入单比特数组。假定数组的每一位都与其他位无关。这反映在应用于此宏的约束中。 为了在两个时钟域之间无损传输二进制值,请改用XPM_CDC_GRAY宏 |
参数属性:
attribute | Type | Allowed | Default | Description |
DEST_SYNC_FF | DECIMAL | 2to10 | 4 | 用于在目标时钟域中同步信号的寄存器级数 |
INIT_SYNC_FF | DECIMAL | 0,1 | 0 |
1-启用在同步寄存器上的行为仿真初始化值。 |
SIM_ASSERT_CHK | DECIMAL | 0,1 | 0 |
1-启用仿真消息报告。 与潜在误用相关的消息将会报告。 |
SRC_I_REG | DECIMAL | 1,0 | 1 |
1-使用src_clk对输入(src_in)进行一次寄存 |
WIDTH | DECIMAL | 1to1024 | 2 | 单比特数组(src_in)的宽度,将在目标时钟域中同步。 |
Parameterized Macro: Asynchronous Reset Synchronizer
MACRO_GROUP: XPM
MACRO_SUBGROUP: XPM_CDC
Families: 7 series, UltraScale, UltraScale+
简介
此宏将异步复位信号同步到目标时钟域。结果的复位输出将确保在与输入异步断言,但输出的去除将始终与目标时钟域同步。 您可以定义复位信号的极性以及在断言时宏的最小输出脉冲宽度。后者通过定义同步器中使用的寄存器级数来控制。 注意:最小输入脉冲断言取决于寄存器的复位或设置引脚的建立和保持要求。请查看针对目标架构的相应DC和AC切换特性数据表。
Port | IO | Width | Domain | Sense | Handling if | Function |
dest_arst | O | 1 | dest_clk | NA | Active | 源异步复位信号 src_arst 同步到目标时钟域。 此输出已寄存。 注意:信号异步断言,但与 dest_clk 同步去除。复位信号的宽度至少为 (DEST_SYNC_FF * dest_clk) 周期。 |
dest_clk | I | 1 | NA | EDGE | Active | 目标时钟 |
src_arst | I | 1 | NA | NA | Active | 源异步复位信号 |
参数属性:
attribute | Type | Allowed | Default | Description |
DEST_SYNC_FF | DECIMAL | 2to10 | 4 | 用于在目标时钟域中同步信号的寄存器级数。此参数还确定了断言的复位信号的最小宽度。 |
INIT_SYNC_FF | DECIMAL | 0,1 | 0 |
1-启用同步寄存器上的行为仿真初始化值。 |
RST_ACTIVE_HIGH | DECIMAL | 0,1 | 0 | 定义异步复位信号的极性。 • 0-低电平有效的异步复位信号 • 1-高电平有效的异步复位信号 |
ParameterizedMacro:SynchronizerviaGrayEncoding
MACRO_GROUP: XPM
MACRO_SUBGROUP:XPM_CDC
Families:7series,UltraScale,UltraScale+
简介
该宏使用Gray编码将来自源时钟域的二进制输入同步到目标时钟域。为了正确操作,目标时钟必须对输入数据进行两次或更多次采样。 此模块接收输入的二进制信号,将其转换为Gray编码并进行寄存,将其同步到目标时钟域,然后将其重新转换为二进制信号。您可以定义在同步器中使用的寄存器级数。还可以启用仿真功能,以生成消息来报告对该宏的潜在误用。 由于该宏使用Gray编码,因此提供给该宏的二进制值必须仅递增或递减一次,以确保要同步的信号具有仅相差一位的两个连续值。这将确保对Gray编码总线的无损同步。如果二进制值的行为与Gray编码不兼容,使用XPM_CDC_HANDSHAKE宏或其他同步数据到目标时钟域的替代方法。 还提供了一个额外选项(SIM_LOSSLESS_GRAY_CHK),用于在发现任何二进制输入值违反Gray编码规则(连续两个值仅递增或递减一次)时报告错误消息。
注意:当在设计中使用XPM_CDC_GRAY模块并运行report_cdc时,此模块中的同步器会报告为CDC-6类型的警告,具有ASYNC_REG属性。可以安全地忽略此警告,因为同步的总线是gray编码的。 应该运行report_cdc以确保识别CDC结构并且没有生成关键警告,还要验证dest_clk是否可以对src_in_bin[n:0]进行两次或更多次采样。
ParameterizedMacro:AsynchronousFIFO
MACRO_GROUP: XPM
MACRO_SUBGROUP:XPM_FIFO
Families:7series,UltraScale,UltraScale+
ParameterizedMacro:SynchronousFIFO
MACRO_GROUP: XPM
MACRO_SUBGROUP:XPM_FIFO
Families:7series,UltraScale,UltraScale+
ParameterizedMacro:SimpleDualPortRAM
MACRO_GROUP: XPM
MACRO_SUBGROUP:XPM_MEMORY
Families:7series,UltraScale,UltraScale+
此宏用于实例化简单的双口RAM。PortA 用于执行来自内存的写操作,而 PortB 可用于从内存读取。
以下描述了 XPM_MEMORY 实例的基本读写端口使用情况,不区分 PortA 和 PortB。
在 SimpleDualPortRAM 配置中,只考虑 WRITE_MODE_B(尽管 PortA 具有写权限,但在连接到 PortB 的输出数据时,也会使用 WRITE_MODE_B,因此传递给原语时 WRITE_MODE_A 也会被应用相同的模式值)。以下是单口RAM配置中对 WRITE_MODE_B 参数的一些限制。违反这些限制将导致 DRC 错误。
注意:
set_false_path-from [filter[all_fanout-from[get_ports clka] -flat-endpoints_only]{IS_LEAF}] -through [get_pins-of_objects [get_cells-hier* -filter {PRIMITIVE_SUBGROUP==LUTRAM||PRIMITIVE_SUBGROUP==dram||PRIMITIVE_SUBGROUP==drom}] -filter {IO==OUT}]
注意:
UltraRAM原语在睡眠断言在时钟的正边沿被识别时,不支持在睡眠断言之前的时钟周期内进行写/读访问,当其OREG属性设置为TRUE时。对于UltraRAM配置,在睡眠断言之前的时钟周期内不允许对内存进行写入/读取访问。
块RAM和UltraRAM原语在内存类型设置为Simple Dual Port RAM时都支持ECC。支持的三种ECC模式如下:
这三种ECC模式的读取和写入用法与上述介绍中描述的相同。有关此功能的更多详细信息,例如错误注入和综合位计算等,请参阅7系列FPGA内存资源用户指南(UG473)中的“内置错误修正”部分。
在上述每种ECC模式中,对属性WRITE_DATA_WIDTH_A、READ_DATA_WIDTH_B和MEMORY_SIZE都有限制。
当启用ECC时,不支持以下功能:
注意:
ECC使用在BRAM/URAM宏中可用的硬ECC块,数据宽度应为64/72的倍数。对于其他数据宽度组合,请使用ECC IP。
下面显示了不同读取延迟下的自动休眠模式的时序图:
注意:EN_DLY[A|B]、ADDR_DLY[A|B]和REGCE_DLY[A|B]分别是EN[A|B]、ADDR[A|B]和REGCE[A|B]经过AUTO_SLEEP_TIME个时钟周期延迟后的版本。
Port Description
port | IO | Width | 时钟域 | Sense | Handling if | Function |
addra | I | ADDR_WIDTH_A | clka | NA | Active |
|
addrb | I | ADDR_WIDTH_B | clkb | NA | Active | PortB读操作的地址。 |
clka | I | 1 | NA | 上升沿 | Active | PortA的时钟信号。当参数CLOCKING_MODE设置为"common_clock"时,也会驱动PortB。 |
clkb | I | 1 | NA | 上升沿 | Active | 当参数CLOCKING_MODE设置为"independent_clock"时,PortB的时钟信号 |
dbiterrb | O | 1 | clkb | 高电平 | DoNotCare | 用于指示PortB数据输出上发生双位错误的状态信号。 |
dina | I | WRITE_DATA_WIDTH | clka | NA | Active | PortA写操作的数据输入。 |
doutb | O | READ_DATA_WIDTH | clkb | NA | Active | PortB读操作的数据输出。 |
ena | I | 1 | clka | 高电平 | Active | PortA的内存使能信号。在发起写操作时,必须在时钟周期上保持高电平。在内部进行流水线处理。 |
enb | I | 1 | clkb | 高电平 | Active | PortB的内存使能信号。在发起读操作时,必须在时钟周期上保持高电平。在内部进行流水线处理。 |
injectdbiterra | I | 1 | clka | 高电平 | 0 | 在ECC启用时,控制输入数据上的双位错误注入(在"decode_only"模式下,无法使用错误注入能力)。 |
injectsbiterra | I | 1 | clka | 高电平 | 0 | 在ECC启用时,控制输入数据上的单位错误注入(在"decode_only"模式下,无法使用错误注入能力)。 |
regceb | I | 1 | clkb | 高电平 | 1 | 用于输出数据路径上的最后一个寄存器级的时钟使能 |
rstb | I | 1 | clkb | 高电平 | Active | 用于重置PortB输出的最终寄存器级的复位信号。将输出端口doutb同步重置为参数READ_RESET_VALUE_B指定的值。 |
sbiterrb | O | 1 | clkb | 高电平 | DoNotCare | 用于指示PortB数据输出上发生单位错误的状态信号。 |
sleep | I | 1 | NA | 高电平 | 0 | 用于启用动态节能功能的睡眠信号。 |
wea | I | WRITE_DATA_WIDTH | clka | 高电平 | Active | PortA输入数据端口dina的写使能向量。在使用字宽写入时,它是1位宽的。在字节宽写入配置中,每位控制将dina的一个字节写入到地址addra。 例如,当WRITE_DATA_WIDTH_A为32时,要同步写入dina的位[15-8]时,写4'b0010。 |
Built-in Error Correction Capability and Error Injection:
Error Injection:
错误注入:injectsbiterr和injectdbiterr。用户可以使用这些可选的错误注入引脚作为调试引脚,在写操作期间将单位错误或双位错误注入特定位置。然后,您可以检查这些地址的输出上的sbiterr和dbiterr信号的断言。您可以选择不使用错误注入引脚,或者只使用其中一个或两个错误注入引脚。
RDADDRECC输出端口指示发生sbiterr或dbiterr的地址。rdaddrecc端口、两个错误注入端口和两个错误输出端口都是可选的,仅在选择BuiltIn_ECC选项时才可用。如果您未选择BuiltIn_ECC功能,则该原语的injectsbiterr和injectdbiterr端口会被内部驱动为'0',且该原语的输出sbiterr、dbiterr和rdaddrecc不会在外部连接。
图3-31显示了在写操作期间通过错误注入引脚注入错误时,sbiterr和dbiterr输出信号的断言。
简单双口RAM存储器支持内置的FPGA错误校正能力(ECC),适用于大于64位的数据宽度的块RAM原语。内置ECC存储器可以自动检测单位错误和双位错误,并能够自动纠正单位错误。
对于64位或更小数据宽度,提供了软汉明错误校正实现。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。