基于VHDL语言设计数据采集器.doc_第1页
基于VHDL语言设计数据采集器.doc_第2页
基于VHDL语言设计数据采集器.doc_第3页
基于VHDL语言设计数据采集器.doc_第4页
基于VHDL语言设计数据采集器.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA课程设计报告书课题名称基于VHDL语言设计数据采集器姓 名 学 号 院、系、部 专 业 指导教师 一、 设计任务及要求: 设计任务:用VHDL语言设计数据采集器 要求:1能显示每路的当前采样值。 2 能对数据采集系统的各个模块有个正确的仿真。 3 采集的数据在软件设计的范围内。 指导教师签名: 年 月 日 二、指导教师评语:指导教师签名: 年 月 日 三、成绩验收盖章 年 月 日 基于VHDL语言设计数据采集器1 设计目的 在此次课程设计中,我将通过多方搜集资料与分过这个阶段的研习,更清晰地认识数据采集器的原理,同时加深对EDA这款电子设计软件操作的熟练度。利用自主的设计过程来锻炼自己独立思考,分析和解决问题的能力,为我今后的自主学习研究提供具有使用性的经验。 、 2 设计主要内容和要求随着计算机技术的发展与普及,数字设备正越来越多地取代模拟设备,将模拟信号转换成数字信号以及将数字信号转换成模拟信号就成了重要环节。本系统以多路数据的采集及监测为例,介绍了可编程逻辑器件在模数转换、数模转换及数据监控及处理中的设计方法。实现数据采集的方法有很多,如单片机、CPLD、C语言等,但相比各种方法,运用VHDL硬件描述语言开发的数据采集系统具有具有设计方便高效、体积小、功耗低、可靠性高、易于修改、设计周期短等特点。VHDL硬件描述语言采用自顶而下的设计方法可以对模型进行及时修改,以改进系统或子系统的功能,更正设计错误,从而提高目标系统的工作速度,减小面积耗用,降低功耗和成本等。本文介绍了基于Altera公司的集成开发环境MaxplusII,使用VHDL设计开发数据采集系统的基本方法3 整体设计方案数据采集系统的设计主要包括数据输入单元、数据处理及监控和数据输出单元。数据输入单元的设计主要是通过ADC0809的常规应用来实现的。ADC0809的CLOCK信号是由外部接入的,没有固定的数值要求,只要足够高就可以了。但是START信号的频率不宜过高,要小于1khz。数据处理及监控单元主要是通过软件来实现,主要包括循环检测与监控模块和数据处理模块。循环检测及监控模块主要实现对输入电压值进行循环检测,将检测值与设定值进行比较。当检测到超出设定电压值时,产生报警信号,并通过数码管显示出当前通道数;数据处理模块主要实现将信号放大2倍、缩小到1/2和保持不变三种处理方式。数据输出单元主要功能就是将处理后的数字信号经过DAC0832再转换为模拟量输出6-8。图3系统原理框图4 硬件电路设计4.1 ADC0809接线图数据输入单元的设计是通过ADC0809的常规应用来实现的,其具体的实现如图4-1所示,此电路图主要实现将八路输入模拟信号转换为数字信号,为数据处理及监控模块提供输入信号。其中ADC0809的CLOCK信号是由外部输入的。此信号的输入没有固定的要求,只要足够高就可以了,通常信号频率为640KHZ、750KHZ等。ADC0809的START信号也是由外部接入的,但是此信号的频率不宜过高,要小于1KHZ。将ADC0809的输出作为CPLD的输入。ADC0809是一种比较典型的8位8通道逐次逼近式A/D转换器CMOS工艺,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,其转换时间为100s左右,采用双排28引脚封装11。ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 AD转换,之后EOC输出信号变低,指示转换正在进行。直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上 图4.1 ADC0809接线图4.2模块功能实现此系统是用ADC0809对模拟信号进行采样,转换为数字信号,由可编程逻辑器件读入,再送到DAC0832,将数字信号转换为模拟信号8。用可编程逻辑器件实现对ADC0809的控制,由于采用查询信号EOC的方式,所以可达到ADC0809的最高速度(注:ADC0809和DAC0832都不能对负电压进行操作)。主要包括分频模块和ADC控制模块。总体框图如图3-2所示:图中OE为输出允许信号,高电平允许转换结果输出;EOC为转换结束信号,为0代表正在转换,1代表转换结束;DIN7.0为八路模拟量输入通道;DOUT7.0为转换后的八路数字信号输出通道。图4-2 功能模块总体框图4.3 数据处理及监控模块模块设计中,选择工作模式是由按键k1来完成的。当k1为0时器件工作于循环检测报警模式,当k1为1时器件工作于数据采集及处理模式。当器件工作于数据采集及处理模式时,fun是用来选择工作方式的,fun为00时器件工作于放大2 倍的方式,fun为01时器件工作于缩小1/2的方式,fun为10和11时则对所采集进来的数据不加处理就输出。在采集数据的时候还可以选择所采数据是ADC0809的八路中的那一路,这是由控制键k3来完成的。K3是一个三维矢量,由它来完成通道的选择,例如“111”表示第七路。总体框图如图3-5所示,其中d7.0接DAC0832的数据端,sel2.0接ADC0809的通道选择,seg6.0接数码管12-14。图4-3数据处理与监控单元总体框图4.4数据输出模块此模块设计所使用的芯片是DAC0832,它的接线图如图4-4所示。此器件的工作原理简单介绍如下:DAC0832由8位输入锁存器,8位DAC寄存器8位DA转换电路组成。DAC0832有三种工作方式:单缓冲方式、双缓冲方式、直通方式 。图4-4 DAC0832接线图4.系统软件设计主程序流程图如图4初始化开始数据选择数据比较处理判读是否有键按下是显示数据结束图4主程序流程图4.1系统程序程序见附录5 设计仿真图5-1所示的是实现对ADC0809的控制,先送出START信号,开始进行模数转换。再送出ALE信号将地址信号锁存,然后查询EOC信号,若EOC变为高电平,则说明转换已结束。此时送出OE信号,读取数据,完成一个转换周期。(注:ALE:地址锁存允许信号;START:转换启动信号;OE:输出允许信号,高电平允许转换结果输出;CLK:时钟信号;EOC:转换结束信号,为0代表正在转换,1代表转换结束)图5.1 ADC0809控制模块波形仿真图图5-2中所示,k=0器件处于循环检测及监控工作方式,d为控制信号输入端,设置为自动加一,初始值为1,Sel为通道数0到7。当d128时,alm=0,器件处于正常循环检测工作状态。当d128时,alm=1,产生报警信号,sel锁定为当前通道数。图5-2 循环控制及监控模块波形仿真图如图5-3所示,fun=2器件工作于方式2,即将采集进来的数据不加处理就输出。D为外部输入信号,设置为自动加一,初始值为0,q为输出信号值。因为ADC0809芯片本身具有将信号放大2倍的作用,所以此时要保持输出信号不变,实际上需将信号缩小1/2,图5-3数据处理模块波形仿真图6 结论通过VHDL语言编程设计来实现数据采集系统,在Altera 公司开发的第三代EDA集成开发环境 MAXPLUS II中进行修改、编译、仿真,采用软硬件结合的方法对设计结果进行验证。在设计中,采用多进程描述的方法来进行程序设计,通过使用进程可以把整体的功能局部化、分块设计。多个进程通过进程间通信机制互相配合、达到设计要求。当进程比较多的时候,它们之间的配合问题就比较复杂,因此在设计之前应该合理规划安排。此次毕业论文设计使我的学术水平有了质的飞跃,为以后工作生活奠定了坚实的基础,树立了强大的信心。参考文献1 赵曙光.可编程逻辑器件应用M.西安:西安电子科技大学出版社,2000:11-33.2 王振红.VHDL数字电路设计与应用实践教程M 北京:机械工业出版社,2005:31-443 肖忠祥.数据采集原理M.西安:西北工业大学出版社,2001:46-584 王振红,赵新建.数据采集以及监控系统M.北京:北方工业大学出版社,2003:55-645 马云峰,陈子夫,李培全.数字温度传感器DS18B20的原理与应用J.EB/OL 1-256 卢毅等.VHDL与数字电路设计M.北京:科学院,2001:19-45附录 数据选择模块:LIBRARY IEEE; use ieee.std_logic_1164.all; entity dataselect isPORT(s0,s1,s2,s3,ena:in std_logic; a:in std_logic_vector(15 downto 0); y:out std_logic); end dataselect;Architecture one of dataselect is Signal s:std_logic_vector(3 downto 0 ); Begin S=s0&s1&s2&s3;Process(s0,s1,s2,s3,ena)Begin if ena=1 then yyyyyyyyyyyyyyyyyb) then f=a; end if; end if; end process; end two;二选一模块:Library ieee;Use ieee.std_logic_1164.all;Entity select1 isPort(a,b:in std_logic_vector(2 downto 0); s:in std_logic;q:out std_logic_vector(2 downto 0);End select1; Architecture s_arc of select1 isBegin process(s,a,b)Begin if s=0then q=a; else q=b;end if;End process;End s_arc;输出模块:Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;Entity deal is Port(d:in std_logic_vector(7 downto 0); clock,k1:in std_logic; Fun:in std_logic_vector(1 downto 0);Sel:out std_logic_vector(2 downto 0); Q:out std_logic_vector(7 downto 0); Alm:out std_logic);End deal;Architecture a_arc of deal isBegin Process(clock)Variable x:std_logic;Variable cnt:std_logic_vector(2 downto 0);BeginIf clkevent and clk=1then If k1=0then -循环检测模式 If x=0then Sel”10000000”then -常数决定电压超过几伏时报警alm=1;Else alm=0; X:=0; end if;End if; Else if fun=”00” then Q=d;elseif fun=”01 then q=0&0&d(7 downto 2);else q=0&d(7 downto 1);End if; End if; End if;End if; End process;End a_arc;袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论