18、电流导向型DAC拓扑结构详解

电流导向型DAC拓扑结构详解

1. 引言

在现代通信和数据处理系统中,电流导向型数模转换器(DAC)因其高效性和灵活性而成为关键组件。这类DAC特别适合于需要高带宽和快速响应的应用场景。本文将深入探讨电流导向型DAC的结构和特性,帮助读者更好地理解和设计这类转换器。

2. 电流导向型DAC的工作原理

电流导向型DAC通过控制多个电流源的开关状态,将数字信号转换为模拟电流信号。这些电流源通常采用二进制加权的方式排列,以实现高效的电流累加。以下是其工作原理的具体说明:

  • 二进制加权 :每个位对应的电流源数量是2的幂次方,这样可以有效地减少匹配误差。
  • 开关控制 :开关由输入的数字代码控制,最高有效位(MSB)和最低有效位(LSB)分别控制最大的和最小的电流源。最小值为0,最大值为(2^{N}-1)(N为DAC的位数)。

2.1 单位电流源的使用

为了提高匹配精度,电流导向型DAC常使用单位电流源来构成二进制加权。每个位对应的电流源数量是2的幂次方,这样可以有效地减少匹配误差。例如,对于一个8位DAC,电流源的配置如下表所示:

位数 电流源数量
0 1
1 2
一文讲透高速DAC基本架构 以16位DAC为例,采样值的高6位被转换为63位的温度计码,以驱动63个匹配的电流源。因此,电流驱动器的总数为73个,且这10个按比例缩放的二进制电流驱动器必须在2的11次方(即从0到2047,但考虑到电流源的实际等级,是从最小电流到最大电流的2048个等级中的某10个)的范围内实现良好的匹配。也就是说,10个二进制驱动器的电流大小在2的10次方(即从1到1024,但实际等级数为0到1023对应的电流,此处强调缩放比例范围)的范围内按比例缩放,而温度计码驱动器的电流大小都是最大比例驱动器电流的两倍。 阅读详情

相关推荐

电流舵DAC——学习过程,发博客来记录科研

都知道DAC,即数字信号转化为模拟信号的一个设备。看了许多文章,介绍DAC无非是从DAC分类,性能参数,一些基本结构介绍等来介绍DAC,但是真正开始了解DAC的人都觉得了解这些都比较疏远,刚开始学并不能轻易上手,我自己觉得这些文章都写的很类似,并不能学得扎实,学完基本就忘了,所以,自己总结一些自己学的基本知识,概括起来,以来是避免自己忘了,二来总结出来的东西也比较容易上手。

huang_wen_jie的博客 1万+

DAC161S997与PIC18F67K40构建4-20mA电流环方案详解

4-20mA电流环是工业自动化中广泛使用的模拟信号传输标准,具有抗干扰强、传输距离远等优势。其核心原理是通过电流变化传递信号,4mA对应零刻度,20mA对应满量程。在技术实现上,通常需要高精度数模转换器(DAC)将数字信号转换为电流输出,配合微控制器完成数据处理。DAC161S997作为专用电流环发送芯片,集成了16位DAC和V/I转换电路,能直接输出4-20mA信号,精度可达0.1%。配合PIC18F67K40微控制器的硬件SPI接口,可构建稳定可靠的工业级信号传输系统。该方案特别适用于变频器环境、石油化

weixin_34268753的博客 436

DAC161S997与PIC18LF26K22构建4-20mA电流环方案详解

4-20mA电流环是工业传感器和过程控制中广泛采用的模拟信号传输标准,因其抗干扰能力强、传输距离远等优势成为行业首选。其核心原理是通过电流变化传递信号,通常4mA代表零刻度,20mA代表满刻度。在技术实现上,高精度数模转换器(DAC)和微控制器(MCU)的协同工作至关重要。TI的DAC161S997作为专为4-20mA应用设计的16位DAC,集成了完整的电流输出级,可直接将数字SPI接口转换为精确的环路电流。配合Microchip的PIC18LF26K22 MCU,这套方案在稳定性、精度和成本之间取得了最佳

weixin_33937778的博客 294

DAC161S997与PIC18F2553构建高精度4-20mA电流环方案

4-20mA电流环是工业自动化领域广泛采用的模拟信号传输标准,其核心优势在于抗干扰能力强、传输距离远。该技术通过电流信号传输传感器数据,相比电压信号更不易受线路电阻和电磁干扰影响。在工业现场仪表设计中,高精度数模转换器(DAC)和可靠的单片机是实现稳定电流环的关键。TI的DAC161S997芯片集成了完整的电流环驱动电路,配合Microchip的PIC18F2553单片机,可构建高性价比的4-20mA变送器方案。该组合支持-40°C至+105°C宽温工作,内置SPI接口和USB通信功能,适用于过程控制、工业

weixin_29190573的博客 300

工业4-20mA电流环设计:DAC161S997与PIC18F47K42实战解析

在工业自动化控制系统中,模拟信号传输技术是连接传感器与控制器的关键环节。4-20mA电流环凭借其抗干扰能力强、传输距离远等优势,成为过程控制领域的标准配置。其核心原理是通过电流信号而非电压信号传输数据,有效解决了长距离传输中的信号衰减问题。现代工业级DAC芯片如TI的DAC161S997,集成了闭环控制、动态电源补偿等先进技术,配合PIC18F47K42等工业级MCU,可构建高可靠性的电流环系统。这类方案特别适用于石油化工、智能水务等严苛工业环境,能实现±0.05%FS的高精度和80dB的电源抑制比。通过优

weixin_30983965的博客 330

工业4-20mA电流环技术与DAC161S997芯片应用解析

模拟信号传输在工业自动化中扮演着关键角色,其中4-20mA电流环因其抗干扰能力强、传输距离远等物理特性成为行业标准。该技术通过电流信号而非电压信号传输数据,有效解决了线路电阻变化导致的信号衰减问题。DAC161S997作为专为此设计的16位ΣΔ型数模转换器,集成了高精度基准源和低噪声调制器,配合PIC18F4550微控制器可实现稳定可靠的工业级电流输出。这种组合方案在石化、电力等严苛工业环境中展现出卓越的温度稳定性和EMC性能,同时支持HART协议等工业通信标准,是工业4.0时代现场仪表升级的理想选择。

weixin_30693683的博客 400

AD74413R与PIC18F46K40的SPI通信与ADC/DAC配置详解

SPI通信协议作为嵌入式系统中常用的同步串行接口,通过主从设备间的时钟同步实现高速数据传输。其硬件架构包含SCLK、MOSI、MISO和CS四线制,支持全双工通信。在工业控制领域,SPI常用于连接ADC/DAC等精密模拟器件,如AD74413R这类可配置IO器件。通过配置寄存器参数,可实现多通道模拟信号采集(ADC)与输出(DAC),采样率最高达500kSPS。实际应用中需注意电平匹配、抗干扰设计和时序优化,典型场景包括传感器数据采集、过程控制系统等。结合PIC18F46K40的硬件SPI模块,可构建高性价

weixin_32349093的博客 354

工业4-20mA电流环与DAC161S997芯片应用解析

电流环技术是工业自动化中模拟信号传输的核心方法,通过4-20mA标准实现抗干扰、远距离传输。其原理基于电流信号的稳定性,特别适合恶劣工业环境。随着工业4.0发展,智能变送器需求催生了HART协议等混合通信技术。DAC161S997作为关键芯片,采用Σ-Δ架构实现高精度数模转换,支持SPI接口与可编程输出,满足现代工业对智能化和精度的双重需求。该技术广泛应用于过程控制、传感器网络等领域,是实现工业设备数字化的基础组件。

weixin_34267123的博客 1053

DAC161S997与PIC18F4620构建高精度4-20mA电流环方案

4-20mA电流环是工业自动化领域广泛采用的模拟信号传输标准,其核心优势在于抗干扰能力强、传输距离远。该技术通过电流信号传输数据,相比电压信号更不易受线路电阻和电磁干扰影响。在实现层面,高精度数模转换器(DAC)与微控制器(MCU)的协同设计是关键,其中TI的DAC161S997与Microchip的PIC18F4620组合可达到16位精度和0.1%线性度误差。这种方案特别适合过程控制系统、工业传感器等需要快速响应(300μs内)和高可靠性的场景。通过三点校准算法和优化的PCB布局,系统精度可进一步提升至±

weixin_29168813的博客 299

4-20mA电流环与DAC161S997工业应用解析

4-20mA电流环是工业自动化领域广泛采用的模拟信号传输标准,其核心原理是通过电流信号传输数据,具有抗干扰能力强、线路电阻不敏感等优势。DAC161S997作为专为工业场景设计的数模转换器,采用Σ-Δ架构实现16位精度,将数字控制系统的精确性与传统模拟传输的可靠性完美结合。该技术广泛应用于过程控制系统、工业传感器等领域,特别是在需要长距离、高可靠性信号传输的场景中表现突出。通过SPI接口与微控制器(如PIC18F86J55)协同工作,DAC161S997能够实现高精度的电流输出,满足工业自动化对信号传输的严

weixin_29168153的博客 317

突发环境事件怎么模拟?用Python+GIS实现高斯烟团模型(附完整代码)

本文详细介绍了如何利用Python与GIS技术实现高斯烟团模型,用于模拟化工泄漏等突发环境事件的动态扩散过程。通过核心原理讲解、参数快速获取方案、Python代码实现及GIS可视化集成,为环境应急人员提供了一套完整的解决方案。特别适合危险品运输事故等瞬态污染场景的应急决策支持。

weixin_33692284的博客 486

别再只用真彩色了!手把手教你用ENVI主成分分析(PCA)给遥感图像‘美颜’与‘瘦身’

本文详细介绍了如何利用ENVI主成分分析(PCA)技术优化遥感图像处理,实现数据‘美颜’与‘瘦身’。通过PCA的维度压缩、噪声分离和特征增强三大优势,显著提升高光谱数据的可视化效果和分析效率。文章还提供了ENVI操作的最佳实践和常见问题解决方案,帮助读者掌握这一遥感图像处理的游戏规则改变者。

weixin_28465009的博客 277

2.6 SST的核心性能指标体系

本文构建了固态变压器(SST)的核心性能指标体系,涵盖电气性能、可靠性、经济性和环境适配性四大类指标。电气性能指标包括运行效率(≥97%)、功率密度(≥900kVA/m³)、谐波畸变率(≤3%)等关键参数;可靠性指标设定MTBF≥43800h、年均故障率≤1.2次/年等标准;经济性指标对比分析了初始购置成本(45-55万元)和全生命周期成本(48-55万元);环境适配性指标则明确了温度、海拔等工况要求。该体系采用量化公式和国标限值,为SST的性能测试、选型和优化提供了统一标准。

技术工作者 606

(数字ic验证)从零开始的apb_watchdog验证模块搭建(一、功能介绍与环境搭建)

apb_watchdog验证模块搭建(一)文章目录 文章目录apb_watchdog验证模块搭建(一)文章目录前言一、apb_watchdog简单功能介绍二、测试平台环境搭建1.测试所用模板介绍2.tb与interface2.env与watchdog_pkg3.test与base_sequence4.Makefile总结——当前验证结构 前言 本文介绍了apb_watchdog验证模块的搭建过程与其具体代码,主要包括其中验证环境的构建,测试序列的发送与回归测试收集。主要运用systemvorilog与u

peop1e的博客 9739

DDR为什么需要DQS信号?

本文根据相关书籍和个人经验,谈了一下对DDR中DQS信号作用的理解

weixin_41155581的博客 2万+

别再死记公式了!用TL072运放设计带通滤波器,调出干净正弦波的实战心得与误区盘点

本文分享了使用TL072运放设计带通滤波器的实战经验,重点解决波形失真问题,提供单电源供电优化、动态调谐技巧及仿真与现实的参数修正方法,帮助工程师调出纯净正弦波。内容涵盖模拟电路设计中的常见误区与解决方案,适合电子工程师和爱好者参考。

weixin_29172963的博客 408

Flink on k8s 环境搭建(一)

Flink on Yarn的环境搭建过程中,需要进行配置较多,且需要搭建zookeeper Hadoop Yarn 等相关组件,安装流程比较复杂,集群出现问题重新安装的流程也比较复杂,且Yarn的3个节点中 只能起了 3个resourceManager和1个NodeManager,Flink 作业申请资源时只能 向NodeManager的节点申请资源,整体有资源瓶颈的隐患(后继flink作业会越来越多),现在尝试进行Flink on k8s 的环境搭建。

wangqiaowq的博客 3413

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

共轭梯度法的核心原理是求解优化问题的共轭向量组作为优化方向,由于优化方向间彼此正交,故每次迭代只需沿着一个方向寻优而互不影响。本文设计基于ESDF的障碍约束、曲率约束和平滑约束,基于ROS C++和Python提供了共轭梯度法的轨迹优化实践案例

FRIGIDWINTER的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 17、级联调制器:提升数据转换器性能的关键技术
下一篇: 19、电流单元矩阵结构的设计与应用
sql99
博客等级 码龄19年 168粉丝 1905原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值