1 引言
随着fpga技术的不断发展和eda工具软件的完善,在fpga芯片上实现的各种复杂算法和构建sopc系统成为研究的热点。在很多科研和教学开展的实验中,都需要为大规模fpga芯片提供高速的计算机接口以及各种功能部件模块。目前市场上有不少fpga实验系统,但由于受目标芯片容量、接口、功能部件模块等方面的限制无法满足科研和教学需要。针对研究项目以及对参与项目研究学生培训的需求,我们设计了一套通用的fpga实验系统,该实验系统以大规模fpga芯片为核心,带有通用的计算机接口以及丰富的板上功能扩展部件,能较好地满足我们项目研究的需求,并可用于产品开发的原型验证、ic 前端设计验证,ip核验证以及eda课程实验教学等,同时也可作为高速多通道逻辑分析仪使用。
2 实验系统的设计思想
为使实验系统达到通用性的目的,系统上的fpga芯片应可通过pci、usb、串行、rj45(网络)和计算机交换数据,并扩展flash、sram、sdram、jtag、as/ps口以及配置芯片等功能部件。为满足学生研究和实验的需要,我们把卡上的fpga剩余io引脚扩展到一块教学实验用板中,教学实验板带有a/d、d/a、lcd、数码管、发光二极管、时钟系统、键盘、vga、ps/2、ram/rom、单片机等实验功能模块。
图1:fpga实验系统的整体框图
3 系统的软硬件设计
本实验系统有多种计算机接口,都采用了成熟的接口芯片,驱动程序由芯片厂家提供,直接调用其上的接口函数实现计算机和实验系统的数据传输。rs232接口设计中用一块ltc1386cs芯片实现电平转换后txd、rxd信号直接连接到fpga的io引脚,usb接口芯片用isp1581bd,pci桥接芯片用plx9054,网络接口芯片用lan91c111,由于这些接口及相关程序的设计方法有很多共同的地方,因此我们主要介绍pc接口部分中的pci-fpga的设计。
3.1 pci-fpga硬件设计
pci-fpga部分的电源包括3.3v和1.5v两种电压,1.5v(vcore)用于ep1s20f672的内核电源(vccint),除此之外其它电源都由3.3v(vio)提供。3.3v电源直接从pci插槽获取,1.5v电源则通过凌特公司的lt1764aeq-1.5稳压芯片获得。pci插槽部分的设计主要是如图2所示把对应信号和9054连接好,另外还需注意把prsnt1#和prsnt2中的至少一个接地,目的是让主机认出本pci设备的存在。工作模式用c模式,配置芯片用的sprom 93cs66,配置信息参照厂家推荐[1]。
3.2 pci接口软固件及测试结果
9054的sdk(软件开发套件)提供9054的驱动程序和各种9054的接口访问函数,在此基础上我们开发了几个应用程序接口函数(调用失败返回0,否则返回非0):
int opensgldmachannel_0(handle hdevice);//打开传输通道
int closesgldmachannel_0(handle hdevice); //关闭传输通道
int sgldma_transfer( //用dma方式传输数据
handle hdevice, //设备号
u8 *senddmabuffer, //传输缓冲区首地址
u32 localaddress, //局部总线首地址
u32 datalength, //数据块长度
unsigned int direction //0: pc to card; 1: card to pc );
int single_readwrite( //用单字节方式传输数据
handle hdevice,
u8 *pdata,
int datalength,
dword localaddress,
unsigned int direction //0: pc to card; 1: card to pc );
9054局部总线中lholda和ready是输入信号(如图3),其余都为输出。当9054向局部总线写时,lhold信号由低转高, lholda应由低转高以响应9054,9054输出ads为低电平时表示la上已经出现有效地址,当ready为低电平时,ld上每个周期传输一个数据。当传输到最后一个数据时9054输出blast一个周期的低电平,接着lhold变为低电平,等lholda也变低则一次dma传输结束。
我们按以上所述设计并加工了pci卡,利用fpga片上的ram作为输入和输出fifo,局部总线时钟为50mhz,主机把内存中的数据通过dma传输方式把数据写入fpga上的fifo中。fifo的深度为1kbyte时pci的传输速度为360mbps,当fifo的深度为100kbytes时,其传输速度达到916mbps。
4 实验系统的应用
实验系统接口部分研制成功后,主要起以下作用。
4.1 逻辑分析仪
以9054局部总线调试为例,本实验系统(ep1s20f672c7)可作逻辑分析仪使用。首先用vhdl按9054局部总线时序设计好传输数据控制器并综合,接着用quartusii5.0建立signaltap文件并设置监测信号及触发条件,编译下载到fpga中,然后便可进行逻辑分析。以ads上升沿作为触发条件,blast上升沿作为结束条件,对地址线la[31:0]、数据线ld[31:0]、ads、lw/r、lhold、lholda、ready、blast等70路数据dma传输时进行逻辑分析,其结果如图3所示。
根据综合结果,作为逻辑分析仪,本系统支持最高频率超过220mhz,可对从预留的128个io口输入的数据进行逻辑分析,存储深度超过1.6mbits。除可通过quartusii5.0提供的signaltap功能对信号分析处理外,也可以把从io口接收到的数据通过pci或usb接口传输给主机,然后通过主机编程[3]实现对数据的分析处理。
4.2 密码协处理器
本实验系统作为密码算法协处理器使用的逻辑框图如图4所示。以用3des对一段长消息加密为例,主机分别将控制、模式和密钥等数据送到协处理器的指定寄存器中,接着把明文送到fifo中,然后待协处理器处理好数据后接收结果。协处理器根据控制、模式等设定,把fifo中的32位数据转换成分组块,然后启动密码运算模块,处理完一个分组块后再把结果转换并写到fifo中,并设置状态寄存器,一直到所有数据处理完毕。
由于受到pci接口传输速率的限制,作为协处理器本实验系统的最大处理速度低于460mbps(数据进和出)。通过对3des、aes、sha1等算法的研究与实现,本实验系统可作为超过400mbps的协处理器,用于gf(2163)上ecc点乘则可超过3400次/s。
4.3 leon核的验证
leon cpu核[4]是公开源代码的32位risc嵌入式处理器,完全实现了sparc v8指令体系,可以根据用户的需要对其功能进行剪裁。该处理器由可综合的vhdl代码描述,可在fpga中实现,并且已经成功流片30次以上。其性能、功耗及配套工具虽比不上mips和arm,但0.85mips/mhz的处理速度(dhrystone2.1测试平台),对嵌入式linux, ecos, thumbpod(java), snapgear等多种嵌入式操作系统的支持,免费获取vhdl源代码与其配套的交叉编译工具、主机调试工具以及嵌入式操作系统是其优势所在。
在我们的实验中leon2 cpu核使用9830个le,系统时钟频率达到40mhz以上。
区块链开拓新疆土 用区块链记录农作种植资料
区块链的四个技术层面介绍
杰和科技DN74数字标牌播放盒产品评测
电脑录音软件哪个好,不限时间,无损音质
双电层电容器的工作原理和特点
基于FPGA芯片为核心实现通用实验系统的软硬件设计
哪些牌子的蓝牙耳机性价比高?双十二值得购买的四款蓝牙耳机
好用的开发工具平台推荐
诺基亚8发布最新消息:前后同拍创意十足! 良心保留3.5mm耳机接口,诺基亚8王者归来
区块链为什么是个好市场
差分放大电路有什么作用?功放之间该如何连接?
2019中国机器人行业年会在北京盛大开幕
组态王与FX5u之间EtherNet/IP无线以太网通信
揭秘折叠屏手机可折叠的“核心技术”
智能座舱系统架构框图及软件架构解析
隔离开关的操作要领
意法半导体和创迈思合作开发OLED屏下人脸认证解决方案
希捷携手六百多位生态合作伙伴打造数据共同经济体
TriEye与保时捷合作 将红外传感器应用于ADAS和自动驾驶系统
利用自动捕获能力的应用程序让无人机巡检手机信号塔