采用嵌入式CPU内核的可编程器件为应对各种设计挑战提供了有效途径,而这些挑战仅仅通过软件或硬件的方法可谓举步维艰,或者说解决成本非常高昂。这些器件结合了能再编程的数字与模拟硬件资源,能提供您切实所需的功能。此外,设计工具能消除与可编程逻辑通常相关的大多数复杂性问题。例如,赛普拉斯半导体公司推出的PSoCCreator就是专为简化上述工作而精心设计的。借助PSoCCreator,用户不必一定要有完美的电路设计,仅需提供相关的设计元素即可,有点像在白板上绘画的感觉。随后,该工具能提供外设模块(即组件)的最佳布局和布线方案,并设置所需的时钟和电源配置,进而为用户优化设计。
下面以采用PSoCCreator进行设计为例,给出了如何在无需软件工程师而成为硬件专家的情况下协助开展软/硬件协同设计。作为一款混合信号器件,PSoC包含集成型数模转换器(DAC),可用于将电压(或电流)输出到引脚或器件的其它部分。大家可将两个组件拖放到原理图上,并通过线路将其连接在一起,从而实现将DAC连接到引脚上。仅需几秒钟即能对组件进行定位,并将其复制到原理图上。
请注意,DAC没有“输入”,也就是既没有电源线路和Vref输入,也没有繁杂得可怕的总线接口问题,有的只是一个可连线至引脚的统一供电电压源。另外,引脚同样也非常简单。事实上,PSoC引脚能通过各种驱动模式支持令人炫目的GPIO、SIO和模拟功能组合,此外还提供启用和同步等特性。但是,我们在此使用的模拟引脚已针对您的需求将物理引脚配置就绪,因而无需担心如何在不影响DAC信号的情况下安全地关闭有关特性。
让设计人员与潜在混乱的低层实现细节相隔离,这一理念是PSoCCreator设计方案的核心,能帮助设计人员将精力集中在功能设计上。该工具可提供经全面验证的一整套200个组件,其中包括模数转换器(ADC)、DAC和放大器;UART与I2C以及PWM和定时器等,这些与传统原理图捕获工具中的原始IP模块相比,拥有高得多的易用性。在这些组件中,我们将实现细节进行了抽象化,而且设计项目能够确保第一次就无差错。用户可在参数编辑器(即定制器对话框)中选择功能,而工具则决定实现用户要求所需的器件配置。大家所要做的就是,将组件放到页面上,并双击进行定制器选择即可。
下面以UART为例进行说明。这通常是以固件为导向的组件,因而定制器提供的配置选项非常便于工程师开展工作。您要做的不是考虑时钟输入和过采样速率,而是直接考虑需要什么样的波特率,这样工具就能自动创建可为组件提供相应频率的时钟源。
为什么不是所有工具都能采用这种工作原理?作为器件的制造商,我们已经知道如何才能解决这些问题了。为什么要迫使用户来做这些设计工作?设计选择应作为选项提供,而不是成为设计障碍。以硅芯片硬件为核心的设计方法过于低级别,工程师不值得在这上面耗费精力。可编程SoC用户需要比传统工具更高级的设计。在PSoCCreator中,用户可逻辑布局所需的功能,并用工具将此转换为特定的器件配置。用户可直接通过参数来设置外设行为。
带集成型CPU的可编程器件需要获得也集成了软硬件开发任务的工具的支持。以硅芯片为核心的工具的另一个原有问题就是,软件工程师通常不得不使用他们不太喜欢的工具,而且还必须应对原始存储器和寄存器级外设接口等问题。换言之,没有正确的软件工具,可编程SoC只能让硬件设计人员受益,而软件开发团队则比较“倒霉”。在硬件方面,不但工作进展会大幅加速,而且风险也会降到最低,尤其是跟ASIC流程相比更是如此,但确保设计有效实现的压力却被转嫁给了软件开发团队。
此外,PSoCCreator还能将工程师从开发自己的SoC功能接口工作中解放出来,让他们能选择集成开发环境(IDE)来进行应用开发。几乎所有的组件都有软件接口(LUT、逻辑门和多路复用器等低级组件例外),这就使得通过C语言代码来驱动外设变得非常简便。我们并非意在提供一系列存储器映射的寄存器再加上晦涩难懂的比特位字段和通常无文档记录的负面效应,而是在C语言API调用中让组件绑定典型功能。要启动定时器运行,用户可调用Timer_1_Start()等API。(您不必猜测如何停止。)通过使用Timer_1_ReadCounter()的返回值即可读取定时器的当前值。一旦熟悉了API的这种风格,您通常就能猜出从未使用过的组件的API名称。如果您没猜对,那么始终可以参考定制器对话框中完整的数据表或右键点击组件查询。
您或许已经注意到以上API示例中的“_1_”。它提示了API在工具中的生成方式。您拖放(或拷贝粘贴)到设计中的每个组件都具有唯一的名称。该名称默认为组件的基础名称,如“UART”,而“_n”作为后缀说明这是相同组件的多个实例之一。用户能根据需求在定制器对话框中更改名称。在上面的例子中,我删除了下划线部分,因为项目中只有一个UART,因而加上这个数字是多余的。如果您按下“创建”按钮或F6键,那么工具会为原理图中的所有组件生成API文件。组件实例名称始终是附在所生成的API上。
一旦完成了硬件设计,固件开发就能获得内置调试器的支持。用户可通过常见的JTAG或SWG接口连接至目标器件。赛普拉斯开发套件包含板上调试芯片(当然也是另一个PSoC),其取代了传统的调试器探询。用户连接上USB线缆就能启动调试工作。用户针对自己的硬件,可以购买比较便宜的MiniProg3调试器探针,以连接到标准的10引脚报头上。
所有组件API都可作为C语言中的源代码提供,从而使调试软硬件互动变得非常简单。构造中不包含库,因而用户无需查询Web页面来查找设备驱动程序(似乎总有针对其它器件的)。对于断点放置和调试过程中的代码步进也没有限制。用户在调试组件行为时几乎不需要切换到汇编器视图。
赛普拉斯认识到,不是所有软件工程师都希望或能够转为采用PSoCCreator环境。多年来,独立的嵌入式开发软件IDE厂商一直在完善工具,同时他们还能提供可加速设计周期、降低风险以及扩大测试覆盖面的众多高端特性。ARMLtd的微控制器开发套件(MDK)和IARSystems的嵌入式工作台(EmbeddedWorkbench)工具等,都是这些工具中一些非常好的例子。
当前的开发工作往往划分为软件和硬件团队。软件团队不见得在同一办公地点工作,甚至不见得在同一个国家工作,他们当然不希望工具选择完全由硬件团队决定。这不仅仅是个人偏好的问题。公司为工具、调试解决方案、维护合同等投入大量时间和资金,这是工程开发流程中规划最完善的组成部分,而且在来源控制和文档管理等公司系统中实现了高度集成。转而采用新的软件开发环境往往是不实际的。
在此环境下,较好的方案是将PSoCCreator作为“芯片配置”工具来使用,而不是取代原有的IDE。硬件工程师可使用此工具生成设计以及所有的配置数据和API。软件团队仅需将这些文件集成到其现有的IDE中,并继续按照熟悉的编辑—构建—调试周期进行工作。硬件团队可自行使用PSoCCreator来构建针对其设计和设计所用电路板的测试台。您甚至能创建可与软件团队共享的电路板支持套件(BSP)或硬件抽象层(HAL),从而简化与器件的互动机制,尽可能避免错误。在“芯片配置”中需要使用多少软件,完全由您来决定。
把全新的电路板交给软件工程师来处理往往会产生很多问题。这些问题肯定是要发生的,也是整个产品开发过程中最容易产生误解和挫折感的地方。我们都听说过抑或是经历过这样的情况,有人说“问题是硬件带的”,而有人则坚称“不,问题来自软件”。这种意见分歧的根源往往就在于在如何使用硬件方面沟通不畅。为了解决这个问题,PSoCCreator提供了可生成PSoC设计数据表的功能。器件配置信息、时钟设置、引脚选择和所有已生成组件API的描述都直接从工具输出到统一的数据表文件中。文档由机器生成,因此不存在剪切粘贴错误或某个信息被遗漏的风险。
这只是PSoCCreator功能和如何在现有设计流程中使用它的一个简单概览。我们认为,其针对采用嵌入式CPU的可编程器件的设计问题采用了独特的基本方法。此外,它还是一款完全免费的工具。
多年来,嵌入式工程师一直都需要为每一个项目做出明确的方案选择。或许可以为定制IC进行大量投入以确保能够完美满足用户的需求,但这需要好几个月的时间,而且一旦设计变成了芯片就无法改变。此外,您也可以直接采用FPGA开始设计,这样做具有非常大的灵活性而且设计发生变动时也可以快速完成,但在单位成本或功耗方面的竞争力却差强人意。当然,在两种情况下,用户仍然不得不选择、采购和集成CPU,但至少ARM在微控制器内核领域的强大竞争力已使这一选择非常简单了。但是,您是否需要购买内核并将其设计到您的器件中呢?
如今已出现一条中间道路,赛普拉斯的PSoC等器件横空出世,具有令人振奋的功能特性,似乎能在各个领域全面实现最佳的性能效果。这种基于ARMCortexM的可编程器件具备各种CPU选项、速度和功能,无需集成IP,也不必担心总线接口或开发启动代码。此外,硬件完全可编程,因而能实现类似于ASIC的性能和功耗,同时具有非常强大的价格竞争优势,并且能立即获得可满足量产需求且在产品出货之前随时可以修改(再编程)的器件。最出色的地方还在于,这种产品拥有强大的片上模拟功能,如模数转换器、比较器和放大器等,这些是在FPGA产品中所缺失的。如此说来,将定制化IC设计和耗电量高的FPGA大规模迁移到这种新型设计上还有什么障碍呢?
答案非常简单,障碍来自于软件方面。为了充分发挥器件的作用,工程师需要软件工具来集成软硬件技术,同时又不能把项目的所有人都限制在单一的单片式IDE中。