Population Count算法

所谓Population Count算法,即是指计算一个二进制数中1的个数的算法。具体来说,就是任意给定一个无符号整数N,求N的二进制表示中1的个数,比如N = 5(0101)时,返回2;N = 15(1111)时,返回4。

这个问题是一个经典的面试题目,在实际中也有应用。关于这个问题,以下两篇博客文章中有较详细的论述:

详解二进制数中1的个数
算法-求二进制数中1的个数

在此,仅对其中一些较为常规和较为巧妙的方法做一总结,并比较一下他们的执行效率。

Matlab调用Origin作图

Matlab作出的图普遍没有Origin作出的美观好看,而且导出为eps或emf格式后会有各种奇怪的Bug。目前普遍采用的一种方法是,将Matlab数据导出为mat文件后再导入Origin中手工作图,这种方式需要不少重复性劳动,并不是一种很完美的解决方案。
前几天偶然看到Origin提供了COM接口可供Matlab调用,于是就研究了下可否用Matlab调用Origin来生成所需的emf格式图片,最终经过一番折腾,基本完成了这个目标。

三相逆变器电流采样方案总结

当使用三相逆变器进行电机控制时,经常需要获取相电流以进行闭环控制,这就涉及到一个电流采样问题。尽管现在有许多电流检测方法,但低成本、大批量应用中常见的只有三种,其它都是昂贵的实验室系统、新兴技术或很少使用的方法[1]。常用技术包括:采样电阻、霍尔元件与电流互感器。这些技术又可进一步细分,详见下图:

本文将具体介绍这些方案。

C2000 DSP基本数据类型

一般情况下,在大部分平台上,一个字节(byte)是指8bit,char占用8bit的空间,int占用32bit的空间。然而,在TI C2000 DSP上,情况确不是这样的。在C2000系列DSP上,byte = 16 bits,char = short = int = 16 bits,long = 32 bit,long long = 64bit

C2000 ePWM模块

以TMS320F28030为例,其它型号可能有差异,不过大同小异。

在TI C2000 DSP中,PWM模块是一个独立的模块,并没有算作通用定时器的一部分,这也充分体现了C2000系列用于控制系统的定位。整个ePWM模块可以视为由若干个独立的ePWM子模块组成,每个ePWM子模块对应2个互补输出的通道——EPWMxA及EPWMxB。这样的设计减少了各PWM通道间的耦合关系,使用起来更为方便灵活。

Simulink仿真模式

在Simulink中,一共有6种仿真模式可供选择,如图:

  • Normal模式为一般正常的仿真模式
  • Accelerator及Rapid Accelerator模式用于加快代码的执行速度
  • SIL及PIL模式用于自动代码生成时进行测试仿真
  • External模式用于连接外部系统实现基于客户端/服务器模式的实时系统仿真

正常模式(Normal)不需要进行特殊设置,这是Simulink默认的仿真模式。下面简要介绍一下其他几种仿真模式。