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 + -
显示快捷键?