《EDA技术实用教程(第五版)》习题答案(第1~10章)--潘

内容发布更新时间 : 2025/6/18 16:12:50星期一 下面是文章的全部内容请认真阅读。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY ADC0809 IS

PORT(D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --来自0809转换好的8位数据 CLK: IN STD_LOGIC; --状态机工作时钟 RST: IN STD_LOGIC; --系统复位控制

EOC: IN STD_LOGIC; --转换状态指示,低电平表示正在转换 ALE:OUT STD_LOGIC; --8个模拟信号通道地址锁存信号 START:OUT STD_LOGIC; --转换开始信号

OE:OUT STD_LOGIC; --数据输出三态控制信号 ADDA:OUT STD_LOGIC; --信号通道最低位控制信号 --LOCK_T:OUT STD_LOGIC; --观察数据锁存时钟

Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --8位数据输出 END ADC0809;

ARCHITECTURE behav OF ADC0809 IS

TYPE states IS(s0,s1,s2,s3,s4); --定义各状态子类型 SIGNAL cs,next_state: states:=s0;

SIGNAL REGL: STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL LOCK: STD_LOGIC;--转换后数据输出锁存时钟信号

attribute keep : boolean;

attribute keep of LOCK : signal is true; BEGIN

ADDA<='0';--当ADDA<='0',选择模拟信号通道IN0;当ADDA<='1',则选择通道IN1 --LOCK_T<=LOCK;

COM: PROCESS(cs,EOC) BEGIN --规定各状态转换方式 CASE cs IS

WHEN s0=> ALE<='0';START<='0';OE<='0';LOCK<='0';next_state<=s1; --0809初始化 WHEN s1=> ALE<='1';START<='1';OE<='0';LOCK<='0';next_state<=s2 ;--启动采样 WHEN s2=> ALE<='0';START<='0';OE<='0';LOCK<='0';

IF(EOC='1') THEN next_state<=s3; --EOC=1表明转换结束 ELSE next_state<=s2; END IF; --转换未结束,继续等待

WHEN s3=> ALE<='0';START<='0';OE<='1';LOCK<='0';next_state<=s4;--开启OE,输出转换好的数据

WHEN s4=> ALE<='0';START<='0';OE<='1';LOCK

>>鐏炴洖绱戦崗銊︽瀮<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi