vhdl实验21 (3)

合集下载

VHDL语言设计信号发生器实验报告

VHDL语言设计信号发生器实验报告

实验四用VHDL设计多功能信号发生器一、设计任务基于《VHDL语言》,通过给定的仪器(EDA6000试验箱)设计一个多功能信号发生器,要求:(1)能产生周期性正弦波、方波、三角波、锯齿波以及用户自己编辑的特定波形(选作);(2)输出信号的频率范围为100Hz~200KHz,且输出频率可以调节;(3)具有显示输出波形、频率的功能。

(选作)二、系统顶层框图弦波的数字幅度信息,每个查找表的地址对应正(余)弦波幅度信号,同时输出到数模转换器(DAC)输入端,DAC输出的模拟信号经过低通滤波器(LPF),可以得到一个频谱纯净的正(余)弦波。

二、设计步骤用VHDL语言结合原理图设计实现一个函数信号发生器,输出正弦波、方波和三角波三种波形。

将频率控制、分频、三角波、正弦波、方波发生邓各个模块分别用VHDL语言编程为一个子程序,并把每一个模块转换成图形文件,然后在原理图编辑框调用这些图形模块,连接电路如上图系统顶层框图所示。

通过按键1到按键8控制频率调节f〔7...0〕,用按键6、按键7、按键8控制dlt 、sin 、sqr 波形选通,最后把八位输出接DAC0832通过D/A 转换,从示波器上就能看到波形输出。

按下不同的按键输出不同的波形及频率。

三、系统设计(1)数控分频器模块在时钟的作用下,通过预置分频数DIN ,来改变输出频率。

假如分频系数为N ,波形存储模块存储一个周期的波形,实验里按照一个周期波形采样64个点存储在波形存储模块里。

则输出频率N f f clkout .64=(2).数据存储模块 (存储波形数据)数据存储模块主要存的是正弦波、三角波、锯齿波等一个周期的采样点。

三角波模块可设计一个可逆计数器实现,设计时设置一变量作为工作状态标志,在此变量为0时,当检测到时钟的上升沿进行加同一个数操作;为1时,进行减同一个数操作。

DA 转换采用的DA0832,输入有8个数据端,范围是0到255;而且设置64个时钟周期为一个三角波周期,所有每次加、减为8.锯齿波的存储数据与三角波类似。

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语言实验报告

数字电路设计实验vhdl语⾔实验报告实验⼀秒表计数器的设计⼀、实验⽬的:本实验通过设计四种频率可选的数字时钟系统,以达到熟悉VHDL 语⾔编程语法、设计思路和熟练掌握Quartus II 开发软件的⽬的。

⼆、实验内容:该数字时钟的显⽰格式如下所⽰:HH:MM:SS,其中HH表⽰时计数的两位,MM表⽰分计数的两位,SS表⽰秒计数的两位。

本系统输⼊信号分别为复位信号rst(⾼有效)、sel(两位信号,分别可以选择2分频、4分频8分频和16分频)、clk_in(时钟信号)、8位时输出、8位分输出、8位秒输出(其中⾼4为表⽰对应的⾼半字节、低4位表⽰的低半字节,譬如当时间为08:59:30时,时输出为”0000_1000”,分输出为”0101_1001”,秒输出为”0011_0000”)。

该时钟系统可以通过Sel信号时钟运⾏的快慢。

三、实验流程:通过对实验内容的分析:可以考虑时钟系统的可由三部分组成:1、分频器:分频器为时序电路并且通过《数字电路》理论课程的学习可知由计数器来实现,同学可以回想⼀下实验1中是如何实现计数器电路的设计),该模块主要产⽣2、4、8、16分频的时钟信号;2、多路选择器:在VHDL中多路选择器为组合逻辑,可以有多种实现⽅法,在这⾥主要选⽤了case语句来实现。

该模块的作⽤是从分频器中根据Sel信号选择适当的时钟信号;3、时钟控制器:该模块⽐较复杂,主要实现功能是实现⼀个24⼩时的计时。

当时间为00:00:59的时候下⼀个时钟到来时状态的跳变为00:01:00,计时中多数计数为加1操作,有⼏个特殊状态需要重点考虑:当时间产⽣分进数时,譬如上例。

当时间产⽣时进数时,譬如00:01:59时刻的下⼀个状态为00:02:00;当时间产⽣时进数时,譬如00:59:59是个的下⼀个状态为01:00:00。

当时间产⽣天进数时,譬如23:59:59的下⼀个状态为00:00:00。

四、仿真要求:本次试验的结果全部采⽤功能仿真分析:1、在结果图中能够看到让复位信号rst为有效的情况下,所有的输出为00:00:00;2、当频率选择输出分别为”00”、”01”、”10”、”11”时秒为的进数分别包含2、4、8、16倍clk_in的时钟周期;3、可以看到完整的计时周期00:00:00->23:59:59->00:00:00。

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实验报告汇总

实验一4选一多路选择器一:实验目的及实验环境目的1、熟悉ModelSim SE 6.5c的verilog 的文本设计流程,组合电路的设计、仿真和测试。

2、用verilog语言完成设计4选一多路选择器。

3、熟悉文本输入及仿真步骤。

4、初步了解可编程器件设计的全过程。

环境1、P C 机一台2、M odelSim SE 6.5c二. 实验内容1、用verilog语言完成设计4选一多路选择器,2、用结构建模及数据流建模两种方法实现。

3、对于所设计的程序进行编译,检查纠错。

4、程序完善之后进行程序的仿真并进行波形的记录与分析三.实验步骤1、建立工程2、添加文件到工程3、编译文件4、查看编译后的设计单元5、将信号加入波形窗口6、运行仿真四.运行结果五.总结本次实验让我更加的熟悉modelsim使用方法,以及使用时应该注意的问题。

在试验中也学习到了Verilog语法。

在实验中我们应该注意verilog的格式要求,在用编程语言编程的时候,要自习留意语法标准,整理好逻辑思维的同时保证格式的正确。

否则就会浪费大量的时间来完成实验。

试验开始到结束这一过程中,我遇到了很多困难,后来都在同学的提醒和帮助下克服了。

相信有了这次对这个语言和这个软件的接触,我们都有了更加深入的理解。

六.源代码module mux41(a,b,c,d,s1,s0,out);input[1:0] a,b,c,d;input s1,s0;output[1:0] out;reg[1:0] out;always @(a or b or c or d or s1 or s0)begin :mux41case({s1,s0})2'b00: out<=a;2'b01: out<=b;2'b10: out<=c;2'b11: out<=d;default: out=a;endcaseendendmodulemodule sti;reg[1:0] a,b,c,d;reg s0,s1;wire[1:0] out;mux41 dtg(a,b,c,d,s0,s1,out);initialbegina=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=0;s1=0;#100 a=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=0;s1=1;#100 a=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=1;s1=0;#100 a=3'd0;b=3'd1;c=3'd2;d=3'd3;s0=1;s1=1;endendmodule实验二、Verilog HDL设计分频器及计数器一.实验目的及实验环境1)实验目的1、掌握较复杂数字电路或系统的纯Verilog HDL实现方法;2、体会纯Verilog HDL语言输入设计与原理图输入设计的差别;3、更加熟练的使用modelsim软件;2)实验环境计算机一台,使用modelsim软件进行实验仿真3)实验内容1、使用modelsim设计二分频器;2、使用modelsim设计模8计数器;三.测试数据及运行结果1、分频器正常测试数据(3组)及运行结果;2、计数器正常测试数据(3组)及运行结果通过本次实验,进一步熟悉并加深了对verilong语言的认识,初步运用并熟悉了整个程序及操作,加深对分频器的理解。

2021年VHDL实验报告

2021年VHDL实验报告

VHDL实验报告专用集成电路实验报告 1 1 3 05 0 Z01 1 1 305 024237 刘德文实验一 ___平台软件 ___与认知实验实验内容 1 1 、本实验以三线八线译码器 (LS7 4 13 8) ) 为例, ,在在 X X ili nx IS E 9 9 、2 2 软件平台上完成设计电路得 L VHDL 文本输入、语法检查、编译、仿真、管脚分配与编程下载等操作。

下载芯片选择 X X ix linx 公司得 C C oolR R u nne r I II 系列XC 2C25 6- - 7P Q28 08 作为目标仿真芯片。

2 2、、用1中所设计得得三线八线译码器 (LS74138) 生成一个 LS74 13 3 8元件, , 在X il in n xISE 9 。

2 2 软件原理图设计平台上完成 LS74 18 38 元件得调用, , 用原理图得方法设计三线八线译码器 (L S7 413 8 ), 实现编译, , 仿真, , 管脚分配与编程下载等操作。

源程序: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE。

STD_LOGIC_ARITH。

ALL; use IEEE、STD_LOGIC_UNSIGNED。

ALL; -- U ___ent the following lines to use thedeclarations that are -—provided for instantiating Xilinx primitive ponents、——library UNISIM; -—use UNISIM。

VComponents。

all; entity ls74138 is Port ( g1 : in std_logic; g2 : in std_logic; inp : in std_logic_vector(2 do wnto0); y : out std_logic_vector(7 downto 0));end ls74138; architecture Behavioral of ls74138 is beginprocess(g1,g2,inp) begin if((g1 andg2)=’1’) then case inp is when "000"=>y〈=”00000001"; ;"01000000"=〈y〉="100” nehw? when "010"=>y〈="00000100"; ? when "011”=〉y〈="00001000"; ? when ”100”=>y〈="00010000”; ;"00000100”=生成元器件及连接电路思考: : 有程序可以瞧出, 定义了三个输入端, 一个输出端。

eda技术实用教程-veriloghdl答案

eda技术实用教程-veriloghdl答案

eda技术实用教程-veriloghdl答案【篇一:eda技术与vhdl程序开发基础教程课后答案】eda的英文全称是electronic design automation2.eda系统设计自动化eda阶段三个发展阶段3. eda技术的应用可概括为4.目前比较流行的主流厂家的eda软件有、5.常用的设计输入方式有原理图输入、文本输入、状态机输入6.常用的硬件描述语言有7.逻辑综合后生成的网表文件为 edif8.布局布线主要完成9.10.常用的第三方eda工具软件有synplify/synplify pro、leonardo spectrum1.8.2选择1.eda技术发展历程的正确描述为(a)a cad-cae-edab eda-cad-caec eda-cae-cadd cae-cad-eda2.altera的第四代eda集成开发环境为(c)a modelsimb mux+plus iic quartus iid ise3.下列eda工具中,支持状态图输入方式的是(b)a quartus iib isec ispdesignexpertd syplify pro4.下列几种仿真中考虑了物理模型参数的仿真是(a)a 时序仿真b 功能仿真c 行为仿真d 逻辑仿真5.下列描述eda工程设计流程正确的是(c)a输入-综合-布线-下载-仿真b布线-仿真-下载-输入-综合c输入-综合-布线-仿真-下载d输入-仿真-综合-布线-下载6.下列编程语言中不属于硬件描述语言的是(d)a vhdlb verilogc abeld php1.8.3问答1.结合本章学习的知识,简述什么是eda技术?谈谈自己对eda技术的认识?答:eda(electronic design automation)工程是现代电子信息工程领域中一门发展迅速的新技术。

2.简要介绍eda技术的发展历程?答:现代eda技术是20世纪90年代初从计算机辅助设计、辅助制造和辅助测试等工程概念发展而来的。

实验三VHDL

实验三VHDL

4、模7计数器
硬件描述语言1
端口说明: PORT( clk : IN STD_LOGIC; q : OUT INTEGER RANGE 0 TO 6);
功能描述:
VARIABLE cnt : INTEGER RANGE 0 TO 6; BEGIN IF (clk'EVENT AND clk = '1') THEN IF cnt < 6 THEN cnt := cnt + 1; ELSE cnt :=0; END IF; END IF; q <= cnt;
ARCHITECTURE arc_shiftreg OF shiftreg IS SIGNAL q_temp : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(cr,clk) BEGIN …… …… --见下页 END PROCESS; q<=q_temp; END arc_shiftreg;
假设数据已经被时钟的上升沿打入D触发器,那么数据 到达第一个触发器的Q端需要Tco,再经过组合逻辑的 延时Tdelay到达的第二个触发器的D端,要想时钟能在 第二个触发器再次被稳定的锁入触发器,则时钟的延 迟不能晚于Tco+Tdelay+Tsetup,(回顾建立和保持时 间的概念,就可以理解Tdelay) 由以上分析可知:最 小时钟周期:T=Tco+Tdelay+Tsetup 最快时钟频率 F= 1/T PLD开发软件也正是通过这个公式来计算系统运行 速度Fmax
硬件描述语言2: 功能描述:
IF (clk'EVENT AND clk='1') THEN CASE cnt IS WHEN "000"=>cnt<="001"; WHEN "001"=>cnt<="010"; WHEN "010"=>cnt<="011"; WHEN "011"=>cnt<="100"; WHEN "100"=>cnt<="101"; WHEN "101"=>cnt<="000"; WHEN others=>NULL; END CASE; END IF; q <= cnt;

VHDL数字电路课程实验报告

VHDL数字电路课程实验报告

VHDL数字电路课程实验报告实验一8分频器一、实验要求:分别用信号量和变量实现八分频器二、实验过程:1、代码:8分频器vhdlibrary ieee;use ieee.std_logic_1164.all;entity freq_divider isport(clk: in std_logic;out1, out2: buffer bit);end freq_divider;architecture example of freq_divider issignal count1: integer range 0 to 7;beginprocess(clk)variable count2: integer range 0 to 7;beginif(clk'event and clk='1') thencount1<=count1+1;count2:=count2+1;if(count1=3) thenout1<=not out1;count1<=0;end if;if(count2=4) thenout2<=not out2;count2:=0;end if;end if;end process;end example;八分频器tbLIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY fd_tb isEND fd_tb;architecture behavior of fd_tb iscomponent freq_dividerport(clk:IN STD_LOGIC;out1, out2: buffer bit);end component;signal clk:std_logic;signal out1,out2:bit;beginu1: freq_divider port map(clk,out1,out2);processbeginclk<='0';wait for 50 ns;loopclk<=not clk;wait for 25 ns;end loop;end process;end behavior;2、结果图:实验二实现例8.6一、实验要求:电路只有一个输入时钟信号,输出信号在适中的两个边沿都会发生变化二、实验内容:1、代码信号发生器vhdENTITY signal_gen ISPORT (clk: IN BIT;outp: OUT BIT);END signal_gen;ARCHITECTURE fsm OF signal_gen ISTYPE state IS (one, two, three);SIGNAL pr_state1, nx_state1: state;SIGNAL pr_state2, nx_state2: state;SIGNAL out1, out2: BIT;BEGINPROCESS(clk)BEGINIF (clk'EVENT AND clk = '1') THENpr_state1 <= nx_state1;END IF;END PROCESS;PROCESS (clk)BEGINIF (clk'EVENT AND clk = '0') THENpr_state2 <= nx_state2;END IF;END PROCESS;PROCESS (pr_state1)BEGINCASE pr_state1 ISWHEN one =>out1 <= '0';nx_state1 <= two;WHEN two =>out1 <= '1';nx_state1 <= three;WHEN three =>out1 <= '1';nx_state1 <= one;END CASE;END PROCESS;PROCESS (pr_state2)BEGINCASE pr_state2 ISWHEN one =>out2 <= '1';nx_state2 <= two;WHEN two =>out2 <= '0';nx_state2 <= three;WHEN three =>out2 <= '1';nx_state2 <= one;END CASE;END PROCESS;outp <= out1 AND out2;END fsm;信号发生器tbentity tb_fsm isend tb_fsm;architecture behavior of tb_fsm is component signal_gen isport( clk: in bit;outp: out bit);end component;signal clk,outp:bit;beginu1: signal_gen port map(clk,outp); processbeginclk<='0';wait for 20 ns;loopclk<=not clk;wait for 10 ns;end loop;end process;end behavior;2、结果图实验三常数比较器一、实验要求常数比较器,用于比较的变量位宽应大于等于常数二、实验内容1、代码常数比较器vhdLIBRARY ieee;USE ieee.std_logic_1164.all;entity compare isport(b: in integer range 0 to 15;x1,x2,x3: out std_logic);end compare;architecture compare of compare isconstant a: integer:=10;beginx1<='1' when a>b else '0';x2<='1' when a=b else '0';x3<='1' when a<b else '0';end compare;常数比较器tbLIBRARY ieee;USE ieee.std_logic_1164.all;entity tb_compare isend tb_compare;architecture behavior of tb_compare iscomponent compareport(b: in integer range 0 to 15;x1,x2,x3: out std_logic);end component;signal b: integer;signal x1,x2,x3: std_logic;beginu1: compare port map(b, x1,x2,x3);processbeginb<=5; wait for 10 ns;b<=8; wait for 10 ns;b<=10; wait for 10 ns;b<=13; wait for 10 ns; b<=10; wait for 10 ns; b<=3; wait for 10 ns; end process;end behavior;2、结果图实验四序列检测器一、实验要求序列检测’1001’弱检测到,输出‘1‘,否则输出’0‘二、实验内容1、状态图2、代码序列检测器vhdlibrary ieee;use ieee.std_logic_1164.all;entity string_detector isport(datain,clk: in bit;q: out bit);end string_detector;architecture sd of string_detector istype state is (zero, one, two, three, four);signal pr_state, nx_state: state;beginprocess(clk)beginif(clk'event and clk='1') thenpr_state<=nx_state;end if;end process;process(datain, pr_state)begincase pr_state iswhen zero=>q<='0';if(datain='1') then nx_state<=one;else nx_state<=zero;end if;when one=>q<='0';if(datain='0') then nx_state<=two;else nx_state<=zero;end if;when two=>q<='0';if(datain='0') then nx_state<=three;else nx_state<=zero;end if;when three=>q<='0';if(datain='1') then nx_state<=four;else nx_state<=zero;end if;when four=>q<='1';nx_state<=zero;end case;end process;end sd;序列检测器tb------------------------------------------------------------------ library ieee;use ieee.std_logic_1164.all;------------------------------------------------------------------ entity testBench isend testBench;------------------------------------------------------------------architecture test of testBench iscomponent string_detector isport(datain,clk: in bit;q: out bit);end component;signal datain,clk:bit;signal q:bit;beginSD: string_detector port map(datain,clk,q);processbeginfor i in 0 to 100 loopclk<='0';wait for 10 ns;clk<='1';wait for 10 ns;end loop;end process;processbegindin<='1';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;din<='1';wait for 20ns;din<='0';wait for 20ns;end process;end test;3、结果图。

RAM ROM设计(VHDL)实验报告

RAM ROM设计(VHDL)实验报告

实验报告4——SRAM/ROM的设计一、实验内容1)设计一个256*16bit的SRAM, data_in是数据输入端,cs/wr/rd分别是片选、写、读信号(都是高电平或上升沿有效),data是数据输出端(端口定义见讲课内容)2)设计一个256*16bit的ROM,cs/rd分别是片选、读信号(都是高电平或上升沿有效),data是数据输出端(端口定义见讲课内容)。

要求在ROM中存放一段机器码组成的程序,实现1+2+…+10得到结果的功能,编写出机器码程序,并存放在ROM中,能在时序仿真中正确读出各条指令。

二、实验目的1)学习SRAM、ROM的工作原理和使用方法;2)学习VHDL的相关内容;3)掌握SRAM、ROM的VHDL设计,理解机器码的作用。

三、实验原理1)RAM:根据SRAM工作原理,SRAM需要实现读取及写入数据的功能,并由相应信号控制实现功能。

由设计要求,首先确定信号端口以及数据类型与大小,即数据输入端(data_in)、数据输出端(data)、地址信号(addr)、片选(cs)、读(rd)、写(wr)信号。

根据256*16bit大小,随即确定地址大小为8bit,输入数据大小为16bit。

其次,根据存储器大小,建立ram初始化文件。

实现功能时,条件为先判断读(写)信号是否为高电平或上升沿,若是,此时片选信号若为高电平且写(读)信号为低电平,则可实现读或写的功能。

2)ROM:根据ROM工作原理,ROM只需实现读取数据的功能,并由相应信号进行控制。

由设计要求,首先确定信号端口以及数据类型与大小,即数据输出端(data),读(wr),片选(cs),地址(addr)。

由256*16bit大小,即可确定地址长度为8bit,输出数据大小为16bit。

并根据要求建立.mif初始化文件。

实现功能时,要求当rd信号为上升沿或高电平且片选信号为高电平时有效,即可实现读的功能。

实验要求ROM中存放一段机器码组成的程序,实现1+2+…+10。

vhdl计数器实验报告

vhdl计数器实验报告

vhdl计数器实验报告《VHDL计数器实验报告》摘要:本实验利用VHDL语言设计了一个简单的计数器电路,并通过FPGA实现了该计数器。

实验结果表明,VHDL计数器能够准确地实现计数功能,具有较高的稳定性和可靠性。

引言:计数器是数字电路中常见的一种基本电路,用于实现对输入信号的计数和统计。

在本次实验中,我们利用VHDL语言设计了一个简单的计数器电路,并通过FPGA实现了该计数器。

本实验旨在通过实际操作和观察,加深对VHDL语言和计数器电路的理解,提高实验者的实际动手能力和问题解决能力。

实验内容:1. VHDL语言设计计数器电路2. 在FPGA上实现计数器电路3. 调试和测试计数器电路实验步骤:1. 设计计数器电路的VHDL代码,包括计数器的输入输出端口、计数器的计数规则和状态转换规则等。

2. 将VHDL代码综合成逻辑门电路,并下载到FPGA开发板上。

3. 运行FPGA开发板,观察计数器电路的工作情况,调试和测试计数器电路。

实验结果:经过实验,我们成功设计了一个简单的4位二进制计数器,能够准确地实现计数功能。

在FPGA开发板上实现该计数器电路后,我们观察到计数器能够按照预期的规则进行计数,并且在每个计数值上能够稳定地输出正确的结果。

在不同的输入条件下,计数器电路都能够正常工作,具有较高的稳定性和可靠性。

结论:通过本次实验,我们深入了解了VHDL语言的基本语法和计数器电路的设计原理,掌握了VHDL语言设计数字电路的方法和技巧。

同时,我们通过实际操作和观察,加深了对计数器电路的理解,提高了实际动手能力和问题解决能力。

本次实验取得了良好的实验效果,为今后的数字电路实验和项目设计奠定了良好的基础。

序列信号发生器VHDL设计实验报告

序列信号发生器VHDL设计实验报告

实验三序列信号发生器VHDL设计一、实验目的1、设计一个序列信号发生器,可以在时钟的作用下周期性的产生1110010序列信号2、学习时序电路的设计方法;3、掌握产生周期性信号电路的设计方法;4、掌握同步和异步概念;5、掌握仿真的目的和作用;二、实验环境QuartusII 、PC机、GW-PK2 EDA实验箱三、实验原理给出原理图,说明行为描述方式设计序列信号发生器的原理。

可以产生周期信号的序列信号发生器由计数器和译码器构成。

若想产生1110010序列信号,则需要三位二进制计数器,从000记到110,当时钟是上升沿时,若当前记到110,则将计数清为000,再从头开始,否则计数加1,译码器将每个三位二进制数转换为一位序列信号,计数器和译码器分别由两个进程实现。

四、实验内容及要求利用QuartusII完成序列信号发生器的VHDL设计及仿真测试,给出仿真波形,进行引脚锁定,并在实验箱上进行硬件验证。

五、实验步骤(1)用文本方式输入设计文件并存盘①创建工程,利用“New Preject Wizard”创建此设计工程。

选择菜单“File” “New Preject Wizard”,点击Next,即可弹出工程设置对话框点击此框最上一栏右侧的按钮“…”,设置工程路径,找到文件夹D:\Quartus8\vhdl_code\three,填写工程名和顶层文件名称后,点击Next按钮进行下一步。

②添加设计源程序。

如果已有源程序,可以在此加入到工程中,如果没有点击Next进行下一步。

③选择目标芯片。

首先在“Family”栏选芯片系列,在此选“ACEX1K”系列,选择此系列的具体芯片:EP1K30TC144-3。

④选择仿真器和综合器类型。

点击上图的Next按钮,这时弹出的窗口是选择仿真器和综合器类型的,如果都是选默认的“NONE”,表示都选QuartusII中自带的仿真器和综合器,因此,在此都选默认项“NONE”。

⑤结束设置。

VHDL实验(完整版)

VHDL实验(完整版)

实验一 Quartus II软件使用与十进制计数器一、实验目的熟悉使用Quartus II软件二、实验内容安装Quartus II软件并成功注册、使用Quartus II软件建立工程并完成十进制计数器三、实验仪器、设备计算机、Quartus II软件四、实验步骤1.打开安装文件位于…quartusII6.0\disk1\install.exe,根据提示进行下一步操作,在弹出框中选择第一个选项,install Quartus II and Related Software。

Quartus II的安装步骤1接下来的安装中选择下一步,到下图选择界面。

只勾选安装Quartus II 6.0即可。

Quartus II的安装步骤22.完成安装步骤2后选择下一步至下图所示,选择完全安装complete,再继续点击下一步至安装开始。

完全安装Quartus II软件软件安装途中出现如下图所示情况时,选择安装文件中的…disk2\disk2\quartus,然后选择确定——OK继续安装直到结束。

安装过程中换disk2路径Quartus II软件的安装至此结束,此安装步骤WINXP/WIN 7均有效,WIN8若有问题,请修改兼容权限。

3.软件注册。

软件安装结束后打开Quartus II软件将出现下图所示情况,这是没有注册的提醒,我们必须先进行注册才能建立工程文件,若大家忽略了这个提示窗口,直接进行工程建立等工作,任何仿真图和编译功能都无法正常使用,等于白费功夫浪费时间,还要重新做,非常影响学习兴趣和情绪。

(由于软件注册是绑定MAC物理地址,所以每台机器的license 是完全不一样的,实验室的电脑已经安装好了Quartus II软件,但是没有注册,所以做实验的时候一点要先注册,不然就白做了)Quartus II软件提示未注册弹窗注册方法,打开quiic7.1 lisence 生成器文件夹中的keymaker.exe,在弹出的窗口中点击Make License,在文件夹中就会出现和本台机器相匹配的license.dat。

(最新版)vhdl实验报告

(最新版)vhdl实验报告

福建农林大学计算机与信息学院信息工程类实验报告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的输入值,可听到不同音调的声音。

VHDL实验报告Quartus II实验操作

VHDL实验报告Quartus II实验操作

实验课程名称 VHDL硬件描述语言实验报告实验项目名称 Quartus II实验操作专业班级电子信息科学与技术08级1班学生姓名郎子龙学号************指导教师李良荣理学院实验时间:2010年12月5日Quartus II实验操作1.实验目的(1)掌握EDA工具QuartusII软件的使用方法。

(2)学会用QuartusII软件建立项目并编写程序和调试下载的方法。

(3)掌握VHDL程序的软件及硬件的仿真方法。

(4)学会使用实验室提供的“KH-31001型FPGA/CPLD开发试验平台”进行验证。

(5)熟练掌握VHDL程序的编写方法和注意事项。

2.实验要求(1)编写实验所用的VHDL程序。

(2)使用QuartusII编译,查找程序错误并修改至正确无误。

(3)使用QuartusII仿真,生成波形文件。

(4)使用QuartusII进行引脚的分配,再次编译,生成可下载到开发试验平台的文件。

(5)下载到开发平台进行硬件验证。

3.实验准备(1)装有QuartusII软件的电脑一台。

(2)连接好电脑的“KH-31001型FPGA/CPLD开发试验平台”。

(3)预先编写好的VHDL 程序。

4.实验步骤1.新建设计:点击工具条中的按钮(或主菜单File下选择)即进入设计文档选择窗口,如图1所示。

还有另一种方法是先建项目,再建文档。

这里用的是第一种方法。

(1)建立VHDL设计文件:在图1中选择VHDL file即可进入VHDL文件编辑界面,输入设计源程序,点击QuartusII实验操作| VHDL硬件描述语言实验报告 1保存文件,这时将弹出如图2所示提示窗口,选择存储目标文件夹、输入文件名后点击,又出现如图3追求的项目存储提示窗口,点击“是”后弹出如图4所示信图1 QuartusII 设计界面及文档建立方法息输入提示窗,在中输入D:/Users/MSI/Documents/QUARTUSII/CNT4/CNT4后点击,可能会弹出如图5所示询问信息(不存在,是否现在创建该项目文件夹),点击“是”确定即可,保存后界面如图6所示。

实验三_VHDL时序逻辑电路设计

实验三_VHDL时序逻辑电路设计

实验三实验三 VHDL VHDL VHDL 时序逻辑电路设计时序逻辑电路设计 一、实验目的一、实验目的1. 熟悉用VHDL 语言设计时序逻辑电路的方法语言设计时序逻辑电路的方法 2. 熟悉用Quartus 文本输入法进行电路设计文本输入法进行电路设计 二、实验所用仪器元件及用途二、实验所用仪器元件及用途 1. 计算机:装有Quartus 软件,为VHDL 语言提供操作场所。

语言提供操作场所。

2. 直流稳压电源:通过USB 接口实现,为实验开发板提供稳定电源。

接口实现,为实验开发板提供稳定电源。

3. 数字系统与逻辑设计实验开发板:使试验结果下载到开发板上,实现整个实验的最终结果。

果。

三、实验内容三、实验内容 1. 用VHDL 语言设计实现一个8421码十进制计数器。

码十进制计数器。

(1) 实验内容及要求:在Quartus 平台上设计程序和仿真题目要求,并下载到实验板上验证试验结果。

验证试验结果。

(2) 试验结果:VHDL 代码和仿真结果。

代码和仿真结果。

2. 用VHDL 语言设计实现一个分频系数为8,分频输出信号占空比为50%的分频器。

的分频器。

(1) 实验内容及要求:在Quartus 平台上设计程序和仿真题目要求。

平台上设计程序和仿真题目要求。

(2) 试验结果:VHDL 代码和仿真结果。

代码和仿真结果。

3. 用VHDL 语言设计实现一个控制8个发光二极管亮灭的电路。

个发光二极管亮灭的电路。

(1) 实验内容及要求:在Quartus 平台上设计程序和仿真题目要求,并下载到实验板上验证试验结果。

验证试验结果。

a. 单点移动模式:一个点在8个发光二极管上来回的亮个发光二极管上来回的亮b. 幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间点灭,依次往复往复c. 通过拨码开关或按键控制两种模式的转换通过拨码开关或按键控制两种模式的转换 (2) 试验结果:VHDL 代码和仿真结果。

vhdl实验报告--蜂鸣器

vhdl实验报告--蜂鸣器

VHDL实验报告一、实验目的1、掌握蜂鸣器的使用;2、通过复杂实验,进一步加深对VHDL语言的掌握程度。

二、实验原理乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。

而要准确地演奏出一首乐曲,仅仅让蜂鸣器能够发声是不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间。

由此可见,乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。

乐曲的12平均率规定:每2个八度音(如简谱中的中音1与高音1)之间的频率相差1倍。

在2个八度音之间,又可分为12个半音。

另外,音符A(简谱中的低音6)的频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音。

由此可以计算出简谱中从低音l至高音1之间每个音符的频率,如表2.1所示。

音名频率/Hz音名频率/Hz音名频率/Hz低音1261.6 中音1523.3 高音11045.5低音2293.7 中音2587.3 高音21174.7低音3329.6 中音3659.3 高音31318.5低音4349.2 中音4698.5 高音41391.1低音5392 中音5784 高音51568低音6440 中音6880 高音61760低音7493.9 中音7987.8 高音71975.5表2.1 简谱音名与频率的对应关系产生各音符所需的频率可用一分频器实现,由于各音符对应的频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。

若分频器时钟频率过低,则由于分频系数过小,四舍五入取整后的误差较大;若时钟频率过高,虽然误差变小,但分频数将变大。

实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取合适的时钟频率。

实际上,只要各个音符间的相对频率关系不变,演奏出的乐曲听起来都不会走调。

音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。

因此,要控制音符的音长,就必须知道乐曲的速度和每个音符所对应的节拍数,本例所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要提供一个4HZ的时钟频率即可产生四分音符的时长。

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

福建农林大学计算机与信息学院信息工程类实验报告2013年11 月13 日实验项目列表福建农林大学计算机与信息学院信息工程类实验报告系:电子信息工程系专业:电子信息工程年级: 2010级姓名:学号: 10226000433 实验课程: VHDL数字系统设计实验室号:__ 田C407 实验设备号: 33 实验时间: 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 = "11111111" 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.质疑、建议、问题讨论老实说在上EDA技术实用教程这门课的时候就有做过和这个非常相似的试验,因而通过做这个试验让我找回很多我已经完全忘记掉的东西。

例如,最简单的如何进行仿真的问题,以及下载到硬件上该注意的问题等。

所以这个试验总体来说,还是蛮顺利的。

福建农林大学计算机与信息学院信息工程类实验报告系:电子信息工程系专业:电子信息工程年级: 2010级姓名:学号: 10226000433 实验课程: VHDL数字系统设计实验室号:__ 田C407 实验设备号: 33 实验时间: 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.质疑、建议、问题讨论通过这次实验,我对Quartus II 9.0软件有了更加深刻的了解。

学会了如何建立模块,如何创建顶层文件以及对模块的仿真。

不过对PLL的相关知识了解还很不够,但通过此次实验初步了解了什么是PLL 以及相关的一些设置和操作,但在实践中明显还很是生疏,有待进一步的练习与实践。

实验中也要特别注意时钟频率的设置以及一些细节方面,从而减少犯错的机会。

福建农林大学计算机与信息学院信息工程类实验报告系:电子信息工程系专业:电子信息工程年级: 2010级姓名:学号: 10226000433 实验课程: VHDL数字系统设计实验室号:__ 田C407 实验设备号: 33 实验时间: 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。

相关文档
最新文档