?? fpga_load.c
字號(hào):
/* 用8031加載ALtera的FPGA,也可用于Xilinx的FPGA的加載 */
void load_epld(void)
{
unsigned char data i;
unsigned int data j;
unsigned char xdata * data pt;
SCON = 0x0; /* 設(shè)置8031工作在方式0,同步串行方式 */
CONFIG = 0; /* 初始化FPGA */
i=4; /* 注意8031的工作頻率和速度,對(duì)于Xilinx的FPGA,初始化的時(shí)間要長(zhǎng)一些,具體查下各個(gè)FPGA的參數(shù) */
while(STATUS!=0) {
i--;
if(i==0) {
CONFIG = 0;
FPGA_Init_Error(); /* FPGA初始化錯(cuò)誤處理程序,自己編制 */
}
}
CONFIG = 1; /* 初始化FPGA完畢 */
i=10; /* 注意8031的工作頻率和速度,各個(gè)FPG的初始化的時(shí)間不一樣,具體查下各個(gè)FPGA的參數(shù) */
while(STATUS!=1) {
i--;
if(i==0) {
CONFIG = 0; /* 錯(cuò)誤時(shí),使FPGA處于初始化狀態(tài),保證電路處于安全狀態(tài) */
FPGA_Init_Error(); /* FPGA初始化錯(cuò)誤處理程序,自己編制 */
}
}
pt=(unsigned char xdata *)EPLD_DATA; /* EPLD_DATA為FPGA的存放地址 */
for(j=0; j < EPLD_Number; j++) { /* EPLD_Number為FPGA的加載字節(jié)數(shù),當(dāng)大于64K */
SBUF = *pt++; /* 字節(jié)時(shí),要采用頁(yè)面切換的方式 */
while(!TI); /* 等待1個(gè)字節(jié)加載完畢 */
TI=0;
if(STATUS!=1) { /* 加載過(guò)程中,檢查加載是否正確 */
CONFIG = 0; /* 錯(cuò)誤時(shí),使FPGA處于初始化狀態(tài),保證電路處于安全狀態(tài) */
FPGA_Load_Error(); /* FPGA加載錯(cuò)誤處理程序,自己編制 */
}
}
if(CFG_DOWN!=1) { /* FPGA數(shù)據(jù)加載完畢,檢查加載是否正確 */
CONFIG = 0; /* 錯(cuò)誤時(shí),使FPGA處于初始化狀態(tài),保證電路處于安全狀態(tài) */
FPGA_Done_Error(); /* FPGA加載錯(cuò)誤處理程序,自己編制 */
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -