VHDL实验报告

合集下载

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课程设计报告

一、设计目的本课程设计的目的是熟练掌握相关软件的使用和操作。

能对VHD1语言程序进行编译,调试,以及通过计算机仿真,得到正确的仿真波形图,并根据所得仿真波形图分析判断并改进所设计的电路。

在成功掌握软件操作基础上,将所数字电路的基础课知识与VHD1语言的应用型知识结合起来并与实际设计,操作联系起来,即“理论联系实际:深入了解VHD1语言的作用与价值,对用硬件语言设计一个电路系统开始具备一个较完整的思路与较专业的经验。

对EDA技术有初步的认识,并开始对EDA技术的开发创新有初步的理解。

二、设计内容及操作1、设计循环彩灯控制器1.1设计内容设计一个循环彩灯控制器,该控制器控制红,绿,黄三个发光管循环点亮。

要求红发光管亮3秒,绿发光管亮2秒,黄发光管亮1秒。

1.2程序设计1IBRARYIEEE;USEIEEE.STD_10GIC_1164.A11;USEIEEE.STD_1OGIC_UNSIGNED.A11;ENTITYcaideng_2ISPORT(e1k:INSTD_1OGIC;red,green,ye11ow:OUTSTD1OGIC);ENDENTITYCaideng_2;ARCHITECTUREexamp1eOFcaideng_2ISSIGNA1dout:STD_1OGIC_VECTOR(2DoWNTO0);SIGNA1m:STD_10GIC_VECT0R(2DOWNTO0);BEGINred<=dout(2);green<=dout(1);ye11ow<=dout(0);PROCESS(e1k)ISBEGINIF(c1k,EVENTANDC1k=T')THENIF(In="110")THENm<="001";E1SEm<=m+1;ENDIF;CASEmISWHEN"001"=〉dout<=〃100〃;WHEN"010"=>dout<=T00";WHEN,/0ir=>dout<="100";WHEN"100"=>dout<="010";WHEN"101"=>dout<="010";WHEN"110"=>dout<="001";WHENOTHERS=>dout<="000";ENDCASE;ENDIF;ENDPROCESS;ENDARCHITECTURE;1.3仿真波形图14波形图分析在仿真时已经设置好开始时间和结束时间,根据以上的波形图可知,当e1k 信号处于高电平(高低电平可以根据自己所设计的情况自己定义),红发光管最先亮灯(高电平表示亮灯),时间为3s,3s之后绿发光管开始亮灯2s,2s结束黄发光管亮1s,以此循环亮灯,直到仿真结束时间。

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

实验一:3位比较器一、实验目的1、熟悉Xilinx ISE/ModelSim软件,掌握软件的VHDL程序输入、程序编译和程序仿真操作;2、学习利用VHDL语言设计三位比较器控制电路程序;3、根据三位比较器的原理设计VHDL程序,使得a,b为三位信息的输入端口,若a>b 则c=1。

否则c=0;二、VHDL源程序:●Compare3源代码:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity compare3 isport (a:in std_logic_vector(2 downto 0);b:in std_logic_vector(2 downto 0);c:out std_logic);end compare3;architecture Behavioral of compare3 isbeginprocess (a,b)beginif(a>=b)thenc<='1';elsec<='0';end if;end process;end Behavioral;●三位比较器testbench代码:LIBRARY ieee;USE ieee.std_logic_1164.ALL;-- Uncomment the following library declaration if using-- arithmetic functions with Signed or Unsigned values--USE ieee.numeric_std.ALL;ENTITY tbench1 ISEND tbench1;ARCHITECTURE behavior OF tbench1 IS-- Component Declaration for the Unit Under Test (UUT)COMPONENT compare3PORT(a : IN std_logic_vector(2 downto 0);b : IN std_logic_vector(2 downto 0);c : OUT std_logic);END COMPONENT;--Inputssignal a : std_logic_vector(2 downto 0) := "000";signal b : std_logic_vector(2 downto 0) := "000";--Outputssignal c : std_logic;-- No clocks detected in port list. Replace <clock> below with -- appropriate port nameBEGIN-- Instantiate the Unit Under Test (UUT)uut: compare3 PORT MAP (a => a,b => b,c => c);-- Clock process definitions-- Stimulus processstim_proc: processbegin-- hold reset state for 100 ns.wait for 10 ns;a <= "010";b <= "001";wait for 10 ns;a <= "110";b <= "111";wait for 10 ns;a <= "011";b <= "111";wait for 10 ns;a <= "110";b <= "101";wait for 10 ns;a <= "110";b <= "000";wait for 10 ns;a <= "100";b <= "101";wait for 1000 ns;-- insert stimulus herewait;end process;END;三、实验结果与分析●实验仿真波形图●实验结果分析由波形图观察可得该VHDLd代码实现了比较的功能,在输入a,b值大小不同的情况下,成许进行比较均能的出结果并给C赋值,当a>b,c=1, 反之c=0。

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实验报告)一位半加器,全加器的设计

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

A
8
五、实验步骤
(一)半加器的设计
3、管脚分配
1)点击 Assignments 菜单下面的 Assignment Editor,进入到 引脚分配窗口。将弹出的窗口中的 All 改成 pin ,再点击 List, 在 Nodes Found窗口会出现所有信号的名称,点击中间的按钮则 Selected Nodes 窗口下方出现被选择的端口名称。双击 OK 按钮, 完成设置。进入管脚分配窗口。如下图所示:
A
14
五、实验步骤
(二)全加器的设计
4、对设计文件进行仿真(步骤同“半加器的设计”)
全加器中Ci的周期是b的两倍,b的周期是a的两倍。实验仿真波形如下 所示:
5、从设计文件到目标器件的加载(步骤同“半加器的设计”)
A
15
五、实验步骤
(三)补充“全加器的设计”。从设计文件到模块符号的 创建。
实验要求创建文件时底层文件用文本输入,顶层文件用图形输 入,即需要将底层的已经设计好的文本文件生成一个模块符号文件作 为自己的功能模块符号在顶层调用,该符号就像图形设计文件中的任 何其它宏功能符号一样可被高层设计重复调用。
2)依照“硬件与 FPGA 的管脚连接表”分配对应的输入管脚名 ,依照“LED灯与FPGA管脚连接表”分配对应的输出管脚名。本次实 验的分配关系是:(输入端 a、b分别对应的 FPGA 管脚名为 H8、J8 ,输出端 c、s分别对应的 FPGA 管脚名为 G13 、G15),如下图所 示:
3)分配完管脚后,再次进行一次全编译,使分配的管脚有效。
5)指定仿真器设置,在仿真过程中有时序仿真和功能仿真之分,在这里 介绍功能仿真。在 QUARTUSII软件中选择 Processing>Simulator Tool 命 令,打开仿真器工具窗口,如下图所示。

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

年月日VHDL实验报告学院专业学号姓名实验1 译码器设计一、实验原理1、译码器是数字系统中常用的组合逻辑电路,常用于地址译码。

74LS138是最常用的一种小规模集成电路,它有3个二进制输入端和8个译码输出端。

表1.1是它的真值表。

表1.1 3-8 译码器真值表2、普通的LED数码管由7段和一个点组成,使用它进行显示,需要译码驱动。

本实验实现一个七段LED显示译码电路。

为了实验方便,在译码之前加入一个4位二进制加法计数器,当低频率的脉冲信号输入计数器后,由7段译码器将计数值译为对应的十进制码,并由数码管显示出来。

图1.1为此电路的原理图。

图1.1 7段LED译码显示电路二、实验内容1、设计一个4-16译码器。

2、设计轮流显示表1.2所示字符的程序。

表1.2 字母显示真值表3、通过仿真,观察设计的正确性。

4、下载、验证设计的正确性。

三、源程序1、4-16译码器。

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decode ISPORT( d0, d1, d2,d3, s1 ,s2 ,s3:IN STD_LOGIC;Y : OUT STD_LOGIC_VECTOR ( 15 DOWNTO 0 ) );END decode;ARCHITECTURE rtl OF decode ISSIGNAL indata : STD_LOGIC_VECTOR ( 3 DOWNTO 0 );BEGINIndata <= d3 & d2 & d1 & d0 ;PROCESS ( indata, s1, s2, s3 )BEGINIF (s1 ='1' AND s2='0' AND s3 = '0' ) THENCASE indata ISWHEN "0000" => Y <= "1111111111111110" ;WHEN "0001" => Y <= "1111111111111101" ;WHEN "0010" => Y <= "1111111111111011" ; WHEN "0011" => Y <= "1111111111110111" ;WHEN "0100" => Y <= "1111111111101111" ;WHEN "0101" => Y <= "1111111111011111" ;WHEN "0110" => Y <= "1111111110111111" ;WHEN "0111" => Y <= "1111111101111111" ;WHEN "1000" => Y <= "1111111011111111" ;WHEN "1001" => Y <= "1111110111111111" ;WHEN "1010" => Y <= "1111101111111111" ; WHEN "1011" => Y <= "1111011111111111" ;WHEN "1100" => Y <= "1110111111111111" ;WHEN "1101" => Y <= "1101111111111111" ;WHEN "1110" => Y <= "1011111111111111" ;WHEN "1111" => Y <= "0111111111111111" ;WHEN OTHERS=> NULL;END CASE;ELSEY <= "1111111111111111" ;END IF;END PROCESS;END rtl;2、轮流显示表1.2所示字符的程序。

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课程设计设计模为 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实验报告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报告

实验五:数制转换一、实验任务和要求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语言设计了一个简单的计数器电路,并通过FPGA实现了该计数器。

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

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

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

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

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

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

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

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

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

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

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

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

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

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实验报告-实验1 8选1数据选择器

黄红涛-vhdl实验报告-实验1 8选1数据选择器

学生实验报告实验课名称:VHDL硬件描述语言实验项目名称:8选1数据选择器专业名称:电子科学与技术班级:32050801学号:3205080134学生姓名:黄红涛教师姓名:程鸿亮_2010__年__11__月__6__日组别_____________________ 同组同学_ 刘增辉实验日期:2011 年11 月6 日实验室名称______ 成绩_____一、实验名称:8选1数据选择器二、实验目的与要求:1.实验目的:设计一个8选1的数据选择器,初步掌握QuartusII软件的使用方法以及硬件编程下载的基本技能。

2.实验要求:通过VHDL编程,实现一个数据选择器,要求有8位数据输入端,1位数据输出端,通过3位地址输入信号寻址,并具有输出使能功能。

首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序到SOPC开发平台中。

如图所示: d0~d7为数据输入端; g为使能端,高电平有效; a[2..0]为地址输端; y 为输出端。

要求非使能或是无效地址状态时,y输出0。

首先在QuartusII上进行功能和时序仿真,之后通过器件及其端口配置下载程序到SOPC开发平台中。

在硬件实现中,要求:1.用实验平台的拨动开关实现8位输入信号(d0~d7):要求使用最右面8个开关。

2. 用实验平台的按键实现地址信号和使能信号:注意采用模式0的输入方式,并使用最左边的键6~键8三个按键实现地址输入,以及键3实现使能信号。

3. 输出采用LED发光阵列的LED12。

三、实验内容:1. 打开QuartusII软件,建立一个新的工程:1) 单击菜单File\New Project Wizard…2) 输入工程的路径、工程名以及顶层实体名。

3) 单击 Next> 按钮,由于我们建立的是一个空的项目,所以没有包含已有文件,单击 Next> 继续4) 设置我们的器件信息:如,将package选择为FBGA,将family置为cydoneii,pincount 设置为4845) 单击 Next> ,指定第三方工具,但是这里我们不指定第三方 EDA 工具,单击 Next> 后结束工程建立。

实验三_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 代码和仿真结果。

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

《创新实验》实验报告—基于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,开始编译源文件。

4.软件仿真其实仿真这一步可要可不要,很多程序都不需要仿真,有些程序即使仿真出错,但是最后结果却可以出来。

因此,我们做实验时很少仿真,此处也不再赘述了。

5.综合首先根据实验箱的安排布局,找到程序中外部接口的对应实验箱上的接口,进行接口对应,双击如下图所示的选项。

出现接口窗口如下,进行设置(具体参见老师发的文档SDZ电子实验箱的使用说明文档)保存,关闭即可然后如下图从Implement Design开始依次双击综合。

6.下载双击Configure Target Device综合完成之后,就出现下载对话框。

右击鼠标键盘选择Add Xilinx Device,选择.bit文件。

然后右击选择Program,就将程序烧录到实验板上了。

五、节拍脉冲发生器电路实现1、实验题目:参照时标系统的设计方法,用组合逻辑方法设计一个简单的节拍脉冲发生器,产生图1-6所示的节拍脉冲,并用单脉冲验证设计的正确性。

在实验报告中画出完整电路,写出W、1W和1N的表达式。

图1-6 简单的节拍脉冲发生器一周期的波形设计提示:1、由波形图求出节拍脉冲1W 和0W 的表达式,进而组合成1N 的表达式。

2、注意节拍电平1T 和0T 的翻转时刻应在0M 下降沿与M 的上升沿同时出现的时刻。

3、注意D 触发器的触发翻转要求。

2、实验步骤:1.根据题目确定输出结果的逻辑表达式1*0*1T M M W =S T M M W *1*0*0=011W W N +=2.画出电路图3.确定输入输出的外部端口 输入端口:M (由时钟产生) 输出端口:W1,W0,N14.根据电路图写代码5.编译,调试3、实验代码 library IEEE;use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL; ——头文件entity clk_div isPort ( clk : in STD_LOGIC; w0 : out STD_LOGIC; w1 : out STD_LOGIC; N1 : out STD_LOGIC); end clk_div;architecture Behavioral of clk_div issignal count : std_logic_vector(3 downto 0):="0000";signal a : std_logic;signal b : std_logic;signal temp : integer range 0 to 50;signal Q : std_logic;beginprocess(clk,Q)beginif(clk'event and clk='1')then ——对clk进行分频temp <= temp+1;if (temp =49) thenQ <= not Q;temp <= 0;end if;end if;if(Q'event and Q='1')thenif(count ="1111") thencount <=(others =>'0');elsecount <=count+1;end if;end if;a <= (not clk and count(0))and count(1);b <= (not clk and count(0))and(not count(1) and count(2));end process;w1 <= a;w0 <= b;N1 <=a or b;end Behavioral;4、硬件实现与注意事项硬件实现主要说的是外部端口和实验箱的对应问题。

M:接的是时钟脉冲,即P150W1:接LED灯显示结果,即P45W0:接LED灯显示结果,即P44N1:接LED灯显示结果,即P47注意事项:1.时钟脉冲频率太高,结果会显示的很快,因此首先对CLK进行50倍的分频。

将频率降低以便观察结果。

2.由于时钟频率过高,可能仿真不出来,因此就不必仿真。

3.可能有些组编译通过但在综合时出现错误(是有关BUF的),这时就需要在CLK之前接入一个缓冲器。

具体的加入代码如下:library UNISIM; ——头文件use UNISIM.VComponents.all;entity test isPort ( clk : in STD_LOGIC;end test;architecture Behavioral of test issignal ck:std_logic;component IBUF ——定义缓冲器port(I:in STD_LOGIC;O:out STD_LOGIC);end component;beginUO:IBUF port map(I=>clk,O=>ck); ——以后的ck代替clk六、八位二进制计数器的实现1.实验题目请用VHDL编写一个八位二进制计数器,具有异步清零功能、同步置数、计数功能。

实验验证时,须用单脉冲进行验证。

计数器的输出显示在显示器上。

〖显示器可以是:①七段数码显示器,②LED发光二极管。

〗2.实验代码library IEEE; ——头文件use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;library UNISIM;use UNISIM.VComponents.all;entity Counter8 isPort ( set : in STD_LOGIC; ——低电平置数reset : in STD_LOGIC; ——低电平异步清零key : out STD_LOGIC; ——键盘输出口clk : in STD_LOGIC; ——键盘的输入口,当成单脉冲使用co : OUT STD_LOGIC; ——进位put : in STD_LOGIC_VECTOR (7 DOWNTO 0); ——置数load : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); ——LED显示end Counter8;architecture example of Counter8 issignal ck: std_logic;signal cc: std_logic;signal down : STD_LOGIC_VECTOR(7 DOWNTO 0):="00000000";signal kk : std_logic:='0';component IBUF ——设置缓冲器port(I : in STD_LOGIC;O : out STD_LOGIC);end component;beginkey <=kk;load <=down;co <=cc;U0:IBUF port map(I=>clk,O=>ck);p0:PROCESS(ck)beginif(ck' event and ck='0') thenIF(set ='0') THEN ——低电平置数down <=put;ELSEdown <=down+1;END IF;END IF;IF(reset ='0') then ——低电平异步清零down <="00000000";END IF;if(down="11111111" ) then ——进位设置cc <='1';elsecc <='0';end if;end process p0;end example;3.硬件实现与注意事项硬件实现:clk:接键盘的行或列,即P 29key :接键盘的行或列与clk相对应,即P34reset :接数字开关,即P62set:接数字开关,即P61co :接电平显示,即P45put(0-7) :全部接数字开关,即P73 P74 P70 P71 P68 P69 P63 P67load(0-7) :全部接电平显示,即P59 P60 P57 P58 P48 P49 P46 P47注意事项:1.由于在综合时出了问题,本实验在输入clk之前加入了一个缓冲器2.在实验中发现数字开关的抖动比键盘大,就选用键盘作为单脉冲。

相关文档
最新文档