一种基于FPGA核系统的智能429-422信号转换模块的设计
扫描二维码
随时随地手机看文章
摘要:介绍了一种智能信号转换模块的设计方法。这种智能模块采用了基于FPGA嵌入式软核系统,是基于NiosII软核处理器的架构,可以在模块上完全实现外部总线信号之间相互转换,无需驱动程序或操作系统的干预。同时对用户逻辑设计、用户逻辑集成、固件设计技术等内容进行了详细的介绍。
关键词:现场可编程门阵列;软核;智能
0 引言
在工业控制等领域的计算机系统中广泛涉及到信号转换等,信号转换模块在系统中承担着在多种信号之间进行翻译转换的任务。随着应用环境复杂性、计算机系统集成度的提高,信号转换模块上需容纳的信号通道的种类与数量也越来越多。频繁、大量的信号转换必然会占用较多的系统资源。随着微电子技术的发展,国外的一些生产厂商如Altera已推出在FPGA上以软核(soft core)方式实现的嵌入式系统。这种嵌入式系统基于NIOS II嵌入式软核处理器,其外设可以灵活选择增删,并允许自定制外设。本文介绍了一种基于NIOSⅡ软核系统的智能429-422信号转换模块的设计。
1 设计原理
传统的非智能设计的转换模块,在工作时需要有驱动程序的控制,通过与操作系统或用户软件的交互,来实现信号转换的功能,亦即需要接入PCI Bus等系统总线,通过中断提请等方式工作,在转换通道数量多时,必然会影响系统的性能。采用智能设计的信号转换模块一般不需要操作系统的干预,接收到的外部总线信号经过本模块上NIOS II软核系统转换后,即可将数据信号输出。信号转换的工作全部由模块的硬件完成,因而可以实现对整个计算机系统资源的零占用。采用非智能设计与智能设计模块的结构示意框图如图1所示。
2 硬件设计
429或422总线适配电路已有大量成熟的设计,本文不再赘述,仅重点介绍FPGA内部总线控制逻辑设计以及NiosⅡ软核系统的配置。
2.1 FPGA控制逻辑设计
集成于FAPGA内部的Nios II CPU需要通过外部总线控制逻辑才能与外部总线进行通信,而Avalon总线是Nios II CPU与外部总线控制逻辑、片外FLASH、SRAM之间交换数据信号的枢纽。Avalon总线是一种协议较为简单的片内总线,在NiosⅡ系统中,外设都是通过Avalon总线与Nios II CPU相接的。Avalon总线接口可以分成两类:Slave和Master,Slave和Master主要区别是对于Avalon总线控制权的掌握。Master接口具有与之相接的Avalon总线的控制权,而Slave接口是被动的。Avalon总线支持自定制外设,用户可将自己的逻辑设计挂接到Avalon总线上。基于NIOSⅡ软核系统的智能429-422信号转换模块设计的详细系统结构框图如图2所示。
[!--empirenews.page--]
2.1.1 串行总线控制逻辑设计
为了将用户自定制的串行总线控制逻辑接入NiosⅡ系统,必须将其挂入Avalon总线。串行总线控制逻辑在设计上必须实现两类端口:一类为Avalon总线端口,Avalon总线时序由NiosⅡ系统实现,用户在逻辑设计时可暂不作考虑;另一类为串行总线控制端口。串行总线读操作时序如图3所示,图中给出了操作时各信号的时序保持关系。
读时序在设计上可以抽象为一个有限状态机,如图4所示。其工作流程为:无数据传输时,状态机停留在空闲状态;若有数据操作请求时,进入“地址有效”的状态;再进入“读信号有效”状态,依次完成“数据读取”、“操作安全间隔”状态(FPGA片外器件要求的两次操作之间的最小间隔)。考虑到异常产生后状态机的稳定性,每个状态都可以在异常产生时返回到默认的“空闲”状态。同时,有些状态作了些等待延时,是为了让控制逻辑与FPGA外部较慢速的器件进行时序匹配。串行总线写操作时序与读操作时序相类似。
2.1.2 429总线控制逻辑设计
429总线控制逻辑设计和串行总线控制逻辑设计方法与上文所述类似,这里不再重复。
[!--empirenews.page--]
2.2 NiosIICPU的配置
需要将自定制外设集成进嵌入式系统。本设计所使用的FPGA是Altera公司的EP2C35,可在Altera公司推出的开发软件Quartus II里对NiosⅡCPU进行配置。操作步骤为:在System contents中新建一个组件,在弹出的Component Editor窗口中的HDL Files栏中导入用户设计好的422接口控制逻辑设计的verilog文件;Signals一栏中,Component Editor已自动解析出导入的verilog文件所包含的端口Name,但用户还需对端口的类型进行指定,串行总线方向的端口须指定为export(相对于Avalon Slave端口而言)类型,Avalon总线方向的端口分别指定为标准的address、write、read、writedata、readdata等信号,如图5所示。
设置完成后的自定制器件出现在Custom Devices中,可以将自定制的器件加入到Nios Ⅱ系统中,由Nios Ⅱ系统为其自动批定内存地址等资源。编译无误后即可完成NiosII CPU的设置。
3 软件设计
Nios II嵌入式系统使用Altera公司提供的开发环境Nios Ⅱ IDE,Nios II IDE使用标准的C/C++语言作为编程语言,因此开发入门门槛不高。软件设计时,除了包含指定的system.h,alt_main.h等头文件,用户应针对被集成进入系统的自定制器件编写相应的头件,即将Al-tera提供的基本命令重新封装成用户自定义的软件命令,以使用户的程序更加直观、更具有可读性。
软件流程图如图6示。在每次上电复位后,智能模块应对整个系统进行重新初始化,包括外设控制字的配置以及缓存初始化等工作。初始化完成后,应首先检查有无接收请求,如有请求,则开始接收、转换数据,并写入发送缓存,然后再判断一次有无接收请求,如无,才转入发送流程。发送完一次数据后,再次检查接收请求。这种做法提高了数据接收事件的优先权,可以保证接收数据不丢失。
4 结束语
基于NIOSⅡ软核系统的智能429-422信号转换模块采用了智能化的设计技术,对比于非智能信号转换模块,具有零系统资源占用、可配置性强、转换速度快等特点,同时由于无须开发驱动软件,因而明显缩短了研发周期,在工业控制等计算机系统中将会有广泛的应用。