北 华 航 天 工 业 学 院 《EDA技术综合设计》
课程设计报告
报告题目: 16X16点阵显示综合实验
作者所在系部: 电子工程系 作者所在专业:
数控分频器的设计
1、实验目的:
学习数控分频器的设计、分析和测试方法。
2、 实验原理:
数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例下文所示。
1) VHDL及语句分析
LIBRARY IEEE;
USE IEEE.STD_LOGIC_11.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY DVF IS --定义实体DVF
PORT ( CLK : IN STD_LOGIC; --时钟输入
D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); --7位预置数
FOUT : OUT STD_LOGIC ); --输出的频率
END DVF;
ARCHITECTURE one OF DVF IS --定义结构体one
SIGNAL FULL : STD_LOGIC; --定义信号full
BEGIN
P_REG: PROCESS(CLK) --进程P_REG中CNT8从预置数D开始逐步累加到255后,FULL置1;再将CNT8置为D,循环以获得一个新的周期脉冲序列FULL,即产生新的频率
VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
IF CLK'EVENT AND CLK = '1' THEN
IF CNT8 = \"11111111\" THEN
CNT8 := D;
FULL<='1';
ELSE CNT8 := CNT8 + 1;
FULL <= '0';
END IF;
END IF;
END PROCESS P_REG ;
P_DIV: PROCESS(FULL) --进程P_DIV中,FOUT是占空比为50%的周期信号。FULL上升沿时CNT2取反,形成0/1交替的序列。而FOUT随CNT2变化。
VARIABLE CNT2 : STD_LOGIC;
BEGIN
IF FULL'EVENT AND FULL = '1' THEN
CNT2 := NOT CNT2;
IF CNT2 = '1' THEN FOUT <= '1'; ELSE FOUT <= '0';
END IF;
END IF;
END PROCESS P_DIV ;
END;
2) 进程P_REG的功能
进程P_REG中CNT8从预置数D开始逐步累加到255后,FULL置1;再将CNT8置为D,循环以获得一个新的周期序列FULL,即用预置数D产生新频率的序列,达到分频的效果。如下图所示,当CNT8累加到255后,标记位FULL置1。因此,FULL与CLK的频率关系为:
FULL=CLK/(256-D)
注:当D=255时,FULL始终为1,FULL的频率为0。
下面是不同的D与FULL之间的关系。
3) 进程P_DIV的功能
进程P_DIV中,FOUT是占空比为50%的周期信号。FULL上升沿时CNT2取反,形成0/1交替的序列。而FOUT随CNT2变化。因此,FULL与FOUT的频率关系为:
FOUT=FULL/2
注:当D=255时,FULL始终为1,FULL的频率为0,所以FOUT的频率也为0。
4) CLK、FULL和FOUT之间的分频关系
FULL与CLK的频率关系为:FULL=CLK/(256-D)
FULL与FOUT的频率关系为:FOUT=FULL/2
因此,FOUT与CLK的频率关系为:FOUT=CLK/2(256-D)
3、实验结果
以下是电路的时序仿真图
以下是RTL电路图