diff --git a/+adi/+AD4080/Rx.m b/+adi/+AD4080/Rx.m
new file mode 100644
index 0000000..0b6f635
--- /dev/null
+++ b/+adi/+AD4080/Rx.m
@@ -0,0 +1,146 @@
+classdef Rx < adi.common.Rx & adi.common.RxTx & ...
+         matlabshared.libiio.base & adi.common.Attribute & ...
+         adi.common.RegisterReadWrite & adi.common.Channel 
+    % AD4080 Precision ADC Class
+    % adi.AD4080.Rx Receives data from the AD4080 ADC
+    %   The adi.AD4080.Rx System object is a signal source that can receive
+    %   data from the AD4080.
+    %
+    %   rx = adi.AD4080.Rx;
+    %   rx = adi.AD4080.Rx('uri','192.168.2.1');
+    %
+    %   <a href="https://www.analog.com/media/en/technical-documentation/data-sheets/ad4080.pdf">AD4080 Datasheet</a>
+
+    properties (Nontunable)
+        % SampleRate Sample Rate
+        %   Baseband sampling rate in Hz, specified as a scalar
+        %   in samples per second. Options are:
+        %   '256000','128000','64000','32000','16000','8000','4000',
+        %   '2000','1000'
+        SampleRate = '40000000'
+        
+        % SamplesPerFrame Samples Per Frame
+        %   The number of samples to be captured as part of one continuous buffer
+        SamplesPerFrame = 4096
+
+        % Scale Scale
+        %   Scale value to be used to convert the code to voltage
+        Scale = 0.005722
+
+        % TestMode Test Mode
+        %   Test Mode for AD4080. Options are:
+        %   'off', 'midscale_short', 'pos_fullscale',
+        %   'neg_fullscale', 'checkerboard', 'pn_long', 'on_short', 'one_zero_toggle',
+        %   'user', 'bit_toggle', 'sync', 'one_bit_high', 'mixed_bit_frequency'
+        TestMode = 'off'
+
+    end
+
+    properties (Nontunable, Hidden)
+        channel_names = { ...
+                         'voltage0'}
+    end
+
+    properties (Hidden, Nontunable, Access = protected)
+        isOutput = false
+    end
+
+    properties (Constant, Hidden)
+        SampleRateSet = matlab.system.StringSet({ ...
+                                                 '40000000', '256000', '128000', '64000', ...
+                                                 '32000', '16000', '8000', '4000', ...
+                                                 '2000', '1000'})
+
+        TestModeSet = matlab.system.StringSet({'off', 'midscale_short', 'pos_fullscale', ...
+            'neg_fullscale', 'checkerboard', 'pn_long', 'on_short', 'one_zero_toggle', ...
+            'user', 'bit_toggle', 'sync', 'one_bit_high', 'mixed_bit_frequency'})
+
+    end
+
+    properties (Nontunable, Hidden)
+        Timeout = Inf
+        dataTypeStr = 'int32'
+        phyDevName = 'ad4080'
+        devName = 'ad4080'
+    end
+
+    properties (Nontunable, Hidden, Constant)
+        Type = 'Rx'
+        ComplexData = false
+    end
+
+    methods
+
+        %% Constructor
+        function obj = Rx(varargin)
+            obj = obj@matlabshared.libiio.base(varargin{:});
+            obj.enableExplicitPolling = false;
+            obj.EnabledChannels = 1;
+            obj.BufferTypeConversionEnable = true;
+            obj.uri = 'ip:analog.local';
+        end
+
+        function flush(obj)
+            flushBuffers(obj);
+        end
+
+        % Check SamplingRate
+        function set.SampleRate(obj, value)
+            obj.SampleRate = value;
+            if obj.ConnectedToDevice
+                obj.setDeviceAttributeRAW('sampling_frequency', value);
+            end
+        end
+
+        % Check TestMode
+        function set.TestMode(obj, value)
+            obj.TestMode = value;
+            if obj.ConnectedToDevice
+                obj.setDeviceAttributeRAW('test_mode', value);
+            end
+        end
+
+    end
+
+    methods (Access = protected)
+
+        function numOut = getNumOutputsImpl(~)
+            numOut = 2;
+        end
+
+    end
+
+    %% API Functions
+    methods (Hidden)
+
+        function setupExtra(obj)
+            % Write all attributes to device once connected through set
+            % methods
+            % Do writes directly to hardware without using set methods.
+            % This is required since Simulink doesn't support
+            % modification to nontunable variables at SetupImpl
+
+            obj.setDeviceAttributeRAW('sampling_frequency', num2str(obj.SampleRate));
+            obj.setAttributeRAW('voltage0', 'test_mode', obj.TestMode, false);
+        end
+
+    end
+
+    %% External Dependency Methods
+    methods (Hidden, Static)
+
+        function tf = isSupportedContext(bldCfg)
+            tf = matlabshared.libiio.ExternalDependency.isSupportedContext(bldCfg);
+        end
+
+        function updateBuildInfo(buildInfo, bldCfg)
+            % Call the matlabshared.libiio.method first
+            matlabshared.libiio.ExternalDependency.updateBuildInfo(buildInfo, bldCfg);
+        end
+
+        function bName = getDescriptiveName(~)
+            bName = 'AD4080 Precision ADC';
+        end
+
+    end
+end
diff --git a/+adi/Contents.m b/+adi/Contents.m
index c2d5536..a9c3a11 100644
--- a/+adi/Contents.m
+++ b/+adi/Contents.m
@@ -34,3 +34,4 @@
 %   <a href="matlab:help adi.AD5791            ">AD5791</a>         - DAC
 %   <a href="matlab:help adi.AD7124_4          ">AD7124_4</a>       - ADC
 %   <a href="matlab:help adi.AD7124_8          ">AD7124_8</a>       - ADC
+%   <a href="matlab:help adi.AD4080            ">AD4080</a>         - ADC
diff --git a/CI/gen_doc/docs/_pages/index.md b/CI/gen_doc/docs/_pages/index.md
index 84fdabf..17c366b 100644
--- a/CI/gen_doc/docs/_pages/index.md
+++ b/CI/gen_doc/docs/_pages/index.md
@@ -50,4 +50,5 @@ The following have device-specific implementations in MATLAB and Simulink. If a
 | AD4021    | Zedboard  | Yes   | No    | ADI (2021b) |
 | AD4022    | Zedboard  | Yes   | No    | ADI (2021b) |
 | AD7124-4  | Zedboard  | Yes   | No    | ADI (2021b) |
-| AD7124-8  | Zedboard  | Yes   | No    | ADI (2021b) |
\ No newline at end of file
+| AD7124-8  | Zedboard  | Yes   | No    | ADI (2021b) |
+| AD4080    | Zedboard  | Yes   | No    | ADI (2021b) |
\ No newline at end of file
diff --git a/CI/gen_doc/docs/gen_sysobj_doc.m b/CI/gen_doc/docs/gen_sysobj_doc.m
index 1b0a6ff..8798475 100644
--- a/CI/gen_doc/docs/gen_sysobj_doc.m
+++ b/CI/gen_doc/docs/gen_sysobj_doc.m
@@ -36,6 +36,7 @@
     , {'AD5791', {'Tx'}}...
     , {'AD7124_4', {'Rx'}}...
     , {'AD7124_8', {'Rx'}}...
+    , {'AD4080', {'Rx'}}...
     %{'QuadMxFE',{'Rx','Tx'}}...
     };
 
diff --git a/CI/gen_doc/docs/sysobjs.json b/CI/gen_doc/docs/sysobjs.json
index 9423b46..ad8c3dd 100644
--- a/CI/gen_doc/docs/sysobjs.json
+++ b/CI/gen_doc/docs/sysobjs.json
@@ -1157,5 +1157,46 @@
         "prop_description": "Hostname or IP address of remote libIIO deviceHelp for adi.AD7124_8.Rx/uri is inherited from superclass matlabshared.libiio.base"
       }
     ]
+  },
+  {
+    "name": "adi.AD4080.Rx",
+    "dec": "  adi.AD4080.Rx Receives data from the AD4080 ADC<br>    The adi.AD4080.Rx System object is a signal source that can receive<br>    data from the AD4080.<br> <br>    rx = adi.AD4080.Rx;<br>    rx = adi.AD4080.Rx('uri','192.168.2.1');<br> <br>    <a href=\"https://www.analog.com/media/en/technical-documentation/data-sheets/ad4080.pdf\">AD4080 Datasheet</a><br>    Documentation for adi.AD4080.Rx<br>       doc adi.AD4080.Rx<br>",
+    "props": [
+      {
+        "prop_name": "EnabledChannels",
+        "prop_title": " EnabledChannels Enabled Channels",
+        "prop_description": "Indexs of channels to be enabled. Input should be a [1xN] vector with the indexes of channels to be enabled. Order is irrelevant"
+      },
+      {
+        "prop_name": "SampleRate",
+        "prop_title": "  SampleRate Sample Rate",
+        "prop_description": "Baseband sampling rate in Hz, specified as a scalar in samples per second. Options are: '256000','128000','64000','32000','16000','8000','4000', '2000','1000'"
+      },
+      {
+        "prop_name": "SamplesPerFrame",
+        "prop_title": "  SamplesPerFrame Samples Per Frame",
+        "prop_description": "The number of samples to be captured as part of one continuous buffer"
+      },
+      {
+        "prop_name": "Scale",
+        "prop_title": "  Scale Scale",
+        "prop_description": "Scale value to be used to convert the code to voltage"
+      },
+      {
+        "prop_name": "TestMode",
+        "prop_title": "  TestMode Test Mode",
+        "prop_description": "Test Mode for AD4080. Options are: 'off', 'midscale_short', 'pos_fullscale', 'neg_fullscale', 'checkerboard', 'pn_long', 'on_short', 'one_zero_toggle', 'user', 'bit_toggle', 'sync', 'one_bit_high', 'mixed_bit_frequency'"
+      },
+      {
+        "prop_name": "kernelBuffersCount",
+        "prop_title": "  Kernel buffers count",
+        "prop_description": "The number of buffers allocated in the kernel for data transfersHelp for adi.AD4080.Rx/kernelBuffersCount is inherited from superclass matlabshared.libiio.base"
+      },
+      {
+        "prop_name": "uri",
+        "prop_title": "  URI - remote host URI",
+        "prop_description": "Hostname or IP address of remote libIIO deviceHelp for adi.AD4080.Rx/uri is inherited from superclass matlabshared.libiio.base"
+      }
+    ]
   }
 ]
\ No newline at end of file
diff --git a/examples/ad4080_DataCapture.m b/examples/ad4080_DataCapture.m
new file mode 100644
index 0000000..f2c6ab7
--- /dev/null
+++ b/examples/ad4080_DataCapture.m
@@ -0,0 +1,25 @@
+%% Script for capturing and displaying a continuous set of samples from a 
+%% connected EVAL-AD4080-FMCZ board
+
+% Instantiate the system object
+rx = adi.AD4080.Rx;
+% Specify uri
+rx.uri = 'ip:analog.local';
+
+rx.SamplesPerFrame = 4096;
+rx.EnabledChannels = [1];
+rx.TestMode = 'midscale_short';
+
+% Capture data
+data = rx();
+
+enabledChannels = size(data, 2);
+figure(1);
+for i = 1:enabledChannels
+    subplot(enabledChannels, 1, i);
+    plot(data(1:rx.FrameCount * rx.SamplesPerFrame, i));
+    title("Channel " + num2str(rx.EnabledChannels(i)));
+end
+
+% Delete the system object
+release(rx);