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实验报告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编程语言和数字电路设计技术,实现特定功能的电路设计。
本文档将对实验的步骤、设计原理和结果进行详细描述。
实验步骤1. 步骤一:熟悉VHDL编程语言在实验开始之前,团队成员对VHDL编程语言进行了研究和熟悉。
我们了解了VHDL的基本语法、数据类型和结构,并获得了对VHDL设计原理的初步理解。
2. 步骤二:设计功能电路在本实验中,我们选择了一个特定的功能电路进行设计。
我们首先进行了功能需求分析,并根据需求确定了电路的输入输出信号以及主要的逻辑运算。
然后,我们使用VHDL编程语言将电路的逻辑运算实现为代码,并进行了仿真和测试。
3. 步骤三:电路仿真和验证为了验证我们设计的电路功能的正确性,我们使用了VHDL仿真工具进行了电路的仿真和验证。
我们根据输入信号的不同组合,观察输出信号的变化,并与我们预期的结果进行比较。
通过这一步骤,我们确认了我们设计的电路能够按照预期工作。
4. 步骤四:电路实现和测试在确认电路的设计和仿真结果无误之后,我们进一步将电路实现到实际的数字电路平台上,并进行了硬件测试。
我们使用实际的输入信号来测试电路的性能和稳定性,并对输出信号进行观察和分析。
通过这一步骤,我们验证了电路在实际环境中的可行性。
设计原理我们设计的电路基于特定的功能需求,采用了经典的数字电路设计原理。
通过使用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实验报告与代码毕业设计(论文)
实验一. 分频器设计一.实验目的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 实验报告******班级:电子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实验报告
专用集成电路实验报告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实验报告)一位半加器,全加器的设计
A
10
五、实验步骤
(一)半加器的设计
4、对设计文件进行仿真
4)编辑输入端口波形,即指定输入端口的逻辑电平变化,在波形编辑窗 口中,选择要输入波形的输入端口。以 b 端口为例,右键单击 b ,依次选 择value--clock--period,将时间改为1us。然后重复此过程将 a 的时间改 成 2us (a的周期是b的2倍),再将输入端的D0--D3选择不同的周期(一次 要有所差别)。最后选择软件的 Fie>Save进行保存。
3)加入输入、输出端口,在波形编辑器窗口左边的端口名列表 区点击鼠标右键,在弹出的右键菜单中选择 Insert Node or Bus… 命令,在弹出的 Insert Node or Bus 对话框界面中点击 Node Finder…按钮。在出现的 Node Finder 界面中的 Filter 列表中选 择 点击 List,在 Nodes Found 窗口出现所有信号的名称,点击中 间的按钮则 Selected Nodes 窗口下方出现被选择的端口名称。双击 OK按钮,完成设置,回到 Insert Node or Bus 对话框,双击OK按钮 ,所有的输入、输出端口将会在端口名列表区内显示出来。
5)按默认选项,点击NEXT出现新建工程以前所有的设定信息, 再点击FINISH完成新建工程的建立。
A
7
五、实验步骤
(一)半加器的设计
2、建立文本设计文件
1)选择File--New--Device Design Files--VHDL File,点击OK按钮,打开进入文本编辑器对话框。
2)在文本编辑器中输入对应VHDL程序代码,如下图 所示:
全加器的设计采用“元件例化语句”,故需建立两个VHDL文 本编辑对话框(一个顶层文件,一个底层文件)。在相应的编辑框中 输入相应的VHDL语句,再分别以各自的实体名进行保存。注意的是顶 层文件名应必须与工程名一致。此次实验底层文件为半加器VHDL语句 ,顶层文件为全加器VHDL语句,其语句分别如下两图所示:
VHDL实验报告
VHDL实验报告5090309160 庄炜旭实验三. 4位可逆计数器,4位可逆二进制代码-格雷码转换器设计一.实验目的学习时序电路的设计,仿真和硬件测试,进一步熟悉VHDL设计技术1. 学习4位可逆计数器的设计2. 学习4位可逆二进制代码-格雷码转换器设计二.实验内容设计4位可逆计数器,及4位可逆二进制代码-格雷码转换器,并仿真,下载。
[具体要求]1.4位可逆计数器a)使用CLOCK_50作为输入时钟,其频率为50MHz(对于频率大于50Hz的闪烁,人眼会看到连续的光),因而,对其进行225的分频后,再用于时钟控制。
(可利用实验一)b)使用拨码开关SW17作为模式控制,置‘1’时为加法计数器,置‘0’时为减法计数器,同时使用LEDR17显示SW17的值。
c)使用KEY3作为异步复位开关(按下时为0,不按为1),当为加法计数器时,置“0000”,当为减法计数器时,置“1111”。
d)使用LEDR3,LEDR2,LEDR1,LEDR0作为转换后的输出结果显示,LEDR3为高位,LEDR0为低位。
2.4位可逆二进制代码――格雷码转换器a)使用拨码开关SW17作为模式控制,置‘1’时为二进制代码―>格雷码转换,置‘0’时为格雷码―>二进制代码,同时使用LEDR17显示SW17的值。
b)使用拨码开关SW3, SW2, SW1, SW0作为输入的被转换数,SW3为高位,SW0为低位。
c)使用LEDR3,LEDR2,LEDR1,LEDR0作为转换后的输出结果显示,LEDR3为高位,LEDR0为低位。
三.管脚设定SW[0]PIN_N25SW[1]PIN_N26SW[2]PIN_P25SW[3] PIN_AE14SW[17] PIN_V2LEDR[0] PIN_AE23LEDR[1] PIN_AF23LEDR[2] PIN_AB21LEDR[3] PIN_AC22LEDR[17] PIN_AD12KEY[3] PIN_W26CLOCK_50 PIN_N2四.相关知识二进制代码与格雷码相互转换格雷码(Gray Code,简称G码)是典型的循环码,它是由二进制码(Binary,简称 B 码)导出的。
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语言的理解。
具体目标如下:1. 学习并掌握全加器的原理和电路结构;2. 掌握VHDL语言的基本语法和使用方法;3. 设计和模拟一个全加器电路,并验证其正确性;4. 分析和评估全加器电路的性能和优化方法。
二、全加器的原理和电路结构全加器是一种用于二进制加法的逻辑电路。
它接受两个输入位和一个进位输入位,并产生一个和输出位和一个进位输出位。
全加器的电路结构通常由两个半加器和一个或门组成。
半加器用于计算两个输入位的和,而或门用于计算进位输出位。
三、VHDL语言的基本语法和使用方法VHDL是一种硬件描述语言,用于描述和模拟数字电路。
它具有丰富的语法和功能,可以方便地进行电路设计和仿真。
VHDL语言的基本语法包括实体声明、端口声明、信号声明、过程声明等。
在本次实验中,我们将使用VHDL语言来描述和模拟全加器电路。
四、全加器电路的设计和模拟在本次实验中,我们将使用VHDL语言设计和模拟一个4位全加器电路。
首先,我们需要定义输入和输出信号,并声明全加器的实体和端口。
接下来,我们可以使用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报告
实验五:数制转换一、实验任务和要求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语言设计了一个简单的计数器电路,并通过FPGA实现了该计数器。
实验结果表明,VHDL计数器能够准确地实现计数功能,具有较高的稳定性和可靠性。
引言:计数器是数字电路中常见的一种基本电路,用于实现对输入信号的计数和统计。
在本次实验中,我们利用VHDL语言设计了一个简单的计数器电路,并通过FPGA实现了该计数器。
本实验旨在通过实际操作和观察,加深对VHDL语言和计数器电路的理解,提高实验者的实际动手能力和问题解决能力。
实验内容:1. VHDL语言设计计数器电路2. 在FPGA上实现计数器电路3. 调试和测试计数器电路实验步骤:1. 设计计数器电路的VHDL代码,包括计数器的输入输出端口、计数器的计数规则和状态转换规则等。
2. 将VHDL代码综合成逻辑门电路,并下载到FPGA开发板上。
3. 运行FPGA开发板,观察计数器电路的工作情况,调试和测试计数器电路。
实验结果:经过实验,我们成功设计了一个简单的4位二进制计数器,能够准确地实现计数功能。
在FPGA开发板上实现该计数器电路后,我们观察到计数器能够按照预期的规则进行计数,并且在每个计数值上能够稳定地输出正确的结果。
在不同的输入条件下,计数器电路都能够正常工作,具有较高的稳定性和可靠性。
结论:通过本次实验,我们深入了解了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的时钟频率即可产生四分音符的时长。
VHDL实验报告
西安电子科技大学实验报告班级:学号:姓名:地点: EⅡ-505 批次:第二批时间:星期五下午、晚上实验一3-8译码器电路设计实验(一)实验名称:3-8译码器电路设计(二)实验目的:1)掌握ISE开发工具的使用,掌握FPGA开发的基本步骤;2)掌握组合逻辑电路设计的一般方法;3)掌握程序下载方法,了解UCF文件的格式;4)初步了解开发板资源,掌握开发板使用方法。
重点了解滑动开关和LED显示灯的使用方法。
5)理解并掌握VHDL程序的结构,掌握输入输出端口的含义;(三)实验内容:(1)用VHDL实现3-8译码器模块译码器电路如图3-1所示。
其功能如表3-1所示。
试用VHDL完成该译码器的设计,并在开发图3-1 74x138 3-8译码器板上进行检验。
(2)将程序下载到FPGA并进行检验●资源使用要求:⏹用滑动开关SW0~SW4作为输入A,B,C,G1;⏹滑动开关BTN_EAST,BTN_WEST作为控制端G2A,G2B;⏹8个LED灯表示8个输出。
●检验方法:当SW0处于OFF(G1=1)或者SW1处于ON(G2A=1)或者SW2处于ON(G2B=1)位置时,所有LED灯灭;当SW0处于ON(G1=1),且BTN_EAST,BTN_WEST均处于OFF状态时,反映当前输入的译码输出在LED灯上显示,即当输入为000(滑动开关SW0-SW2处于OFF状态),LED0亮,其它灯灭,等等。
(四)实验步骤:1)启动ISE,新建工程文件,编写3-8译码器的VHDL模块;2)新建UCF文件,输入位置约束;3)完成综合、实现,生成下载文件;4)连接开发板USB下载线,开启开发板电源;5)下载到FPGA;6)拨动开关,验证结果是否正确。
(五)实验代码:entity decode38 isPort ( A : in STD_LOGIC;B : in STD_LOGIC;C : in STD_LOGIC;G1 : in STD_LOGIC;G2A : in STD_LOGIC;G2B : in STD_LOGIC;Y : out STD_LOGIC_VECTOR (7 downto 0));end decode38;architecture Behavioral of decode38 issignal din: std_logic_vector(2 downto 0);begindin <= C&B&A;PROCESS(din,G1,G2A,G2B)beginif (G1='1' AND G2A='0' AND G2B='0') THENcase din 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;elsif(G1='0' OR G2A='1' OR G2B='1')THENY <= "00000000";elsenull;end if;end process;end Behavioral;约束性文件NET "A" LOC = "L13" | IOSTANDARD = LVTTL | PULLUP;NET "B" LOC = "L14" | IOSTANDARD = LVTTL | PULLUP;NET "C" LOC = "H18" | IOSTANDARD = LVTTL | PULLUP;NET "G1" LOC = "N17" | IOSTANDARD = LVTTL | PULLUP;NET "Y<7>" LOC = "F9" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; NET "Y<6>" LOC = "E9" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; NET "Y<5>" LOC = "D11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; NET "Y<4>" LOC = "C11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; NET "Y<3>" LOC = "F11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; NET "Y<2>" LOC = "E11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; NET "Y<1>" LOC = "E12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8; NET "Y<0>" LOC = "F12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8;NET "G2A" LOC = "H13" | IOSTANDARD = LVTTL | PULLdown;NET "G2B" LOC = "D18" | IOSTANDARD = LVTTL | PULLdown;实验二可逆计数器设计实验(一)实验名称:八位可逆计数器电路设计(二)实验目的:1)进一步熟练ISE 开发工具,巩固FPGA 开发的基本步骤; 2)掌握设计仿真方法;3)掌握时序逻辑电路设计的一般方法,掌握时钟分频程序设计方法; 4)理解VHDL 的层次结构设计,掌握原理图输入方法; 5)巩固程序下载方法;6)了解开发板时钟资源,以及时钟分频方法。
VHDL实验报告一2选1多路选择器
实验一实验目的:熟悉quartus的vhdl文本设计流程全过程,学习简单的组合电路的设计,多层次的电路设计,仿真和硬件测试二、实验内容内容(一)用vhdl语言设计2选1多路选择器参考例3-1程序设计如下:library ieee;use ieee.std_logic_1164.all;entity mux21a isport (a,b,s:in bit;y: out bit);end entity mux21a;architecture one of mux21a isbeginy<=a when s='0' else b;end architecture one全程编译后软件提示0错误,3警告,可以继续下面仿真操作。
程序分析:这是一个2选1多路选择器,a和b分别为两个数字输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。
时序仿真及分析:时序仿真输入图:时序仿真输出图:时序分析:由上面两图可以得知:当s=0时,y口输出a,当s=1时,y口输出b下载和硬件测试:引脚锁定图:程序下载完成后,选择实验电路模式5,通过短路帽选择clock0接256Hz 信号,clock2接8Hz信号。
通过键一控制s,当键一进行切换时,明显能听到扬声器发出两种不同音调的声音。
实验内容(二)双二选一多路选择器设计程序设计:library ieee;use ieee.std_logic_1164.all;entity mux21a isport (a,b,s:in bit;y: out bit);end entity mux21a;architecture one of mux21a isbeginy<=a when s='0' else b;end architecture one;entity muxk isport (a1,a2,a3,s0,s1:in bit;outy:out bit);end entity muxk;architecture bhv of muxk iscomponent mux21aport (a,b,s:in bit;y:out bit);end component;signal tmp: bit;beginu1:mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp);u2:mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy);end architecture bhv;全程编译后软件提示0错误,2警告程序分析:这是一个双2选1多路选择器,a1、a2和a3分别为两个数字输入端的端口名,s0、s1为通道选择控制信号输入端的端口名,outy为输出端的端口名。
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 ----> 波形记录。
实验三_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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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语言进行数字电路的设计和验证。
七、参考文献
[1] Peter J. Ashenden, "The Designer's Guide to VHDL", 3rd Edition, Morgan Kaufmann, 2008.
[2] Zainalabedin Navabi, "VHDL: Analysis and Modeling of Digital Systems", 2nd
Edition, McGraw-Hill Education, 2011.
结语
VHDL是一种强大的硬件描述语言,广泛应用于数字电路设计和验证。
通过本次实验,我们对VHDL的应用有了更深入的了解,并通过设计一个简单的电路加深了对电路设计的理解。
希望通过今后的学习和实践,能够更加熟练地应用VHDL语言进行电路设计和验证。