收藏 分销(赏)

数据采集系统实验报告AD模块的设计.doc

上传人:仙人****88 文档编号:12072170 上传时间:2025-09-06 格式:DOC 页数:7 大小:371.22KB 下载积分:10 金币
下载 相关 举报
数据采集系统实验报告AD模块的设计.doc_第1页
第1页 / 共7页
数据采集系统实验报告AD模块的设计.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
JIANGSU TEACHERSUNIVERSITY OF TECHNOLOGY 数据采集系统实验报告 A/D采集模块设计 学院名称: 电气信息工程学院 专 业: 测控技术与仪器 班 级: 07测控 姓 名: 学 号: 指导教师: 2010年12月20日 目录 一、实验目的 二、实验原理 1.ADC0809的原理及原理图 2.AD574A的原理及原理图 三、实验过程 四、实验结果 五、结束语 六、参考文献 一、 实验目的: 学习用状态机实现对ADC0809,AD574A等A/D转换器的采样控制。 二、 实验原理: 1.ADC0809的原理及原理图 图2.1和图2.2分别是ADC0809的工作时序图以及采样状态图。时序图中,START为转换启动控制信号,高电平有效,ALE为模拟信号输入宣统端口地址所存信号,上升沿有效;一旦START有效后,状态信号EOC变为低电平,表示进入转换状态,转换时间约为100us。转换结束后,EOC将变为高电平。此后外部控制可使OE由低电平变为高电平(输出有效),此时,ADC0809的输出数据总线D[7…0]从原来的高阻态变为输出数据有效。 由状态图也可看到,状态st2中需要对ADC0809工作状态信号EOC进行测试,如果为低电平,表示转换没有结束,仍需要停留在st2状态中等待,直到变成高电平后才说明转换结束,在下一个时钟脉冲到来时转向状态st3。在状态st3,由状态机向ADC0809发出转换好的8位数据输出允许命令,这一状态周期同时可作为数据输出稳定周期,以便能在下一状态中向锁存器中锁入可靠的数据。在状态st4,由状态机向FPGA中的锁存器发出锁存信号(LOCK的上升沿),将ADC0809的输出数据进行锁存。 图2.1 ADC0809工作时序 图2.2控制ADC0809采样状态图 2.AD574A的原理及原理图 (1)12位A/D转换器芯片AD574A特点:芯片内部包含微机接口逻辑和三态输出缓冲器,可以直接与8 位、12 位或16 位;输出可以是12位一次读出或分两次读出,先读高8位,再读低4位;输入电压可有单极性和双极性两种;对外可提供一个+10V基准电压,最大输出电流1.5mA;有较宽的温度使用范围。 (2) 芯片引脚功能如图2.4所示: 图2.4 AD574A引脚功能 (3)启动转换的时序: 在启动转换后,各控制信号不起作用,只有STS信号标志工作状态。读出数据也同样由CE来启动,读时序如下图2.5所示: ①在CE上升沿之前,先有 图2.5 AD574A读时序图 三、 实验过程 本次实验是采用QuartusⅡ软件进行编译与仿真。步骤如下: 1. 打开QuartusⅡ6.0软件,进入QuartusⅡ欢迎界面。 2. 鼠标单击File---new,出现如下窗口,选择“VHDL FILE”,在弹出的窗口中输入VHDL程序文件。 3. 输入完毕后,点击保存,由于接下来步骤繁琐,我就把它简述为保存并新建工程。 4. 接下来就进行编译,选择下图processing菜单中的start complilation命令。若有VHDL程序有错误,则编译不会完成并弹出对话框提示如下图所示,单击确定后,手动排除错误。方法是在红色的错误提示上双击鼠标左键,软件会自动找到可能是错误的地方或者软件认为不符合规范的地方,排除错误后,再重新执行编译过程。 5. 完成编译后方可进行时序波形的仿真,也称为软件仿真,仿真的前提条件是要有波形文件。仿真的过程可以分为新建波形文件,添加节点,设置仿真时间长度,绘制波形,存储文件,启动仿真等步骤。 6. 附上程序清单: (1)ADC0809程序清单 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY vhdl1 IS PORT(D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --来自0809转换好的8位数据 CLK : IN STD_LOGIC; --状态机工作时钟 EOC : IN STD_LOGIC; --转换状态指示,低电平表示正在转换 ALE : OUT STD_LOGIC; --8个模拟信号通道地址锁存信号 START : OUT STD_LOGIC; --转换开始信号 OE : OUT STD_LOGIC; --数据输出3态控制信号 ADDA : OUT STD_LOGIC; --信号通道最低位控制信号 LOCK0 : OUT STD_LOGIC; --观察数据锁存时钟 Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --8位数据输出 END vhdl1; ARCHITECTURE behav OF vhdl1 IS TYPE states IS (st0, st1, st2, st3,st4) ; --定义各状态子类型 SIGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; -- 转换后数据输出锁存时钟信号 BEGIN ADDA <= '1';--当ADDA<='0',模拟信号进入通道IN0;当ADDA<='1',则进入通道IN1 Q <= REGL; LOCK0 <= LOCK ; COM: PROCESS(current_state,EOC,CLK) BEGIN --规定各状态转换方式 IF CLK'EVENT AND CLK='1' THEN CASE current_state IS WHEN st0=>ALE<='0';START<='0';LOCK<='0';OE<='0'; next_state<= st1; --0809初始化 WHEN st1=>ALE<='1';START<='1';LOCK<='0';OE<='0'; next_state<= st2; --启动采样 WHEN st2=> ALE<='0';START<='0';LOCK<='0';OE<='0'; IF (EOC='1') THEN next_state<= st3; --EOC=1表明转换结束 ELSE next_state<= st2; END IF ; --转换未结束,继续等待 WHEN st3=> ALE<='0';START<='0';LOCK<='0';OE<='1'; next_state<= st4;--开启OE,输出转换好的数据 WHEN st4=> ALE<='0';START<='0';LOCK<='1';OE<='1'; next_state<= st0; WHEN OTHERS =>next_state<= st0; END CASE ; END IF; END PROCESS COM ; REG: PROCESS (CLK) BEGIN IF (CLK'EVENT AND CLK='1') THEN current_state<=next_state; END IF; END PROCESS REG ; -- 由信号current_state将当前状态值带出此进程:REG LATCH1: PROCESS (LOCK) -- 此进程中,在LOCK的上升沿,将转换好的数据锁入 BEGIN IF LOCK='1' AND LOCK'EVENT THEN REGL <= D ; END IF; END PROCESS LATCH1 ; END behav; (2)AD574A程序清单:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADCINT1 IS PORT(D:IN STD_LOGIC_VECTOR(11 DOWNTO 0); CLK:IN STD_LOGIC; STS:IN STD_LOGIC; CE:OUT STD_LOGIC; CS:OUT STD_LOGIC; RCN:OUT STD_LOGIC; A0:OUT STD_LOGIC; SL: OUT STD_LOGIC; LOCK0:OUT STD_LOGIC; Q:OUT STD_LOGIC_VECTOR(11 DOWNTO 0)); END ENTITY ADCINT1; ARCHITECTURE behav OF ADCINT1 IS TYPE states IS(st0,st1,st2,st3,st4,ST5); SIGNAL current_state,next_state:states:=st0; SIGNAL REGL :STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL LOCK :STD_LOGIC; BEGIN A0<='0'; SL<='1'; Q<=REGL; LOCK0<=LOCK; COM:PROCESS(current_state,STS) BEGIN IF(CLK'EVENT AND CLK='1') THEN CASE current_state IS WHEN st0=>CE<='0';CS<='0';RCN<='0';LOCK<='0'; next_state<=st1; WHEN st1=>CE<='1';CS<='0';RCN<='0';LOCK<='0'; next_state<=st2; WHEN st2=>CE<='0';CS<='1';RCN<='1';LOCK<='0'; IF(STS='0')THEN next_state<=st3; ELSE next_state<=st2; END IF; WHEN st3=>CE<='0';CS<='0';LOCK<='0';RCN<='1'; next_state<=st4; WHEN st4=>CE<='1';CS<='0';LOCK<='0';RCN<='1'; next_state<=st5; WHEN st5=>CE<='1';CS<='0';LOCK<='1';RCN<='1'; next_state<=st0; WHEN OTHERS=>next_state<=st0; end case; END IF; end process COM; REG:PROCESS(CLK) BEGIN IF(CLK'EVENT AND CLK='1') THEN current_state<=next_state; END IF; END PROCESS REG; LATCH1:PROCESS(LOCK) BEGIN IF LOCK='1' AND LOCK'EVENT THEN REGL<=D;END IF; END PROCESS LATCH1; END behav; 四、 实验结果 图4 ADC0809采样状态机工作时序 五、 结束语 这次的数据采集系统课程设计,让我们有机会将课堂上所学的理论知识运用到实际中。并通过对知识的综合利用,进行必要的分析、比较,从而进一步验证了所学的理论知识。同时,这次课程设计也为我们以后的学习打下基础,指导我们在以后的学习,多动脑的同时,要善于自己去发现并解决问题。 通过这次实验,我学会了用状态机对ADC0809和AD574A转换器的采样控制。在实验的过程中遇到了很多困难,但通过查书本和查资料都得到了解决。所以,在学习的过程中遇到困难并不可拍,我可以通过努力将问题一一克服。 六、 参考文献 [1]《数据采集与处理技术》马明建编著西安交通大学出版社 2005 [2]《EDA技术与VHDL》潘松,黄继业编著清华大学出版社 2004
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服