APP下载

一种基于MCU 芯片的FPGA 原型验证平台设计

2022-10-20张文文唐映强

电子技术应用 2022年9期
关键词:上位时钟原型

张文文,唐映强

(无锡中微爱芯电子有限公司,江苏 无锡 214072)

0 引言

随着对各种功能微控制单元(Microcontroller Unit,MCU)芯片的市场需求增加,怎么缩短MCU 芯片开发周期成为抢占市场一个关键难点。MCU 芯片验证在研发中所占的比例越来越重,占据了整个研发周期的70%以上,缩短验证周期就是直接有效的办法[1-3]。通常进行前仿真验证功能,后仿真验证时序性能,而仿真速度太慢,在遇到问题改设计后,如果只选择验证修改部分的功能,验证覆盖率达不到会减小流片的成功率。

用现场可编程逻辑门阵列(Programmable Gate Array,FPGA)验证功能可以比软件仿真速度高出4~6 个数量级[4],填补了仿真环境与实际芯片的巨大差距。对于仿真时间限制不能遍历的情况,FPGA 原型验证都可以轻松完成。同时,FPGA 可以给软件设计人员提供硬件验证平台,软件和芯片同时开发可以加快产品的面市时间。

综上可见FPGA 原型验证平台[5-7]的构建在整个开发过程的重要性。如何快速构建FPGA 原型验证平台,使其能担此重任,正是本设计的初衷。

1 FPGA 原型验证平台架构

FPGA 原型验证的原型指的就是专用集成电路(Application Specific Integrated Circuit,ASIC)。本文针对的是MCU 芯片,其特点是内部带有一个微控制器即MCU核心,是一个小型的片上系统(System on Chip,SoC)。

图1 所示为MCU 芯片的系统架构组成图。MCU 芯片的系统组成一般包括:MCU 核心、系统总线、存储控制器及存储单元、电源时钟复位管理模块、各种外设以及debug 模块等。MCU 核心常用的有需要授权的ARM核、开源的RISC-V[8-10]。系统总线常见的是ARM 推出的AMBA 总线中的高速总线(Advanced High Performance Bus,AHB)[11-13]。存储单元包括掉电易失随机存储(Random Access Memory,RAM)、掉电不丢失只读存储(Read Only Memory,ROM)。外设主要看MCU 芯片的应用场景,一般都有低速通信外设,如串行收发器。此外还有debug 模块,它是MCU 核心“肚里的蛔虫”,在MCU 芯片正常工作时没有什么作用,但是当芯片内部有问题时,可以通过debug 通道获取很多信息。但为了减小MCU 核心设计复杂度以及设计面积,往往大多数系统中不包含debug模块。

图1 MCU 芯片的系统架构组成图

通常进行FPGA 原型验证,为了尽可能保证与ASIC设计一致,FPGA 原型替换只进行独立IP 的替换[14-15],而其控制部分仍然会保留或做等价的微改动。替换后的架构如图2 所示。一般MCU 芯片中时钟分为快时钟和慢时钟,进行FPGA 原型替换的时候,采用FPGA 的锁相环(Phase Locked Loop,PLL)资源,将FPGA 输入的时钟进行分频或者倍频处理后提供给各个功能模块使用。存储器进行FPGA 原型替换,考虑到FPGA 的RAM 资源丰富和使用FPGA 自带IP 的性能高,一般不使用直接的逻辑替换,而使用FPGA 的RAM IP。

图2 MCU 芯片FPGA 原型系统架构组成

2 改进的MCU 芯片的FPGA 原型验证平台架构

通常FPGA 原型验证遇到问题时,使用FPGA 软件带的debug 软核进行逻辑的内部查错。这个方法有以下几个缺点:(1)需要重新综合,浪费时间;(2)debug 软核占FPGA 的逻辑资源,FPGA 选型要预留资源,增加成本;(3)没有重复使用价值,对不同的问题需要重新设置,再综合。

对于MCU 芯片,核心就是整个芯片运行的大脑,任何动作都由核心控制,而核心运作又是通过程序控制的,这个程序就放在存储单元中。前仿真验证时,为了节约仿真时间,不会按照芯片的实际工作流程去模拟仿真,一般选择通过后台直接把验证程序写入存储单元。由此启发,FPGA 原型验证也可以通过另外一个通道把验证程序写入存储单元。那怎么去实现呢?

本文提出将传统FPGA 原型验证过程中使用FPGA的RAM 原型替换程序存储单元,改为使用FPGA 双端口RAM 替换。其中一个端口控制按照传统的接入方法,另一端口控制信号接到专门的控制逻辑上,独立控制,而且不影响原MCU 芯片功能。首先想到专门的控制逻辑放到另外一块FPGA2 连接,由它独立控制。改进的MCU 芯片的FPGA 原型验证平台架构组成如图3 所示。两块FPGA 连接在到上位机,上位机软件统一控制。

图3 改进的MCU 芯片的FPGA 原型验证平台架构组成

对于上述的改进方案,一个验证平台需要两块FPGA板卡,如果手头正好没有第二块FPGA 开发板,那本方案也没有可行性。对此提供另外一种解决方案,即二次改进方案。该方案是在原来设计思想上,把双端RAM 连接到FPGA2 的逻辑,也放入FPGA1 中。这样还有一个优势,使用同一时钟源,减少异步信号带来的同步处理的逻辑量,控制逻辑也相对简单了。二次改进的MCU 芯片的FPGA 原型验证平台架构组成如图4 所示。

图4 二次改进的MCU 芯片的FPGA 原型验证平台架构组成

完整的验证平台还包括测试向量和测试结果输出。整个验证系统的工作流程可分为两大部分。第一部分是验证MCU 芯片特殊工作情况下的功能。在验证MCU 芯片特殊工作情况下的功能,使用MCU 原有的烧录通道,将运行程序烧录到双端RAM 口PORTB,通过设计的通道从双端RAM 口PORTB 读出程序进行校验,验证烧录通道是否正常。如果不正常,那问题就定位在烧录通道上。

第二部分是验证MCU 芯片正常工作情况下的各个模块的功能。具体的流程步骤如下:(1)上位机取测试向量编译成可执行程序;(2)上位机将该程序通过双端RAM口PORTA 写入;(3)上位机启动FPGA 原型系统工作。运行结束后上位机收到测试结果进行保存分析,然后重复(1)~(3)的操作,直至所有测试完成。

3 实践与对比分析

使用曼彻斯特编码,单线通信的自定义协议进行逻辑实现;其中“01”代表逻辑0,“10”代表逻辑1,连续的“00”代表传输开始,连续的“11”代表无数据传输;开始传输的是读写类型,紧接着传输的是长度,再是读写的起始地址,最后是读写的数据。

采用Xilinx 的v7-485t 芯片进行本设计的综合,使用的逻辑资源如图5 所示。

图5 FPGA 综合后逻辑分布图

对本设计进行功能仿真,读写时序分别如图6、图7所示。其中dio 信号为单线通信数据。图6 通过dio 从PORTA 往地址0 和1 写入数据0x12 和0x34,然后从PORTB 读出校验正确;图7 从PORTB 地址0 和1 写入数据0xAA 和0x55,再通过dio 从PORTA 读出校验正确。

图6 PORTA 写入PORTB 读出时序图

图7 PORTB 写入PORTA 读出时序图

通过实践统计,将所述的三种验证平台设计进行对比分析,如表1 所示。

表1 三种验证平台设计对比

经过对比,发现改进一和改进二的设计都能够完成FPGA 原型验证的目标同时缩短验证周期。两者区别在于使用FPGA 板卡的数量上的差异,当有现成的FPGA开发板时,在这里建议当FPGA 原型的逻辑量已经接近FPGA 板卡资源的70%以上时,就选择改进一的方案。如果需要进行FPGA 选型时,可以根据逻辑量的评估以及价格来综合考虑。选择两块FPGA 时,对应的FPGA2 不需要跟FPGA1 一样,因为增加的那部分逻辑量比较小,可以选择比较便宜小容量的FPGA,来减小成本。

4 结论

本文提出了一种基于MCU 芯片FPGA 原型验证平台设计方法,相比传统的FPGA 原型验证能够缩短验证周期,从而加快芯片产品的面世。本文中介绍了MCU 系统的基本架构组成,FPGA 原型验证的基本方法;详细介绍了设计思路,给出了两种实施方案,并进行了实践对比分析,实际应用可以根据需求来选择。此设计方法具有通用性,可移植性,值得推广。

猜你喜欢

上位时钟原型
武松历史原型卞元亨
包裹的一切
一场史无前例的乐队真人秀
这个时钟一根针
《哈姆雷特》的《圣经》叙事原型考证
人人敬爱的圣人成为了 传说人物的原型
有趣的时钟
时钟会开“花”
基础油“上位”
基于VC的PLC数据采集管理系统