查看完整版本: Cortex-M3可编程片上系统原理及应用-PSoC设计导论之:可编程片上系统PSoC 概述

admin 发表于 2014-10-12 14:28:23

Cortex-M3可编程片上系统原理及应用-PSoC设计导论之:可编程片上系统PSoC 概述

1.2.1 PSoC 发展概述
                        当今世界,嵌入式处理器无处不在。在过去三十年间,由于一方面,市场要求不断地降低嵌入式系统的成本,另一方面要求嵌入式处理器处理及控制能力不断提高这样两个因素的推动,嵌入式处理器的功能变得越来越复杂。所以,当半导体市场出现越来越多的片上可编程系统,设计者就不会感到奇怪了。这种PSoC 其实质就是将CPU、模拟和数字子系统集成在单芯片上。最典型的,是世界著名的半导体厂商——美国Cypress 公司,率先在单芯片上实现了完整的模拟和数字系统的集成,其典型的代表作即PSoC1 、PSoC3 和PSoC5。
                       
                        特别值得一提的是,PSoC3 和PSoC5 片上可编程系统,由于在芯片内部分别集成了业界流行的8051 CPU 硬核和ARM Cortex-M3 CPU 硬核,使其受到业界的高度关注。以PSoC 芯片和PSoC Creator2.0 软件开发工具为代表的硬件设计平台和软件设计工具,引领着未来嵌入式系统设计的发展方向。
                       
                        其设计方法的核心就是,以不同的数字和模拟IP 核“积木块”为中心的“系统级”设计,这种设计方法所体现出来的是对未来嵌入式设计者所要求的“重基础”和“宽专业”的要求。因为,这种PSoC 具有很高的集成度,所涉及的知识内容也比较多,这就是“宽专业”;而要完成PSoC 的设计,又要求设计者有非常好的基础理论知识,这就是“重基础”。
                       
                        作为新的嵌入式系统的设计平台,使用PSoC 进行嵌入式系统设计具有以下三个方面的优点。
                       
                        (1)定制
                        基于PSoC 嵌入式系统的设计人员可以很灵活地选择所要连接的外设和控制器。因此,设计人员可以设计出一个独一无二的外设,这个外设可以直接和总线连接。对于一些非标准的外设,设计人员很容易使用PSoC 内嵌的通用数字块(Universal Digital Block,UDB )阵列实现对非标准外设的定制。比如,设计人员很容易在PSoC 上设计出多个UART 接口的嵌入式系统,而这些在传统的8051 单片机和嵌入式系统是无法实现的。因此,在PSoC 平台中,向这样类似的配置是很容易实现的。
                       
               
                        1.2.2 PSoC 设计方法
                        1.2.2.1 设计背景
                        一个典型的嵌入式系统由下面三个主要模块构成:
                       处理器;
                       数字(外设和逻辑);
                          模拟(用于与传感器和控制器的物理接口)。
                       
                        系统根据硬件接口要求,由三个模块连接构成硬件平台。然后,在这个硬件设计上,“构建”软件,来执行所要求的处理和控制功能。
                       
                        按照传统的设计方法,一旦定制的“软件”和“硬件”开始运行,对这个设计需要进行修改或更新时,就成为一件令设计者异常痛苦的事情。众所周知,这是一件耗钱和耗时的工作。
                       
                        嵌入式系统设计者,希望支持其嵌入式系统设计的工具和元件能够支持甚至最后几分钟的重要变化。这样,使得它们能从容地面对这种变化,更加对设计充满信心。当然设计应该充分地利用工业标准的“生态设计”,查一查相关资料就知道“生态设计”对未来嵌入式系统设计是多么重要。嵌入式系统设计发展到今天,设计者应该充分利用众多的嵌入式开发社区和标准的工具。充分利用这些资源可以少让你走弯路,学会站在巨人的肩膀上工作,这样你将享受到嵌入式设计带来的乐趣。
                       
                        这些挑战其实可以归结为一个事实,即较长的设计周期,较高的市场要求变化概率和不同的需求。众所周知,一点点设计变化,都将使得设计周期延长。缩短设计周期,不但拥有了财富上的优势,而且降低了不确定性,提供了早期消费者提供的反馈信息,当你拥有这些信息,对产品快速改进时,产品就成为市场的领导者。
                       
                       
                        1.2.2.2 IP 核复用技术
                        PSoC 设计,本质上就是在单芯片内部,将不同功能的IP 核连接在一起,以满足不同的应用要求。现在的PSoC 设计,规模巨大而且功能复杂,设计人员不可能从头开始进行设计。现在采用的方式是,在设计中尽可能使用现有的功能模块,当没有现成的模块可以使用时,设计人员才需要自己花时间和精力设计新的模块。
                       
                        EDA 设计人员把这些现成的模块通常称为IP(intellectual Property )核。IP 核来源主要有三个方面:
                          前一个设计创建的模块;
                        SoC 生产厂商的提供;
                           第三方IP 厂商的提供。
                       
                        IP 核是具有知识产权核的集成电路芯核总称,是经过反复验证过的、具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中。
                       
                        到了SoC 阶段,IP 核设计已成为片上可编程系统解决方案厂商中非常重要的任务,其所能提供的IP 核的资源数目,体现了厂商的实力。对于可编程SoC 芯片,其提供的IP 核越丰富,用户的设计就越方便,其市场占用率就越高。目前,IP 核已经成为系统设计的基本单元,并作为独立设计成果被交换、转让和销售。
                       
                        从IP 核的提供方式上,通常将其分为软核、硬核和固核这3 类。从完成IP 核所花费的成本来讲,硬核代价最大;从使用灵活性来讲,软核的可复用使用性最高。
                       
                        (1)软核
                        软核在EDA 设计领域指的是综合之前的寄存器传输级(RTL )模型;具体在FPGA 设计中指的是对电路的硬件语言描述,包括逻辑描述、网表和帮助文档等。软核只经过功能仿真,需要经过综合以及布局布线才能使用。其优点是灵活性高、可移植性强,允许用户自配置;缺点是对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风险。软核是IP 核应用最广泛的形式。比如:可以使用HDL 语言在PSoC 芯片内部,通过UDB 资源生成设计者定制的外设控制器。
                       
       
        1.2.2.3 设计重用技术
        “设计重用”是PSoC 设计中一个非常重要的设计思想,“设计重用”比“IP 核复用”具有更高的设计灵活性。这个思想的提出,使得嵌入式系统设计方法进入到一个崭新的阶段。当然,这是众多半导体厂商的最高理想境界。很多年前,“设计重用技术”就已经提出来作为一个正在完成项目(从时间和预算方面)的一个必要的部分。这并不是一个新的思想,设计重用的目的就是使得不需要修改一个设计(或者尽可能少的修改),就可以使该设计可以在不同的平台之间运行和实现。实际上,到目前为止,设计重用都没有完全实现,通常的做法是单纯的硬件(微处理器核,可重用的IP 核外设,硬件加速器等)或者软件(RTOS ,协议栈,实时库等)的复用,而不是全部软件和硬件的复用。
       
        设计重用的思想非常吸引人,但是目前的标准的解决方式仅仅是迫使在项目的另一部分加入“定制”的开发,这不能根本上解决问题。
       
        使得IP 核重用利益最大化的方法是将软件和硬件作为“同等地位”的“合作者”,不需要使得软件或硬件的任何一方需要了解对方的具体实现过程。实现这个目的的方法是,在定义硬件IP 核的时候,顺便也要考虑到软件和开发工具,这样在应用程序和硬件之间的接口就非常方便、高效,同时,彼此不需要“深入了解对方”。
       
        Cypress 的PSoC Creator 开发平台很好地实现了设计重用的思想,并将其变为现实,即在生成硬件IP 时,也同时提供了相应所需要的软件API 函数,这样使得设计更容易运行,以更快的速度完成,更加容易维护和便携。
       
        当使用HDL 语言开发IP 核时,对其进行综合、仿真、验证、编写测试平台、编写文档。那么应该为IP 核的使用者在IP 核开发工具中提供相同的工具,这个工具就是当用户在他的设计中例化所需要使用的IP 核时,为每个例化的IP 核生成相应的API 函数。
       
        PSoC3/5 由嵌入式的处理器(8051 或Cortex-M3)、可编程的数字阵列和高精度的模拟资源构成。PSoC Creator 软件充分地显示出其强大的设计重用功能,即硬件模块或者元件能通过使用API 函数进行封装,来简化软件代码的开发,同时加速设计过程。
       
        PSoC Creator 提供原理图捕获接口,在原理图界面内,设计者通过从模拟和数字元件库中拖拽元件来创建设计。一个元件由一个在原理图界面内可见的符号或者其他原理图的实现来构成。当设计者建立(build)设计时,软件就根据元件的名字产生相应的API 函数。
       
        PSoC Creator 内的元件都是参数化的,那些重要的设置选项,比如UART 中的流控制和波特率,通过参数化图形设置很容易将那些不必要的功能根据设置选项从实现中删除。
       
        下面给出一个例子来说明IP 核设计和软件API 函数的“定制”。如图1.2 所示,使用PSoC Creator 软件工具创建UART_1 和UART_2 两个例化的IP 核。UART_1 支持tx 和rx,中断模式,硬件的发送使能信号tx_en 信号(用于RS-485) ;而UART_2 是一个简单的实现,即在轮询方式下输出数据流。在后一种情况下,PSoC Creator 不创建用于读数据、中断,检查Rx 状态和缓冲区管理的API 函数,这样可以减少混乱和错误的产生。
        http://www.eefocus.com/mcu-dsp/325197/data:image/png;base64,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
        图1.2API 函数的定制
       
        通过参数化的设置,PSoC Creator 也支持交叉结构。比如在PSoC5 的UART 有较大的缓冲区,并且从GetBufferSize() 中返回值,比如可选择是一个字符或者一个短值(8 位1-255,32 位1-65535),同时保证其在8051 结构中是有效的。如图1.3 所示,通过使用宏定义中断例程,允许在任何编译器中使用相同的代码。在系统的头文件中定义了宏,比如在8051 编译器中(ARM 的Keil)识别定义“_C51_”,并且将中断关键字添加到函数定义中。对于ARM GNU 编译器(CodeSourcery),“_GNUC_ ”定义保证删除不必要的关键字。
       
        图1.3中断代码的重用
页: [1]
查看完整版本: Cortex-M3可编程片上系统原理及应用-PSoC设计导论之:可编程片上系统PSoC 概述