【Quartus II】VHDL组合逻辑-时序逻辑练习

本文详细介绍了如何使用Quartus II进行VHDL设计,包括4位加法器、2选1/双2选1多路选择器、触发器和锁存器的原理图输入、编译、仿真和硬件测试。通过实例展示了基本组合和时序电路的设计流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

    • 一.在Quartus II中用原理图输入法设计4位加法器
        • 1.打开1位全加器项目文件
        • 2.新建4位全加器原理图文件
        • 3.新建波形文件
        • 4.引脚绑定及测试
    • 二.应用QuartusII 完成基本组合电路设计
      • ①利用QuartusⅡ完成2选1多路选择器
        • 1.新建工程
        • 2.创建VHDL文件
        • 3.编译
        • 4.功能仿真
        • 5.查看RTL电路和门电路
        • 6.硬件测试
      • ②双2选1多路选择器
        • 1.新建VHDL文件
        • 2.编译
        • 3.新建波形图
        • 4.查看RTL电路及门级电路
        • 5.硬件测试
    • 三.应用QuartusII 完成基本时序电路的设计
      • ①设计触发器
        • 1.新建工程
        • 2.新建VHDL文件
        • 3.编译
        • 4.新建波形文件
        • 5.查看RTL电路及门级电路
        • 6.硬件测试
      • ②设计锁存器
        • 1.新建工程
        • 2.新建VHDL文件
        • 3.编译
        • 4.新建波形文件
        • 5.查看RTL电路及门级电路
        • 6.硬件测试
    • 四.总结
    • 5.参考链接

一.在Quartus II中用原理图输入法设计4位加法器

这里利用上次生成的一位全加器原理图(参考:https://blog.csdn.net/qq_45659777/article/details/123444666
,通过四个一位全加器实现4位全加器

半加器原理图:
在这里插入图片描述

半加器波形文件:
在这里插入图片描述

1位全加器原理图:
在这里插入图片描述

1位全加器波形图:

在这里插入图片描述

1.打开1位全加器项目文件
2.新建4位全加器原理图文件

在这里插入图片描述
注意这里用到了总线Bus Line
在对线命名的时候,选中该条线,然后右键,选择properties,就可以给线命名了。在这里插入图片描述

保存该文件,并编译
编译成功,无错误

在这里插入图片描述

3.新建波形文件

保存,编译
在这里插入图片描述
在这里插入图片描述
满足公式:s=a+b+c;s>15,进位c=1
该全加器为4位全加器,当低位数字开始相加时,会加上开始的进位,依次从低位开始相加,同时地位向高位进位。

4.引脚绑定及测试

查看开发板引脚图,找到相关引脚,将需要使用的引脚,绑定到原理图上对应的输入处
在这里插入图片描述

相应找到LED引脚配置为输出
在这里插入图片描述

绑定引脚
在这里插入图片描述
在这里插入图片描述
绑定成功
在这里插入图片描述
下载测试

把开发板接上电源,USB 接口接电脑。打开电源开关(注意不用下载时请一定关闭开关,以免烧坏板子)。点击软件工具栏上的按钮 ,则出现下载界面。第一次下载需安装硬件。即在下载界面中点击按钮“hardware setup…”,然后在弹出的对话框中选择“USBblaster”,再点击“ok”,则硬件被安装上。

安装好硬件后,在下载的.sof文件后打钩,再点击start,看到100%(successful),下载成功

在这里插入图片描述
在这里插入图片描述

二.应用QuartusII 完成基本组合电路设计

①利用QuartusⅡ完成2选1多路选择器

1.新建工程

项目命名:
在这里插入图片描述
选择芯片:
在这里插入图片描述
选择仿真软件:
在这里插入图片描述

2.创建VHDL文件

点击File->New->VHDL File

在这里插入图片描述
编写代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY mux21a IS

    PORT (   IN0,IN1,S1:in std_logic;

                      COUTY : OUT STD_LOGIC);

END mux21a;

ARCHITECTURE behav OF mux21a IS

BEGIN

       COUTY<=IN0 when S1='0' ELSE IN1;

END behav;

保存文件为mux21a.vhd

3.编译

编译成功:
在这里插入图片描述

4.功能仿真

新建波形文件
在这里插入图片描述

保存为mux21a.vwf
点击运行:
在这里插入图片描述

5.查看RTL电路和门电路

点击Tools->Netlist Viewers->RTL Viewer
在这里插入图片描述
在这里插入图片描述

点击Tools->Netlist Viewers->Technology Map Viewer 生成如下门级电路
在这里插入图片描述
在这里插入图片描述

6.硬件测试

绑定引脚:
在这里插入图片描述

下载测试:
当s1为1时,COUTY=IN1=0
在这里插入图片描述
当s1为0时,COUTY=IN0=1
在这里插入图片描述

②双2选1多路选择器

1.新建VHDL文件

代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY dmux21a IS

    PORT (   IN0,IN1,IN2,S0,S1:in STD_LOGIC;

                      COUTY : OUT STD_LOGIC);

END dmux21a;

 

ARCHITECTURE BHV OF dmux21a IS

 COMPONENT MUX21A

              PORT(IN0,IN1,S1:IN STD_LOGIC;

                            COUTY :OUT STD_LOGIC);

   END COMPONENT;

SIGNAL tmp : STD_LOGIC;

BEGIN

              u1 : MUX21A PORT MAP(IN0, IN1, S0, tmp);   

              u2 : MUX21A PORT MAP(IN2, tmp, S1, COUTY);

END BHV;

保存该文件为dmux21a.vhd
将该文件设置为顶层文件
在这里插入图片描述

2.编译

编译成功:
在这里插入图片描述

3.新建波形图

在这里插入图片描述
保存为dmux21a.vwf
运行:
在这里插入图片描述

4.查看RTL电路及门级电路

在这里插入图片描述

在这里插入图片描述

5.硬件测试

绑定引脚:
在这里插入图片描述

下载测试:
在这里插入图片描述
在这里插入图片描述

三.应用QuartusII 完成基本时序电路的设计

①设计触发器

1.新建工程

同上,工程名为trigger

2.新建VHDL文件

代码:

LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY trigger IS
	PORT (CLK : IN STD_LOGIC ;
				D : IN STD_LOGIC ;
				Q : OUT STD_LOGIC );
	END trigger;
ARCHITECTURE bhv OF trigger IS
	SIGNAL Q1 : STD_LOGIC ; --类似于在芯片内部定义一个数据的暂存节 点
	BEGIN
		PROCESS (CLK,Q1)
			BEGIN
				IF CLK'EVENT AND CLK = '1' THEN Q1 <= D ;
				END IF;
			END PROCESS ;
		Q <= Q1 ; --将内部的暂存数据向端口输出(双横线--是注释符号)
	END bhv;

文件保存为trigger.vhd
注意!实体名和文件名保持一致

3.编译

编译成功:
在这里插入图片描述

4.新建波形文件

在这里插入图片描述
运行:
在这里插入图片描述

5.查看RTL电路及门级电路

在这里插入图片描述
在这里插入图片描述

6.硬件测试

绑定引脚:
在这里插入图片描述

下载测试:
在这里插入图片描述

②设计锁存器

1.新建工程

同上,工程名为latch1

2.新建VHDL文件

代码:

LIBRARY IEEE ;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY latch1 IS
	PORT (CLK : IN STD_LOGIC ;
				D : IN STD_LOGIC ;
				Q : OUT STD_LOGIC );
	END latch1;
ARCHITECTURE bhv OF latch1 IS
	BEGIN
		PROCESS (CLK,D) BEGIN
			IF CLK = '1' --电平触发型寄存器
			THEN Q <= D ;
		   END IF;
		END PROCESS ;
	END bhv;

文件保存为latch1.vhd
注意!实体名和文件名保持一致

3.编译

编译成功:
在这里插入图片描述

4.新建波形文件

在这里插入图片描述
保存为latch1.vwf
运行:
在这里插入图片描述

5.查看RTL电路及门级电路

在这里插入图片描述
在这里插入图片描述

6.硬件测试

绑定引脚:
在这里插入图片描述

下载测试:

在这里插入图片描述

四.总结

完成一个比较复杂的电路设计时,可以分解到比较小的电路然后集成,将小电路封装成一个小的单元,然后在实现更复杂电路时,不在关心小电路的内部组成,直接调用,能够简化电路设计。

5.参考链接

https://doc.wendoc.com/beb708098c0a4a01a87d72ccf-7.html

http://www.doc88.com/p-1022865742369.html

gd25q32是一款SPI串行闪存芯片,由GigaDevice公司(Chinese company)生产。该芯片具有32Mb的存储容量,采用的是工业标准的SPI接口,通信速度快,可广泛应用于嵌入式系统中。 gd25q32芯片在嵌入式系统中有着广泛的应用,主要用于存储程序代码和数据。它的存储容量较大,可以存储较多的数据信息。SPI接口的应用使得该芯片在通信速度方面有着优势,数据传输速度快,能够满足许多高性能系统的需求。 在嵌入式系统开发中,程序代码和数据的存储是非常重要的。gd25q32芯片的出现,使得系统开发者能够轻松地通过SPI接口实现数据的读写操作,增强了系统的存储能力和数据处理能力。同时,该芯片的稳定性和可靠性也得到了广泛认可。 CSDN是一个技术社区,为广大开发者提供了大量的技术文章和开源项目。在CSDN上,我们可以找到大量与gd25q32芯片相关的资料和讨论。通过在CSDN上搜索gd25q32,我们可以学习到更多关于gd25q32芯片的使用方法、开发经验和相关的技术问题解答。CSDN开发者们提供了相互交流、分享经验和学习进步的平台。 总之,gd25q32是一款功能强大的SPI串行闪存芯片,具有较大的存储容量和较快的通信速度。在嵌入式系统开发中,gd25q32芯片的应用得到了广泛认可。CSDN开发者们提供了与gd25q32芯片相关的技术资料和交流平台,使得开发者能够更好地理解和应用gd25q32芯片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值