⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fpga_load.c

📁 使用8051单片机实现FPGA的加载(电路图及代码)~
💻 C
字号:
/* 用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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -