零成本快速完成SoC概念验证
2018-08-13 16:41:59 来源:微迷 评论:0 点击:
场景
您的公司提供基于模拟/混合信号(AMS)和传感器的IC,而您的优质客户希望您创建一个包含数字处理器的片上系统(SoC),如图1所示。您需要在接下来的几天内快速提供一个概念验证,向客户证明这款新IC的可行性。不过,您在数字处理器设计方面的经验不足,且您的预算非常少。
图1:场景——扩展AMS设计以包含处理器
由于缺少资金,您需要尽可能降低非重复性工程(NRE)成本。在本文中,NRE定义为IP和EDA工具的成本。由于您的工资是重复发放的,因此概念验证所花的时间不包括在NRE中,但不管怎样,您只有几天时间来完成概念验证。如何能快速向客户提供概念验证,同时又不产生NRE成本呢?
ARM DESIGNSTART
ARM公司察觉传感器和混合信号公司、初创公司以及小型团队对创建定制SoC有特殊要求,因此提供了DesignStart门户(图2),以便设计人员能够快速、轻松、免费试用各种精选ARM产品。此外,Mentor Graphics提供了Tanner EDA设计工具的免费评估版,协助ARM认可的设计合作伙伴进行SoC开发。
图2:ARM DesignStart门户(来源:ARM)
针对您的项目,该门户提供ARM Cortex®-M0处理器,您可以免费下载并将其用于设计和仿真。这是快速概念验证项目的理想解决方案。ARM Cortex-M0是一款小尺寸、低功耗的32位处理器(图3)。
图3:ARM Cortex-M0处理器(来源:ARM)
此处理器广泛用于行业中对成本敏感的设备,主要特性如下:
• 内置低功耗特性——例如休眠、深度休眠和状态保持低功耗模式
• 确定性指令的执行时序——指令和中断具有固定时序,中断处理自动执行
• 极佳的代码密度——具有优于其他8位/16位设备更少的代码
• 占用面积非常小——仅有12k个门,用8位处理器的门数量实现了32位处理能力
• 轻松快捷的开发——仅有56条指令和一个AHB总线接口,可以快速掌握整个Cortex-M0指令集和对C语言友好的架构
如果您刚刚才开始使用Cortex-M0处理器,您可访问ARM Developer(https://developer.arm.com/),了解更多信息。
Tanner EDA 解决方案
Mentor graphics提供Tanner EDA工具的30天免费评估版,您可以利用它来设计和仿真SoC概念验证。Tanner EDA是一款高度集成的、完整的前端到后端的数模混合信号IC设计解决方案。针对您的概念验证项目,您可以利用S-Edit创建AMS电路图,集成ARM Cortex-M0内核,并利用T-Spice和ModelSim仿真整个设计(图4)。验证概念之后,您可以使用全套设计工具进行版图布局并验证设计(此部分不在本文讨论范围之内)。
图4:Tanner设计和仿真流程
项目准备工作包括如下步骤:
1. 注册DesignStart以便免费使用Cortex-M0处理器。
2. 获得许可之后,将Cortex-M0设计套件下载到项目区域。
3. 注册以获得Tanner EDA工具的30天免费评估版。
4. 下载Tanner EDA工具并设置许可证。
现在,一切准备就绪,您可以开始概念验证设计了。
示例设计
了解概念验证主要步骤的最佳办法是通过一个示例设计(图5)。
图5:示例设计——用传感器驱动与处理器集成的ADC
我们的示例设计显示,一个模拟传感器连接到了一个8位模数转换器(ADC),而我们希望将ADC连接到ARM Cortex-M0处理器。由于这是一个概念验证,您无需大费周章地编写处理器上运行的软件程序。相反,您只需通过仿真确认来自控制模块的数字串行输出能与处理器正确通信即可。因此,该项目应把重点放在AMS设计与处理器的正确接口上。
设计和仿真流程
ARM Cortex-M0 DesignStart设计套件(图6)提供了带有周边元器件的预集成处理器子系统。利用示例设计,您可以将控制模块连接到AHB2APB接口,后者可连接到AHB接口。ARM AMBA®先进高性能总线(AHB)规范是处理器的主要系统总线,而AMBA先进外设总线(APB)规范则可用于连接周边元器件。该系统经您(而非仿真器)模糊处理过,由具有ARM Cortex-M0功能的Verilog源文件组成。
图6:控制模块连接到ARM Cortex-M0处理器(来源:ARM)
创建接口
控制模块是一个描述元器件行为的Verilog模块(图7)。您可以在S-Edit中利用文本编辑器创建此描述。
图7:控制模块的Verilog描述
为将控制模块(ADCCtrl)连接到子系统总线,您需要创建一个可将控制模块的输入和输出映射到APB的Verilog模块。这意味着您需要了解APB标准文档(可以从ARM免费下载获得)。您可以在一个文本文件内定义模块(图8),内容如下:
1. 定义APB输入和输出。
2. 指定您需要从控制模块连接的设计输入和输出。
3. 指定行为代码(图9)中需要使用的所有设计信号。
4. 建立控制模块、设计I/O与此接口模块之间的端口映射。
图8:定义接口和端口映射
接着,您可以在同一文件(图9)中定义I/O和信号的实际行为,包括就绪状态、何时等待以及如何发送和接收数据。
图9:总线接口行为
插入MCU系统
接下来,我们需要将外设连接到Cortex-M0系统。MCU系统模块为此提供了数个APB扩展端口。对于本例,我们选择端口15。在代表该系统的Verilog代码的定义部分中,增加ADC所用的信号(图10)。
图10:定义ADC信号
在同一文件的APB子系统配置部分中,将ADC信号连接到APB上对应APB端口15的信号。最后对APB接口模块进行实例化(图11)。
图11:APB接口模块中的ADC实例化
编写软件
通过接口定义将控制模块连接到Cortex-M0子系统之后,您需要编写一个在处理器上运行的测试程序。该程序必须编译到Cortex-M0上运行,因此您可以使用ARM Keil® MDK-Lite,它是一个用于创建、编译和调试程序的软件开发解决方案。有关如何获得评估版的详细信息,请参阅下载页面。或者,您可以使用DesignStart包中附带的Keil MDK 90天许可专业版。
快速创建软件测试程序的最简单办法是复制和修改DesignStart设计套件中包含的hello.c文件(图12)。
图12:测试软件程序
软件程序在仿真Cortex-M0内部操作ADC。ADCDATA已被定义及设置为基准,即APB端口15的存储器映射地址的十六进制值。程序通过UART模块在仿真器中执行printf语句。代表传感器信号的ADC输入电压设置为1.8V。ADC参考电压设置为2.2V。其与215次计数的ADC输出值((1.85V/2.2V)*256)相对应。程序会检查是否仿真了215次计数。若是,则测试成功。若否,则测试失败。
利用Keil MDK-Lite工具将此程序编译到ModelSim work目录中。
设计仿真
S-Edit创建Verilog-AMS网表,然后传递给T-Spice。如图13所示,T-Spice会自动分割网表,从而将设计分为模拟仿真和ModelSim中的数字仿真。
图13:模拟数字仿真划分
两种仿真器均被自动调用,而在仿真期间,信号值在仿真器之间来回传送。这意味着不论您使用哪种设计实施语言(SPICE或Verilog),您只需从S-Edit运行仿真,设计就会被自动拆分到各个仿真器中。之后,您可以使用ModelSim或T-Spice波形查看器查看结果。
示例设计包含一个测试平台,可提供电压源和时钟,并可捕捉I/O值以显示波形(图14)。对于此概念验证,用固定不变的1.8V模拟电压代替传感器信号。
图14:设计测试示例
8位ADC通过逐次逼近法将传感器的模拟信号转换为离散数字表示以输入到处理器中。控制模块给出一个较高或较低的“猜测”,而比较器将模拟输入与数模转换器(DAC)的输出相比较,如图15中的波形所示。
图15:显示逐次逼近的波形
如果仿真成功,您将看到软件程序运行所得出的控制模块的真实仿真状态。
结语
该概念验证项目的重点是让AMS设计精确连接到Cortex-M0处理器,以向终端客户证明设计可行。您可以在不花费任何NRE成本的情况下快速完成此项目:
后续步骤
有了概念验证,您只需创建一个演示,甚至做几张PPT就可以向客户介绍您的项目。客户满意之后,下一步便是实施SoC。这就要求您购买流程中用到的工具,并且购买含有ARM简化快速许可证的Cortex-M0及设计套件。然后,您需要完成后端实施流程(图16),并将设计交给您选择的晶圆代工厂。
图16:Tanner EDA后端实施流程
麦姆斯咨询和Mentor建立战略合作伙伴关系,麦姆斯咨询代理销售Tanner系列EDA软件,并开展专题研讨会及培训课程。
联系方式:
麦姆斯咨询
联系人:王懿
电话:17898818163
电子邮箱:WangYi@MEMSConsulting.com
上一篇:智能手机创新点燃物联网的创造力
下一篇:防范物联网边缘器件漏洞风险