2009年2月13日星期五

Native NMOS/PMOS的运用

在标准逻辑工艺中,有时候我们会见到Native MOS管,什么叫做Native MOS管呢?

正巧目前的一颗IC正好用到这个东西,于是询问,才知道Native MOS实际就是阈值电压接近为零的管子,实际上就是耗尽管。但是为什么叫做Native MOS呢? 原来是最早的MOS制程中由于氧化层带有电荷,很难做很干净的氧化层,所以做出来的NMOS,氧化层本身带有正电荷,导致未加正电压就导通了。当今这种阈值电压接近0的NMOS可不是通过氧化层中带电来完成的,而是通过调整沟道参杂来完成的。但是结果一样,于是还是叫Native MOS管。

这种Native MOS管一般只会用来做电容,用它做电容的好处在于,以NMOS为例,gate电压只要大于阈值电压,那么电容都很大。而标准NMOS,当gate电压小于阈值电压的时候,NMOS电容等于gate电容和沟道耗尽层电容的串联,是电容值变小很多。

2009年1月10日星期六

Error tends to happen at critical point.

Next Monday, Another IC will be tape out. So I work over time yesterday.

I found an interesting thing that errors tend to happen in the key point.  We have done many times without any problems before. But when it comes to be taped out, error occurred.

I must think it over and over to strengthen our design flow. How to prevent it to happen again?

We must improve our flow.  All the time we must do it.

2008年12月20日星期六

My Daughter is one month old!

My lovely daughter is now one month.
I have been a happy fathter for one month.
She brings me a lot of happiness. I have never seen such a lovely baby.
Because it is my baby. I love her all the time!

2008年11月15日星期六

I am going to be a father soon!

My wife is going to  give birth to my bady in about ten days!
I am so excited!
I don't know it is a boy or girl.  I can't wait to see the lovely face and the sweet smile. I love the crying voice of my baby.

2008年7月4日星期五

Why USB CRC16 does not use a primitive polynomial?


I was wondering, why USB CRC16 does not use a primitive polynomial?

The USB CRC16 G(x) = x^16 + x^15 + x^2 + 1.
To check whether it is a primitive polynomial, I write a haskell program below:

------------ Crc.hs ----------------
module Crc where
import Data.Bits
ini :: Int ini = 1
crc_size :: Int
crc_size = 16
crc_poly :: Int
crc_poly = 1 + 2^2 +2^15

crc :: Int->Int->Int
crc x 0 = x
crc x n = crc (crc_cycle' x) (n-1)

mask = shiftL 1 crc_size - 1
crc_cycle' :: Int -> Int
crc_cycle' x | (testBit x (crc_size - 1 )) = (xor (shiftL x 1) crc_poly) .&. mask
|otherwise = (shiftL x 1) .&. mask

------------------------------------------------------------------

1) run ghci
2) :l Crc
3) crc ini (2^16-1)
after step (3), the answer is 2, indicate that G(x) is not a primitive one.

Change G'(x) = 1 + x + x^3 + x^12 + x^16
re-do step (1), (2), (3), the answer is 1, prove that G'(x) is a primitive one.

In my memory, the primitive polynomial is best for CRC check. why don't use it in USB specification?

I want to find the answer.