导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→FPGA 单片机配置,HELP

* 33006: FPGA 单片机配置,HELP

   huore 
huore发表的帖子 

 FPGA 单片机配置,HELP
本人毕业论文即将答辩,关于FPGA配置,可用单片机配置时,数据传输完时,config_done,不能变高配置始终不成功,检查软硬件,也没查出什么毛病
请各位大哥大姐,帮帮忙,帮我检查一下,不知道,配置的时序有没错
单片机晶振我用的是16M
我用的FPGA芯片是 ALTEA FLEX EPF10K10
 

程序如下
#define uchar unsigned char
#define uint unsigned int
#include   <reg52.h>  
#include   <stdio.h>  
#include   <absacc.h>     

sbit fpga_nconfig=P1^2;
sbit fpga_dclk=P1^4;
sbit fpga_data=P1^0;
sbit fpga_nstatus=P1^1;
sbit fpga_confdone=P1^3;

void delay_ms(uint x);
void fpga_updata(uint Address);

uchar code fpgacode[]={
    
};

void delay_ms(uint x)
{uint i,j;
for(j=0;j  <=x;j++)
{for(i=0;i  <536;i++);}

}

void fpga_updata() //配置FPGA子程序
{
uchar temp,temp1,i,j;
uint Address,k;

start: 
fpga_dclk=0;    
fpga_confdone=1;
fpga_nconfig=0; 
fpga_nstatus=1; 
fpga_data=0;    

fpga_dclk=0;
for(k=0;k  <30000;k++);
fpga_nconfig=0;
for(k=0;k  <30000;k++);
fpga_nconfig=1;
  Address=0;  
while(1)
{
temp=fpgacode[Address];//取出一个字节的数据(8位)
Address++;
while(Address>  14750) {
     for(j=0;j  <10;j++) {
          fpga_dclk=1;
           fpga_dclk=0;
       }
      
//    for(j=0;j  <60000;j++);       
//    for(j=0;j  <60000;j++);           
//    for(j=0;j  <60000;j++);        
//    for(j=0;j  <60000;j++);   
//    for(j=0;j  <60000;j++);       
    for(k=0;k  <60000;k++);           
    for(k=0;k  <60000;k++);       
    for(k=0;k  <60000;k++);        
    goto start    ;
};
for(i=0;i  <8;i++)//送出8位数
{
      //temp1=temp & 0x01;
       fpga_data=(bit) (temp & 0x01);
       temp=temp>  >  1;   
       for(j=0;j  <50;j++);
   
    //   fpga_dclk=0;//DCLK来一个低脉冲
       fpga_dclk=1;
       //for(j=0;j  <1;j++);
       fpga_dclk=0;//DCLK来一个低脉冲
       //for(j=0;j  <1;j++);
// }

     if(!fpga_nstatus) //检测nStatus状态,如为低,则配置出错,延时后重新配置
     {
          while(1);
     }
}

if(fpga_confdone)//检测到CONFIGDONE为高,则配置成功,再送出10个DCLK
{
     for(j=0;j  <10;j++) {
          fpga_dclk=1;
           fpga_dclk=0;
       }
      while(1);
  }       
}
return;
}

main()
{
fpga_updata();
while(1);

}

 

 



发表时间:2003年6月1日8:30:10

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:能给出一个具体片子的名称吗? 谢谢各位大虾的回复。 我的问题已经解决了。 问
[下一篇帖子]:AT89C51中要设置接口电路的寄存器如何实现??接口电路为uart16550,要设置其中的线性控制