"); //-->
文章作者:成都大学 万 曦
文章出处:单片机与嵌入式系统应用
摘要:可编程外围器件PSD应用于单片机系统后,简化了单片机外围电路的设计,增加了系统的可靠性;利用PSD与单片机组成的系统,通过计算机串口对FPGA进行实时在线编程、仿真和配置。
关键词:可编程外围器件(PSD) 在应用可编程(IAP) 可编程门阵列(FPGA)
随着单片机的广泛应用,其性能不断提高,集成度也日益提高。然而,传统的单片机系统设计需要众多分离器件(如地址锁存器、译码器、RAM、EPROM、PLD等),使得系统复杂、可靠性低,并且调试繁琐、效率较低。可编程门阵列(FPGA)需要外置存储器,且配置存储器多为OTP型,价格较高;加之,利用FPGA的JTAG口配置FPGA距离有限,调试不甚方便。
本文主要介绍一种基于闪烁存储器的在线可编程微处理器外围器件PSD813F2组成的单片机系统,同时利用该系统配置FPGA。即通过计算机串口将FPGA(本文以Altera公司10K系列为例)设计在线下载到单片机系统,由PSD813F2配置FPGA,实现IAP(In Application Programming)的功能。
1 PSD813F2性能特点
PSD813F2是PSD(Programmable System Devices)家庭的新成员,是基于闪烁存储器的在线可编程外围器件。它将单片机系统所需的外围器件集成在一起,并能与单片机进行无缝连接,因而简化了调度,提高了可靠性;同时,它与当前流行的众多单片机有极简单的接口,便于实现简单、灵活的嵌入式设计;它还集成了优化的“微控制器宏单元”逻辑结构,使得系统地址/数据总线可以与内部寄存器直接互连,简化了控制总线的设计。此外,PSD813F2还具有以下一些特性:
①内部数据总线为8位,可方便地与各类8位单片机直接相连。如要与16位单片机相连,需用2片PSD813F2构成16位的多路复用接口,并且地址必须循环移位,以保证MCU工作时能同时正确接收不同PSD813F2 ROM中的信息。
②内部包含1Mbit的大容量Flash ROM,这分为8个大小相同的块(如128K×8bit或64K×8bit),由用户规定的地址访问;另外还有256K的Flash OPT ROM及16KB的SRAM,其中SRAM可配置为2K×8bit或16K×1bit。
③内存(Flash ROM)或Flash OPT ROM可同时编程,即在执行来自一个存储器的代码时可同时对另一个存储器编程。
④带有16个输出宏单元和24个输入宏单元,能方便实现多种逻辑组合功能,包括内外的状态信号产生、地址译码等。
⑤带有27个可重建的I/O端口,可以用作不同的I/O端口,如单片机的I/O、PLD的I/O;最多可提供19个外部片选信号,其中16个I/O可配置为漏极输出。
⑥具有可编程电源管理功能(PMU),加之低功耗的CMOS技术,使得其工作时功耗很低;另外还具有自动检测控制器工作的功能,使之在不工作时将PSD转入低功耗状态。
由于PSD813F2具有以下特性,因而能方便实现I/O重建、扩展,并具有通过编程改变设计的灵活性,方便与各类不同单片机实现无缝连接。其内部框图如图1所示。
2 系统设计
整个设计是利用计算机将FPGA的相关设计经单片机传送存储器,由单片机配置PSD813F2,再由PSD813F2配置FPGA,实现IAP的功能,特别适于较远距离在线编程、仿真。另外,利用计算机的串行口可以与单片机进行较长距离的通信。
此外,由于PSD813F2片内有编程逻辑宏单元(CPLD),所以在MCU与PSD813F2之间不需要地址锁存器及外部程序存储器;并且PSD与LCD、FPGA的接口地直接用其PA、PB口连接,只需在软件设计和MCU程序中相应设计为I/O模式或地址锁存模式。
另外,FPGA的使用中通常需要时钟信号,并可能需用好几路同的时钟信号。在系统中采用ICS公司的ISC501倍频芯片,可实现2×~8×共8种倍频方式,最高可实现160MHz时钟;加之使用内部分频,可以满足多数设计需要。
系统设计框图如2所示。
3 MCU与PSD813F接口设计
PSD813F2具有大容量Flash ROM、16个输出宏单元和24个输入宏单元,因而在与单片机组成系统时很少需要外围分立器件,多数通过PSD813F2中的宏单元逻辑组合产生与单片机连接的地址总线、数据总线、控制总线;同时,通过内部的逻辑译码产生对3块独立存储区片选信号。另外,单片机与PSD813F2D内部宏单元的D触发器直通,使得设计计数器、外围逻辑控制极为方便。
PSD813F2内部包含3块并行、相互独立的存储器区,独立或并行的单片机在任何时候都可以从一块存储器执行擦写另一块存储器的操作。这使得单片机能够在执行程序期间,通过改变PSD内控制器的内容,而动态改变程序和数据空间的地址范围;同时,系统也能对逻辑资源、扩展输入和输出端口进行编程,使系统具有实时ISP的能力。
4 PSD813F2与FPGA接口设计
PSD813F2可以配置Altera或Xilinx的FPGA(本文以Altera的为例)。Altera公司的EPF10K10/20是其万门级FPGA的代表,原来需要外置存储器,且配置存储器EPC1441是OTP型,价格较高;而PSD813F2具有很好的在线编程功能,并且擦写次数10万次,同时,1片PSD813F2可以配置10片EPF10K10,因而其具有良好的性价比。
用PSD813F2配置Altera公司的EPF10K系列FPGA,主要有以下信号:
DCLK——输入移位时钟;
DATA——数据;
nSTATUS——状态信号;
CONF_DONE——配置是否成功信号;
nCONFIG——开始配置信号。
在实际配置电路中采用FPGA的被动串行方式,因而EPF10K系列FPGA的MSE0、MSE1均接地;同时nSTATUS、CONF_DONE、nCONFIG均需通过上拉电阻接电源。配置接口的信号线只需由PSD813F2的PA或PB口配置即可,如图3所示。
5 软件设计
PSD813F2编程是在硬件基础上,利用专用开发软件PSDsoft进行系统开发的;而PSDsoft是一套在Windows环境下运行的软件工具,运用可视化界面进行编程,具有人机交互功能,其一般开发流程如图4所示。
然而对于单片机系统,更熟悉的是采用C51或汇编进行编程。利用单片机对PSD813F2进行配置时,所使用的C51程序中最主要的是对PSD813F2进行初始化的子程序:
void InitPSD813F2(void){ ;初始化程序
//PA0 LCD_R/W ;定义PA0为LCD读写
//PA1 LCD_RS ;定义PA1为LCD复位
//PA2 FPGA_DCLK ;定义PA2为FPGA时钟
PSDPACtrlReg=0x03 ;//设定PA口的读写模式
PSDPADir=0xff;
PSDPADri=0x00;
//PB0 FPGA-CON_DONE
//PB1 FPGA-nSTATUS
//PB2 FPGA-DATA
//PB3 FPGA-nCONFIG
//PB4 LCD-CS_LCD
PSDPBCtrlReg=0x00 ;//设定PB为MCU的读写
PSDPBDir=0x0fc ;//设定PB读写模式
PSDPBDri=0x00;
}
完整的PSD源程序请见网络补充版(http://www.dpj.com.cn)。
结束语
由于PSD813F2具有高的集成度和很强的在线编程功能,与单片机组成系统后可方便地嵌入FPGA的配置中。实际开发的系统能够满足各类FPGA配置的要求,同时,实际用VC开发的应用于实际的程序下载到PSD后,可实时下载程序到PSD,也可上载PSD的任一MainFlash的数据到计算机,也可随时监测PSD片内任一RAM中的数据,真正做到了ISP、IAP。另外,配置Altera的FPGA与Xilinx的FPGA时,达到了与外置配置存储器完全相同的效果。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。