http://group.ednchina.com/GROUP_MES_14596_3000001080_5000004966.HTM
把邹老师要求的数控分配器的总结,帖到了我们小组里面、、代码在那边编辑得很乱、、
这边试试,
-- 数控分频器 -mige 2012.07.24
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; -- IEEE 库 程序包
ENTITY NCFF IS
PORT ( CLK : IN STD_LOGIC ; -- 输入时钟
D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- D触发器
FOUT : OUT STD_LOGIC ) ; -- 输出频率
END ;
ARCHITECTURE ddd OF NCFF IS
SIGNAL FULL : STD_LOGIC; -- 溢出信号
BEGIN
P_REG: PROCESS (CLK) -- 第一个进程 敏感信号 CLK
VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); -- 计数变量
BEGIN
IF CLK'EVENT AND CLK = '1' THEN
IF CNT8 = "11111111" THEN -- 计数 计满
CNT8 := D; --将 D触发器的值预置给计数器
FULL <= '1' ; -- 并使溢出标志信号 输出高电平
ELSE CNT8 := CNT8 + 1 ; -- 没有计满 就继续加 1 计数
FULL <= '0' ; -- 溢出信号输出低电平
END IF ;
END IF ;
END PROCESS P_REG ;
P_DIV: PROCESS (FULL) --第二个进程 敏感信号 FULL 即计数溢出信号
-- 是与第一个进程联系的桥梁
VARIABLE CNT2 : STD_LOGIC ;
BEGIN
IF FULL'EVENT AND FULL = '1' THEN -- 如果溢出信号 跳变 为高电平
CNT2 := NOT CNT2 ; -- D触发器输出取反
IF CNT2 = '1' THEN FOUT <= '1' ;
ELSE FOUT <= '0' ;
END IF ;
END IF ;
END PROCESS P_DIV;
END ;
用户1707737 2012-7-30 23:16
用户424228 2012-7-29 18:38