1
实验
6
数控分频器的设计
(1)
实验目的
:
学习数控分频器的设计、分析和测试方法。
(2)
实验原理
:
数控分频器的功能就是当在输入端给定不同输入数据时,
将对输入的时钟信号有不同的
分频比,
数控分频器就是用
数值可并行预置的加法计数器
设计完成的,
方法是将计数溢出位
与预置数加载输入信号相接即可,详细设计程序如例
6-20
所示。
【例
6-20
】
8
位数控分频器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY DVF IS
PORT(CLK : IN STD_LOGIC;
D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
FOUT : OUT STD_LOGIC);
END ENTITY DVF;
ARCHITECTURE one OF DVF IS
SIGNAL FULL : STD_LOGIC;
BEGIN
P_REG: PROCESS(CLK)
VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
IF CLK'EVENT AND CLK = '1' THEN
IF CNT8 = "11111111" THEN
CNT8 := D; --
当
CNT8
计数计满时,输入数据
D
被同步预置给计数器
CNT8
FULL <= '1'; --
同时使溢出标志信号
FULL
输出为高电平
ELSE CNT8 := CNT8 + 1; --
否则继续作加
1
计数
FULL <= '0'; --
且输出溢出标志信号
FULL
为低电平
END IF;
END IF;
END PROCESS P_REG ;
P_DIV: PROCESS(FULL)
VARIABLE CNT2 : STD_LOGIC;
BEGIN
IF FULL'EVENT AND FULL = '1' THEN
CNT2 := NOT CNT2;--
如果溢出标志信号
FULL
为高电平,
D
触发器输出取反
IF CNT2 = '1' THEN FOUT <= '1';
ELSE FOUT <= '0';
END IF;
END IF;
END PROCESS P_DIV;