首页 理论教育 如何优化系统的硬件设计?

如何优化系统的硬件设计?

时间:2023-06-23 理论教育 版权反馈
【摘要】:图8-5 MAX4638的管脚配置图8-5 MAX4638的管脚配置图8-6 AD7938典型应用电路在本电路的设计中使用5V和3V电源供电,其中5V供AD7938芯片使用,3.3V供数字信号输出的驱动电平。

如何优化系统的硬件设计?

硬件电路包括基于FPGA的多通道高速采样控制电路和相应的通道选择电路、A-D转换电路。采样控制单元如图8-4所示。

978-7-111-55712-8-Chapter08-5.jpg

图8-4 采样控制单元

A-D和模拟开关在FPGA的控制之下对数据进行采集,上电之后由FPGA对A-D和模拟开关进行初始化配置,然后开始数据采样,采集到的数据传送到FPGA中。

1.通道选择电路

单元设计要求是在0.1~0.2ms内采样200个传感器。本单元选用的多路开关是MAX4638,该芯片是8选1的CMOS型模拟多路开关,可采用+1.8~5V电源或者±2.5V电源供电。当采用单电源+5V供电时,其输入阻抗是3.5Ω,通道打开的时间ton=18ns,通道关闭的时间toff=7ns。书中选用+5V供电,这样选通一个通道的总时间是25ns,工作频率最高可达40MHz,理论上采样200路通道的时间为5μs,完全满足系统的需求。MAX4638的管脚配置和功能原理如图8-5所示。A0~A2为NO1~NO8八个通道的通道选通信号;EN为通道选通使能信号;COM为该芯片的输出管脚。

2.A-D转换电路

设计中选用的A-D转换器芯片是AD7938,这是一款8通道12位高速低功耗连续逼近的A-D转换器芯片,采用2.7~5.25V单电源供电,其转换速度可达1.5MSPS,功耗最大仅有6~13.5mW。AD7938的8个模拟输入通道可以在程序的控制之下连续地转换,它以极低的功耗实现了频率很高的采样,而且使用者可以在很大的范围内设定它的电源电压,以及模拟输入的电压范围、输出电压等,在使用过程中非常方便,在精度和速度上也完全可以达到对本单元设计的要求。AD7938典型应用电路如图8-6所示。

978-7-111-55712-8-Chapter08-6.jpg

图8-5 MAX4638的管脚配置

978-7-111-55712-8-Chapter08-7.jpg

图8-6 AD7938典型应用电路

在本电路的设计中使用5V和3V电源供电,其中5V供AD7938芯片使用,3.3V供数字信号输出的驱动电平。8个模拟输入端分别接8个MAXIM4638的COM端,这样一个A-D转换器可以转换64路模拟信号。(www.xing528.com)

在使用AD7938进行模数转换开始前要对其内部寄存器进行初始化操作,以便其能正常地工作。初始化操作是由FPGA通过DB0~DB11对其内部寄存器进行写操作,这些赋值包括配置电源管理模式、数字输出信号的编码模式、通道选择模式等。具体的写时序如图8-7所示。

CONVST引脚上的下降沿信号标志一次转换的开始,在转换的过程中BUSY引脚上一直是高电平,在CONVST下降沿后的第14个CLKIN的下降沿,BUSY引脚变成低电平,且CONVST变成高电平。在此之后可以通过CS和RD以及DB0~DB11将转换后的数据取走,然后再进行下一个循环。这样就实现了数据的模数转换。具体的时序如图8-8所示。

3.A-D转换器和模拟开关转换控制模块

978-7-111-55712-8-Chapter08-8.jpg

图8-7 AD7938内部寄存器写时序

A-D转换器和模拟开关转换控制模块采用有限状态机的方法在FPGA内部产生AD7938和模拟开关MAX4638的工作时序。共有0~4五个工作状态,如图8-9所示。其中状态0为初始状态,初始状态下使模拟开关和A-D转换器无效,输出数据总线为高阻状态,模拟开关的多路选择信号初始化为第一个通道。

978-7-111-55712-8-Chapter08-9.jpg

图8-8 AD7938转换和读取数据的时序

状态1向A-D转换器内部寄存器赋初值,设定其工作模式:采用普通的电源管理模式,输出的数字信号采用正常的编码模式,参考电压采用芯片内部提供模式,模拟通道采用单端输入的8选1模式,采用内部循环依次对8个模拟输入端进行采样的模式。然后将8个通道全部打开,由AD7938进行数据采集。

978-7-111-55712-8-Chapter08-10.jpg

图8-9 有限状态机工作状态

状态2为多通道采集控制状态,对模拟开关MAX4638进行初始化,并使其开始工作。状态3为A-D转换器转换状态,在该状态内将完成模拟信号到数字信号的转换,并将数字信号送到DB0~DB11管脚输出。状态4为读取数据状态,在该状态内将读出DB0~DB11上的信号,并把它们保存到FPGA内部的RAM中,最后再返回到状态1。这就完成了一个通道的数据采集,如此周而复始就可以完成全部的数据采集。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈