NATIVE Core设计步骤
定制和生成本地核
1 、基础选项卡(basic tap)
1.1·组件名称(component name):只能使用字母、数字和下划线。
1.2·接口类型(interface type):有 Native 、AXI MemoryMapped、AXI Stream。
Native:本地FIFO。
AXI MemoryMapped:内存映射:以first word - fall - through模 式实现AXI4、AXI3和AXI4- lite fifo。
AXI Stream :实现了一个AXI4-Stream FIFO在First-Word- Fall- Through模式。
1.3 ·FIFO实现(FIFO Implementation):
Common Clock (clk), Block RAM:使用Block Ram 搭建FIFO,支持FWFT模式(第一个数据先出)
Common Clock (clk), Distributed RAM: 使用分布式RAM搭建FIFO,支持FWFT模式(第一个数据先出)
Common Clock (clk), Shift Register: 使用移位寄存器搭建FIFO
Common Clock (clk), Built-in FIFO:使用内嵌的FIFO搭建你所要的FIFO,支持FWFT模式(第一个数据先出)
Independent Clocks (rd_clk, wr_clk), Block RAM:支持异步读写,其他与同步相同。
Independent Clocks (rd_clk, wr_clk), Distributed RAM:
Independent Clocks (rd_clk, wr_clk), Built-in FIFO:
1.4·同步阶段(synchronization stages):定义跨时钟域逻辑的同步器阶段的数量。表给出了与操作频率相对应的同步阶段的例子。
2、本地端口选项卡(Native Ports Tab)
这个列表提供了性能选项(read mode),数据口参数,ECC与核的初始化选项。
2.1·读模式(Read Mode) :只有用Bram和分布式ram时,才有效。
标准FIFO(Standard FIFO):生成一个标准延迟FIFO。不是有输出寄存器。
FWFT模式(First-Word-Fall-Through)FIFO:生成一个有输出寄存器的FIFO。
这个模式的意思就是提前将第一个数据放置在数据线dout上,利用一个输出寄存器实现。好处就是,读使能信号拉高后可以立即读到数据,无需延迟一个周期。
2.2 ·数据端口参数(Data Port Parameters)
`非对称端口宽度:只适用于使用Bram和内嵌FIFO搭建的FIFO
·写宽度:有效范围1~1024
·写深度:有效深度16~131072,深度只允许是2的幂次
·读宽度:只适用于使用Bram和内嵌FIFO搭建的FIFO,有效范围必须遵守异步端口的规则。
非对称纵横比允许FIFO的输入和输出深度不同。支持写读宽比:1:8、1:4、1:2、1:1、2:1、4:1、8:1。当使用Vivado IP Catalog自定义FIFO时,通过选择唯一的写和读宽度来启用该特性。默认情况下,写和读宽度设置为相同的值(提供1:1的宽高比);但是支持1:8到8:1之间的任何比例,FIFO的输出深度是自动从输入深度和读写宽度计算出来的。
·读深度:基于上述的写深度,读宽度等自动计算。
·低延迟(low Latency):使用内部嵌入的FIFO来搭建的FIFO才能使用。
·低延迟输出寄存器:当低延迟选项有效时候可选。
2.3·ECC,输出寄存器和功率控制选项(ECC, Output Register and Power Gating Options)
·ECC (Error Correction Checking):当Hard ECC使能时,将块RAM或内置FIFO设置为全ECC模式,同时使能编码器和解码器
·单比特错误注入:可用于公共和独立的时钟块RAM或内置的fifo,并启用ECC选项。软ECC选项与ECC逻辑使用通用互连是可用的块RAM基于FIFO构建。生成一个输入端口,在写入时注入一个单比特错误,并生成一个输出端口,表示发生了一个单比特错误。
·双位错误注入:可用于公共和独立时钟块RAM或内置FIFOs,并启用ECC选项。生成一个输入端口,在写入时注入一个双位错误,并生成一个输出端口,表示发生了一个双位错误。
·ECC管道寄存器:内置FIFO宏在ECC解码器和编码器路径上有一个可选的管道寄存器。当ECC流水线寄存器被选择时,它改善了FIFO宏计时,并在DOUT上增加了一个时钟额外延迟。当复位应用于FIFO时,ECC流水线寄存器保存之前在流水线中读取的数据。有关ECC管道寄存器的更多信息,请参阅UltraScale架构内存资源
·动态功率门控:动态节能能力(由睡眠管脚控制)保持内置FIFO宏在睡眠模式,同时保留数据内容。唤醒时间要求之前的任何FIFO访问都不能保证,可能会导致内存内容损坏。当sleep激活(High)时,wr_en和rd_en引脚必须保持Low。在此模式下,内存中的数据内容将被保存。
·输出寄存器:块RAM宏有内置的嵌入式或互连寄存器,可以用来管道数据和改善宏计时。这个选项允许用户添加一个流水阶段在FIFO的输出时候并且得到内嵌的寄存器的优点。对于内置的FIFO,这个特性只支持同步FIFO配置,只有一个深度的FIFO宏。
2.4初始化
·复位引脚(reset pin):对于Bram FIFO和 分布式ram FIFO,复位引脚不做要求,输入引脚可选择。
·同步复位使能(Enable Reset Synchronization):只有独立的时钟BRAM或分布式RAM FIFO时才可选用。未选中时,wr_rst/rd_rst可用。
·安全电路使能(Enable safety circuit):只有基于BRAM的fifo具有异步复位(默认开启)时才可选。对于AXI接口,安全电路在核心内部自动启用,因为AXI接口的复位总是异步的。当您选择启用安全电路选项时,附加的逻辑被启用,以确保同步触发器驱动FIFO发生器的输出和控制信号进入BRAM原语。
·复位类型:
异步复位:使用分布式或BRAM实现的公共时钟FIFO的可选选择。
同步复位:使用分布式或BRAM实现的公共时钟FIFO的可选选择。
·full Flag重置值:对于BRAM、分布式RAM和移位寄存器配置,可以选择full Flag的重置值
·Dout 重置值:复位后,Dout上的值。
可用于所有实现使用块RAM,分布式RAM,移位寄存器或公共时钟7系列设备内置的嵌入式寄存器选项。只有在选择复位引脚选项时才可用。如果选中该选项,当复位被断言时,FIFO的dout输出将复位到定义的dout reset Value。如果没有被选中,FIFO的dout输出将不会受到复位断言的影响,并且dout将保留其先前的值,对于使用内置FIFO的UltraScale架构设备来说有一定的限制。
3、状态标志选项卡(status flags tab)
该选项卡允许您选择可选的状态标志,设置握手选项和可编程标志选项。
·Almost full flag:在所有FIFO实现中可用,除了那些使用内置FIFO的实现。生成一个输出端口,表示FIFO几乎已满(只能再写一个字)。
·Almost enpty flag :在所有FIFO实现中可用,除了那些使用内置的FIFO。生成一个输出端口,表示FIFO几乎为空(只能再读一个字)。
·握手选项(handshaking option):
·写端口握手:
---写确认:生成写确认标志,报告写操作成功。该信号可以配置为active-High或Low(默认为active-High)。
--Overflow (Write Error):溢出标志,表示上次写操作不成功。该信号可以配置为active-High或Low(默认为active-High)。
·读端口握手:
--Valid (Read Acknowledge):生成Valid标志,表示输出总线上的数据何时有效。该信号可以配置为active-High或Low(默认为active-High)。注:低有源选项仅适用于7系列设备。
--Underflow (Read Error):生成Underflow标志,表示前一次读请求不成功。该信号可以配置为active-High或Low(默认为active-High)。
·可编程标志位(programmable Flags):
°可编程full 类型:在下拉菜单中选择可编程full类型。将显示每个阈值的有效范围,并根据IDE中其他地方选择的选项而变化。
°全阈值断言值:当选择单阈值或多阈值常量可编程全阈值时可用。请输入用户自定义值。此阈值的有效范围在IDE中提供。当使用单个阈值常量时,只使用assert阈值。
°全阈值负值:可选时,可编程全与多个阈值常数。请输入用户自定义值。此阈值的有效范围在IDE中提供。
°可编程empty类型:在下拉菜单中选择可编程空值类型。每个阈值的有效范围将显示出来,并且将根据IDE中其他地方选择的选项而变化。
°空阈值断言值:选择“可编程空,单阈值或多阈值常量”时可选。请输入用户自定义值。
在仿真过程中,发现empty信号在写入数据时,并不会立即跳变。猜测是需要经过几个周期才允许读(即empty才会拉低,允许读)。