版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录一、概述11.1 A/D转换的基本概念11.2有限状态机的基本概念2二、设计方案22.1具有FIFO的A/D控制设计方法22.2 用状态机来控制A/ D采样32.3 利用LPM函数来生成FIFO52.4 2选1控制电路的设计62.5 顶层模块及元件例化的调用7三、结果与分析73.1 ADC0809的仿真波形分析73.2 2选1仿真波形的分析83.3 FIFO仿真波形的分析9四、结论与心得9五、附录10附录一 ADC0809采样控制程序10附录二 2选1控制选择器11附录三 顶层模块11附录四 总的实验程序13一、概述1.1 A/D转换的基本概念 随着数字技术飞速发展与普及,在现代控制、通信
2、及检测等领域,为了提高系统的性能指标,对信号的处理广泛采用了数字技术。由于系统的实际对象往往都是一些模拟量(如温度、压力、位移、图像等),要使系统能识别和处理这些信号,必须将这些模拟信号转换成数字信号;这样,就需要一种能在模拟信号与数字信号之间起桥梁作用的电路-A/D转换器。将模拟信号转换成数字信号的电路,称为模数转换器(简称A/D转换器);A/D转换器已成为信息系统中不可缺少的接口电路。 为确保系统处理结果的精确度,A/D转换器必须具有足够的转换精度;如果要实现快速变化信号的实时控制与检测,A/D转换器还要求具有较高的转换速度。转换精度与转换速度是衡量A/D转换器的重要技术指标。此次课程设计
3、则是利用ADC0809来进行A/D转换,并将转换好的数据锁存到FIFO中,通过外部按键控制FIFO写入和读出数据。1.2有限状态机的基本概念有限状态机又称有限状态自动机或简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机分成两大类:Melay型和Moore型状态机;Melay型状态机的输出是当前状态和所有输入信号的函数。其输出是输入变化后立即发生变化。Moore型的输出仅是当前状态的函数。其在输入发生变化后,还需等待时钟的到来,只有时钟使状态发生变化才导致输出变化。因此要多等待一个时钟周期。在运用状态机时,首先要自定义数据类型,然后再通过说明部分、主控时序进程、
4、主控组合进程以及辅助进程来实现所需实现的功能。说明部分中有新数据类型TYPE的定义及其状态类型以及在此新类型下定义的状态变量。状态变量应该定义为信号,便于信息传递。而主控时序进程则是一个对工作时钟信号敏感的进程,该进程作为状态机的“驱动泵”,当时钟发生有效跳变时,状态机状态才发生变化。主控组合进程的任务是根据控制信号或(和)当前状态的状态值确定下一状态next_state的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。辅助进程则是用于对其他电路功能的控制及实现。二、设计方案2.1具有FIFO的A/D控制设计方法本课程的设计要求:1、 用F
5、PGA对ADC0809进行控制使之完成对输入信号的采样,控制电路应该输出启动信号,通道选择地址信号的锁存信号,检测ADC0809的转换情况状态信号EOC,输出使能信号OE,读入转换结果,存入FIFO中。 2、 FIFO中的数据可以在外界信号的控制下读出,结果在LED数码管中显示 3、 ADC0809和LED数码管由GW48PK2系统提供。 4、 FIFO可以利用LPM函数实现。 要将ADC0809转换好的转换好的数字信号锁存入FIFO中,因此电路中必然包括FIFO存储器。同时,还要通过一个2选1的选择器,来选择FIFO的写使能端Wrreq以及读使能端Rdreq的时钟脉冲,并通过外部按键的控制信
6、号来控制FIFO中的数据写入及读出,通过数码管显示出转换好的数据。基于这一思路,设计出的电路图如图一所示图一2.2 用状态机来控制A/ D采样 ADC0809为单极性输入、8位转换精度、逐级逼进式A/D转换器,其采样速度为每次转换约100us,它的各引脚功能和工作时序如图二所示图二有8个模拟信号输入通道,IN0IN7;由ADDA、ADDB、ADDC作为此8路通道的选择地址,在转换开始前由地址锁存允许信号ALE将此3位地址锁入锁存器中,以确定转换信号通道;EOC为转换结束状态信号,由低电平转为高电平时指示转换结束,此时可读入转换好的8位数据。EOC在低电平时,指示正在进行转换:START为转换启
7、动信号,上升沿启动;OE为数据输出允许,高电平有效;CLK为ADC转换时钟输入端口,为了达到A/D器件的最高转换速度,A/D转换控制器必须包含监视EOC信号的逻辑,一旦EOC从低电平变为高电平,即可将OE置为高电平,然后传送已经转换好的数据到FIFO中。用Moore型有限状态机控制ADC0809采样的状态图如图三所示图三由状态图可知:sto为对0809的初始化;当start为1时开始进行A/D转换,进入st1状态;在st2中对EOC信号进行检测,若为EOC为0,则继续转换,若为1表示转换结束,转入st3。此时OE为1,则转入st4,并在lock为高电平时将转换好的数据锁存入FIFO中;根据状态
8、图可得到采样状态机的结构框图,如图四所示图四由状态图及结构框图可以用Vhdl编写程序对ADC0809进行控制,编写的程序如附录一所示;2.3 利用LPM函数来生成FIFO LPM是参数可设置模块库的英语缩写(Library of Parameterized Modules)。库中模块可以用图形或硬件描述语言的形式调用。设计者根据实际电路需要,选择LPM库中,合适模块,适当设定参数,就可以十分方便的使用优秀电子工程技术人员的设计成果。使设计的可靠性和效率有很大提高。 FIFO可以利用LPM函数来定制生成,其定制过程如下所示: 在FIFO的定制过程中,还可以定义FIFO中存放8位字节数的个数。2.
9、4 2选1控制电路的设计可以通过2选1控制电路对生成的FIFO进行控制,通过外加的信号来控制FIFO的读和写。2选1的电路图如图五所示图五其中a为输出锁存信号lock0的输入端,b为FIFO的读时钟信号Rdclock输入端,可用key4来改变其输入数据;S为2选1的控制端,可用key5来改变其输入信号,当S为低电平时,y输出a,即lock0(lock0为FIFO的写时钟信号)。当S为高电平时,输出b,即Rdclock。用Vhdl编写的2选1控制电路的实验程序如附录二所示;2.5 顶层模块及元件例化的调用元件例化就是将以前设计的实体作为当前设计的一个元件,然后用Vhdl语句将元件与当前设计之间的
10、连接关系通过顶层模块描述出来。元件例化元件由两部分组成:1.元件定义,即将已有的设计定义为当前设计的元件;2.元件与当前设计的连接关系映射语句;-元件定义语句:component 元件名 is generic(类属表); port(端口名表); end component 文件名;-元件例化语句例化名:元件名 port map(端口名=连接端口名,);因此,在顶层模块的编写时,可以应用这种格式来调用各例化的元件,通过顶层模块将各元件组合起来,构成实验所需的电路图。顶层模块的编写如附录三所示。三、结果与分析3.1 ADC0809的仿真波形分析 ADC0809的采样状态机工作时序如图六所示图六由时
11、序图可知:当START由低电平变为高电平时开始进行转换,EOC为1时表示转换结束,此时OE也由低电平变为高电平,此时允许输出转换好的数据。当Lock0变为高电平,将转换好的数据锁存入FIFO中。此过程结束后,又开始新一轮的转换过程。3.2 2选1仿真波形的分析2选1控制选择器的仿真波形如图七所示图七当控制端S为低电平时输出a,即lock0信号,此信号用于FIFO的clock端,即在lock0由低电平转变为高电平时,将转换好的数据锁存入FIFO中,此时要求FIFO的写使能端有效,即为高电平。当控制端S为高电平时输出b,即Rdclock,此信号也是用于FIFO的clock端,即在Rdclock发生
12、跳变时,读出FIFO中存放的数据,显示在数码管上,此时也要求FIFO的读使能端有效。3.3 FIFO仿真波形的分析FIFO存储器的仿真波形如图八所示图八由图可知,aclr必须保持低电平,才可以对FIFO进行读写,否则FIFO里的数据恒为0。当wrreq为高电平,写使能端有效,即在clock的时钟上升沿时允许数据写入FIFO中。wrreq为低电平,数据不能写入FIFO。当rdreq为高电平时,读使能端有效,即在clock的时钟上升沿时允许数据从FIFO中读出。而rdreq为低电平时,数据不能从FIFO中读出。四、结论与心得五、附录附录一 ADC0809采样控制程序library ieee;use
13、 ieee.std_logic_1164.all;entity adc isport( d:in std_logic_vector(7 downto 0); -0809的数据输入 clk:in std_logic; -clk为采样控制时钟信号 eoc:in std_logic; -eoc为ADC0809转换状态信号 ale:out std_logic; -ale为通道选择地址锁存信号 start:out std_logic; -start为转换启动信号 oe:out std_logic; -oe为输出使能信号 adda:out std_logic; -adda为通道选择低位地址 lock0:o
14、ut std_logic; -观察数据锁存时钟 qq :out std_logic_vector(7 downto 0);-变换数据显示输出end entity adc;architecture behav of adc istype states is(s0,s1,s2,s3,s4);-定义各状态 signal current_state,next_state:states:=s0; signal real :std_logic_vector(7 downto 0); -中间数据信号 signal lock :std_logic;-转换后的数据输出锁存时钟信号begin adda=0; -当
15、adda=0,模拟信号进入IN0,当adda=1,则进入IN1lock0=lock;qqale=0;start=0;oe=0;lock=0;next_stateale=1;start=1;oe=0;lock=0;next_stateale=0;start=0;oe=0;lock=0; if(eoc=1) then next_state=s3; -eoc=1表明转换结束 else next_stateale=0;start=0;oe=1;lock=0;next_stateale=0;start=0;oe=1;lock=1;next_statenext_state=s0; end case;end
16、 process com;reg:process(clk) -时序进程begin if(clkevent and clk=1)then current_state=next_state;-在时钟上升沿转换至下一个状态 end if;end process reg;-由时钟信号current_state将当前状态值带出此进程latch:process(lock) -此进程中,在lock的上升沿,将转换好的数据锁入begin if lock=1and lockevent then real=d; end if;end process latch;end behav;附录二 2选1控制选择器libr
17、ary ieee;use ieee.std_logic_1164.all;entity er is port(a,b,s:in std_logic; y:out std_logic);end entity er;architecture rtl of er is signal d,e:std_logic;begin d=a and(not s);e=b and(s);y=d or e;end architecture rtl;附录三 顶层模块library ieee;use ieee.std_logic_1164.all;entity adcontrol is port(key1:in std
18、_logic; -key1用于fifo的异步清零aclr key2:in std_logic; -key2用于控制fifo的rdreq key3:in std_logic; -key3用于控制fifo的wrreq key4:in std_logic; -key4在fifo进行读时给我一个手动的脉冲 key5:in std_logic; -key5为二选一的s端口 ma:out std_logic; -ma用于显示fifo的full的状态 mb:out std_logic; -mb用于显示fifo的empty的状态 c:in std_logic; -c对应0809的clk信号 e:in std_
19、logic; -e对应0809的eoc信号 f:out std_logic; -f对应0809的ale信号 g:out std_logic; -g对应0809的start信号 h:out std_logic; -h对应0809的oe信号 j:out std_logic; -j对应0809的adda信号 ee:out std_logic; -ee对应lock0信号 dd:in std_logic_vector(7 downto 0);-dd对应0809的数据输入 qqq:out std_logic_vector(7 downto 0);-用于fifo的输出数据显示 end entity adco
20、ntrol;architecture rtl of adcontrol iscomponent adc_fifo port(aclr: in std_logic ; clock : in std_logic ; data: in std_logic_vector (7 downto 0); rdreq: in std_logic ; wrreq: in std_logic ; empty : out std_logic; full : out std_logic; q: out std_logic_vector (7 downto 0);end component;component er p
21、ort(a,b,s:in std_logic; y:out std_logic);end component;component adc port(d :in std_logic_vector(7 downto 0); clk :in std_logic; eoc :in std_logic; ale :out std_logic; start :out std_logic; oe :out std_logic; adda :out std_logic; lock0 :out std_logic; qq :out std_logic_vector(7 downto 0);end compone
22、nt;signal kk:std_logic_vector(7 downto 0);signal lock1:std_logic;signal lock2:std_logic;begineelock1,b=key4,s=key5,y=lock2);u2:adc_fifo port map(aclr=key1,rdreq=key2,wrreq=key3,full=ma,empty=mb,q=qqq,data=kk,clock=lock2);u3: adc port map(clk=c,eoc=e,ale=f,start=g,oe=h,adda=j,lock0=lock1,qq=kk,d=dd);
23、end rtl;附录四 总的实验程序library ieee;use ieee.std_logic_1164.all;entity adcontrol is port(key1:in std_logic; key2:in std_logic; key3:in std_logic; key4:in std_logic; key5:in std_logic; ma:out std_logic; mb:out std_logic; c:in std_logic; e:in std_logic;f:out std_logic; g:out std_logic; h:out std_logic; j:o
24、ut std_logic; ee:out std_logic; dd:in std_logic_vector(7 downto 0); qqq:out std_logic_vector(7 downto 0);end entity adcontrol;architecture rtl of adcontrol iscomponent adc_fifo port(aclr: in std_logic ; clock : in std_logic ; data: in std_logic_vector (7 downto 0); rdreq: in std_logic ; wrreq: in st
25、d_logic ; empty : out std_logic; full : out std_logic; q: out std_logic_vector (7 downto 0);end component;component er port(a,b,s:in std_logic; y:out std_logic);end component;component adc port(d :in std_logic_vector(7 downto 0); clk :in std_logic; eoc:in std_logic; ale :out std_logic; start:out std
26、_logic; oe :out std_logic; adda :out std_logic; lock0 :out std_logic; qq :out std_logic_vector(7 downto 0);end component;signal kk:std_logic_vector(7 downto 0);signal lock1:std_logic;signal lock2:std_logic;begineelock1,b=key4,s=key5,y=lock2);u2:adc_fifo port map(aclr=key1,rdreq=key2,wrreq=key3,full=
27、ma,empty=mb,q=qqq,data=kk,clock=lock2);u3: adc port map(clk=c,eoc=e,ale=f,start=g,oe=h,adda=j,lock0=lock1,qq=kk,d=dd);end rtl;library ieee;use ieee.std_logic_1164.all;entity adc isport( d:in std_logic_vector(7 downto 0);clk:in std_logic; eoc:in std_logic; ale:out std_logic; start:out std_logic; oe:o
28、ut std_logic; adda:out std_logic; lock0:out std_logic; qq :out std_logic_vector(7 downto 0);end entity adc;architecture behav of adc istype states is(s0,s1,s2,s3,s4);-定义各状态 signal current_state,next_state:states:=s0; signal real :std_logic_vector(7 downto 0); -中间数据寄存信号 signal lock :std_logic;-转换后的数据
29、输出锁存时钟信号begin adda=0; -当adda=0,模拟信号进入IN0,当adda=1,则进入IN1lock0=lock;qqale=0;start=0;oe=0;lock=0;next_stateale=1;start=1;oe=0;lock=0;next_stateale=0;start=0;oe=0;lock=0; if(eoc=1) then next_state=s3; -eoc=1表明转换结束 else next_stateale=0;start=0;oe=1;lock=0;next_stateale=0;start=0;oe=1;lock=1;next_statenex
30、t_state=s0; end case;end process com;reg:process(clk) -时序进程begin if(clkevent and clk=1)then current_state=next_state;-在时钟上升沿转换至下一个状态 end if;end process reg;-由时钟信号current_state将当前状态值带出此进程latch:process(lock) -此进程中,在lock的上升沿,将转换好的数据锁入begin if lock=1and lockevent then real=d; end if;end process latch;en
31、d behav;library ieee;use ieee.std_logic_1164.all;entity er is port(a,b,s:in std_logic; y:out std_logic);end entity er;architecture rtl of er is signal d,e:std_logic;begin d=a and(not s);e=b and(s);y=d or e;end architecture rtl;LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY adc_fifo IS PORT( aclr: IN STD_LOGIC ; clock: IN STD_LOGIC ; data: IN STD_LOGIC_VECTOR (7 DOWNTO 0);rdreq: IN STD_LOGIC ; wrreq: IN STD_LOGIC ;empty: OUT STD_LOGIC; full: O
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 快递员岗位应聘面试全解析
- 区域文旅数字品牌打造与传播运营方案
- 护理中的心理支持-1
- 客户诉求渠道建设与优化方案
- 护理诊断中的风险因素识别
- 家政行业就业指导
- 信息共享2026年法律行业信息交换合同
- 客户服务经理面试技巧详解
- 零售业人力资源经理面试攻略
- 客户信息管理系统的建设与实施
- 2026年演出经纪人考试题库含答案(考试直接用)
- 清廉社区制度规范
- 2026华泰证券招聘面试题及答案
- 农村宅基地执法培训课件
- 建筑工程项目管理全过程指导手册
- 骨质疏松治疗仪相关课件
- JJG1036-2022天平检定规程
- 河北高职单招第二大类历年真题及答案
- 超级单品成就超级品牌报告鸭鸭羽绒服解数咨询
- 2025年腹部外伤试题及答案
- 污水池清理专项安全施工技术方案
评论
0/150
提交评论