新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 用ARM對FPGA進行配置的原理與方法

        用ARM對FPGA進行配置的原理與方法

        作者: 時間:2012-05-31 來源:網絡 收藏

        static AT91PS_PIO pioc;

        inline void pioc_out_0 (int mask)

        {

        pioc->PIO_CODR = mask;

        }

        inline void pioc_out_1 (int mask)

        {

        pioc->PIO_SODR = mask;

        }

        inline int pioc_in (int mask)

        {

        return pioc->PIO_PDSR mask;

        }

        inline void xmit_byte (char c)

        {

        int i;

        for (i = 0; i 8; i++)

        {

        if (c 1)

        pioc_out_1 (DATA0);

        else

        pioc_out_0 (DATA0);

        pioc_out_0 (DCLK);

        pioc_out_1 (DCLK);

        c >>= 1;

        }

        }

        void pioc_setup ()

        {

        pioc->PIO_PER =DATA0 | nCONFIG | DCLK | nSTATUS | CONF_DONE;

        pioc->PIO_OER =DATA0 | nCONFIG | DCLK;

        pioc->PIO_ODR =nSTATUS | CONF_DONE;

        pioc->PIO_IFER =nSTATUS | CONF_DONE;

        pioc->PIO_CODR =DATA0 | nCONFIG | DCLK;

        pioc->PIO_IDR =DATA0 | nCONFIG | DCLK | nSTATUS | CONF_DONE;

        pioc->PIO_MDDR =DATA0 | nCONFIG | DCLK;

        pioc->PIO_PPUDR =DATA0 | nCONFIG | DCLK | nSTATUS | CONF_DONE;

        pioc->PIO_OWDR =DATA0 | nCONFIG | DCLK | nSTATUS | CONF_DONE;

        }

        int pioc_map ()

        {

        int fd;

        off_t addr = 0xFFFFF800; // PIO controller C

        static void *base;

        if ((fd = open (/dev/mem, O_RDWR | O_SYNC)) == -1)

        {

        printf (Cannot open /dev/mem. );

        return 0;

        }

        printf (/dev/mem opened. );

        base = mmap (0, MAP_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, addr ~MAP_MASK);



        關鍵詞: FPGA ARM 原理 方法

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 绥棱县| 武鸣县| 汾西县| 修文县| 池州市| 饶阳县| 咸丰县| 孟村| 涞水县| 广宁县| 洛隆县| 军事| 东海县| 柳河县| 枣庄市| 诏安县| 日照市| 阜宁县| 临江市| 渭源县| 瑞丽市| 璧山县| 凤阳县| 海伦市| 武隆县| 辽阳县| 长武县| 长乐市| 镇原县| 石楼县| 桃源县| 阿克陶县| 永顺县| 长治市| 社旗县| 道真| 饶阳县| 灵丘县| 长子县| 兴安盟| 黄骅市|