• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的状态机设计ADC0809采样控制电路VHDL代码Quartus仿真

07/30 08:24
607
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240520222120455.doc

共1个文件

名称:基于FPGA状态机设计ADC0809采样控制电路VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。

此地址经译码选通8路模拟输入之一到比较器

START上升沿将逐次逼近寄存器复位。

下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。

直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。

当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

状态图

5. 仿真图

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
--?首先输入3位地址,并使ALE=1,
--?将地址存入地址锁存器中。
--?此地址经译码选通8路模拟输入之一到比较器。
--?START上升沿将逐次逼近寄存器复位。
--?下降沿启动?A/D转换,之后EOC输出信号变低,指示转换正在进行。
--?直到A/D转换完成,EOC变为高电平,指示A/D转换结束,
--?结果数据已存入锁存器,这个信号可用作中断申请。
--?当OE输入高电平?时,输出三态门打开,转换结果的数字量输出到数据总线上。
ENTITY?ADC0809?IS
???PORT?(
??????clk??????:?IN?STD_LOGIC;--时钟
??????reset????:?IN?STD_LOGIC;--复位
??????ADDA?????:?OUT?STD_LOGIC;--地址
??????ADDB?????:?OUT?STD_LOGIC;--地址
??????ADDC?????:?OUT?STD_LOGIC;--地址
??????ALE??????:?OUT?STD_LOGIC;--ALE
??????START????:?OUT?STD_LOGIC;--START
??????OE???????:?OUT?STD_LOGIC;--OE
??????EOC??????:?IN?STD_LOGIC;--EOC
??????DB???????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0)--AD量化值
???);
END?ADC0809;
ARCHITECTURE?behave?OF?ADC0809?IS
type?state_type?IS?(s_idle,s_start,s_ADDR,s_ALE,s_wait,s_OE,s_DATA,s_END);--状态
signal?state:state_type;
???SIGNAL?DATA??:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
BEGIN
???--定义状态
???PROCESS?(clk,?reset)
???BEGIN
??????IF?(reset?=?'1')?THEN
?????????state?<=?s_idle;--复位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????CASE?state?IS
????????????WHEN?s_idle?=>
???????????????state?<=?s_ADDR;--输入地址
????????????WHEN?s_ADDR?=>
???????????????state?<=?s_ALE;--锁存地址
????????????WHEN?s_ALE?=>
???????????????state?<=?s_start;--开始转换
????????????WHEN?s_start?=>
???????????????IF?(EOC?=?'0')?THEN
??????????????????state?<=?s_wait;--等待
???????????????ELSE
??????????????????state?<=?s_start;
???????????????END?IF;
????????????WHEN?s_wait?=>--等待转换完成
???????????????IF?(EOC?=?'1')?THEN--转换完成
??????????????????state?<=?s_OE;
???????????????END?IF;
????????????WHEN?s_OE?=>--使能三态门
???????????????state?<=?s_DATA;
????????????WHEN?s_DATA?=>--读取AD值
???????????????state?<=?s_END;
????????????WHEN?s_END?=>--结束
???????????????state?<=?s_idle;
????????????WHEN?OTHERS?=>
?????????END?CASE;
??????END?IF;
???END?PROCESS;
???
???--输入地址
???PROCESS?(clk,?reset)
???BEGIN
??????IF?(reset?=?'1')?THEN
?????????ADDA?<=?'0';
?????????ADDB?<=?'0';
?????????ADDC?<=?'0';
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(state?=?s_ADDR)?THEN--输入地址状态,选择通道1
????????????ADDA?<=?'0';
????????????ADDB?<=?'0';
????????????ADDC?<=?'1';
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???--
???PROCESS?(clk,?reset)
???BEGIN
??????IF?(reset?=?'1')?THEN
?????????ALE?<=?'0';--复位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(state?=?s_ALE)?THEN--锁存地址
????????????ALE?<=?'1';----锁存地址
?????????ELSE
????????????ALE?<=?'0';
?????????END?IF;
??????END?IF;
???END?PROCESS;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=773

  • 2-240520222120455.doc
    下载

相关推荐