本文和设计代码由FPGA爱好者小梅哥编写,未经作者许可,本文仅允许网络论坛复制转载,且转载时请标明原作者。
如果使用静态地址对齐(每个寄存器在Avalon总线上占4个字节的地址)
设置IP使用静态地址对齐的方式为,在hw.tcl脚本里加上一局话:set_interface_property as addressAlignment {NATIVE}
在软件编程时
可以使用IOWR(基地址,寄存器编号(n),数据)对自定义IP的第n个寄存器进行写入操作
可以使用IORD(基地址,寄存器编号(n)) 对自定义IP的第n个寄存器进行读出操作
如果使用动态地址对齐,(每个寄存器在Avalon总线上占 数据位宽/8个字节的地址)(默认)
在软件编程时,使用IOWR_32DIRECT(数据位宽为32位)、IOWR_16DIRECT(数据位宽为16位)、IOWR_8DIRECT(数据位宽为8位)进行写操作
在软件编程时,使用IORD_32DIRECT(数据位宽为32位)、IORD_16DIRECT(数据位宽为16位)、IOWR_RDIRECT(数据位宽为8位)进行写操作
IOWR_8DIRECT(基地址、地址偏移量、数据),地址偏移量 = 寄存器编号*1
IOWR_16DIRECT(基地址、地址偏移量、数据),地址偏移量 = 寄存器编号*2
IOWR_32DIRECT(基地址、地址偏移量、数据),地址偏移量 = 寄存器编号*4
IORD_8DIRECT(基地址、地址偏移量),地址偏移量 = 寄存器编号*1
IORD_16DIRECT(基地址、地址偏移量),地址偏移量 = 寄存器编号*2
IORD_32DIRECT(基地址、地址偏移量),地址偏移量 = 寄存器编号*4 |