Humungus, thank you very much for your help.
Well, I understand that Id=f(Vds, Vgs, Vth). Here, I need a function to get y=k.ln(x)+c, while in cmos, only those working in subthreshold area has the function like Id=I0.exp(Vgs/Vt/ζ), which means Vgs=ζ.Vt.ln(Id)+c. However, as you said, Vgs determines the Id, not Id determines Vgs. That go opposite to my application.
So, the problem is, is it possible and how to make use of the subthreshold characteristic to get y=k.ln(x)+c, with x plays as the independent variant?
(By the way, please don't recommand BJT, I cannot use it here)
Thank you very much !