位置:51电子网 » 技术资料 » 模拟技术

XScale PXA270在Linux下的FPGA设备驱动

发布时间:2008/5/27 0:00:00 访问次数:487

        

    

    

    作者:乾正光 王田苗 魏洪兴

    

    摘要 以acex1k50为例,介绍fpga在intel xscale pxa270微处理器系统上的应用。通过内存映射机制实现acex1k50在linux下的设备驱动;通过用户应用程序实现对acex1k50设备的操作,为fpga在嵌入式领域的应用提供一种方法。

    

    关键词 xscale pxa270 fpga linux 驱动

    

    引言

    

    intel公司推出的xscale采用arm v5te结构,是strong arm的升级换代产品。xscale pxa270处理器最高主频可达624 mhz,加入了wireless mmx、intel speedstep等新技术,以其高性能、低功耗、多功能等特点在信息家电、工业控制等领域得到了广泛的应用。在嵌入式控制中,“微处理器+fpga”是一种常用的解决方案。fpga(现场可编程门阵列)有编程方便、集成度高、速度快等特点,电子设计人员可以通过硬件编程的方法来实现fpga芯片各种功能的开发。在我们的一个数控平台的研究项目中,采用xscale pxa270作为主cpu,并对其进行fpga扩展,使其具有插补、电机驱动、信号处理、i/o口扩展的功能。linux以其内核精练、高效,源代码开放且免费等优势,在嵌入式领域得到了广泛的应用。下面以intel xscale pxa270上的altera flex/acex的应用为例,详细介绍linux下fpga设备驱动的实现。

    

    1 altera flex/acex芯片结构

    

    altera flex/acex芯片是基于查找表lut(lookuptable)原理而实现的。lut本质上就是一个ram。目前fpga中多使用4输入的 lut,所以每个lut可以看成一个有4位地址线的16×1的ram。当用户通过原理图或hdl语言描述一个逻辑电路以后,fpga开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入ram。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。由于lut主要适合sram工艺生产,所以目前大部分fpga都是基于sram工艺的,而sram工艺的芯片在掉电后信息就会丢失,一定要外加1片专用配置芯片(本实验电路使用altera epc2lc20)。在上电时,由这个专用配置芯片把数据加载到fpga中,然后fpga即可正常工作。由于配置时间很短,因此不会影响系统正常工作。在使用acex1k50之前,应对其进行设计编程,实现相应寄存器及i/o口的功能。有关fpga的详细内容请参阅相关资料。

    

    2 intel xscale pxa270处理器的系统存储器接口

    

    pxa270处理器的可编程静态存储体系结构如图1所示。

    

    

    

    图1 pxa270静态存储体系结构

    

    在系统上, acex1k50位于ncs<2>上,物理地址0x8000000~0x8001000共4k的静态地址空间。图2表示了intel xscale pxa270与acex1k50的硬件连接关系。

    

    

    

    图2 intel xscale pxa270与acex1k50的硬件连接

    

    3 linux下acex1k50设备驱动的实现

    

    3.1 linux下设备驱动基本原理

    

    设备驱动程序是应用程序与硬件之间的一个中间软件层,设备驱动程序为应用程序屏蔽了硬件的细节。这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它主要实现的功能有:对设备进行初始化和释放;把数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给设备文件的数据,回送应用程序请求的数据以及检测和处理设备出现的错误。

    

    linux将设备分为最基本的两大类:一类是字符设备;另一类是块设备。字符设备和块设备的主要区别在于是否使用了缓冲技术。字符设备以单个字节为单位进行顺序读/写操作,通常不使用缓冲技术;块设备为了提高效率,利用一块系统内存作为读/写操作的缓冲区,由于涉及缓冲区管理、调

        

    

    

    作者:乾正光 王田苗 魏洪兴

    

    摘要 以acex1k50为例,介绍fpga在intel xscale a270微处理器系统上的应用。通过内存映射机制实现acex1k50在linux下的设备驱动;通过用户应用程序实现对acex1k50设备的操作,为fpga在嵌入式领域的应用提供一种方法。

    

    关键词 xscale a270 fpga linux 驱动

    

    引言

    

    intel公司推出的xscale采用arm v5te结构,是strong arm的升级换代产品。xscale a270处理器最高主频可达624 mhz,加入了wireless mmx、intel speedstep等新技术,以其高性能、低功耗、多功能等特点在信息家电、工业控制等领域得到了广泛的应用。在嵌入式控制中,“微处理器+fpga”是一种常用的解决方案。fpga(现场可编程门阵列)有编程方便、集成度高、速度快等特点,电子设计人员可以通过硬件编程的方法来实现fpga芯片各种功能的开发。在我们的一个数控平台的研究项目中,采用xscale a270作为主cpu,并对其进行fpga扩展,使其具有插补、电机驱动、信号处理、i/o口扩展的功能。linux以其内核精练、高效,源代码开放且免费等优势,在嵌入式领域得到了广泛的应用。下面以intel xscale a270上的altera flex/acex的应用为例,详细介绍linux下fpga设备驱动的实现。

    

    1 altera flex/acex芯片结构

    

    altera flex/acex芯片是基于查找表lut(lookuptable)原理而实现的。lut本质上就是一个ram。目前fpga中多使用4输入的 lut,所以每个lut可以看成一个有4位地址线的16×1的ram。当用户通过原理图或hdl语言描述一个逻辑电路以后,fpga开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入ram。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。由于lut主要适合sram工艺生产,所以目前大部分fpga都是基于sram工艺的,而sram工艺的芯片在掉电后信息就会丢失,一定要外加1片专用配置芯片(本实验电路使用altera epc2lc20)。在上电时,由这个专用配置芯片把数据加载到fpga中,然后fpga即可正常工作。由于配置时间很短,因此不会影响系统正常工作。在使用acex1k50之前,应对其进行设计编程,实现相应寄存器及i/o口的功能。有关fpga的详细内容请参阅相关资料。

    

    2 intel xscale a270处理器的系统存储器接口

    

    a270处理器的可编程静态存储体系结构如图1所示。

    

    

    

    图1 a270静态存储体系结构

    

    在系统上, acex1k50位于ncs<2>上,物理地址0x8000000~0x8001000共4k的静态地址空间。图2表示了intel xscale a270与acex1k50的硬件连接关系。

    

    

    

    图2 intel xscale a270与acex1k50的硬件连接

    

    3 linux下acex1k50设备驱动的实现

    

    3.1 linux下设备驱动基本原理

    

    设备驱动程序是应用程序与硬件之间的一个中间软件层,设备驱动程序为应用程序屏蔽了硬件的细节。这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它主要实现的功能有:对设备进行初始化和释放;把数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给设备文件的数据,回送应用程序请求的数据以及检测和处理设备出现的错误。

    

    linux将设备分为最基本的两大类:一类是字符设备;另一类是块设备。字符设备和块设备的主要区别在于是否使用了缓冲技术。字符设备以单个字节为单位进行顺序读/写操作,通常不使用缓冲技术;块设备为了提高效率,利用一块系统内存作为读/写操作的缓冲区,由于涉及缓冲区管理、调

相关IC型号

热门点击

 

推荐技术资料

泰克新发布的DSA830
   泰克新发布的DSA8300在一台仪器中同时实现时域和频域分析,DS... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!