FPGA实现的AD采样控制程序的源码.doc

FPGA实现的AD采样控制程序的源码.doc

ID:57688001

大小:18.50 KB

页数:2页

时间:2020-09-01

FPGA实现的AD采样控制程序的源码.doc_第1页
FPGA实现的AD采样控制程序的源码.doc_第2页
资源描述:

《FPGA实现的AD采样控制程序的源码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、采用双进程有限状态机的方法来实现。设计st0~st7八个工作状态。st0:初始化。st1:产生ALE的上升沿将模拟通道IN1的地址锁存。st2:产生START信号上升沿,启动A/D转换。st3:START信号延时一个脉冲。st4:A/D转换中,等待。st5:转换结束,开启输出允许信号OE。st6:OE延时一个脉冲,并开启数据锁存信号LOCK。st7:延时一个时钟,输出数据。状态转换方式见下面程序段。casecurrent_stateis   whenst0=>ale<='0';start<='0';oe<='0';lock<='0'

2、;next_state<=st1;                  ---初始态ST0向下一状态ST1转换,0809采样控制信号初始化;   whenst1=>ale<='1';start<='0';oe<='0';lock<='0';next_state<=st2;                  ---由ALE的上升沿将通道地址'001'锁入0809的地址寄存器;   whenst2=>ale<='1';start<='1';oe<='0';lock<='0';next_state<=st3; ---启动采样信号;   wh

3、enst3=>ale<='0';start<='1';oe<='0';lock<='0';     if(eoc='0') then next_state<=st4;---转换即将结束,转换至下一状态;       elsenext_state<=st3;  ---转换未结束,继续在状态ST3中等待;     endif;   whenst4=>ale<='0';start<='0';oe<='0';lock<='0';     if(eoc='1') then next_state<=st5;---EOC由0恢复1,转换结束;  

4、     elsenext_state<=st4;---转换未结束,等待;     endif;   whenst5=>ale<='0';start<='0';oe<='1';lock<='0';next_state<=st6; --开启输出允许OE;   whenst6=>ale<='0';start<='0';oe<='1';lock<='1';next_state<=st7; --开启数据锁存LOCK;   whenst7=>ale<='0';start<='0';oe<='0';lock<='1';next_state<=s

5、t0;   whenothers=>next_state<=st0; ---其它状态返回ST0; endcase;---------------------------------------------------------------________________________________________A/D采样控制与数据转换的部分程序及仿真采用QuartusⅡ软件平台下的VHDL语言编程实现。libraryieee;useieee.std_logic_unsigned.all;useieee.std_logic_1

6、164.all;entityad_hgqis port(d:instd_logic_vector(7downto0);---AD输入;       clk,eoc:instd_logic;---eoc:转换结束状态信号;oe:bufferstd_logic;       addr:outstd_logic_vector(2downto0);---oe:输出允许,addr:选通地址;       ale,start:outstd_logic;---ale:允许地址锁存;       q:bufferstd_logic_vector(7

7、downto0));---转换数据输出显示;       endad_hgq;architecturebehaviourofad_hgqis typestateis(st0,st1,st2,st3,st4,st5,st6,st7);---以枚举类型定义各状态子类型; signalcurrent_state,next_state:state:=st0;  signalregl:std_logic_vector(7downto0); signaladdrx:std_logic_vector(2downto0):="000"; signa

8、llock:std_logic;          ---转换后数据输出锁存时钟信号; signalhex:std_logic_vector(7downto0);beginprocess(clk) begin   if(clk'eve

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。