vhdl实验报告1879832

合集下载

VHDL实验报告

VHDL实验报告

《创新实验》实验报告—基于VHDL的编程和硬件实现一、实验目的1.熟悉和掌握硬件描述语言VHDL的基本语法及编写;2.掌握软件Xilinx ISE 10.1的使用;3.熟悉SDZ-6电子技术实验箱的使用;4.了解节拍脉冲发生器等基本电路的实现;5.了解八位二进制计数器的功能与设计;6.学习键盘和七段数码管显示的控制和设计。

二、实验内容1.Xilinx ISE 10.1软件的使用;2.节拍脉冲发生器等基本电路的实现;3.八位二进制计数器的实现4.键盘扫描及显示的实现三、实验器材1、PC机2、SDZ-6电子技术实验箱3、正负5V电源4、I/O接口线四、软件的使用在安装Xilinx10.1软件时,需要一个ID号,其实这个ID号是可以重复使用的,几个同学在官网注册后就可以共享ID号了。

安装完成之后就可以使用这个软件编写相应的VHDL的程序。

1.新建工程File—>New Project 弹出下面的对话框输入工程名后单击Next。

然后根据本实验的实验箱进行以下设置。

以后的步骤一般都是单击Next(有些资料上会介绍有些这些步骤的具体功能,但对于本实验不必用到),最后单击Finish,完成新建一个工程。

在窗口的左边会出现刚刚新建的工程,如下:2.新建一个VHDL的源文件。

在上图中,右击工程选择New Source ,弹出如下对话框。

在对画框的左边选择VHDL Module,输入文件的名字(改名字最好是你定义的实体的名字)。

单击Next。

出现下面的对话框。

该对话框主要是对外部端口的编辑。

可以直接跳过,即单击Next,在源文件上编辑端口。

然后在接下来的对话框中单击Finish。

完成建立一个源文件。

窗口右边就会出现刚才编辑的源文件。

3.编写和编译代码将事先编好的代码复制到源文件里,然后保存文件。

选中左边的文件名,在窗体的左边出现如下编辑文档内容。

选择Synthesize —XST—》Check Syntax,双击Check Syntax,开始编译源文件。

VHDL实验报告

VHDL实验报告

6
#50 S1=1;S2=0; #50 A=0;B=0;C=1;D=0; #50 S1=0;S2=1; #50 A=1;B=0;C=0;D=1; #200 $stop; end MUX41b MUX41b1 (.A(A),.B(B),.C(C),.D(D),.S1(S1),.S2(S1),.Y(Y));//元件例化 endmodule If else 方法仿真图:
实验一 半加器电路的设计
一.实验目的 (1)掌握 Modelsim 软件的编译、仿真方法 (2)熟练运用 Modelsim 软件进行 VHDL 程序设计开发 (3)掌握基于 Modelsim 的组合逻辑电路设计方法 (4)利用 VHDL 的逻辑表达式描述门电路 (5)利用 VHDL 的代码完成半加器设计 二.实验内容 1.实验要求:设计一个两位二进制半加器,半加器只考虑了两个加数本身,没有考虑由低位 来的进位。 2.半加器的输入为 A 和 B。输出为 SO 和 CO。 使用 Verilog HDL 程序实现上述实验内容,并使用 modelsim 仿真 半加器主程序为: module adder(A,B,SO,CO); input A,B; output SO,CO; assign SO=A^B; //和值数据输出 assign CO=A&B; //进位数据输出 endmodule 测试程序为: `timescale 1ns/1ns //时间精度 `include "adder.v"; module addertest; reg A,B; //输入变量类型定义 wire SO,CO; //输出变量类型定义 initial begin A=0;B=0; #100 A=0;B=1 ; #100 A=1;B=1 ; #100 A=1;B=0 ; #100 $stop; end adder adder1(.SO(SO),.CO(CO),.A(A),.B(B)); endmodule

vhdl课程设计实验报告

vhdl课程设计实验报告

湖南科技大学信息与电气工程学院《课程设计报告》题目:电子技术课程设计报告专业:通信工程班级:一班姓名:何家乐学号: 1004040126指导教师:罗朝辉任务书题目《电子技术》课程设计时间安排课程设计时间为10天(2周)。

(1)调研、查资料1天。

(2)总体方案设计2 天。

(3)电路设计2天(画原理图,参数计算)。

(4)实验室完成相应电路的验证。

3天(5)撰写设计说明书 1 天。

(6)验收1 天。

目的:训练学生综合运用学过的电子技术原理的基础知识,独立进行查找资料、选择方案、设计电路、撰写报告,进一步加深对电子电路基本理论的理解,提高运用基本技能的能力,为今后的学习和工作打下坚实的基础。

要求:(1)能正确设计电路,画出线路图,分析电路原理。

(2)按时参加课程设计指导,定期汇报课程设计进展情况。

(3)广泛收集相关技术资料。

(4)独立思考,刻苦钻研,严禁抄袭。

(5)按时完成课程设计任务,认真、正确地书写课程设计报告。

(6)培养实事求是、严谨的工作态度和认真的工作作风。

总体方案实现:(1)明确设计任务,对所要设计的任务进行具体分析,充分了解电路性能、指标内容及要求。

(2)制定设计方案。

(3)迸行具体设计:单元电路的设计;参数计算;器件选择;绘制电路原理图。

(4)撰写课程设计报告(说明书):课程设计报告是对设计全过程的系统总结,也是培养综合科研素质的一个重要环节。

指导教师评语:评分等级:()指导教师签名:课程设计报告1.课题名称:RGB LED Control 原理图及PCB设计2.设计任务及要求⑴任务:完成RGB LED control 的设计,并画出原理图及其PCB设计。

⑵要求:①能正确设计电路,画出线路图,分析电路原理。

②按时参加课程设计指导,定期汇报课程设计进展情况。

③广泛收集相关技术资料。

④独立思考,刻苦钻研,严禁抄袭。

⑤按时完成课程设计任务,认真、正确地书写课程设计报告。

⑥培养实事求是、严谨的工作态度和认真的工作作风。

VHDL多路波形发生器实验报告

VHDL多路波形发生器实验报告

VHDL多路波形发生器实验报告一、基本要求:1、对输入时钟信号进行分频,实现三路互差120°的信号。

2、实现输出信号的占空比控制clk: 输入时钟信号reset: 同步复位信号(低电平有效)div: 输入分频控制信号(注意:6n分频)ctrl: 占空比控制信号ctrl=1时, 占空比为1:1ctrl=2时, 占空比为1:2ctrl=3时, 占空比为2:1A,B,C: 三路输出信号二、设计思路:1.实验为6n分频,用变量s来控制,0~6n-1这六个数,当时钟信号每来一个上升沿时加1,当为6n-1时清零;2.定义N为常量,通过改变N的值改变分频;3.ctrl值不同时,占空比不同,用case语句控制,ctrl分别为01,10,11和其他;4.具体波形的实现用if语句,当占空比为1时,A输出信号在s=0和s=3*n时翻转,B输出信号在s=2*n和s=5*n时翻转,C输出信号在s=4*n和s=n的时候翻转。

当占空比为1:2时,A输出信号在s=0和s=2*n时翻转,B输出信号在s=2*n和s=4*n时翻转,C输出信号在s=4*n和s=0的时候翻转。

当占空比为2:1时,A输出信号在s=0和s=4*n时翻转,B输出信号在s=2*n和s=0时翻转,C输出信号在s=4*n和s=2*n的时候翻转;5.在占空比为1和1:2时,C输出信号应比B慢120度,但是实际输出超前B,所以要对C输出进行反相;同理,在占空比为2:1时,要对B、C分别进行反向。

6.用if语句判断是否复位,若非,则执行case语句。

三、流程图:四、源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity top isport(clk,reset:in std_logic;ctrl:in std_logic_vector(1 downto 0);A,B,C:out std_logic);end top ;architecture rel of top issignal temp1,temp2,temp3,temp4,temp5 : std_logic; constant N: integer:=1;signal s:integer range 0 to 6*N-1 ;beginprocess(clk,reset,ctrl)beginif (reset='0') thentemp1<='0';temp2<='0';temp3<='0';temp4<='0';temp5<='0';s<=0;elsecase ctrl iswhen "01"=>if (clk 'event and clk='1') thenif s=6*N-1 thens<=0;elses <= s+1;end if;if s=0 thentemp1<= not temp1;end if;if s=3*N thentemp1<= not temp1;end if;if s=2*N thentemp2<= not temp2;end if;if s=5*N thentemp2<= not temp2;end if;if s=4*N thentemp4<= not temp4;end if;if s=N thentemp4<= not temp4;end if;end if;temp3<= not temp4;when "10"=>if (clk 'event and clk='1') thenif s=6*N-1 thens<=0;elses <= s+1;end if;if s=0 thentemp1<= not temp1;end if;if s=2*N thentemp1<= not temp1;end if;if s=2*N thentemp2<= not temp2;end if;if s=4*N thentemp2<= not temp2;end if;if s=4*N thentemp4<= not temp4;end if;if s=0 thentemp4<= not temp4;end if;end if;temp3<= not temp4;when "11"=>if (clk 'event and clk='1') thenif s=6*N-1 thens<=0;elses <= s+1;end if;if s=0 thentemp1<= not temp1;end if;if s=4*N thentemp1<= not temp1;end if;if s=2*N thentemp5<= not temp5;end if;if s=0 thentemp5<= not temp5;end if;if s=4*N thentemp4<= not temp4;end if;if s=2*N thentemp4<= not temp4;end if;end if;temp2<= not temp5;temp3<= not temp4;when others=>temp1<='0';temp2<='0';temp3<='0';end case;end if;end process;A<=temp1;B<=temp2;C<=temp3;end rel;五、仿真波形:整体波形:当ctrl=1 当ctrl=2 当ctrl=3复位当ctrl=其他:六、实验过程遇到的问题:在程序设计时,开始不知该怎样使A,B,C互差120度,开始是想通过定义一个变量,每来一个上升沿加1,从0开始,A路信号除3n 取余为0则翻转,B路信号除3n取余为1则翻转,C路信号除3n取余为2则翻转,我觉得这样的想法应该没有错,可是实际却调不出来,可能是某处逻辑有问题,后来就模仿老师给的6分频程序,设计了现在的程序。

vhdl实验报告

vhdl实验报告

vhdl实验报告VHDL实验报告引言:VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和仿真。

本篇实验报告将介绍我在VHDL实验中的学习和实践经验,包括实验目的、实验过程、实验结果以及对VHDL的理解和展望。

一、实验目的VHDL实验的主要目的是让我们掌握VHDL语言的基本语法和使用方法,能够利用VHDL描述数字电路,并通过仿真和综合工具进行验证和实现。

通过这些实验,我们可以深入了解数字电路的原理和设计方法,提高我们的逻辑设计能力和工程实践能力。

二、实验过程在实验过程中,我们首先学习了VHDL的基本语法,包括实体声明、端口声明、信号声明等。

然后,我们通过实例学习了VHDL的建模方法,包括组合逻辑电路的建模和时序逻辑电路的建模。

在组合逻辑电路的建模中,我们学习了使用逻辑运算符和条件语句描述电路的功能;在时序逻辑电路的建模中,我们学习了使用过程语句和时钟信号描述电路的状态转换。

在学习了VHDL的基础知识后,我们开始进行实验设计。

我们选择了一个简单的数字电路,如4位加法器,来进行实验验证。

首先,我们通过VHDL语言描述了加法器的功能和结构,包括输入端口、输出端口和中间信号。

然后,我们使用仿真工具进行了功能仿真,验证了加法器的正确性。

接着,我们使用综合工具将VHDL代码综合成门级电路,并进行了时序仿真和时序优化,验证了加法器的时序正确性和性能。

三、实验结果通过实验,我们成功地实现了4位加法器的功能,并验证了其正确性和性能。

在功能仿真中,我们输入了不同的测试数据,观察了输出结果,发现加法器能够正确地进行加法运算,并得到了正确的结果。

在时序仿真中,我们观察了电路的时序行为,包括输入信号的变化、输出信号的响应和中间信号的传播延迟等,发现加法器能够在时序上满足要求,并且具有较好的性能。

vhdl设计实验报告

vhdl设计实验报告

vhdl设计实验报告VHDL设计实验报告引言VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和验证。

本实验旨在通过设计一个简单的电路来熟悉VHDL语言的基本语法和设计流程。

一、实验背景数字电路是现代电子系统的基础,而VHDL则是描述和设计数字电路的重要工具。

VHDL可以帮助工程师们以一种形式化的语言来描述电路的功能和结构,从而实现电路的模拟和验证。

二、实验目的本实验的目的是通过使用VHDL语言设计一个简单的电路,加深对VHDL语言的理解,并掌握基本的电路设计流程。

三、实验步骤1. 确定电路功能在设计电路之前,首先需要明确电路的功能。

本实验中,我们选择设计一个4位加法器电路。

2. 设计电路结构根据电路功能的要求,设计电路的结构。

在本实验中,我们需要设计一个4位加法器,因此需要使用4个输入端口和一个输出端口。

3. 编写VHDL代码使用VHDL语言编写电路的描述代码。

在代码中,需要定义输入和输出端口的类型和位宽,并实现电路的功能。

4. 进行仿真使用仿真工具对设计的电路进行仿真,以验证电路的功能是否符合预期。

通过输入不同的测试数据,观察输出是否正确。

5. 下载到FPGA开发板将设计好的电路代码下载到FPGA开发板上进行验证。

通过连接输入信号和观察输出信号,验证电路在实际硬件上的运行情况。

四、实验结果与分析经过仿真和实际验证,我们设计的4位加法器电路在功能上符合预期。

输入不同的数据进行加法运算时,输出结果都正确。

五、实验总结通过本次实验,我们深入了解了VHDL语言的基本语法和设计流程。

通过设计一个简单的电路,我们掌握了VHDL的应用方法,并通过仿真和实际验证,加深了对电路设计的理解。

六、实验心得本实验让我对VHDL语言有了更深入的认识。

通过实际操作,我更加熟悉了VHDL的编写和仿真流程。

VHDL与数字电路设计实验报告

VHDL与数字电路设计实验报告

VHDL与数字电路设计实验报告引言本实验旨在通过使用VHDL编程语言和数字电路设计技术,实现特定功能的电路设计。

本文档将对实验的步骤、设计原理和结果进行详细描述。

实验步骤1. 步骤一:熟悉VHDL编程语言在实验开始之前,团队成员对VHDL编程语言进行了研究和熟悉。

我们了解了VHDL的基本语法、数据类型和结构,并获得了对VHDL设计原理的初步理解。

2. 步骤二:设计功能电路在本实验中,我们选择了一个特定的功能电路进行设计。

我们首先进行了功能需求分析,并根据需求确定了电路的输入输出信号以及主要的逻辑运算。

然后,我们使用VHDL编程语言将电路的逻辑运算实现为代码,并进行了仿真和测试。

3. 步骤三:电路仿真和验证为了验证我们设计的电路功能的正确性,我们使用了VHDL仿真工具进行了电路的仿真和验证。

我们根据输入信号的不同组合,观察输出信号的变化,并与我们预期的结果进行比较。

通过这一步骤,我们确认了我们设计的电路能够按照预期工作。

4. 步骤四:电路实现和测试在确认电路的设计和仿真结果无误之后,我们进一步将电路实现到实际的数字电路平台上,并进行了硬件测试。

我们使用实际的输入信号来测试电路的性能和稳定性,并对输出信号进行观察和分析。

通过这一步骤,我们验证了电路在实际环境中的可行性。

设计原理我们设计的电路基于特定的功能需求,采用了经典的数字电路设计原理。

通过使用VHDL编程语言,我们将电路的逻辑运算实现为逻辑门和触发器的组合。

通过将输入信号连接到适当的逻辑门和触发器,我们实现了所需的功能。

结果与分析经过实验步骤的完成,我们成功地设计和实现了一个具有特定功能的数字电路。

在仿真测试和实际测试中,电路都表现出了良好的性能和稳定性。

根据结果的分析,我们验证了电路的设计原理和逻辑的正确性。

结论本实验通过使用VHDL编程语言和数字电路设计技术,成功地实现了一个具有特定功能的电路设计。

我们的实验结果表明,VHDL和数字电路设计技术在电路设计领域具有重要的应用价值。

VHDL电梯实验报告

VHDL电梯实验报告

三层电梯实验报告一、设计课题的任务要求题目三简易二层电梯控制器模拟真实电梯的运行情况,设计制作一个简易电梯控制器控制二层电梯的运行。

基本要求:1、电梯设有一层、二层外部呼叫按钮和内部一层、二层指定按钮(BTN)。

2、利用数码管显示电梯所在楼层,用LED显示电梯运行状态如上行、下行、开门、关门等。

提高要求:1、点阵显示楼层;2、用点阵显示楼层的上下滚动移出移入表示电梯的上行或下行运行方向3、增加为三层电梯控制器二、系统设计(包括设计思路、总体框图、分块设计)设计思路:直接做三层的电梯,用点阵显示楼层。

运用有限状态机,按电梯所在的状态进行讨论。

状态有:stopon1(电梯停在1层)、dooropen(开门),doorclose (关门),doorwait1(开门等待第1秒),doorwait2(开门等待第2秒),up(上升),down(下降),stop(停止)总体框图:分块设计:没有用分块设计,只是用了多个进程。

三、波形分析:起初有个三楼内部停楼请求,电梯开始上升,uplight亮,停在三楼,uplight灭,doorlight亮,保持开门3秒后关门,doorlight灭。

接着先后收到一个二楼外部上升请求和一个一楼外部上升请求,电梯开始下降,downlight亮,但电梯没有停在二楼而是直接下到一楼,downlight灭,doorlight亮,保持开门3秒后关门,doorlight灭,接着再开始上升,uplight 亮,上升到二楼,uplight灭,doorlight亮,保持开门3秒后关门。

这完全符合现实中电梯运行的方式。

四、源程序(要有注释)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY dianti ISPORT(clk:IN STD_LOGIC; --50M时钟信号reset:IN STD_LOGIC;--重置f1upbutton:IN STD_LOGIC;--一楼外部上升请求f2upbutton:IN STD_LOGIC;--二楼外部上升请求f2dnbutton:IN STD_LOGIC;--二楼外部下降请求f3dnbutton:IN STD_LOGIC;--三楼外部下降请求stop1button,stop2button,stop3button:IN STD_LOGIC;--内部停站请求uplight:OUT STD_LOGIC;--向上运行指示灯downlight:OUT STD_LOGIC;--向下运行指示灯doorlight:OUT STD_LOGIC;--开门关门指示灯灯亮表示开门灯灭表示关门row:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);--点阵行col:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));--点阵列END dianti;ARCHITECTURE a OF dianti ISTYPE lift_state IS(stopon1,dooropen,doorclose,doorwait1,doorwait2,up,down,stop );--有限状态机SIGNAL nowlift,nextlift :lift_state:=stopon1;SIGNAL liftclk :STD_LOGIC;--1S电梯时钟信号SIGNAL tmp :INTEGER RANGE 0 TO 49999999:=0; SIGNAL position:INTEGER RANGE 1 TO 3:=1;--电梯位置SIGNAL fuplight :STD_LOGIC_VECTOR(3 DOWNTO1):="000";--外部上升请求按键指示灯SIGNAL fdnlight :STD_LOGIC_VECTOR(3 DOWNTO1):="000";--外部下降请求按键指示灯SIGNAL stoplight: STD_LOGIC_VECTOR(3 DOWNTO1):="000";--停站请求指示灯SIGNAL udsig :STD_LOGIC:='0';--0表示上升过程,1表示下降过程SIGNAL cnt:INTEGER RANGE 1 TO 5:=1;SIGNAL tmp2:INTEGER RANGE 0 TO 6:=1;SIGNAL po:INTEGER RANGE 1 TO 3:=1;BEGINfenpin :PROCESS(clk,reset)BEGINIF clk'EVENT AND clk='1' THENIF tmp=49999999 THEN tmp<=0;ELSE tmp<=tmp+1; END IF;IF tmp<25000000 THEN liftclk<='0';ELSF liftclk<='1'; END IF; END IF;END PROCESS fenpin;p1 :PROCESS(reset,liftclk)BEGINIF reset='1' THENnowlift<=stopon1; po<=1;ElSIF liftclk'EVENT AND liftclk='1' THENIF nowlift=up THENIF position=1 THEN po<=2;ELSIF position=2 THEN po<=3; END IF;ELSIF nowlift=down THENIF position=2 THEN po<=1;ELSIF position=3 THEN po<=2;END IF; END IF; nowlift<=nextlift;END IF;END PROCESS p1;p2:PROCESS(clk,reset,nowlift,position,f1upbutton,f2dnbutton,f 2upbutton,f3dnbutton,stop1button,stop2button,stop3button,fdnlight,fuplight,stoplight)BEGINIF clk'EVENT AND clk='1' THENIF f1upbutton='1' THEN fuplight(1)<='1';END IF;IF f2upbutton='1' THEN fuplight(2)<='1';END IF;IF f2dnbutton='1' THEN fdnlight(2)<='1';END IF;IF f3dnbutton='1' THEN fdnlight(3)<='1';END IF;IF stop1button='1' THEN stoplight(1)<='1';END IF;IF stop2button='1' THEN stoplight(2)<='1';END IF;IF stop3button='1' THEN stoplight(3)<='1';END IF;CASE nowlift ISWHEN stopon1=>fuplight<="000";fdnlight<="000";stoplight<="000";doorlight<='0';uplight<='0';downlight<='0';udsig<='0';position<=1;tmp2<=1;nextlift<=doorclose;WHEN doorwait1=>nextlift<=doorwait2;WHEN doorwait2=> nextlift<=doorclose;WHEN doorclose=>doorlight<='0';IF udsig='0' THENIF position=3 THENIF stoplight="000" AND fuplight="000" ANDfdnlight="000" THEN nextlift<=doorclose; ELSIF stoplight(3)='1' OR fdnlight(3)='1' THENnextlift<=stop;ELSE nextlift<=down;END IF;tmp2<=3;END IF;IF position=2 THENIF stoplight="000" AND fuplight="000"AND fdnlight="000"THEN nextlift<=doorclose;ELSIF stoplight(2)='1' OR fuplight(2)='1' THEN nextlift<=stop;ELSIF stoplight(3)='1' OR fdnlight(3)='1' THEN nextlift<=up;ELSIF fdnlight(2)='1' THEN nextlift<=stop;ELSIF stoplight(1)='1'OR fuplight(1)='1' THEN nextlift<=down;END IF; tmp2<=2;END IF;IF position=1 THENIF stoplight="000" AND fuplight="000" AND fdnlight="000"THEN nextlift<=doorclose;ELSIF stoplight(1)='1' OR fuplight(1)='1' THEN nextlift<=stop;ELSE nextlift<=up; END IF;tmp2<=1;END IF;END IF;IF udsig='1' THENIF position=3 THENIF stoplight="000" AND fuplight="000" AND fdnlight="000"THEN nextlift<=doorclose;ELSIF stoplight(3)='1' OR fdnlight(3)='1' THEN nextlift<=stop;ELSE nextlift<=down; END IF; tmp2<=3;END IF;IF position=2 THENIF stoplight="000" AND fuplight="000"AND fdnlight="000"THEN nextlift<=doorclose;ELSIF stoplight(2)='1' OR fdnlight(2)='1' THEN nextlift<=stop;ELSIF stoplight(1)='1' OR fuplight(1)='1' THEN nextlift<=down;ELSIF fuplight(2)='1' THEN nextlift<=stop;ELSIF stoplight(3)='1'OR fdnlight(3)='1' THEN nextlift<=up; END IF; tmp2<=2;END IF;IF position=1 THENIF stoplight="000" AND fuplight="000" AND fdnlight="000" THEN nextlift<=doorclose;ELSIF stoplight(1)='1' OR fuplight(1)='1' THEN nextlift<=stop;ELSE nextlift<=up;END IF;tmp2<=1;END IF;END IF;WHEN up =>udsig<='0';uplight<='1';position<=po;IF position=1 THENIF (stoplight(2)='1' OR fuplight(2)='1')THEN nextlift<=stop;ELSIF(stoplight(3)='1'OR fdnlight(3)='1')THEN nextlift<=up;ELSIF fdnlight(2)='1'THEN nextlift<=stop;ELSIF(stoplight(1)='1'ORfuplight(1)='1')THENnextlift<=down;END IF; tmp2<=4; END IF;IF position=2 THENIF (stoplight(3)='1' OR fdnlight(3)='1')THEN nextlift<=stop;ELSE nextlift<=down;END IF; tmp2<=6; END IF;WHEN down=>udsig<='1'; downlight<='1'; position<=po; IF position=3 THENIF (stoplight(2)='1' OR fdnlight(2)='1')THEN nextlift<=stop;ELSIF(stoplight(1)='1'OR fuplight(1)='1')THEN nextlift<=down;ELSIF ( fuplight(2)='1')THEN nextlift<=stop;ELSIF(stoplight(3)='1'OR fdnlight(3)='1')THENnextlift<=up; END IF;tmp2<=0;END IF;IF position=2 THENIF (stoplight(1)='1' OR fuplight(1)='1')THEN nextlift<=stop;ELSE nextlift<=up;END IF;tmp2<=5;END IF;WHEN stop=> uplight<='0';downlight<='0';nextlift<=dooropen;position<=po;IF position=1 THEN tmp2<=1;END IF;IF position=2 THEN tmp2<=2; END IF;IF position=3 THEN tmp2<=3; END IF;WHEN dooropen=>IF udsig='0' THENIF position=1 THEN fuplight(1)<='0';stoplight(1)<='0'; ELSIF position=3 THENstoplight(3)<='0';fdnlight(3)<='0';ELSIF position=2 THENIF stoplight(3)='0'AND fdnlight(3)='0'AND fuplight(2)='0' THEN fdnlight(2)<='0';END IF; fuplight(2)<='0';stoplight(2)<='0';END IF;ELSIF udsig='1' THENIF position=1 THEN fuplight(1)<='0';stoplight(1)<='0'ELSIF position=3 THENstoplight(3)<='0';fdnlight(3)<='0';ELSIF position=2 THENIF stoplight(1)='0'AND fuplight(1)='0'AND fdnlight(2)='0' THENfuplight(2)<='0';END IF;fdnlight(2)<='0';stoplight(2)<='0';END IF;END IF;doorlight<='1';nextlift<=doorwait1;END CASE;END IF;END PROCESS p2;P5:PROCESS(tmp,clk) --控制点阵的进程BEGINIF clk'EVENT AND clk='1' THEN --上升沿有效IF cnt=5 THEN cnt<=1;ELSE cnt<=cnt+1;END IF;CASE TMP2 ISWHEN 1=> CASE cnt ISWHEN1=>ROW<="01111111";COL<="10000000";WHEN2=>ROW<="10111111”;COL<="10000000";WHEN3=>ROW<="11011111";COL<="10000000";WHEN4=>ROW<="11101111";COL<="10000000";WHEN 5=>ROW<="11110111"COL<="10000000";--1END CASE;WHEN 2=> CASE cnt ISWHEN1=>ROW<="01111111";COL<="11100000";WHEN2=>ROW<="10111111";COL<="10000000";WHEN3=>ROW<="11011111";COL<="11100000";WHEN4=>ROW<="11101111";COL<="00100000";WHEN5=>ROW<="11110111";COL<="11100000";--2END CASE;WHEN 3=> CASE cnt ISWHEN1=>ROW<="01111111";COL<="11100000";WHEN2=>ROW<="10111111";COL<="10000000";WHEN3=>ROW<="11011111";COL<="11100000";WHEN4=>ROW<="11101111";COL<="10000000";WHEN5=>ROW<="11110111";COL<="11100000";--3END CASE;WHEN 4=> CASE cnt ISWHEN1=>ROW<="01111111";COL<="10001100";WHEN2=>ROW<="10111111";COL<="10001100";WHEN3=>ROW<="11011111";COL<="10000100";4=>ROW<="11101111";COL<="10000100";WHEN5=>ROW<="11110111";COL<="10000100";--shang1END CASE;WHEN 5=> CASE cnt ISWHEN1=>ROW<="01111111";COL<="11100100";WHEN2=>ROW<="10111111";COL<="10000100";WHEN3=>ROW<="11011111";COL<="11100110";WHEN4=>ROW<="11101111";COL<="00100110";WHEN5=>ROW<="11110111";COL<="11100100";--xia2END CASE;WHEN 6=> CASE cnt ISWHEN1=>ROW<="01111111";COL<="11101100";2=>ROW<="10111111";COL<="10001100";WHEN3=>ROW<="11011111";COL<="11100100";WHEN4=>ROW<="11101111";COL<="00100100";WHEN5=>ROW<="11110111";COL<="11100100";--shang2END CASE;WHEN 0=> CASE cnt ISWHEN1=>ROW<="01111111";COL<="11100100";WHEN2=>ROW<="10111111";COL<="10000100";WHEN3=>ROW<="11011111";COL<="11100110";WHEN4=>ROW<="11101111";COL<="10000110";WHEN5=>ROW<="11110111";COL<="11100100";--xia3END CASE;END CASE;END IF;END PROCESS;END a;五、功能说明该电梯系统实现的是三层点阵显示电梯系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

福建农林大学计算机与信息学院信息工程类实验报告2013年11 月13 日实验项目列表福建农林大学计算机与信息学院信息工程类实验报告系:电子信息工程系专业:电子信息工程年级: 2010级姓名:学号:实验课程: VHDL数字系统设计实验室号:__ 田C407 实验设备号: 07 实验时间: 11.12 指导教师签字:成绩:实验一数控分频器的设计1.实验目的和要求学习数控分频器的设计、分析和测试方法。

2.实验原理信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例1所示。

数控分频器的仿真波形如图1所示:输入不同的CLK频率和预置值D,给出如图1的时序波形。

100.0μs200.0μs300.0μs400.0μs图1 当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns)3.主要仪器设备(实验用的软硬件环境)实验的硬件环境是:微机一台GW48 EDA实验开发系统一套电源线一根十芯JTAG口线一根USB下载线一根USB下载器一个示波器实验的软件环境是:Quartus II 9.0软件4.操作方法与实验步骤(1)创建工程,并命名位test。

(2)打开QuartusII,建立VHDL文件,并输入设计程序。

保存为DVF.(3)选择目标器件。

Acex1k—EP1K100QC208-3。

(4)启动编译。

(5)建立仿真波形图。

(6)仿真测试和波形分析。

(7)引脚锁定编译。

(8)编程下载。

(9)硬件测试5.实验内容及实验数据记录在实验系统上硬件验证例5-20的功能。

可选实验电路模式1(第一章图4);键2/键1负责输入8位预置数D(PIO7-PIO0);CLK由clock0输入,频率选65536Hz 或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER)。

编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。

6.实验数据处理与分析1)实验代码【例1】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT ( CLK : IN STD_LOGIC;D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);FOUT : OUT STD_LOGIC );END;ARCHITECTURE one OF DVF ISSIGNAL FULL : STD_LOGIC;BEGINP_REG: PROCESS(CLK)VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF CLK'EVENT AND CLK = '1' THENIF CNT8 = "" THENCNT8 := D; --当CNT8计数计满时,输入数据D被同步预置给计数器CNT8 FULL <= '1'; --同时使溢出标志信号FULL输出为高电平ELSE CNT8 := CNT8 + 1; --否则继续作加1计数FULL <= '0'; --且输出溢出标志信号FULL为低电平END IF;END IF;END PROCESS P_REG ;P_DIV: PROCESS(FULL)VARIABLE CNT2 : STD_LOGIC;BEGINIF FULL'EVENT AND FULL = '1' THENCNT2 := NOT CNT2; --如果溢出标志信号FULL为高电平,D触发器输出取反IF CNT2 = '1' THEN FOUT <= '1'; ELSE FOUT <= '0';END IF;END IF;END PROCESS P_DIV ;END;2.)实验仿真2.1输入代码2.2编译测试2.3引脚锁定2.4软件仿真结果2.5VHDL文本输入法时序仿真波形●错误波形●调试后得到正确波形3)硬件相关部分的测试2)硬件测试结果可以听到不同的蜂鸣器声音,改变CLK的选择项可以变换声音的频率。

7.质疑、建议、问题讨论通过本次实验我学会了数控分频器的设计、分析和测试方法,但同时实验中还存在一些问题没有解决,如为什么数码管显示的数值是怎么说的,这个在实验中并没有做出进一步的理解与解决;以及对时钟频率影响在程序中的体现都有了进一步的理解,通过实验结果更加理解了实验程序中是如何通过改变蜂鸣器的音调来体现数控分频的,理解了分频的概念。

福建农林大学计算机与信息学院信息工程类实验报告系:电子信息工程系专业:电子信息工程年级: 2010级姓名:学号:实验课程: VHDL数字系统设计实验室号:__ 田C407 实验设备号: 07 实验时间: 11.12指导教师签字:成绩:实验二嵌入式锁相环PLL应用1.实验目的和要求学习使用Cyclone器件中的嵌入式锁相环,为以后的设计作准备。

2.实验原理锁相环路(PLL)亦称自动相位控制(APC)电路,它是一种利用相位误差消除频率误差的反馈控制系统。

如图1所示,由鉴相器(相位比较器)、环路滤波器(低通滤波器)和压控振荡器三个基本部件组成。

3.主要仪器设备(实验用的软硬件环境)实验的硬件环境是:微机一台GW48 EDA实验开发系统一套电源线一根十芯JTAG口线一根USB下载线一根USB下载器一个示波器实验的软件环境是:Quartus II 9.0软件4.操作方法与实验步骤1.打开QuartusII,创建一新工程,工程名称为PLLs,顶层实体名为GW_PLL。

2.建立PLL模块3.创建顶层文件并仿真PLL模块4.实测PLL模块5.实验内容及实验数据记录调用PLL的LPM模块创建GW_PLL.vhd的顶层文件编译并仿真。

修改PLL 的输出频率,再次编译仿真。

步骤如下:(一)建立PLL模块1、首先创建一新工程,工程名称为PLLs,顶层实体名为GW_PLL。

2、在QuartusII的Tools菜单中选择MegaWizard Plug-In Manager,对弹出的界面选择Create a new custom…项,定制一个新的模块。

在弹出的对话框,在左栏选择I/O项下的ALTPLL,再选Cyclone器件和VHDL语言方式,最后输入设计文件存放的路径和文件名,如d:\PLLs\PLL50.vhd。

单击Next按钮后弹出图1 所示的窗口。

2、在图1 所示窗口中首先设置参考时钟频率inclk0为50MHz,注意,这个时钟频率不能低于16MHz,接着在图1所示的窗口中选择锁相环的工作模式(选择内部反馈通道的通用模式)。

单击Next按钮后即进入图2所示的窗口。

在此窗口主要选择PLL的控制信号,如PLL的使能控制pllena;异步复位areset;锁相输出locked等。

为了简便,在此消去所有控制信号。

选择第一个输出时钟信号c0相对于输入时钟的倍频因子是2,图3所示的窗口中选中Use this c1,即选择另一输出时钟端c1,相对输入时钟的倍频因子是1/2,时钟相移和时钟占空比不变,保持原来默认的数据。

4、连续点击“Next”完成设计。

(二)创建顶层文件并仿真PLL模块(参考《EDA技术与VHDL》第7章)下例是调用了锁相环PLL50模块的顶层设计文件,,顶层文件用VHDL编写,保存为GW_PLL.vhd,用set as top level Entity设为顶层文件编译并仿真。

图 1 选择参考时钟为50MHz(输入频率不能小于16MHz)图 2 选择控制信号图 3 选择输出频率为75MHz图 4 修改输出频率选择(三)实测PLL模块对于工程GW_PLL,选择器件为EP1C3TC144,锁相环的频率输入端只能是pin16和pin17脚,在此不仿锁在pin17上,恰好对应实验箱的clock2(clock5对应pin16),所以在实验中要用一短线将Clock0的50MHz信号引接到clock5的输入端(要拔去其上的短路帽,引过来的短线接靠左排上任一针上),输出可锁定于任何一I/O口上。

在此锁在GW48箱上右排座下端的标有“IO26”上,它对应pin67。

编译后下载,用频率计测试此端的频率输出,应该为75MHz。

6.实验数据处理与分析1.实验代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY GW_PLL ISPORT (CLK0 : IN STD_LOGIC;FOUT0 : OUT STD_LOGIC );END GW_PLL;ARCHITECTURE behav OF GW_PLL ISCOMPONENT PLL50PORT(inclk0 : IN STD_LOGIC := '0';c0 : OUT STD_LOGIC );END COMPONENT;BEGINu1 : PLL50 PORT MAP(inclk0=>CLK0,c0=>FOUT0);END behav;2.实验测试设计同时输出3个不同频率的PLL模块。

波形如图17.4仿真波形图:图17.4 选择输出频率为75MHz7.质疑、建议、问题讨论通过本次实验,学会了如何建立模块,如何创建顶层文件以及对模块的仿真,虽然对PLL的相关知识了解的不多,但通过此次实验初步了解了什么是PLL 以及相关的一些设置和操作,但在实践中明显还很是生疏,有待进一步的练习与实践;实验中也要特别注意时钟频率的设置以及一些细节方面,从而减少犯错的机会。

福建农林大学计算机与信息学院信息工程类实验报告系:电子信息工程系专业:电子信息工程年级: 2010级姓名:学号:实验课程: VHDL数字系统设计实验室号:田C407 实验设备号: 07 实验时间: 11.12 指导教师签字:成绩:实验三正弦信号发生器1.实验目的和要求进一步熟悉QuartusII及其LPM_ROM与FPGA硬件资源的使用方法。

2.实验原理正弦信号发生器由三部分组成:数据计数器或地址发生器、数据ROM和D/A。

顶层文件SINGT.VHD在FPGA中实现,包含两部分:ROM的地址发生器由5位计数器担任,正弦数据存储器ROM由LPM_ROM构成。

该结构可以达到最优设计,LPM_ROM底层是FPGA中的EAB或ESB等。

对每周期的正弦波形采样64个点,地址发生器的时钟CLK的输入频率f0与D/A输出的频率f间的关系是f=f0/64。

3.主要仪器设备(实验用的软硬件环境)实验的硬件环境是:微机一台GW48 EDA实验开发系统一套电源线一根十芯JTAG口线一根USB下载线一根USB下载器一个示波器实验的软件环境是:Quartus II 9.0软件4.操作方法与实验步骤根据例1,在Quartus II上完成正弦信号发生器设计,包括仿真和资源利用情况了解(假设利用Cyclone器件)。

相关文档
最新文档