📄 fpgaconfig.c
字号:
//-------------------------------------------------------------------------------
// FPGA配置程序(NiosII)
// 描述:
// CPU:NiosII
// 采用PS方式配置FPGA
//-------------------------------------------------------------------------------
#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_type.h"
const unsigned char FPGAconfigCode[]=
{ #define "../../ep2c5/p_fpga.ttf" };
#define uchar unsigned char
#define uint unsigned int
//nCONFIG不能用于其他用途,配置完后维持高电平
#define nCONFIG_OFF() IOWR_ALTERA_AVALON_PIO_nCONFIG_DATA(PIO_nCONFIG_BASE,0X0)
#define nCONFIG_ON() IOWR_ALTERA_AVALON_PIO_nCONFIG_DATA(PIO_nCONFIG_BASE,0X01)
#define nSTATUS_CHECK() IORD_ALTERA_AVALON_PIO_nSTATUS_DATA(PIO_nSTATUS_BASE)&0X01
#define nCONFIG_DONE_CHECK() IORD_ALTERA_AVALON_PIO_DONE_DATA(PIO_DONE_BASE)
//nCONFIG_DONE为高电平时表示配置完成
#define DCLK_OFF IOWR_ALTERA_AVALON_PIO_DCLK_DATA(PIO_DCLK_BASE,0X0)
#define DCLK_ON IOWR_ALTERA_AVALON_PIO_DCLK_DATA(PIO_DCLK_BASE,0X01)
//-------------------------------------------------------------------------
//nCONFIG -> PIO_nCONFIG nSTATUS -> PIO_nSTATUS
//nCONFIG_DONE -> PIO_DONE DCLK -> PIO_DCLK
//DATA ->PIO_DOUT
//-------------------------------------------------------------------------
void config_write(uchar data)
{
uchar i;
for(i=0;i<8;i++)
{
if(data & 0x01)
{
IOWR_ALTERA_AVALON_PIO_DOUT_DATA(PIO_DOUT_BASE,0X01);
}
else
{
IOWR_ALTERA_AVALON_PIO_DOUT_DATA(PIO_DOUT_BASE,0X0);
}
DCLK_ON;
data = data >> 1;
DCLK_OFF;
}
}
//---------------------------------------------------------------------------
//描述:FPGA配置子程序
//参数:无
//返回:true:配置成功;false:配置失败
//---------------------------------------------------------------------------
uchar FPGA_config(void)
{
const uchar *p;
uchar count;
uchar i;
nCONFIG_ON();
delayus(5);
nCONFIG_OFF();
while(nSTATUS_CHECK());
delayus(5);
nCONFIG_ON();
while(!nSTATUS_CHECK());
p = FPGAconfigCode;
while(p != &FPGAconfigCode[sizeof(FPGAconfigCode)])
{
config_write(*p++);
}
if(!CONFIG_DONE_CHECK()) return false;
for(count=0;count<5;count++) //使DCLK产生40个脉冲
{
config_write(0xff);
}
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -