文档详情

《电子设计自动化EDA》TIMER状态机设计.doc

发布:2017-11-15约字共8页下载文档
文本预览下载声明
设计举例:8位计时器Timer 计时器Timer的框图 ring reset (1)reset:异步清零信号,  clock 低电平有效,  start Timer 具有最高的优先级。 Reset = ‘0’使输出信号ring = ‘0’。 (2) data_in:数据输入。 (3)clock:同步时钟,正跳变触发。 (4)start:计时器启动信号。 (5)ring:控制铃响的输出信号,高电平有效。  data_in(7..0) ? ring =  1的持续期为8,超过此持续期后自动归 0。 计时器Timer的时序关系 reset = 0 进 入初始状态  接收数据  减计数  ring = 1 reset start start = 1 时,计时器  start = 0 时,计时器 接受来自 data_in 的数据 开始‘减’计数  ring =  1的持 续期为 8,超过 计时器的 值达到零 此持续期后自动 归 0。 Timer目标电路的分解 ring counter 输出值 reset clock start  ●  控制器 ●  st0 st1 st2 st3  减 1 计数器 counter data_in(0 .. 7) Timer的ASM图 st0 rin g ? 0 cou nter ? 00 00 00 00 否 start = 1? st1  是  初始状态  接收数据 co un ter ? d ata_in s t2  否  s tart = 1?  是 否 c o u n te r 减 1  co un ter = 1 ?  是 co u n te r? 0 0 0 0 1 0 0 0 st3 rin g ? 1  rin g = 1 持 续 期 减计数  是 cou nter 减 1 cou nter = 1?  否set set VHDL代码 LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; USE IEEE.std_logic_unsigned.ALL; ENTITY timer IS  -- 打开 IEEE 库 -- 打开 IEEE 库中的程序包 std_logic_1164 -- 打开此程序包后,可以对 std_logic_vector -- 类型的对象执行加 /减运算 -- ENTITY 用于定义端口 PORT ( data_in: IN std_logic_vector( 7 DOWNTO 0 ); -- 输入端口 reset, clock, start :  IN  std_logic;  -- 输入端口 END timer; …… ……  ring : OUT std_logic );  -- 输出端口 VHDL代码(续) ARCHITECTURE behav OF timer IS BEGIN PROCESS( reset, clock ) VARIABLE counter: std_logic_vector( 7 DOWNTO 0 ); VARIABLE state : integer RANGE 0 TO 3; BEGIN IF reset = 0 THEN ring = 0; state := 0; ELSIF clockevent AND clock = 1 THEN CASE state IS …… …… END CASE; END IF; 功能模拟波形图 Counter 计数 00 ring = 1 的 reset = 0 ,进 入初始状态。 clock 检测到 start = 1 ,进 入状态 1。  counter 接收来自 data_in 的数据  clock 检测到 start = 0 ,进 入状态 2。  进入状态 3 持续期为 8
显示全部
相似文档