在使用Xilinx FPGA时常用的两种FIFO例化方法包括使用IP Catalog和使用XPM。两种方法各有优缺点,个人更倾向于使用XPM的方式。使用这种方式可以非常方便的传递参数,修改设计时不像IP Catalog生成的FIFO那样繁琐。
当FIFO的WRITE_WIDTH和READ_WIDTH相同时,两者使用时没有任何不同。但是当FIFO的输入输出端口位宽为非对称时,两者具有非常显著的区别,使用时要格外注意。
以WRITE_WIDTH : READ_WIDTH = 1 : 4为例,向IP Catalog FIFO写入的数据首先填充高位。比如写入顺序为2'b00、2'b01、2'b10、2'b11,那么读出的数据为8'b00011011。在pg057中有详细说明。
而XPM FIFO的顺序却刚好相反,写入数据首先填充低位。写入顺序为2'b00、2'b01、2'b10、2'b11,那么读出的数据为8'b11100100,在设计中尤其注意。