📄 fpga_load.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 + -