基于VHDL的占空比50%的7分频电路设计
题目分析
七分频电路属于奇数分频较之偶数分频电路更难实现一点,由于知道奇数分频占空比不为50%的分频电路非常容易实现,于是希望能从此处入手获得奇数分频电路占空比为50%与非50%之间的关系,从而完成此类题目的设计。经分析知道两个占空比为3/7的七分频电路在初相位相差半个时钟周期的情况下进行或操作可获得题目要求的七分频电路。
占空比50%的分频电路与非50%的分频电路的真值关系如下表所示:
Clk
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
X1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
X2
1
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
Yo
1
0
0
0
0
0
0
0
1
1
1
1
1
1
1
0
可见从原理上满足要求。
用MAX+plusii编程开发实现上述功能。
运行 MAX+plusii 进入编程开发环境,选择新建文件如下图并将文件保存为实体名的VHD文件:
在程序文本编辑窗口编写程序,关键字以绿色字体呈现,编写程序如下:
LIBRARY IEEE;
USE ;
USE ;
T14 IS
PORT(CLK:IN STD_LOGIC;
K1,K2,Y:OUT STD_LOGIC);
END;
ARCHITECTURE bhf T14 IS
SIGNAL C1,C2:STD_LOGIC_VECTOR(2 DOWNTO 0);
SIGNAL M1,M2:STD_LOGIC;
BEGIN
PROCESS(CLK,C1)
BEGIN
IF RISING_EDGE(CLK) THEN
IF(C1="110") THEN C1<="000"; ELSE C1<=C1+1; END IF;
IF(C1="001") THEN M1<=NOT M1; ELSIF(C1="100") THEN M1<=NOT M1;
END IF; END IF;
END PROCESS;
PROCESS(CLK,C2) BEGIN
IF FALLING_EDGE(CLK) THEN
IF(C2="110") THEN C2<="000"; ELSE C2<=C2+1; END IF;
IF(C2="001") THEN M2<=NOT M2; ELSIF(C2="100") THEN M2<=NOT M2;
END IF; END IF;
END PROCESS;
K1<=M1; K2<=M2; Y<=M1 OR M2;
END bhf;
将当前设计设置成工程,选择set Project to current file,如下图所示:
执行菜单栏中Assign Device,弹出窗口设置如下:
调出编译器对程序进行编译,操作如下图所示:
在编译窗口执行如下图两项设置操作:
点击start执行程序编译,编译顺利执行
EDA七分频设计 来自淘豆网m.daumloan.com转载请标明出处.