近十年来,FPGA行业获得了突飞猛进的发展,其在系统开发工作中的地位已从简单的胶合逻辑上升到了数字系统的核心处理器件。可编程片上系统SOPC(System On Programmable Chip)将CPU核与外设核以及系统软件集成到单一芯片中,帮助用户快速“量身定制”所需要的产品,创造性地为用户提供了基于FPGA的嵌入式设计方案。
Xilinx公司作为FPGA嵌入式软核解决方案商,在其所有系列的FPGA中提供了Microblaze 32位软核处理器,并推出了用于嵌入式系统编程的EDK(Embedded Development Kit)集成开发解决方案。本文结合实际项目的开发经验,详细讲解了基于Microblaze软核开发的整个流程,包括硬件平台开发、软件平台开发、嵌入式操作系统的加载以及用非易失性存储设备对FPGA进行上电配置等内容。
① 32个32位通用寄存器和最多18个专用寄存器;
② 32位指令系统,支持3个操作数和2种寻址方式;
③ 分离的32位指令和数据总线;
④ 通过本地存储器总线LMB直接访问片内的块存储器BRAM;
⑤ 具有高速的指令和数据缓存Cache,5级流水线结构;
⑥ 自带硬件调试模块MDM;
⑦ 带有8个主/从快速单工链路接口。
图1给出了Microblaze的内部功能块图。
图1 Microblaze的内部功能块图
从图1可以看出,Microblaze软核与其他专用集成芯片的硬CPU核在结构上没有大的差别,但它却可以通过PLB总线(Processor Local Bus)与EDK软件包将自带的各种软外设进行按需连接,并且支持用户自定义IP通过PLB总线(Microblaze从7.30版本开始取消了原有的OPB总线)和FSL(Fast Simple Link)总线与Microblaze软核连接,从而最大限度地发挥FPGA设计的灵活性。
① 用基本系统向导BSB(Base System Builder)搭建Microblaze平台,包括FPGA器件型号的选择、Microblaze处理器属性的设置、所需外设的添加和属性设置、测试程序的生成等步骤。图3给出了BSB完成后的XPS显示窗口内容。从图3可以看到,系统添加了多种外设,如RS232串口、与外部Flash和DDR RAM进行交互的控制逻辑、中断控制器和定时器等,这些外设通过指定的片内总线连接到Microblaze控制核上。除此之外,还可以在Ports页面对各个模块的信号进行相互连接,在Addresses页面对模块的地址进行分配等。这部分工作相当于将原本不可分割的ASIC专用集成芯片进行了拆卸,让用户深入到芯片内部,根据自身的需求去选取芯片需要具备的功能模块,并完成这些模块与控制核的连接和地址分配,形成用户最终定制的底层逻辑。这种拆卸和组合在一定程度上增加了系统开发的难度,但也换来了系统设计的灵活性、通用性和可扩展性。
图3 XPS主显示窗口
② 定制用户自己的IP核。由于嵌入式系统开发的特殊性,有时可能很难找到一款ASIC控制器,具备系统要求的所有外设接口。在这种情况下,要么用软件实现所缺的外设功能,从而牺牲了系统性能;要么单独购置一片该接口芯片,从而增大了电路板面积和成本。而基于FPGA软核的设计则不存在这种问题。在XPS中定制用户IP核与一般用VHDL编写逻辑电路不同的是,这种定制IP可以挂接在PLB总线上,从而实现与Microblaze的通信。XPS提供自定义IP核的生成向导,图4给出了用户自定义IP核的逻辑结构。从图可以看出,生成向导创建了两个模块,一个是与PLB总线进行交互的接口模块IPIF,另一个是用户逻辑模块User_Logic。IPIF完成PLB总线信号的捕捉和协议转换,这部分内容不需要用户参与,用户只需根据自定义逻辑的输入/输出信号在IPIF中给出相应的声明即可;User_Logic模块则是需要用户进行手动添加自定义逻辑代码的地方,在这里用户只需关注自己需要实现的功能,不用担心它们与Microblaze之间的通信链接。
图4 用户自定义IP核的逻辑结构
① Chipscope_icon,用于管理其他的Chipscope core,所有的Chipscope core都是通过这个核连接到FPGA的JTAG口;
② Chipscope_ila,用于监控FPGA内部的自定义信号,是使用范围最广的监控核;
③ Chipscope_plb46_iba,用于监控PLB总线;
④ Chipscope_vio,用于监控FPGA内部的实时自定义信号变化。
Chipscope使用的几个主要步骤包括:
① 调用Chipscope Pro Core Generator,生成需要使用的Chipscope core,并加入到工程中;
② 调用Chipscope Pro Core Inserter,选择需要监控的信号,设置采样和匹配参数,并将配置后的Chipscope core插入到设计中;
③ 调用Chipscope Pro Configuration,包括Chipscope Pro OnChip Debugging和Chipscope Pro OnChip Verification,即通过Chipscope的分析器工具Analyzer观察FPGA内部信号,并和设计者的需求进行比较,分析不一致的时序。