fpga_load.c

来自「使用8051单片机实现FPGA的加载(电路图及代码)~」· C语言 代码 · 共 45 行

C
45
字号
/* 用8031加载ALtera的FPGA,也可用于Xilinx的FPGA的加载 */
void load_epld(void)
{
    unsigned char data i;
    unsigned int data j;
    unsigned char xdata * data pt;


    SCON = 0x0;						/* 设置8031工作在方式0,同步串行方式 */
    CONFIG = 0;						/* 初始化FPGA */
    i=4;							/* 注意8031的工作频率和速度,对于Xilinx的FPGA,初始化的时间要长一些,具体查下各个FPGA的参数 */
    while(STATUS!=0) {
        i--;
        if(i==0) {
            CONFIG = 0;
            FPGA_Init_Error();		/* FPGA初始化错误处理程序,自己编制 */
        }
    }

    CONFIG = 1;						/* 初始化FPGA完毕 */
    i=10;							/* 注意8031的工作频率和速度,各个FPG的初始化的时间不一样,具体查下各个FPGA的参数 */
    while(STATUS!=1) {
        i--;
        if(i==0) {
            CONFIG = 0;				/* 错误时,使FPGA处于初始化状态,保证电路处于安全状态 */
            FPGA_Init_Error();		/* FPGA初始化错误处理程序,自己编制 */
        }
    }

    pt=(unsigned char xdata *)EPLD_DATA;	/* EPLD_DATA为FPGA的存放地址 */
    for(j=0; j < EPLD_Number; j++) {		/* EPLD_Number为FPGA的加载字节数,当大于64K */
        SBUF = *pt++;						/* 字节时,要采用页面切换的方式 */
        while(!TI);							/* 等待1个字节加载完毕 */
        TI=0;
        if(STATUS!=1) {						/* 加载过程中,检查加载是否正确 */
            CONFIG = 0;						/* 错误时,使FPGA处于初始化状态,保证电路处于安全状态 */
            FPGA_Load_Error();				/* FPGA加载错误处理程序,自己编制 */
        }
    }
    if(CFG_DOWN!=1) {						/* FPGA数据加载完毕,检查加载是否正确 */
        CONFIG = 0;							/* 错误时,使FPGA处于初始化状态,保证电路处于安全状态 */
        FPGA_Done_Error();					/* FPGA加载错误处理程序,自己编制 */
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?