Sunday, November 18, 2012

Kalman Filter simplified

While trying to understand what "Kalman Filter" is all about, I encountered that there were very less instances when people have explained in layman's terms.

After searching a lot , I have came up with a combination of three sources which can help you grasp this concept in a easier way.

Before we move on, I always consider a one line description/definition which we can always look back.

First line in the Kalman's Original paper [1] tell us that :
    its a "recursive solution to the discrete-data linear filtering problem"
just re-framing it  :
   "recursive solution for digtal filters"

If you are familiar with digital filters  (low butterworth filters ,etc) it manipulates the incoming data according to the given constraints. Keep in mind frequency is not the only way to characterize a signal. What if one cannot quantify the constants in terms of frequency,wavelets,etc? We land up to something called stochastic method, where we consider variables to be random (with certain constraints) and essentially don't try to characterize in a terms of a "feature" like frequency.

When we are looking at a digital filter, what we should be looking for is :
> type of input
      Discrete-time data. this data can be either scalar or vector.
      E.g. of discrete time scalar data : x
      At t=1 , x=4; At t=2 , x=2; At t=1 , x=8; At t=1 , x=6 ;

> type of constraints and how to apply?
     Constraint is given in terms of Model parameters ( coefficients of the equations given by Kalman )
     Kalman arrives at a linear stochastic equation which is generalization of system prone to noise.
     We apply the constraints guessing the behavior of the system and noise.

> suitable applications
   Filtering noise in most signals (sampled at certain rate). Majorly, used in noise removal from measured quantities when the behavior of the system is known.

The three sources are :
1)  Buffalo tutorial :
start by refering to the block-diagram on page 6. and the description of the variable on page 2.
This will help you visualize what these equations are about.

2) Bilgin's Blog :
  Awesome blog on Kalman filter. It tell you every thing about how can you apply Kalman filters.

3) Cornell course material   :
  Refer to the example of  measurement of water level in tank. This could give a good ending to your pursuit of learning kalman filters.


References:
[1] Kalman, Rudolph Emil. "A new approach to linear filtering and prediction problems." Journal of basic Engineering 82.1 (1960): 35-45.

Sunday, July 1, 2012

understanding DDR2 RAM modules

I was looking for a proper way to understand the working of a DDR2 SDRAM modules which are readily available in the market. I wanted to understand how to interface, but i figured out that its important to know the a about the working.



I figured out that , one can understand by following the following sequence:
1) Look for a Micron DDR2 data sheet.
    - This will give you an idea about the SDRAM 'Chip' on the modules you buy .
2) Then if you look for DIMM(Dual in-line memory module). wiki page is good enough to give you a good idea. Consider looking for SO-DIMM, which are used for Laptops and even Mini-DIMM ,which are used in some of the development kits .
3) Now you may look for difference b/w buffered and unbuffered  modules.

By the end i feel one may completely understand the working of DDR2 modules.

Monday, June 18, 2012

Idle mode disables JTAG interface in LPC2378

I was working with MCB2300 a ARM7 development/evaluation board from Keil. It has LPC2378 , a 32bit 144pin ,ARM7 by NXP .
Interestingly , when i started working on it , around 8 months before , i couldn't figure out that it had Serial ISP. The online userguide on Kiel website is not very friendly.

So, I am an expert in messing things up. I asked the mcu to sleep , but did not tell when to wake up. So whenever i reset the system , the system did perform some task and within miliseconds it would go into Idle mode.
  PCON |= 1; // MCU goes into idle mode

When i tied to program it using JTAG , it won't respond. I was not able to program .Finally, I asked in forums (ARM and Kiel).
It was pretty simple , if JTAG goes down, go for Serial ISP.

Need to put some jumpers on (ISP and COM0)
remove ETM jumper if there.

Erase flash using flashmagic @ 19200 baudrate .
It not done, you need to put it some new code to see whether you Ulink JTAG debugger is not faulty.

I was very happy that Kiel and ARM guys had replied so fast.

Friday, June 8, 2012

Agilent Soft touch pro

Working with Agilent Logic analyzer , I was thrilled to see the technology that has come up in the field of debugging .

I realized lately that XUP-V5 board has a mictor port available for debugging. Mictor stands for Matched impedance connector , very useful for capturing high speed signals and it also captures lot of signals in a small footprint.
Mictor Connector

After this I saw the Soft touch pro , an awesome implementation of contact-less probing . No its not actually contact-less, but it like the probe just touches the pads/lands. Though it has an overhead of soldering additional holder around the trace temporarily, its can be incorporated in end products. No extra cost on connectors on each board, and small foot print a win-win combo. Only thing is that one needs to buy a Agilent soft touch pro connector , which might cost heavily.

Dying to try them all.

Digitally Controlled Impedance

Working with Xilinx Virtex5 FPGA , I found this feature called DCI (Digitally controlled Impedance) very interesting. 

If we have an IC with several hundred pins and one wants to pull up all the GPIO pins through a resistor and further connect it to some simple device say, switches. Then in a conventional scenario one needs hundreds of resistors to be connected. This increases the area consumed. 
If the IC has DCI, it will match all termination resistors(which will be some transistors already fabricated on the chip ) to this reference resistor and terminate internally. This decreasing the resistors required and the area.

I know only from the application point of view , but will look into how is this implemented in near future.

Wednesday, May 23, 2012

Online compilers a Boon

Sitting on a public computer , its is mostly impossible and feasible to install a compiler and start coding . On line compiler websites, is helping me out of these kinda situations .

 These compilers not only check the syntax but also link it for either windows or linux.
http://www.onlinecompiler.net/
Check out if you are in the same kinda situation. hope it helps.

Saturday, May 19, 2012

Using CAN on LPC2378 Simplified

I had worked on it last semester .The LPC2378 usermanual and the example codes were very helpful . To get started , one can just modify the example codes without understanding function of all the registers . I have given a basic view of how can one implement a CAN protocol using the CAN controller . I  have not discussed the Acceptance filters and the error management. This should give a good kick start to a CAN based project.








Prototype based on MSP430 : Design Issues

Level conversion is just not enough always for a proper UART communication between two devices working at different standard voltages , normally 3.3V and 5V.

This issue crops up when we try to interface a sensor working at 5V [which generally is the case], to a controller or processor working at 3.3V. In our case , we were using the GSM modem which gives a 5V serial UART output and MSP430 powered at 3.3V.

We understood that we need a MAX232 for proper protocol conversion. Without MAX232 we were getting some deterministic values but not correct ones . The reason i feel is that the logic levels are set as -5V and 5V for uart communication , but as we have matched the ground , there may be problems with required voltage levels not getting matched.

A tip : A debug method i use to check whether the rx lines are connected properly. If you ground the rx pin and pull it out , it must give you an ascii character something like  "???" . That's pretty interesting , we done guys ascii codes + uart combined is intelligent enough to tell us "What the F are you doing ??". So if you are getting values like this probably you have loosely connected to gnd  :p.

Believe me its fun to debug this way if your rx wire is crossing 2-3 boards to reach the destination. 

Friday, May 18, 2012

Protype based on MSP430

Together with my friends, we had participated in the TI MCU contest 2012 . It was a good experience of completing the whole design flow for a prototype within 5-6 days.

A small description of the proposed system. Cargo traking system , consisting of sensors ,like accelerometer, GPS reciever , humidity sensor and temprature sensor, communicates the readings of the sensors in a meaningful way to the customers . A GSM modem is used for communication.

Cleary, GPS , GSM and accelerometer, were the USP's . I would describe a bit about the issues we faced while creating this system using MSP430 Lauchpad provided by Texas Instruments.

GSM modem : If you go through the wiki page of RTS (Ready to send) pin of the RS232 DB9 connector. you will clearly understand that though we use only three wires(Tx, Rx, Gnd) for UART communication it is not always true. modems in perticular  requires additional signals like RTS and CTS according to the application. It is not necessary to dedicate a pin of controller for these signal . As they are just signals to start or stop data transmission, in other words they mere flags . Solution is simple , in  the serial being used , we must send the signal back to the modem[ just short them].

Getting started FPGA board design

This summer i am working with Dr Kota Solomon Raju, Senior Scientist at CEERI, Pilani and my classmate Kunal Kedar on FPGA board design. The aim would be develop a complete understanding of what is required to make a stand alone FPGA system , which can be further used to some application which needs custom peripherals to be interfaced.

We are going to design it for Virtex 5 series . We are currently looking at only 2 packages FF1136 and FF1760. We will be using a Virtex 5 AFX FF1136 Proto board to test the design .

The first task was to understand the pins of the FPGA. Unlike other Integrated circuits , all the data about the FPGA cannot be put into one document . So Xilinx provide different documents addressing different users and aspects . The pin information document is what we are looking at. First we have created a simplified layout of pins considering the similarities of the io banks. It cannot be understood in a single , one needs to do two to three iteration to draw a optimal and meaningful pinout .

Tuesday, April 3, 2012

Need to Standardize Simulation Reference Manual



In this age of information, we lack what i call it as 'common interface' to the knowledge and knowledge about the developed tools.

My idea is why don't we have a Standardized way simulators are documented .

Out of many such great tools made by humans one is simulation by computer programs . they help us study without breaking our heads setting up for experiments .Being an electronics engineering student , I understand the necessity as they might cost you billions :P.

Most of the research , I feel first goes into modelling a system/material/whatever . This opens up the scope for all the other people with brilliant ideas to come in. And this new things (invention/discovery) catches fire .. all the researchers around the world come up with possible applications in their respective domains. Hence , the world progresses much faster.

[This blog is mainly inspired from Professor N.N.Sharma , his lecture on simulation and modelling behavior of materials/physics in micro-domain ]

If one looks at the history , the universities/research groups would publish a model. And these publications can only be understood by researchers who were working in that field.

If somebody wonders how these models look like ? Then they are not beautiful at all, like our (super)models :P . In fact ,they might be some long differential equations of some 8-9 order . Too complicated for anyone to solve these models on paper.

With the increase in production of computers , these things became a bit easier . But still ,some one had to teach (program) those stupid computer :P.

Now we have fast but still stupid computers . In the mean time we have developed some good platforms (Java,.NET,) and graphics etc.. . We were all equipped to make simulators , which did all the number crunching without users knowledge. Doors were open for guys from other disciplines to try-out somethings that their techniques. Still, most of the simulators would return some numbers , hence required some knowledge of programming was essential to use it efficiently.

Approaching this age of interdisciplinary research , mostly due to saturation in the core disciplines . Simulators have played a very important role in pacing up the research.

As industries saw potential and took interest in simulation softwares . We have landed into a world where we have 3D graphics , animation , math solvers ,etc .. all integrated into simulators. Now , people think simulators are the only ones which can show some graphical output , which includes some of out faculty members .

This is not it . We have 3D graphics , fine . Good interface , fine . We have all the features can be simulated , great . But , I have worked so hard to understand the previous simulator why would I switch to something else , and why is it necessarily so different ? I look at the getting started tutorials trying to relate what my old simulator had ? When i go through the Help and documentation , the layout seems to be completely different, takes a whole lot of time to figure out where to look for ?

My idea is why don't we have a Standardized way simulators are documented .

There are lot of open source groups who have standardized their documentation , so that they could increase readability , as they get contribution for lot of people around the world and any body should understand it . If a person understands the basic way how to look up a reference maual / user-manual , he should be able to switch to the new ones faster .

Attempts are being made by companies to provide special manuals for smooth transition from others products to theirs , but all these can be saved, if this happens .