vhdl实验报告

合集下载

VHDL实验报告JK触发器、同步计数器

VHDL实验报告JK触发器、同步计数器

Verilog HDL实验报告Verilog 实验报告题目:JK触发器、同步计数器系部名称:通信工程专业名称:通信工程班级:班内序号:学生姓名:时间:2010.11.28一、实验内容:用JK触发器构成同步计数器:设计一个同步计数器,其逻辑图和JK触发器的逻辑图所示。

清零信号clear低电平有效,输入数据在时钟信号clock的上升沿被锁存,触发器在clock的下降沿输出,当count_enable信号为低电平时停止计数。

写出同步计数器的verilog描述和激励模块,在激励模块中使用clear和count_enable对计数器进行测试,并显示输出计数Q[3:0]。

二、实验原理图:JK触发器构成同步计数器源代码://主模块module synchronous_counter(clear,clock,count_enable,Q);input clear,clock,count_enable;output [3:0] Q;wire qbar1,qbar2,qbar3,qbar0;wire a,b,c;assign a = Q[0] & count_enable;assign b = a & Q[1];assign c = b & Q[2];JK_flip_flop myJK(count_enable,count_enable,clock,clear,Q[0],qbar0);JK_flip_flop myJK1(a,a,clock,clear,Q[1],qbar1);JK_flip_flop myJK2(b,b,clock,clear,Q[2],qbar2);JK_flip_flop myJK3(c,c,clock,clear,Q[3],qbar3);endmodule//调用的JK触发器模块module JK_flip_flop(j,k,clock,clear,q,qbar);input j,k,clock,clear;output q,qbar;wire a,b,y,ybar,c,cbar,d,q,qbar;assign a = ~ (((qbar & j)& clock) & clear);assign b = ~ ((clock & k) & q);assign y = ~ (a & ybar);assign ybar = ~ ((y & clear) & b);assign c = ~(y & cbar);assign cbar = ~ clock;assign d = ~ (cbar & ybar);assign q = ~ (c & qbar);assign qbar = ~ ((q & clear) & d);endmodule测试文件源代码:module count_test;reg count_enable=1,clock=0,clear=0;wire [3:0]Q;synchronous_counter myCount(clear,clock,count_enable,Q);initial #10 clear=1;always@(negedge clock)begin$monitor($time," clear=%b,count_enable=%b,Q=%b%b%b%b\n",clear,count_enable,Q[3],Q[2],Q[1],Q[0]);endalways clock = #5 ~clock;always count_enable= #170 ~count_enable; endmodule实验结果:波形图:三、实验心得:这次实验比上一次顺利多了,可能是因为有了前一次的铺垫,我对软件的熟悉度有了一定的提高。

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实验报告--蜂鸣器

vhdl实验报告--蜂鸣器VHDL 实验报告蜂鸣器一、实验目的本次实验的主要目的是通过使用 VHDL 语言来设计并实现一个蜂鸣器的控制电路,深入理解数字电路的设计原理和 VHDL 编程的基本方法,掌握硬件描述语言在实际电路设计中的应用,提高自己的逻辑思维和问题解决能力。

二、实验原理蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电。

常见的蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种。

有源蜂鸣器内部自带了振荡源,只要给其供电就能发出固定频率的声音;无源蜂鸣器则需要外部提供一定频率的脉冲信号才能发声。

在本实验中,我们使用 VHDL 语言来控制一个无源蜂鸣器。

通过编写代码,生成特定频率的脉冲信号,从而驱动蜂鸣器发声。

三、实验设备及工具1、计算机2、 Quartus II 软件3、开发板四、实验内容及步骤1、设计思路首先,需要确定蜂鸣器发声的频率。

通过计算得出所需的时钟周期数。

然后,使用计数器来产生特定频率的脉冲信号。

最后,将脉冲信号输出到蜂鸣器的控制引脚。

2、 VHDL 代码编写```vhdllibrary ieee;use ieeestd_logic_1164all;use ieeenumeric_stdall;entity buzzer_control isport(clk : in std_logic;rst : in std_logic;buzzer : out std_logic);end entity;architecture Behavioral of buzzer_control isconstant CLK_FREQ : integer := 50_000_000; 系统时钟频率constant BUZZER_FREQ : integer := 1000; 蜂鸣器发声频率signal counter : integer range 0 to CLK_FREQ/BUZZER_FREQ 1; signal clk_div : std_logic;beginprocess(clk, rst)beginif rst ='1' thencounter <= 0;clk_div <='0';elsif rising_edge(clk) thenif counter = CLK_FREQ/BUZZER_FREQ 1 thencounter <= 0;clk_div <= not clk_div;elsecounter <= counter + 1;end if;end if;end process;buzzer <= clk_div;end architecture;```3、编译与仿真将编写好的 VHDL 代码在 Quartus II 软件中进行编译。

VHDL实验报告与代码毕业设计(论文)

VHDL实验报告与代码毕业设计(论文)

实验一. 分频器设计一.实验目的1.熟悉QUARTUSII 软件的使用2.熟悉PLD设计流程3. 学习分频器的设计二.实验内容设计一个最大分频为225的分频器,将50MHz时钟作为输入三.实验框图四.管脚设定CLOCK_50 PIN_N2LEDR[0] PIN_AE23五.实验代码LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_UNSIGNED.all;ENTITY clk1 ISPORT(clk:IN STD_LOGIC;DIGIT:OUT STD_LOGIC);END clk1;ARCHITECTURE clk1 OF clk1 ISBEGINCOUNT: PROCESS(clk)V ARIABLE temp:STD_LOGIC_VECTOR(25 DOWNTO 0);BEGINIF(clk'EVENT AND clk = '1')THENtemp := temp+1;IF(temp(25)='1') THENtemp:=(OTHERS=>'0');END IF;END IF;DIGIT <= temp(24);END PROCESS count;END clk1;六.心得体会通过这次实验,我初步掌握了QUARTUSII 软件的使用,为今后的实验打下基础。

实验二. VHDL描述风格比较一.实验目的1.深入体会VHDL三种描述风格的区别2. 学习3输入表决器,异或门的实现3.设计一个5输入表决器。

二.实验内容以3输入表决器,异或门,通用寄存器等代码为例,深入体会VHDL描述风格。

1.学习已给的3输入表决器代码,完成3输入表决器的三种描述方式的验证比较。

在QUARTUS II中对程序进行编译,下载,验证。

使用拔码开关SW0,SW1,SW2作为三个输入,输出在LEDR0表示,亮表示‘1’,不亮表示‘0’2.学习已给的异或门代码,完成异或门的三种描述方式的验证比较。

VHDL实验报告(1)

VHDL实验报告(1)

VHDL 实验报告******班级:电子0701学号:************实验一组合逻辑电路设计一实验目的:1. 熟悉mux+pluxII软件,可以进行新文件的编辑和文件的修改。

2. 掌握门电路VHDL语言程序设计方法。

3. 掌握选择器VHDL语言程序设计方法。

4. 掌握加法器VHDL语言程序设计方法。

5. 熟悉VHDL编程的基本方法。

二实验设备:1.计算机2.Max+PlusII软件三实验原理及内容:1 二输入与门(1)实验原理二输入与门是我们数字电路中的一个基础逻辑门电路,是最基本的逻辑门电路之一,也是最简单的逻辑门之一。

它能实现两个输入端的相与,一般有三个端口。

二输入与门的表达式是:Y=ab二输入与门的逻辑符号如图(1)所示,真值表如表(1)所示。

图(1)与门逻辑符号表(1)与门真值表(2)实验内容a.在mux+pluxII文本编辑环境下,打开新文本,编写两输入与门VHDL语言源程序,程序设计如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY and2 ISPORT(a,b: IN STD_LOGIC;Y: OUT STD_LOGIC);END and2;ARCHITECTURE behave OF and2 ISBEGINY <= a and b;END behave;b.对源程序进行编译,按照提示进行修改,直至编译通过。

c.对编译程序进行仿真,分析并记录仿真波形,其仿真波形图如图(2)所示。

图(2)二输入与门仿真图d.在自己的目录下保存相应的源文件、波形文件。

2 四选一选择器(1)实验原理四选一选择器如图(3)所示,真值表如表(2)所示。

图(3)mux4管脚图表(2)mux4真值表(2)实验内容a.在mux+plusII文本编辑环境下,打开新文件,编辑四选一VHDL源程序文件,其程序设计如下:LIBRARY IEEEUSE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 ISPORT(A: IN STD_LOGIC_VECTOR (1 DOWNTO 0);D0,D1,D2,D3:IN STD_LOGIC;G:IN STD_LOGIC;Y: OUT STD_LOGIC);END mux4;ARCHITECTURE dataflow OF mux4 ISBEGINPROCESS (A,D0,D1,D2,D3,G)BEGINIF (G ='0') THENIF (A="00")THEN Y <= D0;ELSIF(A="01")THEN Y <= D1;ELSIF(A="10")THEN Y <= D2;ELSE Y <= D3;END IF;ELSE Y <='0';END IF;END PROCESS;END dataflow;b.对源程序进行编译,按照提示进行修改,直到编译通过。

vhdl实验报告

vhdl实验报告

专用集成电路实验报告13050Z011305024237X德文实验一开发平台软件安装与认知实验实验内容1、本实验以三线八线译码器(LS74138)为例,在Xilinx ISE 9.2软件平台上完成设计电路的VHDL文本输入、语法检查、编译、仿真、管脚分配和编程下载等操作。

下载芯片选择Xilinx公司的CoolRunner II系列XC2C256-7PQ208作为目标仿真芯片。

2、用1中所设计的的三线八线译码器(LS74138)生成一个LS74138元件,在Xilinx ISE 9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译码器(LS74138),实现编译,仿真,管脚分配和编程下载等操作。

源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;-- Unment the following lines to use the declarations that are-- provided for instantiating Xilinx primitive ponents.--library UNISIM;--use UNISIM.Vponents.all;entity ls74138 isPort ( g1 : in std_logic;g2 : in std_logic;inp : in std_logic_vector(2 downto 0);y : out std_logic_vector(7 downto 0));end ls74138;architecture Behavioral of ls74138 isbeginprocess(g1,g2,inp)beginif((g1 and g2)='1') thencase inp iswhen "000"=>y<="00000001";when "001"=>y<="00000010";when "010"=>y<="00000100";when "011"=>y<="00001000";when "100"=>y<="00010000";when "101"=>y<="00100000";when "110"=>y<="01000000";when "111"=>y<="10000000";when others=>y<="00000000";end case;elsey<="00000000";end if;end process;end Behavioral;波形文件:生成元器件及连接电路思考:有程序可以看出,定义了三个输入端,一个输出端。

VHDL实验报告

VHDL实验报告

三.分析和心得 通过这次实验我熟悉了 Verilog HDL 元件例化语句的作用, 并且熟悉全加器的工作原理。 在四位全加器的择器的设计
一.实验目的 熟悉 Modelsim 的 Verilog HD 文本设计流程全过程,学习简单的组合逻辑电路设计,多 层次的电路设计,仿真和硬件测试 二.实验内容 (1)从多路输入信号中选择其中一路进行输出的电路称为数据选择器。或:在地址信号控制 下, 从多路输入信息中选择其中的某一路信息作为输出的电路称为数据选择器。 数据选择器 又叫多路选择器,简称 MUX。 (2)分别采用原理图和 Verilog HDL 语言的形式设计 4 选 1 数据选择器 (3)对所涉及的电路进行编译及正确的仿真 Case 语句设计: module MUX41a(a,b,c,d,s1,s0,y); input a,b,c,d; input s1,s0; output y; reg y; always@(a or b or c or s1 or s0) //敏感信号表 begin : case ({s1,s0}) //数据组合 2'b00:y<=a; 2'b01:y<=b; 2'b10:y<=c; 2'b11:y<=d; default:y<=a; endcase end endmodule 测试程序为: `timescale 1ns/1ns `include "MUX41a.v"; //包含 4 选 1 case 语句程序 module MUX41atest; reg a,b,c,d,s1,s0; wire y; initial begin a=0;b=0;c=0;d=0; s1=0; s0=0; #100 a=1;b=0;c=0;d=0;

数字电路设计实验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课程设计设计模为 4、8、12、16的可变计数器实验报告总结

vhdl课程设计设计模为 4、8、12、16的可变计数器实验报告总结

VHDL课程设计 - 可变计数器实验报告总结
一、设计概述
本课程设计的主要目标是设计并实现一个可变计数器,其模(Modulo)值可以在4、8、12、16之间进行选择。

计数器采用VHDL编程语言进行描述,并在FPGA开发板上进行测试验证。

二、设计实现
1. 硬件平台:我们选择了Xilinx的FPGA开发板作为硬件平台,它具有丰富的I/O资源和足够的逻辑单元,可以满足我们的设计需求。

2. VHDL编程:我们采用VHDL语言进行编程,实现了模4、模8、模12和模16的可变计数器。

通过选择不同的计数模式,计数器的模值可以在4、8、12、16之间进行切换。

3. 测试与验证:为了验证计数器的功能,我们编写了测试平台,并通过仿真和实际硬件测试对计数器进行了全面的测试。

三、实验结果与分析
1. 实验结果:通过仿真和实际硬件测试,我们验证了计数器的
功能正确性。

在不同的模值下,计数器都能正确地进行计数操作,并且在达到模值后能正确地回绕到0。

2. 结果分析:实验结果表明,我们的VHDL编程和FPGA开发技能得到了很好的应用和提升。

同时,通过这次课程设计,我们更深入地理解了可变计数器的设计和实现原理,提高了我们的硬件设计能力。

四、总结与展望
本次课程设计让我们深入了解了VHDL编程语言和FPGA开发技术,提高了我们的硬件设计能力。

通过实际的设计和测试,我们成功地实现了一个可变模值的计数器,达到了课程设计的要求。

在未来的学习和工作中,我们将继续深入学习FPGA设计和VHDL编程,不断提高自己的硬件设计能力。

同时,我们也期待将这种技术应用于更多的实际项目中,为工程实践做出贡献。

vhdl全加器实验报告

vhdl全加器实验报告

vhdl全加器实验报告VHDL全加器实验报告引言:在数字电路设计领域,全加器是一种基本的逻辑电路。

它用于将两个二进制数相加,并产生相应的和与进位输出。

在本次实验中,我们将使用VHDL语言设计和模拟一个全加器电路,并通过实验验证其功能和正确性。

一、实验目的本实验的目的是通过设计和模拟一个VHDL全加器电路,加深对数字电路和VHDL语言的理解。

具体目标如下:1. 学习并掌握全加器的原理和电路结构;2. 掌握VHDL语言的基本语法和使用方法;3. 设计和模拟一个全加器电路,并验证其正确性;4. 分析和评估全加器电路的性能和优化方法。

二、全加器的原理和电路结构全加器是一种用于二进制加法的逻辑电路。

它接受两个输入位和一个进位输入位,并产生一个和输出位和一个进位输出位。

全加器的电路结构通常由两个半加器和一个或门组成。

半加器用于计算两个输入位的和,而或门用于计算进位输出位。

三、VHDL语言的基本语法和使用方法VHDL是一种硬件描述语言,用于描述和模拟数字电路。

它具有丰富的语法和功能,可以方便地进行电路设计和仿真。

VHDL语言的基本语法包括实体声明、端口声明、信号声明、过程声明等。

在本次实验中,我们将使用VHDL语言来描述和模拟全加器电路。

四、全加器电路的设计和模拟在本次实验中,我们将使用VHDL语言设计和模拟一个4位全加器电路。

首先,我们需要定义输入和输出信号,并声明全加器的实体和端口。

接下来,我们可以使用VHDL语言描述全加器的逻辑电路,包括半加器和或门的连接关系。

最后,我们可以使用仿真工具对全加器电路进行模拟,并观察输出结果。

五、全加器电路的验证和性能评估在模拟过程中,我们可以通过输入不同的二进制数来验证全加器电路的正确性。

我们可以逐个比较输入和输出的二进制数,并检查和进位输出是否与预期结果一致。

如果全加器电路能够正确地计算和输出结果,则说明设计和模拟过程是正确的。

此外,我们还可以评估全加器电路的性能和优化方法。

一位全加器_可编程逻辑器件VHDL实验报告

一位全加器_可编程逻辑器件VHDL实验报告

1.一位全加器实验报告一、实验目的要求学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。

设计程序独立完成全加器的仿真。

全加器由两个半加器组合而成,原理类似。

半加器不考虑低位进位,但有高位进位;全加器要考虑低位的进位且该进位和求和的二进制相加,可能获得更高的进位。

二、设计方法与原理图图1是一个一位二进制全加器电路图,由图1所示,由两个半加器和一个或门构成一个一位二进制全加器;ain,bin为全加器的输入端,cin为全加器的低位进位,sum是全加器的全加和,cout是全加器的全加进位端;从而实现一位二进制全加器。

(图1)一位二进制全加器原理图三、实验内容按照教材上的步骤,在max plus II上进行编辑、编译、综合、适配、仿真。

说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。

四、源程序library ieee;use ieee.std_logic_1164.all;entity full_adder isport(a,b,cin:in std_logic;cout,sum:out std_logic);end entity full_adder;architecture fd1 of full_adder iscomponent h_adderport(a,b:in std_logic;co,so:out std_logic);end component;component or2aport(a,b:in std_logic;c:out std_logic);end component;signal d,e,f:std_logic;beginu1:h_adder port map(a=>ain,b=>bin,co=>d,so=>e); u2:h_adder port map(a=>e,b=>cin,co=>f,so=>sum); u3:or2a port map(a=>d,b=>f,c=>cout);end fd1;五过程性截图六、仿真结果(图2)一位二进制全加器仿真结果七、分析结果与总结由图2,本实验的目标已达成,及通过编写VHDL语言实现一个一位二进制全加器。

VHDL报告

VHDL报告

实验五:数制转换一、实验任务和要求1.实现十六进制到十进制的转换2.分析实现的方法3.十六位数据的范围为X”00”~X”FF”二、设计分析,电路原理组成和方法第一步:设计一个计数器,记录256个数,依次是0--255,是通过VHDL语言编写的(文本输入)第二步:将十六进制数转换为十进制数,以BCD码的形式输出。

是以原理性设计输入实现的。

首先计数是以一个时钟信号,当出现上升沿是计数加一,直到255,以八位的二进制形式输出。

接下来是LPM-ROM。

将十六进制数转换为十进制,以BCD码输出。

首先建立一个MIF文件,将对应的十六进制转换为十进制,MIF文件如下:depth = 256; width = 12; address_radix = hex;data_radix = hex;contentbegin00:0;01:1;02:2;03:3;04:4;05:5;06:6;07:7;08:8;09:9;0A:10;0B:11;0C:12; 0D:13;0E:14;0F:15;10:16;11:17;12:18;13:19;14:20;15:21;16:22;17:23;18:24;19:25;1A:26;1B:27;1C:28;1D:29;1E:30;1F:31;20:32;21:33;22:34;23:35;24:36;25:37;26:38;27:39;28:40;29:41;2A:42;2B:43;2C:44;2D:45;2E:46;2F:47;30:48;31:49;32:50;33:51;34:52;35:53;36:54;37:55;38:56;39:57;3A:58;3B:59;3C:60;3D:61;3E:62;3F:63;40:64;41:65;42:66;43:67;44:68;45:69;46:70;47:71;48:72;49:73;4A:74;4B:75;4C:76;4D:77;4E:78;4F:79;50:80;51:81;52:82;53:83;54:84;55:85;56:86;57:87;58:88;59:89;5A:90;5B:91;5C:92;5D:93;5E:94;5F:95;60:96;61:97; 62:98; 63:99; 64:100; 65:101; 66:102; 67:103; 68:104; 69:105; 6A:106; 6B:107; 6C:108; 6D:109; 6E:110; 6F:111; 70:112; 71:113; 72:114; 73:115; 74:116; 75:117; 76:118; 77:119; 78:120; 79:121; 7A:122; 7B:123; 7C:124; 7D:125; 7E:126; 7F:127; 80:128; 81:129;82:130;83:131;84:132;85:133;86:134;87:135;88:136;89:137;8A:138;8B:139;8C:140;8D:141;8E:142;8F:143;90:144;91:145;92:146;93:147;94:148;95:149;96:150;97:151;98:152;99:153;9A:154;9B:155;9C:156;9D:157;9E:158;9F:159;A0:160;A1:161;A2:162;A3:163;A4:164;A5:165;A6:166;A7:167;A8:168;A9:169;AA:170;AB:171;AC:172;AD:173;AE:174;AF:175;B0:176;B1:177;B2:178;B3:179;B4:180;B5:181;B6:182;B7:183;B8:184;B9:185;BA:186;BB:187;BC:188;BD:189;BE:190;BF:191;C0:192;C1:193;C2:194;C3:195;C4:196;C5:197;C6:198;C7:199;C8:200;C9:201;CA:202;CB:203;CC:204;CD:205;CE:206;CF:207;D0:208;D1:209;D2:210;D3:211;D4:212;D5:213;D6:214;D7:215;D8:216;D9:217;DA:218;DB:219;DC:220;DD:221;DE:222;DF:223;E0:224;E1:225;E2:226;E3:227;E4:228;E5:229;E6:230;E7:231;E8:232;E9:233;EA:234;EB:235;EC:236;ED:237;EE:238;EF:239;F0:240;F1:241;F2:242;F3:243;F4:244;F5:245;F6:246;F7:247;F8:248;F9:249;FA:250;FB:251;FC:252;FD:253;FE:254;FF:255;end;然后设计LPM-ROM原件,在Graphic editor中找到原件,设置相应参数,并把MIF文件放入其中,进行编辑。

(VHDL实验报告)一位半加器,全加器的设计

(VHDL实验报告)一位半加器,全加器的设计
全加器的设计采用“元件例化语句”,故需建立两个VHDL文 本编辑对话框(一个顶层文件,一个底层文件)。在相应的编辑框中 输入相应的VHDL语句,再分别以各自的实体名进行保存。注意的是顶 层文件名应必须与工程名一致。此次实验底层文件为半加器VHDL语句 ,顶层文件为全加器VHDL语句,其语句分别如下两图所示:
3)对文本文件进行编译。选择processing-compiler tool--start或直接点快捷栏上的三角形则会出 现编译器窗口。需要说明的是在进行设计文件的综合和分 析,也可以单独打开某个分析综 合过程不必进行全编译 界面。当完成上述窗口的设定后,点击 START 按钮进行 设计文件的全编译。如果文件有错,在软件的下方则会提 示错误的原因和位置,以便于使用者进行修改直到设计文 件无错。整个编译完成,软件会提示编译成功。
二)全加器
本次实验我分别用实验箱上的开关K1、K2、K3作为全加器的三输入A、B、Ci-1
;分别用LED彩灯LED1、LED2作为半加器的两个输出端Si、Ci。实验时将实验箱的拨动
开关拨向下时为低电平“0”。拨向上时为高电平“1”,LED高电平时灯亮,低电平时
灯灭。以下第一幅图即为输入为“111”时输出为“11”;第二幅图则是当输入为
A
9
五、实验步骤
(一)半加器的设计
4、对设计文件进行仿真
1)选择File--New,在弹出的对话框中选择Vector Waveform File,点击OK按钮,打开进入一个空的波形编辑器窗口。
2)设置仿真结束时间,波形编辑器默认的仿真结束时间为 1µS ,根据仿真需要,可以自由设置仿真的结束时间(本次设置的为1ms )。选择 QUARTUSII 软件的 Edit--End Time命令,弹出线路束时间 对话框,在 Time框办输入仿真结束时间,点击OK按钮完成设置。如 下图所示:

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交通灯控制器-实验报告

可编程逻辑器件应用项目报告书项目名称:交通灯控制器指导老师:姓名:学号:班级:(以后写报告要包含以下一些内容:)一、设计要求--------------------------------------------------------------------------------二、设计目的--------------------------------------------------------------------------------三、设计方案--------------------------------------------------------------------------------四、设计程序---------------------------------------------------------------------------------五、管脚分配---------------------------------------------------------------------------------六、硬件下载实现现象描述------------------------------------------七、体会、对设计工作的总结与展-------------------------------------------一、设计要求:①在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一方向(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。

②设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间,其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。

③当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯亮,倒计时停止,且显示数字在闪烁。

当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。

3-8译码器VHDL设计实验 实验报告

3-8译码器VHDL设计实验 实验报告

3-8译码器VHDL设计实验实验报告本实验以3-8译码器的设计为主要内容,通过编码器和译码器的学习,深入了解数字电路中常用的译码器,并掌握VHDL语言的应用技巧。

主要技术路线为:定义输入和输出端口->生成选择结构->设计三个MUX组合成8:1 MUX->仿真波形验证。

本实验虽然简单,但对数码管、数码显示器等电路的实现有很大的帮助作用。

一、实验目的1.了解译码器的作用及其应用2.掌握VHDL语言的的原理二、实验器材1.电脑2.EDA软件三、实验原理及过程1.定义输入和输出端口在VHDL设计中,首先要定义输入和输出端口。

根据输入和输出端口的设计,并将其定义到ENTITY中。

2.生成选择结构基于译码器的设计特点,输入是一个二进制数,输出是一个信号。

故可以采用CASE结构生成选择结构。

同时,由于译码器需要将一个二进制数译到一个信号,还需要一个PROCESS处理,将选择的结果赋值到输出信号上。

3.设计三个MUX组合成8:1 MUX通常情况下,8:1 MUX可以用一个MUX8191,但本实验旨在学习三个MUX组合成一个8:1 MUX的方法。

设计时要考虑如下事项:1)MUX中DP、EN、INV等控制信号的设置,由于多个控制信号互相独立,因此采用分别激活的方式;2)由于MUX的输出是显式定义的信号,不能使用临时变量。

因此,采用以下方法生成MUX输出处理:SIGNAL MUX_out : STD_LOGIC := '0';4.仿真波形验证经过以上步骤的设计,就可以进行仿真波形的验证。

经实验验证,设计正确。

其输出信号可以由输入端口激励生成。

四、实验内容1.阅读数据手册及规范表,画出流程图。

2.代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY decoder_3X8 ISPORT (--Define Input & Output SIGNALB : IN STD_LOGIC_VECTOR(2 DOWNTO 0);Y : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END decoder_3X8;ARCHITECTURE structural OF decoder_3X8 ISCOMPONENT mux4x1 ISPORT (D0 : IN STD_LOGIC;D1 : IN STD_LOGIC;D2 : IN STD_LOGIC;D3 : IN STD_LOGIC;S : IN STD_LOGIC_VECTOR(1 DOWNTO 0);Y : OUT STD_LOGIC);END COMPONENT;COMPONENT mux2x1 ISPORT (D0 : IN STD_LOGIC;D1 : IN STD_LOGIC;S : IN STD_LOGIC;Y : OUT STD_LOGIC);END COMPONENT;SIGNAL out1, out2, out3, out4, out5, out6, out7, out8 : STD_LOGIC;BEGINM1: mux2x1 PORT MAP (X => B(0), Y => out1, S => B(1));M2: mux4x1 PORT MAP (X0 => B(2), X1 => out1, X2 => ‘0’, X3 => ‘0’, S => B(1 DOWNTO 0), Y => out2);M3: mux4x1 PORT MAP (X0 => B(2), X1 => ‘0’, X2 => out1, X3 => ‘0’, S => B(1 DOWNTO 0), Y => out3);M4: mux4x1 PORT MAP (X0 => B(2), X1 => ‘0’, X2 => ‘0’, X3 => out1, S => B(1 DOWNTO 0), Y => out4);M5: mux2x1 PORT MAP (X => out2, Y => out5, S => B(2));M6: mux2x1 PORT MAP (X => out3, Y => out6, S => B(2));M7: mux2x1 PORT MAP (X => out4, Y => out7, S => B(2));M8: mux4x1 PORT MAP (X0 => out5, X1 => out6, X2 => out7, X3 => ‘0′, S => B(1 DOWNTO 0), Y => out8);Y <= out8;END structural;ARCHITECTURE rtl OF mux4x1 ISBEGINY <= D0 WHEN S = ‘00’ ELSED1 WHEN S = ‘01’ ELSED2 WHEN S = ‘10’ ELSED3 WHEN S = ‘11’ ELSE’0’;END ARCHITECTURE rtl;3.仿真波形验证:进入仿真 --> Add ----> Signals ----> 选择需要记录的信号 ----> Run ----> 波形记录。

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

福建农林大学计算机与信息学院信息工程类实验报告系:电子信息工程系专业:电子信息工程年级: 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器件)。

相关文档
最新文档