Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Thermometer to binary conversion

Status
Not open for further replies.

jaimin.shah22

Newbie level 4
Newbie level 4
Joined
Nov 21, 2013
Messages
5
Helped
1
Reputation
2
Reaction score
0
Trophy points
1
Visit site
Activity points
34
Hello,
I'm trying to design 5 bit flash adc in 45nm CMOS technology. I need to convert thermometer code to binary code using verilog-A. Is anyone aware of this conversion using verilog-A ?
 

He's talking "thermometer code", a format where the
information is the dividing-point between all-ones
(above threshold) and all-zeros strings (below code
threshold) in the bit-field of comparator bank outputs.

1111111111111111000000000000000 = '01000
1111111111111111100000000000000 = '01001

(might be off by a bit).

And this is a very well known topic / architecture that
he could have searched out, although the specific
implementation is probably proprietary design art and
nobody may have put known good veriloga code into
the public sphere - in which case a schematic translated
to structural verilog (not necessarily veriloga - it's all
"just logic") might be the work plan.
 

Yes, you are right. I'm asking about thermometer code. I tried using verilog-A but I couldn't get binary code which I wanted so now I'm switching to schematic design using logic gates. Maybe I can get what I want. I need to try using logic gates.
 

Ah, I see, this form of coding I thought was called "bar graph". As used by a audio PPM chip to drive a series of LEDs. To decode it as cheaply as possible, I would use 30 X 100K 1% resistors to the input of a current summing OP amp, giving a DC output proportional to the number of 1s, then follow it with a A to D convertor. As I see it doing it only using logic would require at least 30 NAND gates and an equal number of D type latches.? In each case a clock oscillator and various synchronising circuits would be required.
Frank
 

That's sort of a recursive solution, since the object is to
"design" (or simply acquire) the encoder logic for a flash
ADC's guts. And of course the speed of a high impedance
analog scheme would not really support the applications
that favor flash ADCs.

This logic may also be referred to as "priority encoder"
(from back before flash ADCs were the primary use of it).
Casual searching yields designs only up to 4 bits. I know
of 8-bit flash designs (which belong to somebody, and
won't be posted publicly) and cascadable priority encoders
in the 4-bit range did exist.

Because signal range is low and VT scatter probably high,
some thought wants to be given to code nonidealities
and how the encoder deals with them (e.g. a comparator
that's way offset, could give you a "bubble" in the bit
field that might drive some combinatorial logic styles crazy
if they don't merely work off the highest "set" bit. Like
1111111111111101000000000000000 is an invalid code
for the presumption of thermometer, one and only one
1-0 boundary.

A scheme such as one rank of "suppress the lesser"
logic (creating a single high bit in a field of zeroes,
which makes a dandy decode) followed by a small ROM
could be efficient. I have seen some very compact but
funny looking pass-transistor logic as well (but this is
not a style I favor, for speed and timing consistency).
 

Sure, that's viable for a non-integrated solution. Gates
is gates, more or less, until you bump up against speed
and power and density. We don't know the OP's values
or eventual intent.

Although I'd deduce that since he calls out a specific
IC technology node, the plan does involve integration
or lip service to it (coursework, predicated & constrained?).
 

I need to design thermometer to binary encoder using verilog-A in cadence. This is mandatory. Can someone help me with that ?
 

Repeat until stop = TRUE
N = 0
For 1 to X (number of input lines) repeat
N = N+1
Read input lineN
If input lineN = "1" then Y = Y+1 else Y=Y
end Rem , now you have got an analogue value (Y) of the input bits
do a BCD conversion of Y
Read some input as STOP = true (so you can jump out of the loop for testing)

Frank
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top