微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 超额利用硬件资源

超额利用硬件资源

时间:07-08 来源:电子产品世界 点击:

设计的系统要实现更多功能,要更小型化,要有更高的能效,要能通过动态重配置实现可用资源的超额利用,这样的压力挑战已变得非常严峻。不妨设想一台自动售货机,其主要功能是接受付费并出售物品,偶尔还要同主机CPU通信。利用动态重配置,配置用作交易定时器/计数器的同一组数字资源还可配置为UART模块和PWM,生成波特率,同主机通信。

对于任何在不同时间执行不同任务的应用,几乎都能实现动态重配置。由于对讲机只单向传输数据,因此动态重配置可以支持设备的小型化设计。手持售票机可以采用这种方法,可以让热敏打印机逻辑单元发挥电池充电电路的作用。同样,LED灯在有电时给电池充电,无电源供电时就可利用这些资源来控制白光LED。实际上,电池充电可与其他系统功能时分复用。这样,相对于每种功能采用不同的逻辑而言,系统就能减小封装尺寸。

动态重配置

动态重配置是FPGA等数字架构一种众所周知的功能,通过向非易失性存储器存储新配置并读取写入适当配置寄存器的数据即可实现动态重配置。在器件编程时,各种不同配置都存储在非易失性存储器/闪存中。

请注意,可编程性不再仅限于数字领域。目前模拟资源也可动态重配置,且不仅仅是修改特定外设的规范。通过动态重配置,同一种模拟资源可根据应用要求在运行时用作模数转换器(ADC)、放大器或电容式触摸传感器。

要了解如何动态重配置模拟资源,不妨设想一个连续时间可编程模拟模块(见图1)。  

 

乍一看,这个电路图好像很复杂,事实上这只是一个相对简单的电路,能在任何给定输入/输出端连接不同信号,以实现不同的电路。举例来说,同样的这一个模块可通过连接配置为反相或非反相放大器。在电阻矩阵中选择适当的电阻值,就能实现所需增益/磁滞的磁滞比较器。所需参考值可用参考多路复用器选择。模块的输出也可路由到其他模块或输出引脚。

所有这些连接和电阻值都用配置寄存器配置,可在运行时写入。这样,该模块能作为衰减器、缓冲器、反相或非反相放大器,甚至能与其他模块结合用作仪表放大器。系统设计人员能利用固件向配置寄存器写入新值来改变模块的功能。

图2显示了另一种被称为开关电容模块的可编程模拟模块。  

 

该模块在定义功能方面提供了更多控制,也提供了寄存器可配置连接。它能用开关电容法将电容仿真为电阻,而电阻则可通过控制电流来实现。电阻可通过方程式1得出:

R = 1/fSC --- -- 方程式 (1)

其中的R为采用电容值C仿真得出的电阻值,Fs为开关频率。

通过控制开关频率、电容值和围绕运算放大器的电容连接方式,我们可实现多种电路,且无需借助任何其它硬件。同样的开关电容也可用来实现delta sigma调制器、积分器、滤波器或触摸感应模块。

如图2所示,每个电容器都有一个可用来改变电容值的相关寄存器。开关频率可用硬件分压器或在可编程数字模块中实现的PWM来控制。可用的开关可通过寄存器控制,可随时在电路中保留一些电容或移除电容(而不是将其保持为开关电容模式)。举例来说,积分器在反馈路径上需要电容器,而不需要任何开关。图3显示了利用图2中的模块实现的一些电路。  

  
 

类似于模拟资源,通过向给定数字模块的配置寄存器写入所需的配置值,数字模块也可支持多种不同功能。可编程输入/输出连接支持任何引脚连接到处理器的任何外设,这样同一硬件模块能在不同时间连接至不同的引脚。举例来说,被用作PWM来驱动LED的数字模块,在其他时间采用不同输出引脚也可被用作UART发射器。

动态重配置的可行性

根据可编程器件的架构,动态重配置可适用于许多应用。不过,如果开发人员要了解每个寄存器,并手动设置寄存器的值,那么实现动态重配置就变得相当复杂,耗时费力。为了让动态重配置切实可行,开发工具必须提供有效且最省力的方法来设置寄存器的值,同时还要为运行实现方案提供基本的重配置基础架构。以下两种特性非常重要:

· 自动生成配置寄存器值
  · 简化开关配置

自动生成配置寄存器值:开发工具必须提供一种简单方法来定义和管理多种配置。定义配置是指选择使用的外设及其内部互连。根据配置定义,开发工具必须为配置中使用的每个模块生成所需的寄存器值。举例来说,图4显示了PSoC Designer IDE(集成开发环境)根据具体配置所用外设生成的代码。  

 

从代码可以看出,当开发工具可以生成所需的寄存器值时,就能将开发工作从手动生成这些值中解放出来,这也可以让开发人员频繁修改配置也不会有任何问题。

简化开关配置:假设开发人员必须管理不同配

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top