当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]摘要:介绍一种在嵌放式系统中使用微处理器被动串行配置方式实现对FPGA配置的方案,将系统程序及配置文件存在系统Flash中,利用微处理器的I/O 口产生配置时序,省去配置器

摘要:介绍一种在嵌放式系统中使用微处理器被动串行配置方式实现对FPGA配置的方案,将系统程序及配置文件存在系统Flash中,利用微处理器的I/O 口产生配置时序,省去配置器件;讨论FPGA的各种配置方式及各种配置文件的使用;详述被动串行配置的时序及在嵌入式系统中实现的软硬件设计;说明本方案的优越性及应用前景。 关键词:嵌入式系统 ARM7TDMI S3C44B0X FPGA 被动串行配置 随着信息时代的到来,嵌入式系统成为继IT网络技术之后又一个新的技术发展方向。嵌入式系统以其功能强、体积小、功耗低、可靠性高以及面向行业应用的突出特征,广泛应用于各个领域。

现场可编程门阵列FPGA(Field Programmable Gate Array)是一种高密度可编程逻辑器件,其逻辑功能的实现是通过把设计生成的数据文件配置进芯片内部的静态配置数据存储器(SRAM)来完成的,具有可重复编程性,可以灵活实现各种逻辑功能。FPGA的这种特性使其在现代电子系统设计中得到了广泛应用。基于SRAM工艺的FPGA是易失性的,系统掉电以后其内部配置数据将丢失,因此需要外接ROM保存其配置数据。FPGA的配置是有时序要求的,如果FPGA本身不能控制配置时序,就需要有外部配置器件来进行时序控制。以Altera公司的系列FPGA为例,其本身不能控制配置时序,就有专用的EPC系列配置器件供其使用。在含有微处理器(MPU或 MCU)的系统中(如嵌入式系统),可以使用微处理器产生配置时序,将保存在系统RO风吹草动的配置数据置入FPGA。与前面一种方案相比,该方案不仅节省了成本,更缩小了系统体积。在对成本和体积敏感的系统中,该方案非常适用。 在某手持式通信设备的设计中,使用了嵌入式系统和FPGA完成了系统功能。嵌入式微处理器采用Samsung公司的ARM7TDMI系列处理器 S3C44B0X;FPGA采用Alrera公司的APEX 20K系列EP20K200E,使用S3C44B0X完成了对EP20K200E的配置,取得了良好效果。本文对其实现方法予以介绍。 1 ARM嵌入式处理器S3C4480X简介 S3C44B0X是Samsung公司专为手持设备和一般应用而设计的高性价比和高性能的嵌入式处理器。其突出特点它的CPU核采用ARM公司的 16/32位ARM7TDMI RISC内核,0.25μm CMOS工艺制造,主频最高可达66MHz,存储器寻址空间达256MB。由于其成本和功耗低,特别适合对成本敏感和功能敏感的应用场合,如PDA、 GPS、LCD Game、E-Book等。 2 APEX 20K系列FPGA配置方式及配置文件 2.1 配置方式介绍 Altera公司的APEX 20K系列FPGA可以使用以下方式进行配; ①使用专用配置器件,如EPC16、EPC8、EPC2、EPC1、EPC1441; ②被动串行方式(PS),使用微处理器的串行步接口或ByteBlaster下载电缆; ③被动并行同步方式(PPS),使用微处理器的并行同步接口; ④被动并行异步方式(PPA),使用微处理器的并行异步接口; ⑤边界扫描方式(JTAG),使用JTAG下载电缆。 使用方式①时,需要首先使用下载电缆将计算机生成的FPGA配置文件烧入EPC配置器件中,然后由EPC配置器件控制配置时序对FPGA进行配置,一次烧写即可重复使用。使用方式②、③、④时,配置文件事先以二进制形式保存在系统ROM中,可以脱离开计算机重复使用。若使用方②、③、④时,配置文件事先以二进制形式保存在系统ROM中,可以脱离开计算机重复使用。若使用方式②,微处理器将配置数据以串行(比特流)方式送给FPGA,在配置时钟驱动下完成配置。若使用方式③,微处理器将配置数据以并行(字节)方式送给FPGA,由FPGA在其内部将并行数据转换成串行数据,该串行化的过程需要外部配置时钟的驱动。在配置时钟速率相同的情况下,方式②、③所用的配置时间几乎相同,但方式②的接口要比方式③简单,若使用方式④,微处理器仍将配置数据以并行方式送给FPGA,在FPGA内部完成数据串行化;与方式③不同的是,该过程不需要外部配置时钟的驱动,但其接口更复杂,并且需要进行地址译码,增加了系统的复杂程度,一般很少采用。使用方式⑤时需要计算机的配合,无法在最终的实际系统中脱机使用,此处不予讨论。

通过上述讨论可以看出,在使用APEX 20K系列FPGA开发实际应用系统,特别是要形成某种产品时,如果系统中不含微处理器,只能使用方式①;若系统中含有微处理器,方式①、②、③、④都可以使用,但②、③、④可以发现,方式②的接口最简单,实现起来比其它两种方式都方便因而在含有微处理器的系统中得到了广泛应用,本通信系统的设计中即采用了该方式。 2.2 配置文件的使用 Altera公司的开发工具Quartus II及MAX+PLUS II可以生成多种格式的配置文件,针对不同的配置方式要使用不同格式的配置文件。设计项目编译以后会自动生成.sof文件和.pof文件。其中.pof文件在配置方式①使用专用配置器件时使用,.sof文件用于通过连接在计算机上的下载电缆直接对FPGA进行配置的场合,配置方式可以是JTAG方式或PS 方式中使用ByteBlaster下载电缆的情况。基于.sof文件还可以生成.hex、.rbf和.ttf文件。.hex文件是Intel Hex格式的ASCII码文件,第三方的编程器可以使用这种格式的文件对Altera公司的配置器件进行编程。.rbf文件是二进制文件,1字节的rbf 数据包含8bit的配置数据,使用时将其存入ROM中。微处理器人ROM使用这种格式的文件。.ttf文件是列表文本文件,.rbf文件的ASCII码存储形式,并且各个字节之间用逗号进行了分隔。如果系统中有其它程序,可以将.ttf文件作为系统程序源代码的一部分,和其它程序一起编译。本系统中采用了.ttf文件作为系统程序的一个头文件使用,其配置数据以数组形式被配置程序使用。对于某种特定型号的FPGA,无论其设计有多复杂,在相同版本的开发工具下生成的配置文件大小是一样的。 3 被动串行方式(PS)配置时钟 使用PS方式对FPGA进行配置时,只需要5根信号线,其配置时序如图1所示。 配置时这五根信号线都接至微处理器的I/O上,其中nCONFIG、DCLK、DATA0设置成输出态,由微处理器对FPGA进行操作;nSTATUS /CONF_DONE设置成输入态,由微处理器对FPGA的配置状态进行检测。微处理器首先在nCONFIG信号线上产生一个宽度大于8μs的负脉冲,然后开始检测nSTATUS信号的状态。FPGA检测到nCONFIG信号的下降沿后会迫使nSTATUS和CONF_DONC信号拉低,并且在 nCONFIG信号重新抬高之间保持为低电平。NCONFIG信号抬高后,nSTATUS将在1μs之内随之抬高,微处理器检测到此变化后就认为FPGA 已经做好准备可以开始配置。配置第一个上升沿与nSTATUS的上升沿之间要求至少有1μs的时间间隔。由于配置数据是与配置上升沿同步的,在配置时钟的上升沿来之间应当将1bit的配置数据在数据线上准备好,配置数据按低位在先高位在后的顺序从数据线上送出。当全部配置数据送出以后,CONF_DONE 信号将被抬高,表明配置结束。微处理器检测到CONF_DONE信号抬高,就结束配置过程。如果配置过程中出错,FPGA将迫使nSTATUS信号拉低,微处理器检测到此变化将重新开始配置。 配置结束以后,FPGA还需要个初始化的过程才能进入正常工作状态。在Quartus II或MAX+PLUS II生成的配置文件中已经包含了额外的初始化比特,只需将配置文件 数据在配置时钟的同步下全部送出就已经完成了初始化,用户不必另外加以考虑。 4 硬件电路设计 系统的硬件电路设计如图2所示。 由于S3C44B0X内部只有8KB的SRAM作CPU的Cache使用,无法满足系统程序存储及运行的需要,因此需要外挂存储器作为程序保存和运行的空间。系统中使用1片2MB的Flash作为程序存储器,系统的整个应用程序,包括EP20K200E配置程序及配置文件都固化于其中保存。另外使用1片 9MB的SDRAM作为系统程序运行空间,S3C44B0X、Flash和SDRAM构成了一个最小的嵌入式系统。Flash、SDRAM与 S3C44B0X的连接方法可参考S3C44B0X用户手岫。 使用PS配置地需要将EP20K200E的MSEL0、MSEL1、nCE三个引脚接地,然后将EP20K200E的nCONFIG、DATA0、 DCLK、CONF_DONE、nSTATUS引脚分别接至S3C44B0X的GPC0、GPC1、GPC2、GPC3、GPC4引脚上。 S3C44B0X的I/O口均为多功能口,可以根据应用的需要通过内部寄存器将其设置成输入口、输出口或特别功能口。此处将GPC0、GPC1和GPC2 设置成输出口,将GPC3和GPC4设置成输入口。

5 软件设计 配置时根据配置时序要求,首先在GPC0引脚(对应nCONFIG)产生一个负脉冲,启动配置,然后检测GPC4引脚的nSTATUS信号。 NSTATUS信号正常后就在GPC2引脚(对应DCLK)上送配置时钟,在GPC1引脚(对应DATA0)上同步送出配置数据。配置数据以字节为单位从 SDRAM中读出,通过移位操作以串行比特流方式从GPC1引脚送出。全部数据送出后,检测GPC3引脚(对应CONF_DONE)的状态,如为高电平说明配置成功,否则配置失败,需要重新进行配置。配置程序流程如图3所示。 程序实现使用了C语言。在GPC0引脚产生负脉冲可以通过对其先写0后写1来实现,延时使用简单的循环语句即可,其语句为 rPDATC=rPDATC%26;amp;0xfffe; //*GPC0置低 for(i=0;i<150;i++); //延时15μs rPDATC=rPDATC|0x0001|; //GPC0置高 其中rPDATC为C端口的数据寄存器。 读入某个引脚的状态并判断其高低可以使用一条语句实现,如读入GPC4的状态并判断其高低为 while(!rPDATC%26;amp;0x0010)); 如果GPC4为低电平,该语句就会一直此处循环,直至其变为高电平。 配置时钟通过在GPC2引脚循环置0、置1来实现,其实现语句为rPDATC=rPDATC|0x0004;//GPC2置高 rPDATC=rPDATC%26;amp;0xfffb;//GPC2置低 在GPC2由低变高之前,将1bit的配置数据在GPC1引脚上准备好。 如果配置过程中出错,EP20K200E将会迫使nSTATUS引脚拉低来通知S3C44B0X。在本程序中为了主加快配置速度,没有对此进行判断,而是在程序最后通过CONF_DONE信号否抬高来判断配置成功与否。如果配置出错,该信号将不会抬高,从而可以重新开始配置。 本国程序、配置文件和系统的其它程序统一编译成一个应用程序存在Flash中,系统加电以后首先运行位于Flash 0地址的引导程序,引导程序完成CPU的初始化,然后将应用程序从Flash复制到SDRAM中,从SDRAM中开始运行。在本系统中使用了实时多任务操作系统(RTOS),在软件设计时将配置程序放在第一个运行的任务中,保证在开机手首先完成FPGA配置。配置所需要的时间与微处理器的运行速度及配置文件的大小有关。在本系统中,微处理器运行在64MHz,配置文件的二进制形式有240KB,配置所需的时间在3s左右。 本文所讨论的在嵌入式系统中利用微处理器实现对FPGA配置的方案不仅在系统成本上有优势,而且在系统体积上也有优势,已经在实际系统中得到了应用,取得了良好效果。本方案虽然是针对APEX 20K系列FPGA的,但对于Altera公司其它系列的FPGA产品,只需稍做改动即可加以应用。另外,由于FPGA具有可重复配置的灵活性,可以在系统中包含多个不同功能的配置文件,使用时根据功能需要进行相应的配置,实现了一机多能。这一点在日益兴起的软件无线电系统中具有广阔的应用前景。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭