📄 1.txt
字号:
软件代码
由于M6759作为智能主机来配置FPGA,其片内有64K的程序空间。因此需将引导配置代码和FPGA的配置数据都通过编程器编写入M6759。
M6759配置FPGA的引导代码
引导代码要实现一上电就开始配置FPGA,将配置数据按一定的时序送给FPGA。同时,还应具有出错处理,有多次重复配置功能。下面给出配置子程序。
sbit P1.0 fpga_confdone;
sbit P1.1 fpga_nStaus;
sbit P1.2 fpga_data;
sbit P1.3 fpga_nconfig;
sbit P1.4 fpga_dclk;
uchar fpga_update(uint Address) //配置FPGA子程序
{
uchar reconfig=0; //重配置次数标志
uchar temp,temp1,i,j;
fpga_init:
//给nconfig引脚一个低脉冲,表示开始配置FPGA
fpga_nconfig=0;
delay_ms(1);
fpga_nconfig=1;
//重配置次数加一
reconfigt++;
while(1)
{
//取出一字节数据(8位)
temp=CBYTE[Address++];
//送出8位数
for (i=0;i<8;i++)
{
//Data引脚送出一位数据
temp1=temp>>i;
temp1=temp1&0x01;
if (temp1) fpga_data=1;
else fpga_data=0;
//DCLK来一个低脉冲
fpga_clk=0;
fpga_clk=0;
fpga_clk=1;
}
//检测nStatus状态,如为低,则配置错误,延时后重新配置
if ( !fpga_nstatus ){
delay_ms(10);
goto fpga_init;}
//连续配置5次,均出错,返回0表示配置不成功
if (reconfigt >0x05) return 0;
//检测到confdone为高,则配置成功,再送出10个DCLK
if (fpga_confdone){
for (j=0;j<10;j++){
fpga_clk=0;
fpga_clk=0;
fpga_clk=0;
fpga_clk=1;
}
}
//配置成功,返回1
return 1;
}
}
配置文件数据
配置文件可由MAX+PLUS II或Quartus软件产生,采用.rbf文件格式。在rbf文件格式中,十六进制数85H的rbf格式为8位配置位100000101。此rbf格式适用于APEX20K、FLEX10K、FLEX6000器件。数据必须被存储并且每字节的最低位先被装载。这种格式的文件数据适用于主机配置方式。MCU能从rbf文件读出数据装载到APEX20K、FLEX10K、FLEX6000器件。
下列步骤可用MAX+PLUS II生成适用于FLEX10K或FLEX6000器件的rbf文件(同样也能通过Quartus软件相应的步骤生成适用于APEX20K器件的rbf文件)
A.在MAX+PLUS II编程或编程器中,从FILE菜单中选择”Convert SRAM Object Files”。
B.在Convert SRAM Object Files对话框中,指定SOF文件,然后从File Format box中后选择”.rbf(sequential)”,后单击OK。
产生的rbf文件是二进制格式, M6759的引导配置代码长变小于1K。因此留下的64K空间可放rbf文件。表2分别列出部分Altera器件的FPGA rbf文件二进制长度。并同时列出M6759可同时配置的芯片数。
如何将rbf配置文件与引导程序合并
引导程序的作用就是一上电M6759就执行上面的uchar fpga_update(uint Address)子程序,把rbf配置文件的数据送给FPGA。具体办法就是fgap_updata(uint Address)子程序把M6759片内以Address开始连续单元的数据按位移出。
现在就需一种方法,把rbf数据连续放入M6759片内的以Address开始的连续单元。在我们的设计中用到了hex2bin.exe、bin2hex.exe两个工具软件,现编了一个批处理文件text.bat,其内容 如下:
CD D:Cheng_FileAli6759domo_confing_2fpga
config_fpga //到相应子目录
ren fpga1.rbf fpga1.bin //把fpga1.rbf更名为fpga1.bin
ren fpga2.rbf fpga1.bin //把fpga2.rbf更名为fpga2.bin
bin2hex /I0X0000 /O0X1000 fpga1.BIN fpga1_1.HEX //偏移地址0x1000后转换为.hex
bin2hex /I0X0000 /O0X8000 fpga2.BIN fpga2_1.HEX //偏移地址0x8000后转换为.hex
HEX2BIN M6759.HEX M6759.BIN //引导文件M6759.hex转换为M6759.bin二进制文件
bin2hex /M M6759.BIN fpga1_1.HEX //把fpga1.bin与M6759.bin合并生成pga1_1.hex
HEX2BIN fpga1_1.hex fpga1_1.bin //把fpga1_1.hex转换成二进制文件
bin2hex /M fpga1_1.bin fpga2_1.HEX //把fpga1_1.bin与fpga2_1.hex合并
ren fpga2_1.hex load_fpga.hex
最后,把lead_fpga.hex文件用编程器编进M6759芯片就可以了。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -