利用智原科技A320 SoC 平台开发2D图像加速器(下):利用人的慧打造物的智
2FPGA测试方式介绍 FPGA测试时使用A320 SoC设计平台跟一块FPGA(Xilinx的XC4VLX160)子板。SoC设计平台集成了完成设计所需的IP。完成功能设计仿真后,用FPGA实现的逻辑模块通过AHB/APB总线连接器与A320设计平台连接,可以很方便地完成功能验证,调试等一系列动作。因为A320芯片上的IP均为硅验证,在验证设计的同时也保证了从设计到芯片的一致性,图9表示A320 SoC设计平台里面的IP资源及结构。
其中,FA526为32位嵌入式CPU,是智原科技自行研制开发的产品。该CPU采用Harvard结构,拥有六级流水线(pipeline),与ARM V4的结构兼容。FA526使用16K/16K字节I-cache/D-cache和8K/8K字节的指令/数据scratchpad,采用JATG ICE接口使得编程调试极为方便。高性能低功耗让该款CPU的使用领域变得十分广泛。
SoC设计平台(A320)的核心芯片为FIA320DA0,其特性如下:
● 总线结构
□ 高速AMBA-AHB总线
□ 低速AMBA-APB 总线
□ 专用DMA AHB本地存储总线
□ 专用LCD AHB本地存储总线
图9
● 嵌入式处理器
□ 智原科技 FA526(基于ARM结构32-bit RISC CPU)
□ 16 KB指令高速缓冲存储器(I-Cache)
□ 16 KB数据高速缓冲存储器(D-Cache)
□ 内存管理单元(MMU)
□ 工作频率为200 MHz
● 外部总线接口
□ SDRAM (400M bytes/sec)
□ 异步的SRAM/ROM/Flash
● 时钟及锁相环(PLL)控制器
□ 32.768 KHz和3.6864 MHz 晶体振荡器
□ 可编程PLL控制器
□ 用于红外数据访问(IrDA)的47.923 MHz PLL控制器
□ 用于UART, SSP, and I2S / AC97接口的147.46 MHz PLL控制器
□ 专用DLL用于解时脉扭曲(de-skew)时钟
□ 4个时钟输出管脚
● APB 总线器件
□ 计时器
□ 看门狗
□ 实时计时器(Real Time Clock)
□ 中断控制器
□ 通用输入/输出管脚(GPIO)
□ 脉宽调制器(Pulse Width Modulator)
□ I2C接口
□ 同步串行接口(Synchronous Serial Port)
□ I2S / AC97接口
□ Flash 控制器
□ Multimedia / Secure Digital Card
□ 全功能通用异步接收器发送器(FFUART)
□ 蓝牙通用异步接收器发送器 (BTUART)
□ 标准通用异步接收器发送器 (STUART)
□ 红外数据访问(IrDA)
● 总线工作频率
□ AMBA-AHB 总线: 100 MHz
□ AMBA-APB 总线: 50 MHz
● 电源管理
□ 频率控制器
□ 时钟开关控制器
□ 工作模式
□ Turbo模式
□ 睡眠模式
□ 外部电源管理器
□ 电源状态指示器
● AHB 总线器件
□ SDRAM 控制器
□ AHB到APB 桥接器
□ 静态存储控制器(Static Memory Controller)
□ 10/100Mb以太网控制器及收发器
□ USB 2.0设备控制器
□ DMA 控制器
● 工作电压
□ 1.8V: 内核
□ 3.3V: 输入/输出
● 工艺
□ 0.18μm
● 封装
□ 552-pin BGA
● 外部资源
□ 三态AHB总线从器件接口
□ 5路AHB主器件
□ 2路DMA通道
□ 7路外部AHB从器件
□ 4路中断
使用智原科技提供的SoC开发平台和开发板,可以使研发资源更有效的集中在产品核心功能的开发上,带来的便利和优势是不言而喻的。图10是开发板的实物照片,其中心位置即为A320芯片FIA320DA0。以FA526 CPU为核心,FIA320DA0集成了常用的功能,为SoC的开发提供了有效的IP支持。同时以FIA320DA0为核心的开发板更有效地节约了开发时间和成本。
图10
A320并没有集成所有智原科技的IP,而是集成大部分客户所需要的,常用的IP。不同的功能集成出不同的芯片从而建立起各自的开发平台。不同平台的连接可以使验证系统更加灵活。例如要在A320上添加PCI的功能,可以使用以A321为核心芯片的扩展功能测试板。使用者能很容易的经由扩展出来的AHB与APBU总线连接自己的IP, 而且能评估自己的设计在系统上的效能和调试设计的错误。
图11
在提供硬件平台的同时,软件支持也是不可缺少的部分。A320可无缝使用ARM的工具链,如ADS1.2. 智原科技还提供参考软件,其目录结构如图11,软件包包括下列信息。
+ Board file
包含了PCB验证板的相关信息。
+ Doc
包含A320/A321以及FA526的规格书和使用手册。
+ Embedded_Linux
包含Linux操作系统源文件,内有ARM开源的工具,ARM Linux � 2.4.19源码,设备驱动及RamDisk。
+ ICE
包含CPU ICE PC 端的底层驱动软件以及安装手册。
+ Presentation_slide
包含presentation slide 和一些A320 Linux 实用信息。
+ Schematics
包含 EVB gerber 文件和schematic 文件。
+ Utility
包含实用工具及sound verification patterns(*.wav)
+ StarCell_Drivers
包含软件库, 例程等文件以及芯片诊断程序
2D FPGA EVB插在A320开发平台上后,在A320D芯片内的Decoder需要调整, 也就是在系统的内存空间中定义一段空间给2D图像加速器的AHB 从使用。A320有预留数个AHB 主跟从的端口,每一个从的端口都有其对应的地址空间,使用者可以选择看要接那个从的端口,然后读/写寄存器时则要发到相对应的地址
在A320D芯片内的Arbiter也需要调整仲裁的顺序, 让2D图像加速器的AHB 主端口使用, 一旦决定好接在那个主端口,其Grant & request就固定了。图12展示FPGA开发板的照片。
图12
2D图新加速器在FPGA验证的阶段我们先做的是non-OS 的环境,CPU用的是A320里面自带的FA526 CPU,AHB总线的速度是66MHz。表2呈现2D图形加速器测试结果, 我们仅就第一项的测试内容作说明
BitBLt and ROP3 Test
我们以测试项目中的第一大项Bit Block Transfer (BitBLt)为例,BitBLt的操作是用来传送像素,利用一个矩形由来源设备传送到目的设备。这个传输是经由一个三重的(ternary)光栅代表如何对应由来源, 目的以及模式像素组合的操作值来控制形成最终的目的像素。
BLT 操作能简单的区分为两种,如果来源是彩色的位图或者是操作在彩色的前景, 我们使用BitBlt 命令. 如果来源是存在显示内存的单色位图,我们使用彩色展开命令。
BitBLt命令接受由0x00到0xFF的Microsoft 256三元光栅操作码(ROP3)。每个光栅操作码代表一个来源像素,8x8模式以及目的组合的值进行布林操作。
表2
在FPGA的验证, 我们测试三种BitBLt命令如下, 每个分项的测试细节不再赘述。
1)BitBLt简单测试。
- SrcCopy: 来源是在显示内存的彩色位图,没有模式。ROP=0xCC
- SolidFill: 一个固定的彩色矩形可能由彩色前景填充的来源数据,没有模式。ROP=0xCC
- PatternBlt: 模式是 8x8 彩色位图或是一个bpp 位图,没有模式。 ROP=0xF0
2)彩色来源的ROP3, 彩色模式以及彩色的目的。
- 来源: 显示内存内的彩色位图或是彩色前景。
- 模式: 显示内存内的8x8 彩色位图。
- 测试256 ROP3码其内包括来源, 模式和彩色目的。
3)彩色来源的ROP3, 单色模式以及彩色的目的。
- 来源: 显示内存内的彩色位图或是彩色前景。
- 模式: 8x8 的一个bpp 位图来自内部模式掩模寄存器。
- 测试256 ROP3码其中包括来源, 模式和彩色目的。
2D 图像加速器在FPGA的bin 文档输出要跟原始的C 标准参考模型的输出相同,也就是像素的位置跟颜色要正确,FPGA验证才算成功。 这里指的Bin 文档可以是32bit的ARGB8888 32bit或24bit RGB565。
Non OS的测试利用SDRAM 内存上随机的位置, 如果要将绘图结果放到LCD上就要准备跟屏幕大小相同的帧缓冲输出到LCD上的帧缓冲供绘图的过程中使用。
软硬件协同仿真的沟通流程如下。
1)操作系统中加入驱动程序
2)软件需要硬件加速,要负责保留内存空间给软件跟硬件使用。还要担任建立虚拟内存与物理内存之间联系的角色。
3)当程序开始执行,绘图软体会准备2D绘图的资料,以及相关的绘图设定。
4)准备完成后,会透过操作系统发出指令通知驱动程序,而驱动程序依据指令种类的不同执行相应的动作。
5)开始绘图,驱动程序会把在虚拟内存中绘图软件准备好的绘图设定搬移到相对应的物理内存内,同时把所有会用到的内存的起始地址由虚拟内存转换成物理内存地址传送给绘图引擎,这些动作都完成后,会发送一个启动信号给绘图引擎通知它开始绘图。
在绘图引擎执行的过程,在还没有传回执行完毕的中断前,驱动会让绘图软体进入休眠状态,
释放FA526 CPU的使用权限,避免占用系统内其它工作的资源。
6) 在绘图引擎完成绘图后,会传回一个中断信号通知驱动程序,再由驱动程序唤醒绘图软件继续执行,而此时的结果画面已经更新到帧缓冲内,随时可以输出到显示设备,
如此已经完成了一张画面的绘制,图新加速器会继续着手下一张画面的绘制。
