用CPLD实现单片机对Flash Rom的读写控制
Abstract:Introducing a way of CPLD realizes that Microcontroller controls the read and write of Flash Rom. CPLD realizes that Microcontroller controls the read and write of Flash Rom, which not only is a breakthrough I / O limitations of Microcontroller, but also fully embodies the CPLD ——Logic Control Device not only can expand I / O port, but also has the characteristics of logic functions
引言:
无论哪种类型的单片机,I/O口是有限的。在某些应用场合,单片机的I/O口是不够用的,这时需要扩展单片机的I/O口,本设计选用CPLD扩展单片机的I/O口,实现单片机对Flash Rom的读写控制。之所以选用CPLD, 因为CPLD具有高集成度、高可靠性以及硬件逻辑结构的可描述性等特点。采用CPLD作为接口扩展芯片, 大大减少了所用芯片的种类和数量,缩小了体积, 降低了功耗, 提高了系统的可靠性和整体性。
1 ispMACH 4032ZCPLD
复杂可编程逻辑器件CPLD (Complex Program2mable Logic Device)是一种半定制的专用集成电路ASIC (Application Specific Integrated Circuit) 。其芯片上按一定排列方式集成了大量的门和触发器等基本逻辑元件。通过软件编程可以实现这些元件的连接,从而使之完成某个逻辑电路或系统的功能,成为一个可在实际电子系统中使用的ASIC。
本设计采用的是ispMACH 4000Z CPLD。ispMACH 4000Z CPLD系列器件的主要特点是,静态功耗仅为目前低电压CPLD的20%,而且运行速度极快。该系列第一种产品ispMACH 4032Z,管脚至管脚的迟延为3.5nS,时钟至输出的迟延为3.0nS,建立时间为2.2nS,工作频率高达265MHz。ispMACH 4032Z目前已经上市,有商用、工业用和车用三种温度选择,采用48脚TQFP或球间距为0.8毫米的49球芯片栅格阵列封装。
2 系统的总体设计
2.1 硬件设计
众所周之,无论哪种型号的单片机,I/O口是有限的,如果不去扩展I/O口,单片机的应用将受到局限。而CPLD具有丰富的I/O口的逻辑器件,单片机用COLD扩展接口可以大大扩展单片机的实现功能,在单片机对Flash Rom的读写控制中,采用CPLD实现单片机对Flash Rom读写控制,不仅可以实现I/O口有限的局限,也充分体现了CPLD逻辑控制器件不仅能扩展I/O口,而且具有逻辑功能的特点,系统的设计思想阐述如下:
系统硬件连接框图如图
图1 系统总体设计框图
上述框图设计说明如下:利用单片机ADUC831的P2.5、P2.6分别与Flash Rom的写控制端相连。P0口作为CPLD与单片机I/O相连,P2.0作为CPLD的控制选择端,P2.7作为CPLD同步控制端,CPLD的输出A0-A7作为Flash Rom的低8位地址,A8-A15为Flash Rom的高8位地址,D0-D7作为数据的输入输出口。
2.2 CPLD软件设计
ALTERA 公司的CPLD 开发软件有MAX +PlusII和QuartusII,这里使用MAX+PlussII完成系统的软件设计, MAX+PlussII支持原理图输入、VHDL 语言输入、状态图输入和混合输入等输入方法。VHDL硬件描述语言,与具体的工艺技术和器件无关,易于共享和复用,具有多层次描述系统硬件功能的能力。单片机通过CPLD实现对Flash Rom的控制,在设计中, CPLD需要实现的功能是CPLD对Flash Rom读和写,大大缩减了单片机的工作。用VHDL对该功能模块编程编译。程序片段如下:
Architecture flash rom is
Signal oel, opl: std_logic
Signal oeh, oph: std_logic
Signal rdw, rdr: std_logic
Begin
Status_select: block
Signal tmp:std_ logic_vector (5 down to)
Signal reg:std_logic_vector (44 down 0)
Tmp<=”01011011000zz01”when reg=”00000”else
”00011011000zz01”when reg=”00000”else
”01010111000zz01”when reg=”00000”else
”11110001000zz01”when reg=”00000”else
”111100110000zz01”
Process (clk)
Begin
If clk’event and clk=’1’then
Reg<=status;
End if;
End process;
2.3单片机程序设计
单片机主要完成系统的控制功能,在实现输出控制接口时需要与CPLD配合,提供CPLD 需要的数据和地址及控制线。当需要某一组输出工作时,先将该组地址存入DPTR 中, 再使用指令:MOVX A, @DPTR,同时“WR”被拉低,而CPLD 的通道选择端口与单片机的P0、P2. 0、P2. 7 相连接。CPLD通过这组信号判断选择并且使能Flash Rom,完成Flash Rom读写操作。
3 结束语
使用单片机和CPLD结合可以有效地实现过去需要利用单片机和大量外围接口芯片才能完成的功能。采用CPLD作为接口扩展芯片,大大减少了所用芯片的种类和数量,缩小了体积,降低了功耗,提高了系统的可靠性和整体性。用CPLD实现单片机对Flash Rom的读写控制不仅可以实现I/O口有限的局限,也充分体现了CPLD逻辑控制器件不仅能扩展I/O口,而且具有逻辑功能的特点.近年来,随着采用先进的集成工艺和大批量生产, CPLD 器件成本不断下降,集成密度、速度和性能都大幅度提高。这样,一个芯片就可以实现一个复杂的数字电路系统;再加上使用方便的开发工具,给设计修改带来很大方便,可以大大缩短系统的设计周期,从而极大提高产品的市场竞争力。
参考文献
[1] 张毅刚,彭喜源,曲春波. 单片机应用技术. 哈尔滨:哈尔滨工业大学出版社。1997
[2] 侯伯亨,顾新. VHDL硬件描述语言与数字逻辑电路设计。西安:西安电子科技大学出版社, 1999。
[3] 陈耀. VHDL语言设计技术.北京:电子工业出版社.2004
文章版权归西部工控xbgk所有,未经许可不得转载。