新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于CPLD译码的DSP二次Bootloader方法

基于CPLD译码的DSP二次Bootloader方法

作者:时间:2009-08-31来源:网络收藏

  的原理是由用户自行编写一个代码长度小于16KB的引导程序(以下简称 uboot),其功能与内固化的相同,用于加载最终的用户代码。在uboot程序中控制Flash存储器的高位地址线来访问 Flash的其他存储内容。这样,上电复位后,首先加载uboot并运行,然后uboot又加载最终用户代码,实现了大于 16K代码的引导。
2.1 与Flash及的硬件接口
  本文采用AMD的 Am29LV800作为DSP的外部存储器扩展。Am29LV800按8位方式访问,容量为1M字;按16位方式访问,容量为512K字。DSP外围电路逻辑译码及Flash高位地址线模拟由实现。Xilinx公司的XC9572XL是一款高性能的芯片,最高主频可达178MHz,包含了 72个宏单元,1 600个可用门电路,其TQFP封装有72个可用I/O引脚[7]。图1是5509A与CPLD及Flash之间的硬件接口设计原理图。

本文引用地址:http://www.eepw.com.cn/article/152366.htm

  如图1所示,5509A的地址线A[13:1]与Flash的地址线A[12:0],A0未用。Flash存储器被映射到DSP的CE1空间,由片选线CE1经CPLD译码后选通。其中DSP的地址线A13和A[3:1]与CPLD接口,用于换页寄存器FPR的模拟。Flash存储器的BYTE引脚经上拉后接高电平,即按16位方式访问。
2.2 CPLD译码VHDL程序设计
  目前DSP系统主频越来越高,运算速度越来越快,利用小规模逻辑器件译码的方式已不能满足DSP系统性能的需求。CPLD器件以其严格的时序、快速的译码、良好的可编程性成为DSP系统必不可少的部件之一。
  本文利用CPLD的快速逻辑译码功能,模拟了一个FPR寄存器来控制Flash的高位地址线。VHDL语言源程序如下(篇幅有限,这里省略实体端口声明及中间信号定义):
begin
  fce =ce1;
  foe =aoe;
  fwe =awe;
  h_addr =a13;
  l_addr =a3a2a1;
  datain =d5d4d3d2d1d0;
  facs =′1′ when h_addr=′1′
  and ce2=′0′ and l_addr='000'
  else ′0′; --CE2 0x400000
  FPR:process(facs,awe,reset)
  begin
   if reset=′0′ then
   fa=″000000″;
  else if reset=′1′ then
   if awe′event and awe=′1′ then
   if facs=′1′ then
fa=datain(5 downto 0);
end if;
end if;
end if;
end process;
dataout=fa when aoe=′0′ and facs=′1′
else ″ZZZZZZ″;
  d5 =dataout(5);
  d4 =dataout(4);
  d3 =dataout(3);
  d2 =dataout(2);
  d1 =dataout(1);
  d0 =dataout(0);
  fa18 =fa(18);
  fa17 =fa(17);
  fa16 =fa(16);
  fa15 =fa(15);
  fa14 =fa(14);
  fa13 =fa(13);
end behaviour;
  由上述VHDL程序可知,FPR寄存器被映射到了CE2空间的0x401000地址。其中引入A13及A[3:1]地址线的目的是为了便于以后的功能扩展,映射出更多的寄存器,如LCD控制寄存器、UART控制寄存器等。



评论


相关推荐

技术专区

关闭