您当前的位置: 首页 >  linux

FPGA硅农

暂无认证

  • 3浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

zynq linux系统上通过寄存器读写直接调用HLS IP

FPGA硅农 发布时间:2020-12-31 00:18:38 ,浏览量:3

以一个向量加法的HLS IP为例: linux应用程序代码如下

/*
 * Copyright (c) 2012 Xilinx, Inc.  All rights reserved.
 *
 * Xilinx, Inc.
 * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A
 * COURTESY TO YOU.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
 * ONE POSSIBLE   IMPLEMENTATION OF THIS FEATURE, APPLICATION OR
 * STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION
 * IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE
 * FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.
 * XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO
 * THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO
 * ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE
 * FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 */
#include
#include
#include
#include
#include
#include
#include"xadder_hw.h"
#define CTRL_BASE_ADDR 0x43c00000
#define A_BASE_ADDR 0x05000000
#define B_BASE_ADDR 0x06000000
#define C_BASE_ADDR 0X07000000
#define SIZE 4096
int main()
{
    int i;
    int devmem;
    int *a_addr;
    int *b_addr;
    int *c_addr;
    int *ctrl_addr;
    devmem = open("/dev/mem", O_RDWR | O_SYNC);
    if(devmem==-1)
    	printf("open /dev/mem failed\n");
    a_addr=(int*)mmap(0,SIZE*sizeof(int),PROT_READ|PROT_WRITE,MAP_SHARED,devmem,A_BASE_ADDR);
    if(a_addr == MAP_FAILED)
    	printf("a_addr map failed\n");
    b_addr=(int*)mmap(0,SIZE*sizeof(int),PROT_READ|PROT_WRITE,MAP_SHARED,devmem,B_BASE_ADDR);
    if(b_addr == MAP_FAILED)
        	printf("b_addr map failed\n");
    c_addr=(int*)mmap(0,SIZE*sizeof(int),PROT_READ|PROT_WRITE,MAP_SHARED,devmem,C_BASE_ADDR);
    if(c_addr == MAP_FAILED)
        	printf("c_addr map failed\n");
    ctrl_addr=(int*)mmap(0,SIZE*sizeof(int),PROT_READ|PROT_WRITE,MAP_SHARED,devmem,CTRL_BASE_ADDR);
    if(ctrl_addr==MAP_FAILED)
    	    printf("ctrl_addr map failed\n");
    for(i=0;i>1)&0x01)==1)
    		break;
    }
    printf("PL compute finished\n");
    for(i=0;i            
关注
打赏
1658642721
查看更多评论
0.0530s