1、洛阳理工学院实验报告 系部 计算机与信息工程系 班级 学号 姓名 课程名称 PLD原理与应用 实验日期 2012.11.12 实验名称 实验四 分频器的VHDL设计 成绩 实验目的: 1、练习应用QUARTUSⅡ开发环境 2、练习文件的建立,改编,编程,调试,修改,仿真。 3、学会设计奇数、偶数、半整数分频器。 实验条件: 装有QUARTUSⅡ软件的电脑 实验内容与步骤: 一、 实验内容: 练习占空比为50%的任意奇数次分频半整数分频偶数次分频。 二、 实验步骤: 1:建立工作文件夹和编译设计文件。 (1) 新建一个文件夹。首先利
2、用Windows资源管理器,在EDA默认的工作库(work)中新建一个文件夹命名CNT10。 (2) 输入源程序。打开QUARTUSⅡ,选择File-New命令。在新建窗口中的Design File栏选择编译文件的语言类型即VHDL File选项。然后再VHDL文本编译 奇数次分频: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK : IN STD_LOGIC;K_OR,K1,K2: OUT STD_LOGIC); EN
3、D; ARCHITECTURE BHV OF CNT10 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
4、 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;K_OR<=M1 OR M2; END BHV; 半整数次分频: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.
5、ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT25 IS PORT(CLK:IN STD_LOGIC; K1:OUT STD_LOGIC); END; ARCHITECTURE BHV OF CNT25 IS SIGNAL C1,C2:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(CLK,C1) BEGIN IF RISING_EDGE(CLK) THEN IF(C1="100") THEN C1<="000"; ELSE C1<=C1+1; END IF; EN
6、D IF; END PROCESS; PROCESS(CLK,C2) BEGIN IF FALLING_EDGE(CLK) THEN IF(C2="100") THEN C2<="000"; ELSE C2<=C2+1; END IF;END IF; END PROCESS; K1<="1" WHEN C1="000" OR C2="010" ELSE "0"; END BHV; 偶数次分频: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT4
7、IS PORT(CLK:IN STD_LOGIC; K1:OUT STD_LOGIC); END; ARCHITECTURE BHV OF CNT4 IS SIGNAL C1:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL M1:STD_LOGIC; BEGIN PROCESS(CLK,C1) BEGIN IF RISING_EDGE(CLK) THEN IF(C1="011") THEN C1<="000"; ELSE C1<=C1+1;END IF; IF(C1="001") THEN M1<=NOT M1; ELSIF(C1
8、"011") THEN M1<=NOT M1; END IF; END IF; END PROCESS; K1<=M1; END BHV; (3) 文件存盘。选择File—Save as命令,找到已经建立的文件夹cnt10,存盘文件名应该与实体名一致,即cnt10.vhd。当出现问句“Do you want to creat····”单击“是”按钮。 2:创建工程。 (1) 建立新工程管理窗口。单击对话框第二栏右侧“···”按钮,找到文件夹d:\work\cnt10,选中已存盘文件cnt10.vhd,再单击“打开”按钮。 (2) 将设计文件加入工程中。单击Next按钮,在弹出
9、的对话框中单击File栏后的按钮将与工程相关的所有VHDL文件都加入此工程。 (3) 选择目标芯片。单击Next按钮,选择目标器件即EP3C5E144C8。 (4) 工具设置。 (5) 结束设置。 3:全程编译。 编译前首先选择Processing→Start Complilation命令,启动全程编译。 4:时序仿真。 工程编译通过后 (1) 打开波形编辑器。选择File→New命令,在新建窗口选择Vector Waveform File选项,单击OK按钮。 (2) 设置仿真时间区域。 (3) 波形文件存盘。选择File→Save As,将以默认名为cnt10
10、vwf的波形文件存入文件夹d:\work\cnt10中。 (4) 将工程mux21a的端口信号节点选入波形编辑器中。 (5) 编辑输入波形。 (6) 启动仿真器。现在所有的设置进行完毕,选择Processing→Start Simulation命令,直到出现Simulation was successful,仿真结束。 (7) 观察仿真结果。如下图: 奇数次分频: 半整数次分频: 偶数次分频: 实验总结: 通过本次试验,我进一步深入的体会到VHDL语言的应用。通过这次试验使我了解了占空比为50%的任意奇数次分频的设计方法,并通过VHDL完成了分频器的设计与仿真,通过设计不同的模数设置不同频率的分频器。深入的分析了VHDL语言的含义以及在程序中的作用,程序的含义也深入的分析了一下,并学会了如何用程序去观察仿真结果的正确性。虽然这次试验开始时总是出错,主要原因就参数设置的不准确,经过一遍又一遍的更改调试级同学的帮助最终调试成功。






