资源描述
洛阳理工学院实验报告
系部
计算机与信息工程系
班级
学号
姓名
课程名称
PLD原理与应用
实验日期
2012.11.12
实验名称
实验四 分频器的VHDL设计
成绩
实验目的:
1、练习应用QUARTUSⅡ开发环境
2、练习文件的建立,改编,编程,调试,修改,仿真。
3、学会设计奇数、偶数、半整数分频器。
实验条件:
装有QUARTUSⅡ软件的电脑
实验内容与步骤:
一、 实验内容:
练习占空比为50%的任意奇数次分频半整数分频偶数次分频。
二、 实验步骤:
1:建立工作文件夹和编译设计文件。
(1) 新建一个文件夹。首先利用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);
END;
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 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.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; END 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 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="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按钮,在弹出的对话框中单击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.vwf的波形文件存入文件夹d:\work\cnt10中。
(4) 将工程mux21a的端口信号节点选入波形编辑器中。
(5) 编辑输入波形。
(6) 启动仿真器。现在所有的设置进行完毕,选择Processing→Start Simulation命令,直到出现Simulation was successful,仿真结束。
(7) 观察仿真结果。如下图:
奇数次分频:
半整数次分频:
偶数次分频:
实验总结:
通过本次试验,我进一步深入的体会到VHDL语言的应用。通过这次试验使我了解了占空比为50%的任意奇数次分频的设计方法,并通过VHDL完成了分频器的设计与仿真,通过设计不同的模数设置不同频率的分频器。深入的分析了VHDL语言的含义以及在程序中的作用,程序的含义也深入的分析了一下,并学会了如何用程序去观察仿真结果的正确性。虽然这次试验开始时总是出错,主要原因就参数设置的不准确,经过一遍又一遍的更改调试级同学的帮助最终调试成功。
展开阅读全文