采用CPLD增强单片机P89C669外部设备扩展能力
发布时间:2008/5/28 0:00:00 访问次数:542
p89c669是philips半导体一款51mx(存储器扩展)内核的微处理器,其指令执行速度2倍于标准的80c51器件,线性地址经扩展后可支持高达8 mb的程序存储器和8 mb的数据存储器,这是他相对于标准51内核的最大优点。目前的单片系统越来越复杂,扩展的外部设备也更多,如果能充分利用p89c669的丰富的线性地址资源,将能大大增强系统能力。在一个嵌入式系统开发中,笔者采用altera公司的cpld芯片epm7032利用这款单片机的线性地址扩展了丰富的外部设备资源。
1 p89c669的存储器结构 1.1 存储结构 p89c669的存储器结构为哈佛结构,地址分配如表1所示。 从表1可见,p89c669对传统的51内核的3部分存储结构进行了相应的扩展,各个部分的片内存储空间也增加了,如内部数据空间有1 280 b在片内,外部数据空间有768 b在片内,有96 kb的片内程序存储空间等。 寻址指令除了传统的mov,movx,movc外,emov指令与24位的通用指针寄存器eptr可寻址16mb的全部空间,但是所占用的指令周期也较长。 扩展外部数据存储空问hdata除了768 b在片内外,其余地址空间可以用来扩展外部设备(其实只要把片内的768 b通过指令将其屏蔽,也可以用来扩展外部设备)。 1.2 p2口的读写时序分析 寻址8 mb的数据存储空间,需要有23 b的地址寻址能力,p89c669将传统51内核的p2高位地址时分复用,从而得到23 b地址寻址能力,时序图如图1所示,即当使用23 b地址时,ale为高时,地址位a16~a22输出到p2.0~p2.6;ale为低时,地址位a8~a14输出到p2.0~p2.6。无论ale为何值,位地址a15都从p2.7输出。 2 系统外部设备扩展需求 epm7032具有32个逻辑单元,约600个门级单元,可用io口36个,内置ieee std.1149.1 jtag,方便可编程下载。 在满足系统资源的前提下,选用epm7032,将p89c669的p2口作为处理单元输入信号,经过cpld的内部逻辑进行译码或数据锁存,以获得各个外部设备资源的选择信号及少量的控制信号。 在本设计中,共需要得到设备选择信号如sram芯片m68af127b的片选cs_ram,2个flash rom芯片sst29sf040的片选cs_rom0,cs_rom1,模拟多路选择器sn74lv4052的使能信号线cs_4052,另外还有一些控制信号线,这里就不一一介绍。 实际上,p2口引入cpld,就p89c669的23 b地址线而言,用来地址译码和少量的控制信号等主要是利用最高的几位,在本设计中,由于sst29sf040用到地址线a0~a18,所以cpld的地址译码处理只能是利用剩下的a19~a22,这将在下文的cpld的译码单元可以看到。 3 epm7032s的逻辑设计 cpld的设计采用原理图的方法进行设计,简便快捷,采用74374模块锁存p2口的输入信号,ale反向后得到_ale作为74374的锁存时钟线输入。 如果不是对sst29sf040进行读写,则高位地址线a16~a18仍然可以利用,这里将其作为74hc4052的3个输入控制线a,b,inh,即图8中的a_4052,b_4052,cs_4052。 4 keilc51平台的外部设备测试 编写设备驱动程序是在keilc51的平台上,由于利用了p89c669的23 b地址线,在c51的平台上采用指针读写设备很方便,这里给出读写sram芯片m68af127b的c源代码例子,以供参考。 以上3句为测试sram的测试代码,start_ex-tram为sram芯片的起始地址(可根据cpld的内部设计进行相应的修改),第2,3句分别是写、读数据的宏。 5 结 语 利用p89c669的23 b的线性地址并采用cpld扩展外部设备资源可以说是不错的一个方法,对外部设备的访问将显得更加简便,当然,在成本方面系统设计工程师也要加以考虑,并最终寻找一个性价比最高的方案。 | |||
p89c669是philips半导体一款51mx(存储器扩展)内核的微处理器,其指令执行速度2倍于标准的80c51器件,线性地址经扩展后可支持高达8 mb的程序存储器和8 mb的数据存储器,这是他相对于标准51内核的最大优点。目前的单片系统越来越复杂,扩展的外部设备也更多,如果能充分利用p89c669的丰富的线性地址资源,将能大大增强系统能力。在一个嵌入式系统开发中,笔者采用altera公司的cpld芯片epm7032利用这款单片机的线性地址扩展了丰富的外部设备资源。
1 p89c669的存储器结构 1.1 存储结构 p89c669的存储器结构为哈佛结构,地址分配如表1所示。 从表1可见,p89c669对传统的51内核的3部分存储结构进行了相应的扩展,各个部分的片内存储空间也增加了,如内部数据空间有1 280 b在片内,外部数据空间有768 b在片内,有96 kb的片内程序存储空间等。 寻址指令除了传统的mov,movx,movc外,emov指令与24位的通用指针寄存器eptr可寻址16mb的全部空间,但是所占用的指令周期也较长。 扩展外部数据存储空问hdata除了768 b在片内外,其余地址空间可以用来扩展外部设备(其实只要把片内的768 b通过指令将其屏蔽,也可以用来扩展外部设备)。 1.2 p2口的读写时序分析 寻址8 mb的数据存储空间,需要有23 b的地址寻址能力,p89c669将传统51内核的p2高位地址时分复用,从而得到23 b地址寻址能力,时序图如图1所示,即当使用23 b地址时,ale为高时,地址位a16~a22输出到p2.0~p2.6;ale为低时,地址位a8~a14输出到p2.0~p2.6。无论ale为何值,位地址a15都从p2.7输出。 2 系统外部设备扩展需求 epm7032具有32个逻辑单元,约600个门级单元,可用io口36个,内置ieee std.1149.1 jtag,方便可编程下载。 在满足系统资源的前提下,选用epm7032,将p89c669的p2口作为处理单元输入信号,经过cpld的内部逻辑进行译码或数据锁存,以获得各个外部设备资源的选择信号及少量的控制信号。 在本设计中,共需要得到设备选择信号如sram芯片m68af127b的片选cs_ram,2个flash rom芯片sst29sf040的片选cs_rom0,cs_rom1,模拟多路选择器sn74lv4052的使能信号线cs_4052,另外还有一些控制信号线,这里就不一一介绍。 实际上,p2口引入cpld,就p89c669的23 b地址线而言,用来地址译码和少量的控制信号等主要是利用最高的几位,在本设计中,由于sst29sf040用到地址线a0~a18,所以cpld的地址译码处理只能是利用剩下的a19~a22,这将在下文的cpld的译码单元可以看到。 3 epm7032s的逻辑设计 cpld的设计采用原理图的方法进行设计,简便快捷,采用74374模块锁存p2口的输入信号,ale反向后得到_ale作为74374的锁存时钟线输入。 如果不是对sst29sf040进行读写,则高位地址线a16~a18仍然可以利用,这里将其作为74hc4052的3个输入控制线a,b,inh,即图8中的a_4052,b_4052,cs_4052。 4 keilc51平台的外部设备测试 编写设备驱动程序是在keilc51的平台上,由于利用了p89c669的23 b地址线,在c51的平台上采用指针读写设备很方便,这里给出读写sram芯片m68af127b的c源代码例子,以供参考。 以上3句为测试sram的测试代码,start_ex-tram为sram芯片的起始地址(可根据cpld的内部设计进行相应的修改),第2,3句分别是写、读数据的宏。 5 结 语 利用p89c669的23 b的线性地址并采用cpld扩展外部设备资源可以说是不错的一个方法,对外部设备的访问将显得更加简便,当然,在成本方面系统设计工程师也要加以考虑,并最终寻找一个性价比最高的方案。 | |||
上一篇:晶体管