保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

基于PLD的嵌入式系统外存模块设计


系列单片机支持8位和16位两种工作模式,为了提高系统的性能,选择16位工作模式。96系列单片机地址是按照字节的方式来计算的,因此在16位工作模式下的A0=0没有实际意义。在通常的读写情况下,取经过锁存后的AD1~AD15地址作为A1~A15而A16=0。
  
  下面以读FlashROM为例介绍地址扩展方法。对于可以直接寻址的地址,EPLD作为锁存器,将AD0~AD15分时的地址数据总线分开,生成独立的地址和数据总线。在这里定义了两个特殊的地址:FlashROM数据块的读地址Address_F_R和读位置指针地址Address_F_RP。首先向Ad-dress_F_RP写入一个16位的二进制数,该数代表了将要读取的数据块的首地址,16位表示范围是0~65535,因此可以指定的首地址范围是64K字即128K字节;然后连续地从Address_F_R进行读取操作,每读一次,位置指针会自动加1而不需要重新设置。如果需要读取新的位置,只需要向Address_F_RP地址写入新的位置数据即可。该功能在EPLD器件内部的实现方法见图3。计数器可同步设置初值、同步计数,在AHDL语言中声明为1pm_counter[5]。其中,CNT_EN为计数使能控制,当CNT_EN为高电平时,每当CLOCK上升沿到来时计数器便会自动加一,从而实现了地址自动增加的功能;CLOCK为同步时钟输入端,上升沿有效;SLOAD为计数器同步设置初值信号,当该信号为高电平时,在CLOCK上升沿的作用下,计数器的输出Q[15..0]=D[15..0],从而实现初始化读取位置的功能。计数器用AHDL语言描述如下:
  
  counter:lPm_counterwith(1pm_width=16);
  
  counter.clock=
  
  
  
  /rd&(/we#(a[15..0]!=Address_F_RP);
  
  counter.sload=(a[15..0]==Address_F_RP);
  
  counter.cnt_en=(a[15..0]=Address_F_R);
  
  counter.data[15..0]=D[15..0];
  
  clock信号要保证在写Address_F_RP地址修改读取位置时,或读Address_F_R地址取数据时都能产生上升沿信号。总线a0-a15和D0~D15分别是由AD0-AD15分离出来的地址和数据总线。多路选择器则根据地址译码产生的S0-S3选择输出地址,输出地址直接连接到RAM和FlashROM的地址线上。如果访问除Address_F_RP和Address_F_RP以外的地址,则地址输出总线A115..1)=a[15..1]、A16=0,即单片机直接访问存储器;如果读取Address_F_R,则片选/CS2有效并且A[16..1)Q(15..0]作为输出地址。这样就可以自动地在不同存储区域进行切换,从而大大地增加了内存的扩充能力,并且简化了程序设计。运用同样的方法还可以定义FlashROM中的数据块写入地址Address_F_W和写位置指针地址Address_F_WP,RAM中也有类似的方法定义Address_R_(RAM数据块读地址)、Address_R_RP(RAM数据块的读位置指针地址)、Address_R_W(RAM数据块写地址)和Address_R_WP(RAM数据块的写位置指针地址)。这样

《基于PLD的嵌入式系统外存模块设计(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/143210.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。