论文部分内容阅读
摘要:针对电路交换和软交换中广泛应用的SLIC接口电路,提出了一种基于Xilinx软核Microblaze为主控CPU的设计方案,给出了系统设计的全过程,包括基于EDK软件环境搭建硬件平台、IP核的制作和加载,以及软件平台的开发。通过SPI接口实现对SLIC芯片的控制,SLIC接口芯片采用SI公司的SI32260,实现完整的BORSCH功能。设计最大限度地利用FPGA的内部资源,释放了大量IO并简化了PCB设计,提高了系统的可靠性。
关键词:嵌入式系统;Microblaze;软核;用户接口
中图分类号:TP331文献标志码:A文章编号:1008-1739(2019)06-67-2
0引言
近年来,基于FPGA的嵌入式系统设计与开发取得了突飞猛进的发展,FPGA不再仅仅只是一个逻辑器件,而是集成了CPU核与丰富外设的可编程片上系统SOPC[1]。用户线接口电路SLIC是电路交换、软交换系统中不可或缺的用于提供模拟电话的接口[2]。SLIC接口有2种实现方式,一种是采用集成SLIC芯片及外围电路,另外一种是采用分立模拟器件搭建电路。采用SLIC芯片,具有开发周期短、集成度高和易于维护等优点,成为SLIC接口开发的主要方式。SI公司主流的SLIC接口芯片支持SPI控制接口和PCM数字音频接口,提供SLIC接口。Microblaze是XILINX SPANTAN系列FPGA内部的32位微处理器软核,作为CPU完成多路SLIC芯片的控制[3-4]。
1硬件系统
1.1硬件总体设计
硬件主要包括硬件平台的搭建和FPGA逻辑设计[5]。使用 XILINX集成开发环境XPS完成基于Microblaze的系统平台搭建[6],配置所需的各种外设;设计时序逻辑,并作为定制IP核加载到Microblaze外设总线[7];使用EDK完成系统软件的编译,与硬件可执行文件合并,实现对SLIC芯片的控制,完成用户接口电路完整的BORSCHT功能。
1.2搭建硬件平台
基于Microblaze的硬件平台如图1所示[8-9]。
以FPGA软核Microblaze为核心,搭建一个具有SPI接口、外设接口EPC、外部存储器接口EMC、串口、外部中断接口和GPIO接口的系统。一组SPI总线完成对SLIC芯片的控制,另一组SPI总线连接FPGA的配置芯片Flash,系统上电首先运行Boot Loader程序,将主程序从Flash加载到外部RAM,加载完成时程序跳转至RAM执行。EPC接口连接至逻辑IP核的双口RAM,用于控制字的读取和状态字的写入;逻辑IP核使用VHDL语言编写逻辑代码,完成交换机总线到SLIC芯片的PCM总线时隙调整,每路控制字、状态字写入对应的双口RAM,定时给CPU发送中断等逻辑功能,做成一个IP核加载到Microblaze上[10]。
1.3 FPGA逻辑设计
FPGA逻辑设计主要完成交换机总线接口、CPU接口、双口RAM的时序调整和逻辑控制。顶层文件完成外部接口描述和各个模块之间的连接关系。交换机总线是程控交换机主控板与外围板之间通过时分复用收發信令、PCM的一组总线。交换机总线接口通过串并转换将收到的每一路控制字存入双口RAM对应位置,CPU只读。CPU接口完成Microblaze对双口RAM的读写。CPU将每路SLIC的状态字写入双口RAM,交换机总线接口通过并串转换在对应时隙将状态字发给交换机。为了使双口RAM两侧的读写不冲突,CPU对双口RAM的读写与状态字、控制字的收发不在同一帧。
2软件系统
2.1软件开发流程
SDK提供了丰富的函数库和实例,方便开发。system.mss包含系统所有接口的定义及函数的实例,用户可以利用这些实例快速地编写软件。
硬件平台导出至SDK后,SDK新建Boot Loader和主程序2个工程。Boot Loader工程为FPGA加载完成后的启动程序,完成主程序从Flash到外部RAM的搬运,主程序完全搬运到RAM中后,程序跳转至RAM中运行,软件流程图如图2所示。
2.2主程序设计
主程序完成SLIC芯片的初始化和软件流程控制,主程序流程图如图3所示。
Microblaze初始化包括SPI控制器初始化、中断向量初始化和通用引脚(GPIO)初始化。Microblaze系统平台搭建完毕以后会自动为每种设备分配基地址和设备类型字,Xilinx公司提供了各种IP核的API函数,通过这些函数用户可以很容易地实现对IP核的控制。MAIN程序中主要包括SPI控制器初始化函数、中断初始化函数、GPIO初始化函数和SPI读写函数。
SLIC芯片初始化包括直流馈电设置、铃流设置、时隙分配设置和中断使能设置,初始化完成后SLIC接口就产生馈电电压。通过SPI接口和GPIO接口配合使用实现对多路SLIC芯片的控制。CPU的SPI接口的CS信号连接至数据缓冲器的使能端,每一路SLIC芯片的CS通过数据缓冲器用一个GPIO来控制。
2.3双口RAM地址映射
CPU通过外部设备控制器(EPC)读写存于双口RAM的控制字和状态字,FPGA完成串并转换和交换机总线信令的收发。FPGA的逻辑IP核对,定时给CPU发送一个外部中断,CPU对状态字、控制字进行一次更新。IP核对背板来的信令进行串并转换,并顺序存入双口RAM。交换机总线控制字、状态字的读写,通过数组来完成双口RAM地址映射。
2.4中断程序设计
对控制字和状态字的处理是在中断程序内完成的。控制字用于控制用户端口的各种功能;Microblaze根据收到的控制字,通过SPI接口对SLIC芯片对应寄存器进行更新,从而控制话机振铃及停铃等。状态字用于描述用户端口的各种工作状态,SLIC芯片检测到话机摘机后通过SPI接口上报给Microblaze,Microblaze更新双口RAM上报状态字。外部中断定时触发一次中断程序,完成控制字和状态字的更新,并控制SLIC芯片完成BORSCHT功能。
3关键技术问题分析
3.1定制IP核的制作
IP核的制作过程是将用户自己用VHDL或者Verilog HDL语言编写的逻辑源程序做成一个外设加载到XPS工程。源文件主要由源程序和网表文件2种文件组成。需要注意的是,XPS不支持VHDL和Verilog HDL混合编程。在实际应用中,尤其是FPGA逻辑是由几个研发人员共同编写的,有时会出现几个源文件是用不同的语言编写的情况。在这种情况下,需要先用ISE进行混合编程,生成网表文件,再加入到XPS中。
把IP核用到的所有源程序文件和网表文件放于指定目录下,编写mpd文件、pao文件和bbd文件,按照外设导入向导的步骤加入到XPS工程中。
3.2软硬件平台的融合
Xilinx硬件平台的搭建和软件的编译是分开进行的。XPS搭建好硬件平台以后,需要生成硬件可执行文件,导出至SDK,SDK完成软硬件的融合。
3.3 Flash加载
系统上电以后,FPGA加载启动程序,启动程序加载完成后完成主程序从Flash到外部RAM的搬运,当主程序完全搬运到RAM中后,程序跳转至RAM中运行。
启动程序和系统硬件通过EDK编译为一个可执行文件,主程序工程编译为另一个可执行文件,二者是通过批处理脚本文件合并生成一个mcs固件烧写到Flash。脚本文件定义了主程序的起始地址。
4结束语
通过XPS搭建基于Microblaze的硬件平台,外围逻辑制作成IP核加载到CPU,基于SDK编译控制软件,实现对SLIC接口芯片的控制,提高系统可靠性,降低了成本。
參考文献
[1]杨强浩.基于EDK的FPGA嵌入式系统开发[M].北京:机械工业出版社,2008.
[2]刘晨晖,任勇峰,李辉景,等.基于FPGA的多接口PCM传输系统的设计[J].电子器件,2016,39(2):324-328.
[3]吴志勇,郭元兴,刘雨沁.基于FPGA的波特率连续可调的UART接口设计[J].通信技术,2018(1):252-256.
[4]赵泽才,常青.基于Microblaze的嵌入式系统设计[J].现代电子技术,2006,29(10):56-57.
[5]刘安,禹卫东,马小兵,等.基于FPGA的高速串行数据收发接口设计[J].电子技术应用,2017(6):48-51.
[6]单超,王萍,朱爱民,等.基于Microblaze软核的嵌入式系统设计[J].单片机与嵌入式系统应用,2011,11(3):18-21.
[7]路后兵.Xilinx FPGA的嵌入式系统开发过程[J].单片机与嵌入式系统应,2012,12(11):32-34.
[8]刘雨沁,郭元兴,刘继平.基于FPGA的SDIO通信接口的设计实现[J].通信技术,2017,50(11):2632-2636.
[9]张强,王华,苏宏锋,等.基于Xilinx FPGA的硬件协处理器设计[J].数字技术与应用,2017(4):173-174.
[10]阮芳,冯永新.基于Xilinx Microblaze的嵌入式I/O系统设计与实现[J].电子器件,2008,31(2):626-630.
关键词:嵌入式系统;Microblaze;软核;用户接口
中图分类号:TP331文献标志码:A文章编号:1008-1739(2019)06-67-2
0引言
近年来,基于FPGA的嵌入式系统设计与开发取得了突飞猛进的发展,FPGA不再仅仅只是一个逻辑器件,而是集成了CPU核与丰富外设的可编程片上系统SOPC[1]。用户线接口电路SLIC是电路交换、软交换系统中不可或缺的用于提供模拟电话的接口[2]。SLIC接口有2种实现方式,一种是采用集成SLIC芯片及外围电路,另外一种是采用分立模拟器件搭建电路。采用SLIC芯片,具有开发周期短、集成度高和易于维护等优点,成为SLIC接口开发的主要方式。SI公司主流的SLIC接口芯片支持SPI控制接口和PCM数字音频接口,提供SLIC接口。Microblaze是XILINX SPANTAN系列FPGA内部的32位微处理器软核,作为CPU完成多路SLIC芯片的控制[3-4]。
1硬件系统
1.1硬件总体设计
硬件主要包括硬件平台的搭建和FPGA逻辑设计[5]。使用 XILINX集成开发环境XPS完成基于Microblaze的系统平台搭建[6],配置所需的各种外设;设计时序逻辑,并作为定制IP核加载到Microblaze外设总线[7];使用EDK完成系统软件的编译,与硬件可执行文件合并,实现对SLIC芯片的控制,完成用户接口电路完整的BORSCHT功能。
1.2搭建硬件平台
基于Microblaze的硬件平台如图1所示[8-9]。
以FPGA软核Microblaze为核心,搭建一个具有SPI接口、外设接口EPC、外部存储器接口EMC、串口、外部中断接口和GPIO接口的系统。一组SPI总线完成对SLIC芯片的控制,另一组SPI总线连接FPGA的配置芯片Flash,系统上电首先运行Boot Loader程序,将主程序从Flash加载到外部RAM,加载完成时程序跳转至RAM执行。EPC接口连接至逻辑IP核的双口RAM,用于控制字的读取和状态字的写入;逻辑IP核使用VHDL语言编写逻辑代码,完成交换机总线到SLIC芯片的PCM总线时隙调整,每路控制字、状态字写入对应的双口RAM,定时给CPU发送中断等逻辑功能,做成一个IP核加载到Microblaze上[10]。
1.3 FPGA逻辑设计
FPGA逻辑设计主要完成交换机总线接口、CPU接口、双口RAM的时序调整和逻辑控制。顶层文件完成外部接口描述和各个模块之间的连接关系。交换机总线是程控交换机主控板与外围板之间通过时分复用收發信令、PCM的一组总线。交换机总线接口通过串并转换将收到的每一路控制字存入双口RAM对应位置,CPU只读。CPU接口完成Microblaze对双口RAM的读写。CPU将每路SLIC的状态字写入双口RAM,交换机总线接口通过并串转换在对应时隙将状态字发给交换机。为了使双口RAM两侧的读写不冲突,CPU对双口RAM的读写与状态字、控制字的收发不在同一帧。
2软件系统
2.1软件开发流程
SDK提供了丰富的函数库和实例,方便开发。system.mss包含系统所有接口的定义及函数的实例,用户可以利用这些实例快速地编写软件。
硬件平台导出至SDK后,SDK新建Boot Loader和主程序2个工程。Boot Loader工程为FPGA加载完成后的启动程序,完成主程序从Flash到外部RAM的搬运,主程序完全搬运到RAM中后,程序跳转至RAM中运行,软件流程图如图2所示。
2.2主程序设计
主程序完成SLIC芯片的初始化和软件流程控制,主程序流程图如图3所示。
Microblaze初始化包括SPI控制器初始化、中断向量初始化和通用引脚(GPIO)初始化。Microblaze系统平台搭建完毕以后会自动为每种设备分配基地址和设备类型字,Xilinx公司提供了各种IP核的API函数,通过这些函数用户可以很容易地实现对IP核的控制。MAIN程序中主要包括SPI控制器初始化函数、中断初始化函数、GPIO初始化函数和SPI读写函数。
SLIC芯片初始化包括直流馈电设置、铃流设置、时隙分配设置和中断使能设置,初始化完成后SLIC接口就产生馈电电压。通过SPI接口和GPIO接口配合使用实现对多路SLIC芯片的控制。CPU的SPI接口的CS信号连接至数据缓冲器的使能端,每一路SLIC芯片的CS通过数据缓冲器用一个GPIO来控制。
2.3双口RAM地址映射
CPU通过外部设备控制器(EPC)读写存于双口RAM的控制字和状态字,FPGA完成串并转换和交换机总线信令的收发。FPGA的逻辑IP核对,定时给CPU发送一个外部中断,CPU对状态字、控制字进行一次更新。IP核对背板来的信令进行串并转换,并顺序存入双口RAM。交换机总线控制字、状态字的读写,通过数组来完成双口RAM地址映射。
2.4中断程序设计
对控制字和状态字的处理是在中断程序内完成的。控制字用于控制用户端口的各种功能;Microblaze根据收到的控制字,通过SPI接口对SLIC芯片对应寄存器进行更新,从而控制话机振铃及停铃等。状态字用于描述用户端口的各种工作状态,SLIC芯片检测到话机摘机后通过SPI接口上报给Microblaze,Microblaze更新双口RAM上报状态字。外部中断定时触发一次中断程序,完成控制字和状态字的更新,并控制SLIC芯片完成BORSCHT功能。
3关键技术问题分析
3.1定制IP核的制作
IP核的制作过程是将用户自己用VHDL或者Verilog HDL语言编写的逻辑源程序做成一个外设加载到XPS工程。源文件主要由源程序和网表文件2种文件组成。需要注意的是,XPS不支持VHDL和Verilog HDL混合编程。在实际应用中,尤其是FPGA逻辑是由几个研发人员共同编写的,有时会出现几个源文件是用不同的语言编写的情况。在这种情况下,需要先用ISE进行混合编程,生成网表文件,再加入到XPS中。
把IP核用到的所有源程序文件和网表文件放于指定目录下,编写mpd文件、pao文件和bbd文件,按照外设导入向导的步骤加入到XPS工程中。
3.2软硬件平台的融合
Xilinx硬件平台的搭建和软件的编译是分开进行的。XPS搭建好硬件平台以后,需要生成硬件可执行文件,导出至SDK,SDK完成软硬件的融合。
3.3 Flash加载
系统上电以后,FPGA加载启动程序,启动程序加载完成后完成主程序从Flash到外部RAM的搬运,当主程序完全搬运到RAM中后,程序跳转至RAM中运行。
启动程序和系统硬件通过EDK编译为一个可执行文件,主程序工程编译为另一个可执行文件,二者是通过批处理脚本文件合并生成一个mcs固件烧写到Flash。脚本文件定义了主程序的起始地址。
4结束语
通过XPS搭建基于Microblaze的硬件平台,外围逻辑制作成IP核加载到CPU,基于SDK编译控制软件,实现对SLIC接口芯片的控制,提高系统可靠性,降低了成本。
參考文献
[1]杨强浩.基于EDK的FPGA嵌入式系统开发[M].北京:机械工业出版社,2008.
[2]刘晨晖,任勇峰,李辉景,等.基于FPGA的多接口PCM传输系统的设计[J].电子器件,2016,39(2):324-328.
[3]吴志勇,郭元兴,刘雨沁.基于FPGA的波特率连续可调的UART接口设计[J].通信技术,2018(1):252-256.
[4]赵泽才,常青.基于Microblaze的嵌入式系统设计[J].现代电子技术,2006,29(10):56-57.
[5]刘安,禹卫东,马小兵,等.基于FPGA的高速串行数据收发接口设计[J].电子技术应用,2017(6):48-51.
[6]单超,王萍,朱爱民,等.基于Microblaze软核的嵌入式系统设计[J].单片机与嵌入式系统应用,2011,11(3):18-21.
[7]路后兵.Xilinx FPGA的嵌入式系统开发过程[J].单片机与嵌入式系统应,2012,12(11):32-34.
[8]刘雨沁,郭元兴,刘继平.基于FPGA的SDIO通信接口的设计实现[J].通信技术,2017,50(11):2632-2636.
[9]张强,王华,苏宏锋,等.基于Xilinx FPGA的硬件协处理器设计[J].数字技术与应用,2017(4):173-174.
[10]阮芳,冯永新.基于Xilinx Microblaze的嵌入式I/O系统设计与实现[J].电子器件,2008,31(2):626-630.