1、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)按
2、二进制加法规律计数;(4)进行电路功能仿真与验证。2、设计一个24线译码器并进行静态功能仿真。(1) 2个输入端,A0和A1;(2) 4个输出端,Y0至Y3;(3) 电路功能真值表如表1-1示,输出为高电平有效:(4) 进行电路功能静态测试与验证。表1-1 24译码器真值表A1A0Y0Y1Y2Y3001000010100100010110001四、实验操作步骤(一)4进制加法计数器设计与仿真 1、开机,进入MAX+PLUSCPLD开发系统。 2、在工具条中选择新建文件,弹出NEW界面,在该界面中选择Text Edit File项,然后点击OK,进入文本编辑状态。然后点击工具条中的保存按钮,在弹
3、出的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按钮开始编译。
4、对编译的结果进行观察,如果出现错误或告警,检查输入的源代码排除语法错误并重新编译,重复此过程直到编译通过。 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子菜单,进行信号
5、延迟时间分析,估算工作速度。10、本次实验暂不进行芯片下载操作.(二)、设计一个24线译码器并进行静态功能仿真。完成该译码器的源代码,并进行仿真调试。操作步骤同上。五、实验报告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;ARCHITE
6、CTURE counter OF counter ISBEGIN count:PROCESS(clk) VARIABLE Q2:INTEGER RANGE 0 TO 4; BEGIN IF(clkEVENT 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_log
7、ic_VECTOR(1 downto 0); Y: out std_logic_vector(3 downto 0);end decoder;architecture decoder of decoder isbeginprocess (ena,A)variable temp1: std_logic_vector (yhigh downto 0);variable temp2: integer range 0 to yhigh ;begintemp1 := (others=1);temp2 := 0;if(ena=1) thenfor i in ARANGE LOOPif(A(i)=1)the
8、ntemp2:=2temp2+1;elsetemp2:=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、CPLDDN3型下载软件一套三、实验内容与步骤1、设计一个分频器分频器与计数器类似,它也是对时钟脉冲进行计数,但它的输
9、出不是对信号的计数值,而是频率与时钟信号成固定比例关系的脉冲信号.一般希望分频输出信号的占空比为50,若不要求,则可直接利用计数器作为分频器使用。设计一个占空比为50%的60分频器。该分频器有一个时钟输入端clk ;一个清零端clr(clr低有效);一个一位数据输出端q。(1) VHDL语言输入。(2) 编译。(3) 进行波形仿真,验证电路的逻辑功能.2设计一个计数器计数器是数字系统中用得最多的逻辑器件。它不仅能记录输入时钟脉冲的个数,还可以实现分频、定时、产生节拍脉冲和脉冲序列等。计数器的种类很多。按时钟脉冲输入方式的不同,可分为同步计数器和异步计数器;按进位体制的不同,可分为二进制计数器和
10、非二进制计数器;按计数过程中数字增减趋势的不同,可分为加计数器、减计数器和可逆计数器。在此设计一个模60的 异步清零、同步二进制的可逆计数器。(1) VHDL语言输入(参考程序另外提供)。(2)指定器件并编译。(3)分配管脚后编译,生成下载文件。(4)进行下载,并观察实验结果。四、实验报告1、写出实验一的代码,画出仿真波形。2、写出实验二的代码。3、在实验二程序中进程P1的功能是什么?输入端口direction的功能是什么?4、实验二程序中计数的基本时间单位是多少?多长时间计满一次?5、实验二中如果要将计数的基本时间增加一倍,程序如何修改?写出其中的关键语句。library ieee;use
11、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;beginprocess (clr,clk)begin if(clr=1) then q= 0; count= 0;elsif (clkevent and clk=1) then count= count+1; if (c
12、ount=59) then Q = not Q; count= 0; end if ; end if;end process;end example;实验三 译码器电路的设计与仿真一、实验目的1、学习CASE分之语句及选择信号赋值语句。2、掌握使用KHF4型CPLD实验/开发系统的数码管显示。二、实验仪器设备1、PC机一台2、MAX+PLUS CPLD开发系统一套3、KHF4型CPLD实验/开发系统一套三、实验内容及步骤1、用文本输入法设计译码器(1) 在文本框中输入VHDL语言设计的程序(参考程序另外提供)。(2) 选择器件并编译。点击Assign菜单的Device项,选择ACEX1K系列的
13、EP1K100QC208-3。(3) 点击floorplan editor按钮进行管脚分配,注意将输出分配到SEG1数码管对应的引脚。(4) 对电路进行编译后,启动CPLDDN-3下载软件进行下载。(5) 设置不同的输入值,观察数码管的显示值是否为预期的结果.2、设计动态扫描及静态显示电路 在实验中经常需要将测量或运算结果用十进制数码显示出来。七段显示译码器用于对一个四位二进制数(8421BCD码)进行译码,在七段LED显示器上显示出相应的十进制数。实验箱上配置的10个数码管(SEG1SEG10),采用共阴极8段LED显示。其中SEG1SEG2采用静态显示方式,SEG3SEG10采用动态扫描显
14、示方式。本次实验显示一位静态码及8位动态显示码。(1) 在文本框中输入VHDL语言设计的程序(参考程序单独提供)。(2) 按照先前操作步骤下载程序,观察运行结果。四、实验报告1、写出实验一的代码.2、写出实验二的代码。3、说明何为静态,何为动态显示?。4、在动态扫描显示时如果要反转扫描的顺序,如何修改程序?写出其中修改后的部分。实验四 交通管理器的设计一、 实验目的1、学习VHDL语言状态机的设计方法。2、掌握综合性电路的设计方法。二、 实验仪器1、PC机一台2、MAX+PLUS CPLD开发系统一套3、KHF4型CPLD实验/开发系统一套一、 实验要求设计一个交通灯控制电路,其技术要求如下:
15、1、 A方向的道路绿灯亮,B方向道路红灯亮。2、 经过一段时间后A方向的黄灯亮较短的时间。3、 A方向黄灯熄灭后红灯亮,而同时B方向的绿灯亮,红灯熄灭。4、 B方向的绿灯亮一段时间后熄灭,同时黄灯亮。5、 B方向黄灯熄灭后红灯亮,同时A方向的绿灯亮,红灯熄灭。二、 设计步骤(1) 根据设计要求确定设计方案,状态转换如下图。(2) 输入代码。 (3) 按照正常步骤操作,分配管脚,将输入和输出信号分配到SW1到SW16所对应的器件引脚上。注意输出的LED发光管由于颜色相同,因此输出信号在分配引脚时分成两组,每组3个灯,按顺序模拟红黄绿三种信号灯。三、 实验报告1、 写出实验代码。2、 说明该状态机为哪一种状态机类型?为什么?3、 如果要使绿灯亮的时间更长,同时不改变黄灯亮的时间,可以怎样修改程序? - 17 -