实验二 组合逻辑电路的VHDL实现
VerilogHDL实验报告

VerilogHDL实验报告实验一Modelsim仿真软件的使用一、实验目的(1)熟悉Modelsim 软件(2)掌握Modelsim 软件的编译、仿真方法(3)熟练运用Modelsim 软件进行HDL 程序设计开发二、实验内容1、实验要求用Verilog HDL 程序实现一个异或门,Modelism仿真,观察效果。
2、步骤1、建立工程2、添加文件到工程3、编译文件4、查看编译后的设计单元5、将信号加入波形窗口6、运行仿真3、方法moduleyihuo (a,b,c);inputa,b;output c;assign c=a^b;endmodule测试程序:module t_yihuo;reg a,b; wire c;initial begin a=0; forever #20 a=~a; end initial begin b=0; forever #30 b=~b; endyihuou1(a,b,c);endmodule二、实验结果波形图:三、分析和心得通过这次的实验,我基本熟悉Modelsim软件,掌握了Modelsim软件的编译、仿真方法。
同时在编写程序的过程中,加深了我对课上所讲的HDL的语法的认识。
实验二简单组合电路设计一、实验目的(1)掌握基于Modelsim的数字电路设计方法(2)熟练掌握HDL 程序的不同实现方法二、实验内容1、实验要求设计一个三人表决器(高电平表示通过),实验内容如下:(1)三个人,一个主裁判,两个副裁判;(2)规则:只要主裁判同意,输出结果为通过;否则,按少数服从多数原则决定是否通过。
使用 Verilog HDL 程序实现上述实验内容,并使用modelsim 仿真。
2、方法module test(a,b,c,s);inputa,b,c;output s;assign s=c|(b&a);endmodulemodulet_test;rega,b,c;wire s;initialbegina=0;forever#10 a=~a;endinitialbeginb=0;forever #20 b=~b;endinitialbeginc=0;forever#40 c=~c;endtest u1(a,b,c,s);endmodule三、实验结果四、分析和心得通过本次实验,我掌握基于Modelsim的简单数字电路设计方法,且尝试了用不同方法实现功能,三人表决器可以通过testbench测试程序实现,也可以利用always模块实现,可见程序的设计思想是很重要的。
实验二 组合逻辑电路的设计

实验二组合逻辑电路的设计一、实验目的1.设计8段译码器、两路4位二进制比较器,并在实验装置上验证所设计的电路;2.学习用VHDL语句进行逻辑描述。
二、实验要求用VHDL设计8段译码器、两路4位二进制比较器,对CPLD器件进行配置及下载来验证自己的设计,验证电路的外围器件可选用按键输入、指示灯输出。
三、设计方案按键的状态作为输入,输出对应数字的编码,连接到数码管上面可以看到数码管显示对应的数值。
代码:LED.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity LED isport(number:in std_logic_vector(3 downto 0);ledout:out std_logic_vector(7 downto 0));end;architecture u1 of LED isbeginwith number selectledout<="00111111"when"0000", --0"00000110"when"0001", --1"01011011"when"0010", --2"01001111"when"0011", --3"01100110"when"0100", --4"01101101"when"0101", --5"01111101"when"0110", --6"00000111"when"0111", --7"01111111"when"1000", --8"01101111"when"1001", --9"01110111"when"1010", --A"01111100"when"1011", --B"00111001"when"1100", --C"01011110"when"1101", --D"01111001"when"1110", --E"01110001"when"1111"; --Fend;实验结果:按下试验箱的按键后,数码管显示按键的状态。
(新)实验二组合逻辑电路设计

实验二组合逻辑电路设计一、实验目的1、了解和逐步掌握一般组合逻辑电路的设计方法;2、熟练掌握QuartusⅡ软件原理图输入方式的操作步骤;3、熟练掌握QuartusⅡ软件中底层和顶层电路模块的设计方法;4、熟练掌握Quartus Ⅱ软件常见操作的设置方法。
二、实验设备计算机、QuartusⅡ软件、实验箱三、实验内容1、在QuartusⅡ软件中采用VHDL语言完成一个2选1多路选择器底层电路的设计;2、将已设计完成的2选1数据选择器作为底层模块,通过原理图输入方式和元件例化语句两种方式完成顶层3选1数据选择器顶层电路的设计和测试。
四、实验步骤注意:以下为大体步骤,详细步骤根据具体实验过程独立完成。
1、设计2选1数据选择器底层模块用VHDL语言完成该电路模块的设计并在QuartusⅡ软件中进行仿真,截取仿真波形作为部分实验结果。
2、设计3选1数据选择器顶层模块将2选1数据选择器作为底层元件,利用原理图输入方式和元件例化语句两种方式完成3选1数据选择器顶层模块的设计并仿真;注意:底层和顶层文件应放在同一工程文件夹中,截取3选1数据选择器仿真波形和顶层图作为部分实验结果。
3、完成3选1数据选择器的引脚锁定(1)三个输入端可自由锁定在三个按键上,根据实验箱上空余的引脚自由锁定;(2)两个选择端可自由锁定在两个拨码开关上;(3)输出端可自由锁定在一个LED 灯上,通过灯的亮灭判断是否有输出。
为了清楚区分三个输入端,测试时可设置三个不同的LED 灯来判断。
图-1 开关量输入输出模块S1—s8是带自锁的单刀单执拨码开关,在开关未拨动时是低电平,拨动时J1为高电平并保持高电平不变,只有回拨开关时J1才恢复低电平输入。
图-2 按键模块此模块共有8个按键,BUTTON1—BUTTON8是轻触按键;在按键未按下时JP6为高电平输入,按键按下后JP6对FPGA 输入低电平,松开按键后恢复高电平输入。
图-3 LED 灯指示模块该模块有8个LED 指示灯,在使用时候只需要用排线连接JP5和FPGA 连接,FPGA 输出低电平时指示灯亮。
数字电路与逻辑设计实验

数字电路与逻辑设计实验报告学院:班级:姓名:学号:日期:一.实验名称:实验一:QuartusII 原理图输入法设计与实现实验二:用VHDL 设计与实现组合逻辑电路实验三:用VHDL 设计与实现时序逻辑电路实验四:用VHDL 设计与实现数码管动态扫描控制器二.实验所用器件及仪器:1.计算机2.直流稳压电源3.数字系统与逻辑设计实验开发板三.实验要求:实验一:(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。
(2)用(1)实现的半加器和逻辑门设计实现一个全加器,仿真并验证其功能,并下载到实验板上测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用3—8线译码器和逻辑门设计实现函数F=/C/B/A+/CB/A+C/B/A+CBA,仿真验证其功能并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
注:实验时将三个元器件放在一个new block diagram中实现。
实验二:(1)用VHDL语言设计实现一个共阴极7段数码译码器,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,7段数码管显示输出信号。
(2)用VHDL语言设计实现一个8421码转余三码的代码器,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
(3)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出1,否则出0;仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号。
实验三:(1)用VHDL语言设计实现一个带异步复位的8421 十进制计数器,仿真验证其功能,并下载到实验板测试。
要求用按键设定输入信号,发光二极管显示输出信号。
(2)用VHDL语言设计实现一个分频系数为12,输出信号占空比为50%的分频器,仿真验证其功能。
注:实验时将(1)、(2)和数码管译码器 3 个电路进行链接,并下载到实验板显示计数结果。
实验二 组合逻辑电路的设计 fpga

实验二组合逻辑电路的设计一、实验目的:1、掌握用VHDL语言和EPLD进行组合逻辑电路的设计方法。
2、加深对EPLD设计全过程的理解。
3、掌握组合逻辑电路的静态测试方法。
二、实验设备:PC机三、实验内容:1、用VHDL语言输入法设计三人表决器,其输入为8421码,要求当输入1的个数大于等于2时,判别电路输出为1;反之为0。
2、用VHDL语言输入法设计8-3编码器。
四、实验步骤:(一)三人表决器1、采用文本编辑器输入三人表决器VHDL语言源程序,建立工程。
VHDL语言源程序如下所示:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bj isport (m:in std_logic_vector(2 downto 0);y:out std_logic);end;architecture one of bj isbeginprocess (m)beginif m="000" then y<='0';elsif m="001"then y<='0';elsif m="010"then y<='0';elsif m="011"then y<='1';elsif m="100"then y<='0';elsif m="101"then y<='1';elsif m="110"then y<='1';elsif m="111"then y<='1';end if;end process;end;2、编译并进行仿真,仿真结果如下所示:由仿真结果可以验证当输入1的个数大于等于2时,判别电路输出为1;反之为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(Very High-Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统。
通过使用VHDL语言,我们可以实现数字电路的设计,从而满足各种需求。
VHDL语言提供了一种结构化的设计方法,允许设计者描述硬件电路的结构、功能以及时序行为。
以下是一些常见的数字电路设计任务,以及如何使用VHDL语言来实现它们。
1. 门电路设计门电路是最简单的数字电路之一,由逻辑门组成。
使用VHDL语言,我们可以通过描述逻辑门的输入和输出来实现门电路的设计。
例如,我们可以使用VHDL语言描述一个与门:```vhdlentity AND_gate isport (A, B : in bit;Y : out bit);end entity AND_gate;architecture dataflow of AND_gate isbeginY <= A and B;end architecture dataflow;```在这个例子中,我们定义了一个输入端口A和B,以及一个输出端口Y。
在architecture部分,我们使用VHDL语言描述了Y的逻辑值为A和B的逻辑与。
2. 时序逻辑电路设计时序逻辑电路是根据时钟信号进行操作和状态转换的电路。
使用VHDL语言,我们可以描述时序逻辑电路的行为和状态变化。
例如,我们可以使用VHDL语言描述一个触发器:```vhdlentity D_flip_flop isport (D, CLK : in bit;Q : out bit);end entity D_flip_flop;architecture behavior of D_flip_flop issignal Q_temp : bit;beginprocess(CLK)beginif CLK'event and CLK = '1' thenQ_temp <= D;end if;end process;Q <= Q_temp;end architecture behavior;```在这个例子中,我们定义了一个输入端口D和CLK,以及一个输出端口Q。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二组合逻辑电路的VHDL实现
一、实验目的
掌握使用VHDL语言进行时序逻辑电路设计的方法。
二、实验设备及器件
IBM PC机一台
三、实验内容
(1)用VHDL 语言设计一个D触发器,对程序进行编译和仿真,并记录仿真波形。
CLK接收到上升沿信号时,输入端D的信号被传送到输
出端Q输出,否则输出端Q维持原来的状态不变。
实验代码:
D触发器LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY DFF1 IS
PORT (CLK : IN STD_LOGIC ;
D : IN STD_LOGIC ;
Q : OUT STD_LOGIC );
END ;
ARCHITECTURE bhv OF DFF1 IS
SIGNAL Q1 : STD_LOGIC ; --类似于在芯片内部定义一个数据的暂存节点
BEGIN
PROCESS (CLK)
BEGIN
IF CLK'EVENT AND CLK = '1'
THEN Q1 <= D ;
END IF;
Q <= Q1 ; --将内部的暂存数据向端口输出
END PROCESS ;
END bhv;
(2)用VHDL语言设计一个十进制加法计数器,对程序进行编译和仿真,并记录仿真波形。
提示:十进制加法计数器的电路如下图所示,在时钟信号的驱动下,计数器进行累加,每次加1,其输出状态由0000变化到1001,加满回零。
当复位输入端reset为低电平时,计数器复位,输出状态回到0000。
十进制加法计数器电路图
实验代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY jsq10 IS
PORT(CLK,RESET:IN STD_LOGIC;
Q:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));
END jsq10;
ARCHITECTURE ONE OF jsq10 IS
BEGIN
PROCESS(CLK,RESET)
BEGIN
IF(RESET='0') THEN Q<="0000";
ELSIF(CLK' EVENT AND CLK='1') THEN
Q<="0000";
ELSE
Q<=Q+1;
END IF;
END IF;
END PROCESS;
END ONE;
(3)用VHDL语言设计一个电平锁存器,对程序进行编译和仿真,并记录仿真
波形。
提示:电平锁存器电路如右图所示。
当复位信
号q为低电平;当复位信号reset为低电平时,
如果s信号为高电平,输出信号q输出输入端
电平锁存器
data的值;当复位信号reset为低电平时,如果
s信号为低电平,输出信号保持原值。
实验代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY LATCHH IS
Port ( DATA,RESET,S: IN STD_LOGIC;
Q: OUT STD_LOGIC);
END LATCHH;
ARCHITECTURE BITT OF LATCHH IS
SIGNAL Q1:STD_LOGIC ; --类似于在芯片内部定义一个数据的暂存节
点
BEGIN
PROCESS(DATA,RESET,S)
BEGIN
Q<='0';
Q1<='0';
ELSIF(S='1')THEN
Q1<=DATA;
Q<=DATA;
ELSE
Q<=Q1;
END IF;
END PROCESS;
END BITT;
四、实验要求
熟练掌握运用VHDL语言进行组合逻辑电路设计的基本方法。
五、实验结果
(1)D触发器
在Quartus II建立工程并输入代码,经编译后波形图如下所示:
D触发器实验波形图
实验分析:
如图所示,当时钟信号输入端CLK接收到上升沿信号时,输入端D的信号被传送到输出端Q输出,否则输出端Q维持原来的状态不变。
在0~5ns内,虽然CLK电平中间有过一次翻转,但输入端D始终为低电平,所以输出端Q为低电平;在5ns~10ns,时钟信号有一次翻转,此时D为高电平,因此输出端Q为1.
(2)十进制加法器
在Quartus II 建立工程并输入代码,经编译后波形图如下所示:
实验分析:
如图所示,CLK 是时钟信号,Q0、Q1、Q2和Q3是从低到高的4位二进制数,在时钟信号的驱动下,计数器进行累加,每次加1,其输出状态由0000变化到1001,加满回零。
当复位输入端reset 为低电平时,计数器复位,输出状态回到0000。
在0~10ns 内,由于复位输入端RESET 为低电平,因此虽然时钟信号CLK 有输入,但计数器无法进行累加;在10ns~20ns 内,复位输入端为“1”,此时时钟信号CLK 有效,计数器进行累加计数。
(3)电平锁存器
在Quartus II 建立工程并输入代码,经编译后波形图如下所示:
实验分析:
在10ns~20ns ,复位信号reset 为高电平,锁存器被复位,输出信号q 为低电平;在0~10ns ,复位信号reset 为低电平时,如果s 信号为高电平,输出信号q 输出输入端data 的值;当复位信号reset 为低电平时,如果s
信号为低电平,输
十进制加法器波形图
电平锁存器
出信号保持原值。
但由于最后时序的原因,未能实现最后一点。
六、实验总结
本次实验的主要内容是时序逻辑电路的VHDL实现,要求我们掌握VHD语言进行时序电路设计的方法,同时在实验一的基础上,进一步熟悉Quartus II软件的使用。
经过这两次实验,让我体会到只要愿意认真学,总会有收获。
例如本次实验前2个项目都是在参考程序的情况下完成的,项目3经过思考、结合前面的几个程序,就设计出了基本的轮廓。
此外,本次实验涉及到时序的问题比较多,个人主观认为特别是在电平锁存器的“RESET为低,S为低,输出保持信号保持原值”这个状态下,设计程序应该没问题,但是发现RESET、S同时由高电平变为低电平状态下,输出Q并未保持原输出,而是跳变为0。
后来进行总结时,认为应该是在并列情况下由于有延迟导致程序逻辑没问题,但与实际情况条件不符,导致结果出错。