Lab 2 - ECE 421L 

Authored by Brandon Staffieri

staffier@unlv.nevada.edu

September 01, 2021

  

Lab Description

Design of a 10-bit digital-to-analog converter (DAC)

   

Prelab Content

Prior to this lab session, we were tasked with downloading a provided lab2.zip file (containing a simulation example that uses an ideal 10-bit Analog-to-Digital Converter and Digital-to-Analog Converter). We had to upload this file to our design directory on the csimcluster server and unzip it, followed by adding a library definition for it in the cds.lib file so that it is properly recognized. We then used Cadence Virtuoso to view and simulate the schematic with a 1 second transient analysis that allowed us to observe the behaviour of the circuit.

   

As shown in the schematic, Vin is an analog input and B[9:0] is simply the converted binary/digital representation of that value which the ADC spits out. Additionally, we were asked to explain how to determine the least significant bit of the converter, which is the minimum voltage change on the ADC's input that will result in a change in the digital code B[9:0]. The following image was provided in the lab document and includes the necessary formula.

   
As can be observed in the above image, the formula to calculate the Least Significant Bit is LSB = (VDD)/(2^N). In the case of our circuit, we are using a 10-bit bus and have provided a value of 5 volts. Thus, the calculation would be LSB = (5V)/(2^10) which is approximately 4.882mV.
To display this more clearly, as the original simulated result has far too many steps in the output voltage for this behaviour to be observed, I have provided an alternate simulation that uses a 2.5mV input with 2.5mV offset.


   
Postlab Report
This lab consisted of us creating multiple schematics and symbols in Cadence Virtuoso in order to create and simulate a 10-bit DAC. As I completed each step, I took a corresponding screenshot. Those of significance can be observed along with descriptions as follows:


As the main goal of this lab was to design a 10-bit DAC using an n-well resistor of 10k, the obvious first step was to create the schematic and symbol for said resistor. In this case, it is a voltage divider using three 10k resistors.


   
Next, I created the schematic for the 10-bit DAC by instantiating this newly created symbol ten times along with adding a 10k resistor to ground and labels for Vout and the ten input pins (B0:B9). As with the resistor schematic, I turned this schematic into a symbol once it was completed. As per the recommentation in the lab document, I copied Dr. Baker's Ideal_10-bit_DAC symbol view to a Mydesign_10-bit_DAC cell in order to maintain an identical footprint for my 10-bit DAC symbol as in his provided design.


   
Here, I did hand calculations to show the method for calculating the overall resistance and voltage values. In my example, I only used two inputs; however, the same principal will apply for the overall resistance when using ten inputs as there is no difference between one and nine inputs being tied to ground (the parallelization process will just be repeated). I also hand calculated the delay
of my 10-bit DAC driving a 10pF load, and then I created and simulated a schematic to verify that delay.



   
Then, I copied the provided sim_Ideal_ADC_DAC schematic and replaced the ideal 10-bit DAC with the 10-bit DAC that I designed in order to verify that the design functions correctly. I simulated this with a transient analysis to illustrate the proper operation of my DAC. I did run into convergence problems during simulation, so I followed the advice at the end of the lab document to force the simulation to converge by adjusting the tolerance options.



   
Regarding MOSFETs
"In a real circuit the switches seen above (the outputs of the ADC) are implemented with transistors (MOSFETs). Discuss what happens if the resistance of the switches isn't small compared to R."
In this case, the resistance of the DAC would increase and there would be a greater voltage drop between the ADC and DAC, resulting in a lower output votlage.
   
Return