网站大量收购独家精品文档,联系QQ:2885784924

数据采集及显示系统设计.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据采集及显示系统设计 一、实验内容 设计一个 ADC0809 数据采集及显示系统。采样间隔为0.5 毫秒,系统时钟为512KHz。 AD 转换得到的8 位数据进行译码显示(显示可采用两位的LED)。 二、系统框架分析与设计 ADC0809是8位逐次逼近型A/D转换器,ADC0809内部没有时钟电路,故时钟需要由外部输入,允许范围为10KHz~1280KHz,典型值为640KHz,每一通道的转换需66~73个时钟周期。ALE是地址锁存使能信号输入端,在ALE信号的上升沿,ADDA~ADDC上的地址码被锁存、译码后,选通与8个模拟输入端对应的多路开关。START是启动信号输入端,在START信号的上升沿复位A/D转换器,下降沿启动A/D转换器。根据分析,系统可分为采样控制模块、数据转换模块和显示译码模块三个部分,如图1所示: 三、模块实现 (1)采样时钟产生模块:由输入、输出时钟的比例关系可知由256 分频器即可实现。具体VHDL代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY clkdiv IS PORT( RESET,CLK: IN STD_LOGIC; CLK2: OUT STD_LOGIC ); END; ARCHITECTURE ONE OF clkdiv IS SIGNAL FULL : STD_LOGIC; BEGIN P_REG: PROCESS(CLK) VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF RESET = 1 THEN CNT8 := ELSIF CLKEVENT AND CLK = 1 THEN IF CNT8 =THEN CNT8 := FULL = 1; ELSE CNT8 := CNT8 + 1; FULL = 0; END IF; END IF; END PROCESS P_REG; P_DIV : PROCESS(FULL) VARIABLE CNT2 : STD_LOGIC; BEGIN IF FULLEVENT AND FULL = 1 THEN CNT2 := NOT CNT2; IF CNT2 = 1 THEN CLK2 =1; ELSE CLK2 = 0; END IF; END IF; END PROCESS P_DIV; END; (2)采样控制模块:根据时序要求来产生ADC0809 正常工作所需的各个控制信号,采用有限状态机设计方法实现采样控制模块,状态由ADC0809 的工作时序确定。ADC0809 的工作时序如图2所示: 具体VHDL代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY adc_ctrl IS PORT( CLK1,CLK2,RESET,EOC:IN STD_LOGIC; ALE,START,OE,ICLK:OUT STD_LOGIC ); END adc_ctrl; ARCHITECTURE ONE OF adc_ctrl IS TYPE STATES IS(S0,S1,S2,S3,S4,S5,S6,S7); SIGNAL CURRENT_STATE,NEXT_STATE: STATES := S0; BEGIN PROCESS(CLK1,RESET) BEGIN IF(CLK1EVENT AND CLK1=1 AND RESET=0)THEN CURRENT_STATE=NEXT_STATE; END IF; END PROCESS; P_STATE1: PROCESS(CURRENT_STATE,RESET,CLK2,EOC) BEGIN CASE CURRENT_STATE IS WHEN S0 = IF(RESET=0 AND CLK2=1) THEN NEXT_STATE = S1; ELSE NEXT_STATE = S0; END IF; WHEN S1 = IF(RESET=0) THEN NEXT_STATE = S2; ELSE NEXT_STATE = S0;END IF; WHEN S2 =

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档