ZYNQ PL与PS交互:BRAM(一)

        在做项目时,需要用到ZYNQ PL端与PS端的交互,目前采用BRAM的方式,PS端每次写入128bit,BRAM深度为1024,需要用到4个36k的BRAM资源。

        在PL读数时,需要在BRAM使能en及we拉高时读数据,we为4字节,每次只能有4bit为高,标志可读的4字节数据。若想读出128bit数据,需要依次判断we信号。同时要读取BRAM输入数据的相应字节,但BRAM的地址不能变动。只有在读取第2个128bit时,地址才可以累加16。

        读一个地址的128bit数据代码如下:

else if((BRAM_PORTA_0_en==1'b1)&(BRAM_PORTA_0_we==16'h000F))begin
      case(BRAM_PORTA_0_addr[13:0])
         14'h000:reg32_0  <= BRAM_PORTA_0_din;
         default: reg32_0 <= reg32_0;        
      endcase
      end


     else if((BRAM_PORTA_0_en==1'b1)&&(BRAM_PORTA_0_we==16'h00F0))begin
      case(BRAM_PORTA_0_addr[13:0])
         14'h000:reg32_1  <= BRAM_PORTA_0_din[63:32];
         default: reg32_1 <= reg32_1;        
      endcase
   

你可能感兴趣的:(FPGA,ZYNQ,笔记)