ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:117.01KB ,
资源ID:8374413      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8374413.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多路数据选择器.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多路数据选择器.docx

1、多路数据选择器基于FPGA的多路数据采集器的设计李庭武 李本印陇东学院 电气工程学院,XX 庆阳 745000摘要:数据采集是从一个或多个信号获取对象的过程,它是计算机与外部物理世界连接的桥梁,尤其在恶劣的数据采集环境中得到广泛应用。本课题主要研究利用FPGA把采集到的八路模拟信号电压分别转换成数字信号,在数码管上实时显示电压值,并且与计算机运行的软件示波器连接,实现电压数据的发送和接收功能。关键词:FPGA;模数转换;数码显示管;键盘;设计Design of multi-channel data terminalBased on FPGA LiTingwu LiBenyin (Electri

2、cal Engineering College, Longdong University, Qingyang 745000, Gansu, China)Abstract: Data acquisition is a process that access to the object from the one or more signal, it is the bridge between the puter and the external physical world, and especially widely applied in data acquisitionin harshenvi

3、ronment . This essay mainly studies on the usage of FPGA to collect the eight analog signals that are converted to digital voltage signal, digital tube display real-time voltage value.Connecting with the puter running software oscilloscope so that to realize the voltage data sending and receiving fu

4、nction.Keywords: FPGA; analog-to-digital converting chip; digital display tube; keyboard; design0 引言20世纪以来,数字信号处理技术已逐渐渗透到通信、家电、军事等各个应用领域。数据采集系统由数据输入通道,数据存储与管理,数据处理,数据输出及显示五个局部组成。本设计以FPGA为控制核心,通过模数转换器ADC0809对07通道的数值进展循环检测,实现多路数据采集的目的。假设需要对数据进展处理时,通过切换键将控制单元的功能转换到数据处理功能,将采集到的电参量信号进展转换、放大、滤波、调零等处理,使之成为

5、适合A/D或者显示记录仪器所需要的电压信号并应用数码管将其显示出来或上传至计算机。由于整个系统的控制采用FPGA实现,因此可以依据现场的具体情况,对此系统进展修改、调试,故其具有组织方式灵活的特点。适合用在要求采集通道多、精度高,但速率不高的数据采集中,是一种比拟理想的实时数据采集系统。1系统设计系统设计框图如图1.1所示,数据采集器的第一路输入自制15V直流电压,第27路分别输入来自直流电源的5V、4V、3V、2V、1V、0V直流电压各电压可由分压器产生,不要求精度,第8路备用。各路模拟信号分别转换为8位二进制数字信号。用串行码送入传输线路。主控器串行传输线路对各路数据进展采集和显示。采集方

6、式包括循环采集即1路、2路、8路、1路和选择采集任意一路。显示局部能同时显示地址和相应的数据。利用电路补偿提高电阻变化与输出电流电压变化的线性关系。基于FPGA的I/O端口多、频率高,低功耗等优点,适用于有严格时序要求的多路数据采集系统,本设计采用FPGA构建多路数据采集系统核心控制电路,主要完成A/D转换及数据的采集、传输。FPGA采用虚拟的ADC接口与ADC0809进展通信。FPGA与ADC0809之间的通信可以采用中断方式,当数据转换好以后,BUSY引脚由高电平变为低电平从而产生中断信号。同样也可采用查询方式,不断查询ADC0809的通信存放器的BUSY位是否为0,如果为0,那么将数据缓

7、冲器中的数据保存到数组中。本系统采用中断方式,FPGA与ADC0809之间的通信采用四线连接方式。ADC0809主要包括5个信号:CS,BUSY,DIN, D0UT,SCIK。其中,CS接地,使ADC0809总处于选通状态。由于选择中断方式,所以BUSY与串行数据转并行数据模块的复位信号reset连接。DCIK的输入是分频模块提供的lkHz的频率。DOUT与串行数据转并行数据模块的输入El连接。AINl/AIN2:通道和模式存放器;st6:将20H写进模式存放器中,选择自校准再恢复模式;st7:将0CH写进通信存放器中,选择了AIN1/AIN2通道和下一次操作读通信存放器的0/DRDY位;st

8、8:读通信存放器的0/DRDY位;st9:将5CH写进通信存放器,选择AIN1/AIN2通道和下一次读数据存放器中的数据;stl0:读数据存放器中的值ADC0809工作状态控制。用键盘进展控制采集通道的选择,4-F键为功能键,4-E键为复位键,F键为确认键,13键为通道选择键。当按下“1 键选通ADC0809的1通路将实时采集到电压值通过模数转换并送到FPGA进展处理处理,显示出此时的数据和地址值。当按下“2 键选通ADC0809的2通路将实时采集到电压值通过模数转换并送到FPGA进展处理处理,显示出此时的数据和地址值。当按下“3 键选通ADC0809的3通路将实时采集到的电压值通过模数转换并

9、送到FPGA进展处理,显示出此时的数据和地址值。在显示出各通路采集到的电压值和地址值的同时还实现了与PC机的串行通信。ADC0809与FPGA是总线连接方式,端口地址为0x7fff。在通路选定后,转换开场时变低,只有在EOC变为高电平是转换才完毕,继而从端口读出相应的值。多路数据采集系统采用ADC0809模数转换器作为数据采集单元和FPGA来对它们进展控制,不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高采集数据的灵敏度及指标。多路数据采集系统就是通过键盘控制选择通路,将采集到的电压模拟两转换成数字量实时的送到FPGA里处理从而显示出采集电压和地址值。2硬件设计2.1 正弦信号发生器

10、自制的正弦信号波发生器如图3.1所示。它由方波发生器、三角波发生器和低通滤波器组成,输出正弦波,,电位器调节输出正弦波的频率,使频率200Hz2KHzX围内变化,再经过频率电压变换后输出相应15V直流电压200Hz对应1V,2KHz对应5V。2.2 加法器使用加法器的目的是使200Hz对应1V,2KHz对应5V,如图3.2所示。2.3 模数转换器ADC的功能是将输入模拟量转换位与其成比例的数字量,它是智能化测量控制仪表的一种重要组成器件。ADC0809 八位逐次逼近式A/D转换器是一种S器件,它由8路模拟开关、地址锁存与译码器、比拟器、8位开关树型DA转换器、逐次逼近 存放器、三态输出锁存器等

11、其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。输入输出与TTL兼容。 八路转换开关能直接连通八个单模拟信号中的任何一个。其内部构造如图3.3所示。ADC芯片的启动转换信号有电平和脉冲两种型式。设计时应特别注意,对要求用电平启动转换的芯片,如果在转换过程中撤去电平信号,芯片将停顿转换而得到错误的结果。ADC转换完成后,将发出完毕信号,以示主机可以从转换器读取数据。完毕信号也用来向CPU发出申请。CPU响应中断后,在中断效劳子程序中读取数据。也可用延时等待和查询转换是否完毕的方法来读取数据。2.4电源模块设计使用的电源是自制的5

12、V直流稳压电源,原理图如图3.4所示。根据以上设计中FPGA工作电压的要求,需要稳压电源输出+5V直流电。因三端稳压器具有构造简单、外围元器件少、性能优良、调试方便等显著优点,本设计中采用三端稳压块LM7805,电源经1000uF电解并并联0.1uF电容依次滤掉各种频率干扰后输出,输出电压直流性能好,实测其纹波电压很小。集成稳压块LM7805 输出电压+5V,输出电流1.5A,安装时要加散射器片。电源变压器选40W、5V输出变压器。2.5 FPGA接口电路FPGA是基于SRAM型构造的,其本身并不能固化程序。因此,FPGA需要一片Flash构造的配置芯片来储存逻辑配置信息,用于对FPGA进展上

13、电配置。其中MSEL1:0:用于选择配置模式。FPGA有多种配置模式,比方主动、被动、快速、正常、串行、并行等,可以由此管脚进展选择。DATA0:FPGA的串行数据输入,连接至配置器件的串行数据输出管脚。DCLK:FPGA的串行时钟输出,为配置器件提供串行时钟。nCSOI/O:FPGA片选信号输出,连接至配置器件的nCS管脚。ASDOI/O:FPGA串行数据输出,连接至配置器件的ASDI管脚。nCEO:下载链器件使能输出,在一条下载链中,当第一个器件配置完成后,此信号将使能下一个器件开场进展配置,下载链的最后一个器件的nCEO应悬空。nCE:下载链器件使能输入,连接至上一个器件的nCEO,下载

14、链的第一个器件的nCE接地。nCONFIG:用户模式配置起始信号。nSTATUS:配置状态信号。CONFIG_DONE:配置完毕信号。FPGA的配置电路图如3.5所示3 软件设计 系统中软件采用VHDL语言编程。VHDL主要用于描述数字系统的构造,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序构造特点是将一项工程设计,或称为设计实体可以是一个元件,一个电路模块或一个系统分成外部或称可视局部,及端口和内部或称不可视局部,即涉及实体的内部功能和算法完成局部。在对一个设计实体定义了外部界面后,一旦其内部开发完成后

15、,其他的设计就可以直接调用这个实体。这种将设计实体分成内外局部的概念是VHDL系统设计的根本点。VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。程序共分为八个模块,共有八个进程。模块一为一个二位二进制计数器,共计四个数字,时钟脉冲为625KHz,一个时钟脉冲记一次数。模块二为一个二线四线译码器,将模块一计出的数字通过译码,转换为四位二进制数字,控制四位数码管的扫屏显示。模块三为开关控制模块,此进程的主要作用是通过按下键盘来控制模拟输入位,和消除按下键盘时因抖动而引起的毛刺问题。模块四模块五为ADC0809控制模块,模块四通过对ALE引

16、脚进展上下电平的写入控制其读入模拟量和锁存。模块五将读到的八位数字信号量进展计算,转换为能在数码管上显示出来的数字信号。其余三个模块为显示模块。通过将计数器和计算所得到的数据进展处理,译码为七位数字信号量,在数码管上输出。系统软件流程图如图4.1所示。4 系统测试4.1测试仪器数字万用表、指针万用表、示波器。4.2 测试方法正弦信号发生器是由方波发生器、三角波发生器和低通滤波器组成的。连接正弦信号发生器和频率电压变换器,用数字万用表测试输出端的电压,示波器测试正弦信号发生器输出端的波形,调整和是输出端的电压到达最小,固定的阻值,调整记录使频率电压转换器能正常工作约为800mv以上且信号不是真的

17、最大最小频率。正弦信号发生器的频率为低通滤波器的中值频率为接通电路,给八个输入端口分别输入所要求的电压,扳动上下电平输出控开关,当开关处于高电平时,看位选位数码管是否按顺序依次循环。当开关处于低电平时,看位选位数码管输出数字是否能够与键盘上按下的开关相对应。再用万用表测量ADC0809模拟量输入端口,观察其度数是否与数码管输出数字相等,假设相等且位选位数码管输出数字能够与键盘上按下的开关相对应那么说明本设计成功。4.3测试结果测试选用在ADC0809的第二路和第七路输入,分别读取了第二路第七路和标准电压表的读数作为参考数据。结果如表1所示。表1 测试结果参考数据V2路读数V误差V7路读数V误差

18、V0.8100.9010.0890.8820.0721.0461.0580.0121.0980.0521.3141.3910.0771.3910.0772.3952.4500.0552.4690.0742.3812.4300.0492.4590.0782.6632.6260.0372.7440.0814.4634.4680.0054.5270.0644.4284.5080.0804.5080.0804.4884.48804.48804.5964.6840.0884.6640.0684.8824.841-0.0414.821-0.061平均误差0.0480.0645结论本系统以 FPGA为核心部

19、件,通过软件实现了正弦波的产生、步进、幅度控制并且波形根本到达要求且具有操作简便,精度、速度以及系统可靠性高等优点。在系统的设计过程中, 本系统力求硬件简单,充分发挥软件编程方便灵活的特点,并最大限度利用 FPGA的资源, 来满足系统设计的要求。因仪器等条件的限制该系统还有许多值得改良的地方,例如采用更高速率芯片对输出波形进展补偿,改善波形质量。较以前使用大量模拟电路实现多功能正弦信号发生器简单了许多,且易实现,该系统在现代通信领域具有广泛的应用前景。参考文献1 潘松,黄继业.EDA技术与VHDLM.:清华大学,2009年。1.夏宇闻.Verilog数字系统设计教程M.航空航天大学,2003.

20、2.陈福集.信息系统技术概论.高等教育M,2008.3.阎石.数字电子技术根底.高等教育M.第五版.4.J.Bhasker,Verilog HDL硬件描述语言M,:机械工业,2002.5肖忠祥,数据采集原理M.XX:西北工业大学,2001.6ADP3338 datasheet,2000.7AD8138 datasheet,1999。8周振安,X良龙.,数据采集系统的设计与实践M.:地震,2005.79宋光德,X慧,梁磊.一种基于FPGA的高速波形采集与实时数据压缩方法J电子测量与仪器学报,20040347-50.10杨志方,王泽成,涂坦,谈宏华,曹新莉.基于FPGA的多路高速数据采集系统的实现

21、J.XX化工学院学报.XX化工学院学报.11曹伟军,聂杨.ADS8344和FPGA的高精度数据采集前端J.单片机及嵌入式系统应用,20080124.12蒋学东.基于FPGA实现多路模拟信号自适应采集系统J.现代电子技术报,2010年第8期.13李鹏,马游春,李锦明.基于FPGA的多路数据采集模块硬件设计J.仪表技术与传感器.2010年第3期.14林长青,X胜利.基于FPGA的多路高速数据采集系统J.中科院XX技术物理研究所,XX200083 .15黄容兰,万德焕.基于FPGA的A/D转换采集控制模块设计J.XX电子科技大学电子工程学院.第24卷文章编号:10049037(2009).16.江勇

22、,段美霞.基于FPGA的多路数据实时捕获实现J.中国电子科技集团公司第四十一研究所.文章编号:10030107(2009)03-002003.17.于超,陈光武,石文静.基于FPGA的信号附录程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity AD3 is port ( clk1,clk2:in std_logic; k0,k1,k2,k3,k4,k5,k6,k7,k8: in std_logic; d : in std_l

23、ogic_vector(7 downto 0); ale,oe : out std_logic; abc : out std_logic_vector(2 downto 0); vss : out std_logic_vector(3 downto 0); q,q1 : out std_logic_vector(6 downto 0);end entity AD3;architecture rt1 of AD3 is signal clk3: std_logic; signal s: std_logic_vector(1 downto 0); signal a1: std_logic_vect

24、or(1 downto 0); signal a2: std_logic_vector(2 downto 0); signal d1: std_logic_vector(3 downto 0); signal vs: std_logic_vector(3 downto 0); signal cout11,cout21,cout31,cout41 : std_logic_vector(3 downto 0); begin p1:process(clk1) begin if(clk1event and clk1=1) then if(s=11) then s=00; else s=s+1; end

25、 if; end if;end process; a1vsvsvsvs=1000; end case; vss=vs;end process;p3:process (k0,k1,k2,k3,k4,k5,k6,k7,k8,clk2) variable a : integer range 0 to 3; variable b : integer range 0 to 64; begin if(clk2event and clk2=1) then if(k8=1) then if(b=64) then a2=a2+1;b:=0;else b:=b+1; end if; else if(k0=1) t

26、hen if (a3) then a:=a+1; else a2=000; a:=0; end if; end if; if(k1=1) then if (a3) then a:=a+1; else a2=001; a:=0; end if; end if; if(k2=1) then if (a3) then a:=a+1; else a2=010; a:=0; end if; end if; if(k3=1) then if (a3) then a:=a+1; else a2=011; a:=0; end if; end if; if(k4=1) then if (a3) then a:=

27、a+1; else a2=100; a:=0; end if; end if; if(k5=1) then if (a3) then a:=a+1; else a2=101; a:=0; end if; end if; if(k6=1) then if (a3) then a:=a+1; else a2=110; a:=0; end if; end if; if(k7=1) then if (a3) then a:=a+1; else a2=111; a:=0; end if; end if; end if; end if; abc=a2;end process;P4:process(clk1

28、) variable state:integer range 0 to 2; variable state1:integer range 0 to 500; begin if(clk1event and clk1=1) then if(state1=499) then state1:=0; clk3 ale ale ale=1; state:=0; end case; oe=1; end if;end process;p5:process(d,clk1) variable cout1,cout2,cout3,cout4: integer range 0 to 9; variable d3 :

29、std_logic_vector(15 downto 0); variable d2: integer range 0 to 60000; begin d3:=d*11000100; d2:=conv_integer(d3); cout1:=d2 / 10000; cout2:=d2 rem 10000 / 1000; cout3:=d2 rem 1000 / 100; cout4:=d2 rem 100 / 10; cout11= conv_std_logic_vector(cout1,4); cout21= conv_std_logic_vector(cout2,4); cout31= conv_std_logic_vector(cout3,4); cout41d1d1=cout3

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1