FT8 Receiver Documentation

By Ryan Wans for Orbit Group 2022


Table of Contents

  1. Introduction 1.1. Introduction to FT8 1.2. Architecture Overview 1.3. Toolchain / Technology
  2. PDK Characterization
  3. Architecture Refinement
  4. Circuit Design and Simulation
  5. Layout and Verification
  6. Tapeout
  7. Sources

1. Introduction

1.1    Introduction to FT8

FT8 is digital communication protocol used in amateur radio bands, most prominently from 7 to 70 MHz. It's use is rising in popularity due to its reliability in weak-signal conditions, low bandwidth, and simplicity. A minimum amount of hardware is needed to get an FT8 transceiver working, and this makes it appealing to application such as military and maritime usage.

1.2    Architecture Overview

FT8 relies on a primarily digitally-driven architecture due to it's modulation scheme; 8-GFSK. However, due to its robust technical specification, a strong analog front-end is needed for successful operation.

[image of frontend] [caption]

blahblah finish this

1.3    Toolchain / Technology

blah

2. PDK Characterization

Proper characterization of the PDK devices is paramount for accurate circuit design in future steps. Once values such as $g_m$ and $V_{TH}$ are obtained, processes like gm/Id design can be utilized to derive circuit topologies and values.

Characterization of nfet_01v8

1. Sweep of $V_{GS}$

[image of circuit] Start by placing a sky130_fd_pr__nfet_01v8 device with the default parameter values into a new schematic in Xschem. Attach a voltage source V1 to the gate and another V2 to the drain. Ensure that the bulk and source are grounded. Also ensure that V2 or $V_{DS}$ is held at $V_{DD}/2$ or 0.9V. Create a new code block and run a dc sweep of V1.

.control
	dc V1 0 3 0.01
.endc
.saveall

Once the simulation has finished, run plot -i(v2) to view the drain current vs. $V_{GS}$ graph. This graph helps to give us the transconductance $g_m$ of the MOSFET, which indicates how efficiently the device can convert a voltage to a current. To derive this value from the simulation, you can either run the command print @m.xm1.msky130_fd_pr__nfet_01v8[gm] or use the typical analytical expression: $$g_{m} = \frac{\partial{I_D}}{\partial{}V_{GS}} = \mu_{n}C_{OX}\frac{W}{L}(V_{GS}-V_{TH}) = \frac{2I_D}{V_{GS}-V_{TH}} \tag*{(1)}$$

To find the threshold voltage $V_{TH}$ of the device, you can simply run the same command as above for the parameter: print @m.xm1.msky130_fd_pr__nfet_01v8[vth]

2. Sweep of $V_{DS}$

[image of circuit] Using the same circuit as before, sweep V2 instead of V1 at varying V1 values. This aids in finding the saturation point for a given $V_{GS}$ and the behavior of $I_D$ beyond $V_{DSAT}$. The code for this may look like this:

.control
	alter @V1[value] = 0.7 % start at Vth
	dc V2 0 5 0.01
	plot -i(v2)
	alter @V1[value] = 1   % step to new Vgs value
	...                    % continue changing Vgs
	alter @V1[value] = 3
	dc V2 0 5 0.01
	plot -i(v2)
.endc
.saveall

For a given DC sweep, one can obtain the $V_{DSAT}$ value by running print @m.xm1.msky130_fd_pr__nfet_01v8[vdsat]. Or, use the expression $V_{DSAT}=V_{GS}-V_{TH}$. Now that the key values of the device have been extracted, one can now determine some other Figures of Merit, such as on resistance: $$R_{on}=[\mu_{n}C_{OX}\frac{W}{L}(V_{GS}-V_{TH})]^{-1} \tag*{(2)}$$ And to determine the behavior of drain current past saturation: $$\int_0^LI_D\mathrm dx=\mu_{n}C_{OX}\int_0^{V_{GS}-V_{TH}}[V_{GS}-V_{TH}-V(x)]\mathrm dV\tag*{(3)}$$

$$\therefore I_D=\frac{1}{2}\mu_nC_{OX}\frac{W}{L}(V_{GS}-V_{TH})^2(1+\lambda V_{DS}) \ \ \ \ \mathrm{for} \ V_{DS}>V_{DSAT} \tag*{(4)}$$