2011年(96)
分类:
2011-05-11 14:19:42
一个针对FPGA的完全可配置嵌进式32位RISC处理器
使用嵌进式微处理器的FPGA设计不断增长。根据Dataquest的统计,一年大约启动10万个FPGA设计项目,其中约30%包含某种形式的微处理器。
形成这种趋势有几个方面的原因。首先,数据流应用更适合可编程硬件,同时嵌进式微处理器更适合于执行控制流的应用。第二,要改变设计时,嵌进式处理器呈现更大的灵活性。最后,用软核的嵌进式微处理器消除了处理器过期的风险。从传统上而言,对嵌进式FPGA微处理器有一些限制,包括本钱,速度和设计性能。随着工艺技术和设计技术的进步,这些限制正在不断改善,现在设计职员更有可能在他们的应用中考虑使用嵌进式FPGA微处理器。
与过往相比,现成的微处理器已经大大比嵌进式微处理器便宜。但是,今天的低本钱FPGA被证实是一个节约本钱的解决方案。假如设计中已经使用了FPGA,处理器可以整合到现有的FPGA架构,节省了分立器件或新的FPGA本钱。设计周期也是一个重要的因素。将硬件与微处理器子系统构成相关的架构并进行实施能有多快?编写,测试和在微处理器上调试运行的代码需要多久?在过往几年中,在整体功能和易用性方面,针对嵌进式微处理器开发的软件工具也有了明显的改善。因此,现在可以在几分钟内运行设计,并且进行测试。产品上市的时间缩短了,由于现在用软件实现功能比硬件更快,更简单。
用现成的微处理器达到的性能有良好的历史记录。随着技术的改进,FPGA在功能和整个系统的速度方面有了明显的进步。由于现在的FPGA能够处理更大的带宽,嵌进式处理器对于很多设计有很大的吸引力。此外,由于FPGA与其他专用模块的紧密配合,软IP核的扩展性提供了一个系统接口,就性能和吞吐量方面而言,现在一个片上处理器可以提供卓越的设计方案。
当评估诸如LatticeMico32这样的特殊处理器时,使用嵌进式软处理器的优点非常清楚。
一个典型的嵌进式处理器子系统
让我们来看看一个典型的嵌进式处理器子系统,例如,LatticeMico32软处理器。该处理器需要有能与外界通讯的功能,因此通常核连接到一个片上总线系统,在此情况下是WISHBONE开放源代码总线。然后还需要一个存储系统,用来保存处理器程序代码以及处理器核使用的数据。对外部通讯而言,在一个典型的系统中有各种接口,从简单的通讯接口和连接、更复杂的协议到应用中的专用硬件模块。现在该处理器总线架构需要连接外设和存储器系统。一个典型的系统如图1所示。
图1 典型的嵌进式RISC处理器子系统
让我们来看看处理器核本身:LatticeMico32是基于哈佛总线结构的RISC架构的微处理器(图2)。 RISC体系结构提供了一个简单的指令集和更快的性能。哈佛总线架构提供独立的指令和数据总线,能够执行单周期指令。该处理器拥有32个通用寄存器,可处理多达32个外部的中断。定制的处理器可以插进乘法器或桶形移位器,以及不同的调试功能。
图2 LatticeMico32:一个可配置的RISC处理器核
Mico32可以用于各种存储系统,同时使用内嵌存储器用于存储指令和数据。内嵌存储器可以建立一个本地哈佛结构,并答应单周期访问指令和数据。对于更大的存储器需求,处理器通过一个仲裁器连接到其他的存储器模块或接口。这可以是用FPGA的存储器资源来实现的 “片上”存储器,或接口至外部存储器,诸如SSRAM、Flash和DRAM。处理所有访问协议至外部存储器的合适接口模块是由MSB提供的。提供可选的指令和数据高速缓存,能够配置成各种选择(高速缓存的大小,高速缓存块的大小等等)。
通过一个开放源码Wishbone总线接口,该处理器连接到各种外围元件。针对快速周转周期,图形用户界面可以轻松和快速地创建处理器平台。除了标准存储器控制器,这可能包括各种接口,不仅支持I
活性;
(2)为使数据能保持对超快速DSP内核的供给,TMS320C6416采用了两级超高速缓存器,即16 KB的一级数据Cache、16 KB的一级程序Cache和1 024 KB的数据和程序同一内存。为了达到更大的扩展,1 024 KB内存中的256 KB存储空间可设置用作二级Cache;
(3)TMS320C6416的存储器接口提供了到SDRAM、SBSRAM、异步器件如SRAM/ROM等存储器的无终端接口,也可连接到外部I/O器件;
(4)在TMS320C6416 中,增加了一个PCI接口,支持32bit宽的地址和数据复用总线,工作频率最高为33MHz;
(5)DSP器件比通用CPU家族的动辄几十瓦而言,其功耗一般在数瓦甚至毫瓦量级,这在各种功耗敏感场合显示出独特的上风,同时省往了繁杂的散热系统。本文采用C6416,I/O电压为3.3 V,内核电压为1.2 V。当时钟频率为600 MHz时,DSP的最大功耗小于1.6 W。
2.1 4×DSP的并行图像处理系统
使用4个TI公司高端数字信号处理器TMS320C6416构建一种新型的并行图像处理系统。该系统通过一个同步4口SRAM和系统总线构成互连结构,兼有紧耦合并行系统和松耦合并行系统的优点[4]。
2.2 4×DSP并行系统结构
图像处理算法灵活多样,而且还在不断地迅速发展,为满足日益复杂的图像处理算法和逐渐变大的图像规模,出于通用性考虑,系统中处理器之间需要灵活的、高带宽的通讯和握手机制。图2给出了所设计的并行系统框图,采用4颗TMS320C6416芯片,能较快完成以前一台计算机需要长时间才能完成的任务。
从图2可以看出,该系统以紧耦合系统和松耦合系统为基础构架而设计的,结合了两者的优点。紧耦合系统通过共享的存储器来实现处理器之间的通讯,处理器之间的联系比较紧密。松耦合系统中每个处理器节点带有存储器[5],处理器之间通过消息传递的方式来相互通讯。该系统每个节点即是一台完整的DSP处理器并且带有SDRAM存储器,属于松耦合系统;而所有节点共享一个同步4口SRAM存储器,构成的整体是一个单一计算资源,属于紧耦合系统。因此,该系统具有紧耦合系统和松耦合系统的优点,相比于前面两者具有增强的可用性和更好的性能。
2.3同步4口SRAM通道划分
将容量为128 KB的同步4口SRAM划分为7个区域(见图3),除一个公共区域外,其余6个区域用于DSP之间的互相通讯。根据同步4口SRAM的特点,这6个区域可以同时使用,即这6个区域为DSP之间的通讯构建了独立“通道”,通道之间相互独立、互不干扰并可以同时使用。同步4口SRAM的总线频率工作为133 MHz,数据宽度为16bit,其带宽为2
控制程序在Keil uv2环境下开发,程序采用汇编语言和C语言混合编程形式实现。实现时序控制部分采用汇编语言,主体部分则采用C语言进行编程。程序主体部分调用时序控制部分时,通过全局字节变量light_o和light_o1传递数据。
时序控制部分程序通过模拟SPI接口时序,完成对DDS芯片内部寄存器的设置,具体程序如下(定义部分略):
to_9833:
setb SCK
clr CS
mov a,light_o
mov r1,#08h
call out_SPI
mov a,light_o1
mov r1,#08h
call out_SPI
setb CS
clr SCK
ret
out_SPI:
RLC A
mov SO,c
clrSCK
setb SCK
djnz r1,out_SPI
ret
程序主体部分中,根据表1将音阶数据定义成一个一维数组:
code unsigned int music_table[ ]=0x5268,0x5c80,
0x67d3,0x6e00,0x7b78,0x8a97,0x92d5,0xa4d5,0xb8ff,0xcfa7,0xdc00,0xf6f0,;
主程序的编程框图如图5所示。对AD9833芯片通过写进控制字的方式进行初始化。程序在主循环中运行。主循环对有效按键进行处理,对于有效琴键,调用音阶函数即可。音阶函数如下:
void play_music(unsigned char nn)
light_o = 0x20;
light_o1 = 0x00; //设控制字
to_9833();
v_3.cm_int =music_table[nn]; //查音阶表
light_o = 0x40 | (v_3.cm.cm_0 0x3f);
light_o1 = v_3.cm.cm_1;
to_9833(); //设频率字
light_o = 0x40;
light_o1 = v_3.cm.cm_0 / 0x40;
to_9833();
如有音阶2的琴键被按下有效,C语言对调用函数描述为:
play_music(2);
程序中还包含按键处理、显示、存储控制等部分,限于篇幅,不再赘述。经实测,本音源发生器产生的各音阶频率与表1设计值一致,频率误差0.02%,波形则是“纯净”的正弦波。通过功率放大,驱动扬声器发声。
通常不同乐器发音时,均有不同特征的谐波。常规乐器难以实现只有主音、无谐波成分的音阶,而通过本文DDS芯片设计的音源器,实现了精准的无谐波成分的音阶,有独特的听觉效果。可作为基准音阶,用于各类乐器的校音。