EDA技术基于VHDL的占空比50%的7分频电路设计一、题目分析1.七分频电路属于奇数分频较之偶数分频电路更难实现一点,由于知道奇数分频占空比不为50%的分频电路非常容易实现,于是希望能从此处入手获得奇数分频电路占空比为50%与非50%之间的关系,从而完成此类题目的设计。经分析知道两个占空比为3/7的七分频电路在初相位相差半个时钟周期的情况下进行或操作可获得题目要求的七分频电路。2.占空比50%的分频电路与非50%的分频电路的真值关系如下表所示:Clk1010101010101010X10000000011111100X21000000001111110Yo1000000011111110可见从原理上满足要求。二、用MAX+plusii编程开发实现上述功能。1、运行MAX+plusii进入编程开发环境,选择新建文件如下图并将文件保存为实体名的VHD文件:2、在程序文本编辑窗口编写程序,关键字以绿色字体呈现,编写程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT14ISPORT(CLK:INSTD_LOGIC;K1,K2,Y:OUTSTD_LOGIC);END;ARCHITECTUREbhfOFCNT14ISEDA技术SIGNALC1,C2:STD_LOGIC_VECTOR(2DOWNTO0);SIGNALM1,M2:STD_LOGIC;BEGINPROCESS(CLK,C1)BEGINIFRISING_EDGE(CLK)THENIF(C1=110)THENC1=000;ELSEC1=C1+1;ENDIF;IF(C1=001)THENM1=NOTM1;ELSIF(C1=100)THENM1=NOTM1;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,C2)BEGINIFFALLING_EDGE(CLK)THENIF(C2=110)THENC2=000;ELSEC2=C2+1;ENDIF;IF(C2=001)THENM2=NOTM2;ELSIF(C2=100)THENM2=NOTM2;ENDIF;ENDIF;ENDPROCESS;K1=M1;K2=M2;Y=M1ORM2;ENDbhf;3、将当前设计设置成工程,选择setProjecttocurrentfile,如下图所示:4、执行菜单栏中AssignDevice,弹出窗口设置如下:EDA技术5、调出编译器对程序进行编译,操作如下图所示:6、在编译窗口执行如下图两项设置操作:7、点击start执行程序编译,编译顺利执行,证明程序没有语法错误,结果如下图:EDA技术8、通过如下操作新建波形文件并保存文件:9、从SNF文件中输入设计文件的信号节点如下图所示:10、选中时钟信号该行呈黑色,并进行参数设置如下图:EDA技术11、点击菜单栏中MAX+plusii下拉菜单,选择simulator弹出仿真控制窗口,单击start进行波形仿真:12、获得仿真波形如下图所示,可见波形除了在时间上有延时外符合分析要求:三、程序分析。LIBRARYIEEE;--表示打开工作库IEEE库USEIEEE.STD_LOGIC_1164.ALL;--允许使用IEEE库中STD_LOGIC_1164程序包中的所有内容USEIEEE.STD_LOGIC_UNSIGNED.ALL;--允许使用IEEE库中STD_LOGIC_UNSIGNED程序包中的所有内容ENTITYCNT14IS-定义-CNT14为实体名PORT(CLK:INSTD_LOGIC;K1,K2,Y:OUTSTD_LOGIC);--定义CLK为输入端口的时钟信号,K1,K2,Y为输出端口信号,均为标准逻辑位数据类型EDA技术END;ARCHITECTUREbhfOFCNT14IS--定义bhf为结构体名SIGNALC1,C2:STD_LOGIC_VECTOR(2DOWNTO0);--表示在描述的器件CNT14内部定义标识符C1和C2的数据对象为信号SIGNAL,其数据类型为STD_LOGIC_VECTOR,其位宽为3SIGNALM1,M2:STD_LOGIC;--表示在描述的器件CNT14内部定义标识符M1和M2的数据对象为信号SIGNALBEGINPROCESS(CLK,C1)--敏感信号为CLK和C1BEGINIFRISING_EDGE(CLK)THENIF(C1=110)THENC1=000;ELSEC1=C1+1;ENDIF;IF(C1=001)THENM1=NOTM1;ELSIF(C1=100)THENM1=NOTM1;ENDIF;ENDIF;ENDPROCESS;--以第一个上升沿开始产生占空比为3/7的方波信号;PROCESS(CLK,C2)BEGINIFFALLING_EDGE(CLK)THENIF(C2=110)THENC2=000;ELSEC2=C2+1;ENDIF;IF(C2=001)THENM2=NOTM2;ELSIF(C2=100)THENM2=NOTM2;ENDIF;ENDIF;ENDPROCESS;--以第一个下降沿开始产生占空比为3/7的方波信号;K1=M1;K2=M2;Y=M1ORM2;--将两个产生的信号进行或操作获得占空比50%的七分频波形;ENDbhf;