




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA课程设计------A/D0809转换控制设计课题要求:1.利用实验箱上FPGA芯片控制ADC0809的时序,进行AD转换,然后将ADC0809转换后的数据以十六进制的数据显示出来。2.实现时必须严格遵守ADC0809的工作时序,在编写代码时要注意。对选定的通道输入一个模拟量,调节电位器改变输入的模拟量。关键字:AD0809VHDL实验目的了解ADC0809的工作原理。了解用扫描方式驱动七段码管显示的工作原理。了解时序电路FPGA的实现。学习用VHDL语言来描述时序电路的过程。硬件要求可变时钟源。七段码显示。A/D转换芯片ADC0809主芯片EP1K10TC100—3。三个拨动开关,进行地址选择。实验原理该实验是利用FPGA控制ADC0809的时序,进行AD转换,然后将ADC0809转换后的数据以十六进制的数据显示出来。ADC0809是8位8通道的逐次比较式AD转换芯片。该芯片管脚如右图所示。芯片引脚及其说明如下:D0-D7(2-8-2-1):8位双先三态数据线。ADDA、ADDB、ADDC:通道选择地址。OUTPUTENABLE:输出允许控制。Clock:ADC转换时钟。Vref+、Vref-:正负参考电压。IN0-IN7:8个模拟信号输入通道。START:AD转换启动信号。EOC:AD转换结束信号。ALE:通道地址锁存信号。图1.AD0809引脚图ADC0809的工作时序如下图所示。其详细工作过程可查阅其他资料。本实验FPGA实现时必须严格遵守ADC0809的工作时序,在编写其驱动代码时尤其要注意。ADC0809的时钟信号从FPGA获取,FPGA的时钟在500KHz至800KHz都可以选择。现具体介绍代码编写思想:首先将要转换的ADC0809的地址输出,然后产生ALE信号的,在该信号的上升沿,地址被打入ADC0809的地址锁存器,这样就选中了对应的通道。地址产生结束后,便可产生START信号,使ADC0809开始进行AD转换,需要注意的是,在ADC0809转换期间,输入的模拟信号必须稳定,否则可能出现比较大的误差。在地址锁存并且启动转换后,EOC便会呈现低电平,知道AD转换结束,所以FPGA在EOC从低电平变成高电平之前,不能读取ADC的转换数据。在EOC变成高电平之后,FPGA便可将OUTPUTINPUT信号拉高,这样ADC转换的数据就会呈现在数据线上,FPGA读入该数据后,在8位七段码管上显示出来,这就是整个实验过程的工作流程。AD0809的工作时序如图2所示。实验内容及步骤图2.AD0809的工作时序本实验的内容就是用FPGA模拟产生ADC0809的时序,使其正常工作,对ADC0809输入一个模拟量,进行A/D转换,然后将读入后的数据进行显示,实验步骤如下:编写ADC0809时序的VHDL代码。对其进行编译仿真。在时序确定无误后,选择芯片ACEX1KEP1K10TC100-3。给芯片进行管脚绑定,在此进行编译。根据自己绑定的管脚,在实验箱上对ADC0809、显示七段码和FPGA之间进行正确连线。对选定的通道输入一个模拟量,给目标板下载代码,调节电位器改变输入的模拟量,观看实验结果。实验连线实验连线如下:Clk:时钟输入信号,500KHz至800KHz之间均可。EOC:输出信号,接ADC0809的EOC信号。Din:数据输入,接ADC0809的数据总线D0-D7;Start:输出信号,接ADC0809的START信号。Ale:地址锁存,接ADC0809的ALE信号。OE:输出允许,接ADC0809的OUTPUTENABLE信号。Sa、Sb、Sc:七段显示选通信号,接七段码显示SEL0、SEL1和SEL2。A、B、C、D、E、F、G:分别连接至七段码显示的a、b、c、d、e、f、g。ADC0809的地址选择信号A、B和C分别到三个拨挡开关。通过A、B、C选取输入通道CH0~CH7其中的相应通道输入一个可变模拟量。九.程序流程图:程序开始程序开始初始化ADST0初始化ADST0状态ST1ST1ST2ST2EOC0EOC1ST3ST3.ST4ST4其他LLock0上升沿十六进制显示数据输出到处理器十六进制显示数据输出到处理器程序代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;useieee.std_logic_arith.all;entitydisplayisport(D:instd_logic_vector(7downto0);--ADC0809输出的采样数据clk,eoc:instd_logic;--clk为系统时钟,eoc为ADC0809转换结束信号seg:outstd_logic_vector(1downto0);ADDA,start,ale,oe:outstd_logic;--ADC0809控制信号LOCK0:OUTSTD_LOGIC;Q:outstd_logic_vector(7downto0);--送至8diodeLED:outstd_logic_vector(6downto0));enddisplay;architecturebehavofdisplayistypestatesis(st0,st1,st2,st3,st4);--定义各状态的子类型signalcurrent_state,next_state:states;signalregl:std_logic_vector(7downto0);--中间数据寄存信号signallock:std_logic;--lockADoutputafterconvertedsignaldcount:std_logic_vector(1downto0);signaldata:integer;signaldata_h:integer;signaldata_l:integer;signalLED_0:std_logic_vector(6downto0);signalLED_1:std_logic_vector(6downto0);begin ADDA<='1';--enablechannel1 Q<=regl;lock0<=lock;com:process(current_state,eoc)--规定各种状态的转换方式begincasecurrent_stateiswhenst0=>next_state<=st1;ale<='0';start<='0';oe<='0';lock<='0';--0809initwhenst1=>next_state<=st2;ale<='1';start<='1';oe<='0';lock<='0';whenst2=>ale<='0';start<='0';oe<='0';lock<='0';if(eoc='1')thennext_state<=st3;--EOC=1convertaccomplished elsenext_state<=st2;--havn'taccomplish endif;--converthaven'tending,waitingfor... whenst3=>ale<='0';start<='0';lock<='0';oe<='1';next_state<=st4;--enableoe,outputconverteddata whenst4=>ale<='0';start<='0';lock<='1';oe<='1';next_state<=st0; whenothers=>next_state<=st0; endcase;endprocesscom;reg:process(clk) begin ifclk'eventandclk='1'thencurrent_state<=next_state;endif;--在clk1的上升沿,转换至下一状态endprocessreg; latch1:process(lock) begin iflock='1'andlock'eventthenregl<=D;endif; endprocesslatch1;process(clk,regl) begin ifclk'eventandclk='1'thendcount<=dcount+1;endif; data<=conv_integer(regl); data_h<=data/16; data_l<=datarem16; casedata_his when0=>LED_0<="0111111"; when1=>LED_0<="0000110"; when2=>LED_0<="1011011"; when3=>LED_0<="1001111"; when4=>LED_0<="1100110"; when5=>LED_0<="1101101"; when6=>LED_0<="1111101"; when7=>LED_0<="0000111"; when8=>LED_0<="1111111"; when9=>LED_0<="1101111"; when10=>LED_0<="1110111"; when11=>LED_0<="1111100"; when12=>LED_0<="0111001"; when13=>LED_0<="1011110"; when14=>LED_0<="1111001"; when15=>LED_0<="1110001"; whenothers=>null; endcase; casedata_lis when0=>LED_1<="0111111"; when1=>LED_1<="0000110"; when2=>LED_1<="1011011"; when3=>LED_1<="1001111"; when4=>LED_1<="1100110"; when5=>LED_1<="1101101"; when6=>LED_1<="1111101"; when7=>LED_1<="0000111"; when8=>LED_1<="1111111"; when9=>LED_1<="1101111"; when10=>LED_1<="1110111"; when11=>LED_1<="1111100"; when12=>LED_1<="0111001"; when13=>LED_1<="1011110"; when14=>LED_1<="1111001"; when15=>LED_1<="1110001"; whenothers=>null; endcase; seg<=dcount;--0001101100casedcountiswhen"00"=>LED<=LED_0;when"01"=>LED<=LED_1;whenothers=>LED<="0000000";endcase;endprocess;endbehav;Ad0809的仿真时序如图3图3.AD0809仿真时序Moore型状态机组成框图如图4所示。图4Moore型有限状态机组成框图
在仿真完成以后可以生成状态图如图5:图5.ADC0809状态图也可表示为图6所示的状态表:图6.ADC0809状态表十.心得体会通过这次有关于EDA技术的课程设计的学习与应用,我们基本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030中国支链淀粉行业产业运行态势及投资规划深度研究报告
- 2025至2030中国按摩器具行业产业运行态势及投资规划深度研究报告
- 2025至2030中国户外露台伞行业产业运行态势及投资规划深度研究报告
- 时尚造型大潮流冬季清新时髦妆容
- 河北省邢台市卓越联盟2024-2025学年高二下学期第三次考试(6月)物理试卷(含答案)
- 广东省东莞市2023-2024学年高二下学期7月期末生物试题(解析版)
- 精彩的羽毛球比赛450字9篇范文
- 苏幕遮碧云天教学教案唐诗鉴赏
- 儿童教育心理学专题阅读材料
- 一诺千金诚信做人15篇
- 梨园助手:全年病虫害防治历
- JBT 8473-2014 仪表阀组标准规范
- 【编制说明】电力电缆通道用防火隔板及槽盒技术规范
- 分布式光伏经济评价规范
- 振动力学期末试卷-06.07.08期末-上海交大
- MOOC 大学物理(上)-西北工业大学 中国大学慕课答案
- 伊朗钢结构包装专项方案
- 小升初数学知识点总结(小考复习精编专项讲义)六年级数学小升初复习系列:数与式知识点梳理大全
- E+H-压力变送器培训
- 统编版高中语文必修下册《跨媒介阅读与交流》标准课件
- 重庆市地质灾害专业监测预警技术要求(试行)
评论
0/150
提交评论