修改时间 02-19-2020 03:47 PM
最近安装了vivado 19.2 查阅ug901 发现 vivado 已经可以支持 array of interface ,因此做了几个实验。
我随便写了个模块
module apb3_m_test #( parameter IF_ARRAY = 2, parameter SIM = "FALSE", parameter DEBUG = "FALSE" ) ( //------------------------------------------------ // Port define //------------------------------------------------ apb3.m m_apb [IF_ARRAY - 1 : 0], apb3.s s_apb ); localparam DATA_WIDTH = s_apb.DATA_WIDTH; localparam ADDR_WIDTH = s_apb.ADDR_WIDTH; always_ff@(posedge s_apb.clk) begin m_apb[0].addr <= s_apb.addr; m_apb[0].enable <= s_apb.enable; m_apb[0].sel <= s_apb.sel; m_apb[0].wdata <= s_apb.wdata; m_apb[0].write <= s_apb.write; m_apb[1].addr <= s_apb.addr; m_apb[1].enable <= s_apb.enable; m_apb[1].sel <= s_apb.sel; m_apb[1].wdata <= s_apb.wdata; m_apb[1].write <= s_apb.write; s_apb.rdata <= m_apb[0].rdata | m_apb[1].rdata; s_apb.ready <= m_apb[0].ready | m_apb[1].ready; s_apb.slverr <= m_apb[0].slverr | m_apb[1].slverr; end endmodule
测试过 bus port 不能以数组的形式定义,如果没有数据,编译成功,如果有数组会报如下错误
应该是不支持这样的语法,想请问,是我的语法错了,还是文档编写有误,目前不支持 接口定义 array of interface.
单独定义 array of interface(以连线的形式定义是ok的)。
我们现在的工程总线接口比较多,需要能通过参数定义多个Bus,麻烦提供修改意见。