资源描述
VHDL实验报告沈金凯)
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
《VHDL与数字系统计》
实验报告
班级 电信103
姓名 沈金凯
学号 110023089
王新华 编写
信息与电子工程学院
2011年10月
实验一 简单逻辑电路设计与仿真
一、实验目的
1、学习并掌握MAX+PLUSⅡ CPLD开发系统的基本操作。
2、学习在MAX+PLUSⅡ下设计简单逻辑电路与功能仿真方法.
二、实验仪器设备
1、PC机一台.
2、MAX+PLUSⅡ CPLD软件开发系统一套。
三、实验内容
1、用D触发器设计一个4进制加法计数器并进行功能仿真.
(1)设计1个时钟脉冲输入端CLK;
(2)设置2个计数状态输出端Q1、Q0;
(3)按二进制加法规律计数;
(4)进行电路功能仿真与验证。
2、设计一个2—4线译码器并进行静态功能仿真。
(1) 2个输入端,A0和A1;
(2) 4个输出端,Y0至Y3;
(3) 电路功能真值表如表1-1示,输出为高电平有效:
(4) 进行电路功能静态测试与验证。
表1-1 2—4译码器真值表
A1
A0
Y0
Y1
Y2
Y3
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
1
0
1
1
0
0
0
1
四、实验操作步骤
(一)4进制加法计数器设计与仿真
1、开机,进入MAX+PLUSⅡCPLD开发系统。
2、在工具条中选择新建文件,弹出NEW界面,在该界面中选择Text Edit File项,然后点击OK,进入文本编辑状态。然后点击工具条中的保存按钮,在弹出的Save As 界面中选择后缀 .VHD,并为当前的实验选择恰当的路径并创建项目名称。
3、 编辑输入相应的程序代码。
4、在File菜单中选Project项,选择其中的Set Project to Current File,将项目设置为当前文件.然后保存当前文件。
5、选择器件.点击Assign 菜单的Device项,在弹出的Device界面中选择ACEX1K系列的EP1K100QC208-3.注意界面中的Show Only Fastest Speed Grades 不要选中,否则显示不出该器件。
6、点击MAX+PlusII菜单下的Compiler进行编译,然后点击START按钮开始编译。对编译的结果进行观察,如果出现错误或告警,检查输入的源代码排除语法错误并重新编译,重复此过程直到编译通过。
7、点击MAX+PLUSⅡ菜单下的Waveform Editor 子菜单出现Waveform Editor窗口。点击鼠标右键,选择Enter Nodes From SNF子菜单,在Enter Nodes From SNF对话框中点击List按钮、“=>”按钮和Ok按钮,填入电路节点名称。
8、在时钟输入端CLK处设置好方波脉冲,点击MAX+PLUSⅡ菜单下的Simulaotr子菜单,进行波形仿真以验证电路的逻辑功能。
9、点击MAX+PLUSⅡ菜单下的Timing Analyzer子菜单,进行信号延迟时间分析,估算工作速度。
10、本次实验暂不进行芯片下载操作.
(二)、设计一个2—4线译码器并进行静态功能仿真。
完成该译码器的源代码,并进行仿真调试。操作步骤同上。
五、实验报告
1、写出第一个实验的源代码并画出仿真波形图。
2、写出第二个实验的源代码并画出仿真波形图。
2、讨论用VHDL语言进行逻辑电路设计的特点,并与高级语言的调试过程作比较。
LIBRARY ieee;
USE ieee。std_logic_1164。all;
ENTITY counter IS
PORT(clk:IN STD_LOGIC;
Q1:OUT INTEGER RANGE 0 TO 3);
END counter;
ARCHITECTURE counter OF counter IS
BEGIN
count:PROCESS(clk)
VARIABLE Q2:INTEGER RANGE 0 TO 4;
BEGIN
IF(clk'EVENT AND clk=’1’)THEN
Q2:=Q2+1;
IF(Q2=4)THEN Q2:=0;
END IF;
END IF;
Q1〈=Q2;
END PROCESS count;
END counter;
library ieee;
use ieee.std_logic_1164。all;
entity decoder is
port ( ena:in std_logic;
A: in std_logic_VECTOR(1 downto 0);
Y: out std_logic_vector(3 downto 0));
end decoder;
architecture decoder of decoder is
begin
process (ena,A)
variable temp1: std_logic_vector (y’high downto 0);
variable temp2: integer range 0 to y’high ;
begin
temp1 := (others=〉’1');
temp2 := 0;
if(ena='1') then
for i in A'RANGE LOOP
if(A(i)=’1’)then
temp2:=2*temp2+1;
else
temp2:=2*temp2;
end if;
end loop;
temp1(temp2):='0';
end if;
y<=temp1;
end process;
end decoder ;
实验二 计数器和分频器的设计及仿真
一、实验目的
1、学习VHDL语言的行为描述语句。
2、学习计数器和分频器电路的设计算法。
3、学习掌握波形的仿真过程.
二、实验仪器
1、PC机一台
2、MAX+PLUSⅡ CPLD开发系统一套
3、KHF-4型CPLD实验/开发系统一套
4、CPLDDN-3型下载软件一套
三、实验内容与步骤
1、设计一个分频器
分频器与计数器类似,它也是对时钟脉冲进行计数,但它的输出不是对信号的计数值,而是频率与时钟信号成固定比例关系的脉冲信号.一般希望分频输出信号的占空比为50%,若不要求,则可直接利用计数器作为分频器使用。
设计一个占空比为50%的60分频器。该分频器有一个时钟输入端clk ;一个清零端clr(clr低有效);一个一位数据输出端q。
(1) VHDL语言输入。
(2) 编译。
(3) 进行波形仿真,验证电路的逻辑功能.
2.设计一个计数器
计数器是数字系统中用得最多的逻辑器件。它不仅能记录输入时钟脉冲的个数,还可以实现分频、定时、产生节拍脉冲和脉冲序列等。计数器的种类很多。按时钟脉冲输入方式的不同,可分为同步计数器和异步计数器;按进位体制的不同,可分为二进制计数器和非二进制计数器;按计数过程中数字增减趋势的不同,可分为加计数器、减计数器和可逆计数器。
在此设计一个模60的 异步清零、同步二进制的可逆计数器。
(1) VHDL语言输入(参考程序另外提供)。
(2)指定器件并编译。
(3)分配管脚后编译,生成下载文件。
(4)进行下载,并观察实验结果。
四、实验报告
1、写出实验一的代码,画出仿真波形。
2、写出实验二的代码。
3、在实验二程序中进程P1的功能是什么?输入端口direction的功能是什么?
4、实验二程序中计数的基本时间单位是多少?多长时间计满一次?
5、实验二中如果要将计数的基本时间增加一倍,程序如何修改?写出其中的关键语句。
library ieee;
use ieee.std_logic_1164。all;
entity freq_divider is
port (clk,clr: in std_logic;
Q: buffer std_logic);
end freq_divider;
architecture example of freq_divider is
signal count:integer range 0 to 61;
begin
process (clr,clk)
begin
if(clr=’1’) then
q〈= '0';
count<= 0;
elsif (clk’event and clk='1') then
count〈= count+1;
if (count=59) then
Q 〈= not Q;
count<= 0;
end if ;
end if;
end process;
end example;
实验三 译码器电路的设计与仿真
一、实验目的
1、学习CASE分之语句及选择信号赋值语句。
2、掌握使用KHF—4型CPLD实验/开发系统的数码管显示。
二、实验仪器设备
1、PC机一台
2、MAX+PLUSⅡ CPLD开发系统一套
3、KHF—4型CPLD实验/开发系统一套
三、实验内容及步骤
1、用文本输入法设计译码器
(1) 在文本框中输入VHDL语言设计的程序(参考程序另外提供)。
(2) 选择器件并编译。点击Assign菜单的Device项,选择ACEX1K系列的EP1K100QC208-3。
(3) 点击floorplan editor按钮进行管脚分配,注意将输出分配到SEG1数码管对应的引脚。
(4) 对电路进行编译后,启动CPLDDN-3下载软件进行下载。
(5) 设置不同的输入值,观察数码管的显示值是否为预期的结果.
2、设计动态扫描及静态显示电路
在实验中经常需要将测量或运算结果用十进制数码显示出来。七段显示译码器用于对一个四位二进制数(8421BCD码)进行译码,在七段LED显示器上显示出相应的十进制数。实验箱上配置的10个数码管(SEG1——SEG10),采用共阴极8段LED显示。其中SEG1——SEG2采用静态显示方式,SEG3——SEG10采用动态扫描显示方式。本次实验显示一位静态码及8位动态显示码。
(1) 在文本框中输入VHDL语言设计的程序(参考程序单独提供)。
(2) 按照先前操作步骤下载程序,观察运行结果。
四、实验报告
1、写出实验一的代码.
2、写出实验二的代码。
3、说明何为静态,何为动态显示?。
4、在动态扫描显示时如果要反转扫描的顺序,如何修改程序?写出其中修改后的部分。
实验四 交通管理器的设计
一、 实验目的
1、学习VHDL语言状态机的设计方法。
2、掌握综合性电路的设计方法。
二、 实验仪器
1、PC机一台
2、MAX+PLUS Ⅱ CPLD开发系统一套
3、KHF—4型CPLD实验/开发系统一套
一、 实验要求
设计一个交通灯控制电路,其技术要求如下:
1、 A方向的道路绿灯亮,B方向道路红灯亮。
2、 经过一段时间后A方向的黄灯亮较短的时间。
3、 A方向黄灯熄灭后红灯亮,而同时B方向的绿灯亮,红灯熄灭。
4、 B方向的绿灯亮一段时间后熄灭,同时黄灯亮。
5、 B方向黄灯熄灭后红灯亮,同时A方向的绿灯亮,红灯熄灭。
二、 设计步骤
(1) 根据设计要求确定设计方案,状态转换如下图。
(2) 输入代码。
(3) 按照正常步骤操作,分配管脚,将输入和输出信号分配到SW1到SW16所对应的器件引脚上。注意输出的LED发光管由于颜色相同,因此输出信号在分配引脚时分成两组,每组3个灯,按顺序模拟红黄绿三种信号灯。
三、 实验报告
1、 写出实验代码。
2、 说明该状态机为哪一种状态机类型?为什么?
3、 如果要使绿灯亮的时间更长,同时不改变黄灯亮的时间,可以怎样修改程序?
- 17 -
展开阅读全文