当前课程知识点:EDA技术与应用 >  第三章 EDA开发平台——QuartusII应用 >  3.7层次化设计 >  3.7.2 层次化设计 教学视频

返回《EDA技术与应用》慕课在线视频课程列表

3.7.2 层次化设计 教学视频在线视频

下一节:3.7.4 层次化设计 讨论

返回《EDA技术与应用》慕课在线视频列表

3.7.2 层次化设计 教学视频课程教案、知识点、字幕

同学们

大家好

我们通过前几讲的内容介绍了

如何利用QuartusII软件

实现一个简单的数字系统的设计

但是在很多情况下

数字系统的电路非常复杂

只利用一个原理图文件

或硬件描述语言文本

来实现会很困难

这时通常采用层次化设计的方法

来完成复杂电路的设计

那么本讲就来介绍一下层次化设计的方法

层次化设计

就是将一个复杂的系统分层次分

模块进行设计

然后将各模块组合成一个总模块

完成所需功能

具体方法为

首先将最终设计目标定义成顶层模块

然后按照一定方法

将顶层模块划分成各个子模块

完成对子模块的逻辑设计

最后通过模块调用的方法

实现顶层模块的设计

下面我们通过一个实例来具体分析一下

请同学们思考一下

如何利用层次化设计的方法

实现一个四位全加器呢?

两个加数分别用A3、A2、A1、A0

和B3、B2、B1、B0进行表示

由于是全加器

需要考虑来自低位的进位Cin

也就是第-1位向第0位的进位C-1

我们利用多位加法的计算方法进行分析

首先最低位相加即第0位相加

本位和为S0进位为C0

然后进行第1位相加

本位和为S1,进位为C1

依次向高位相加

最终实现四位数的加法

而最高位就是该四位全加器的进位Cout

根据上述分析

四位全加器可分解成四个一位全加器

每个一位全加器用来实现1位加法运算

第1位运算之后再进行高1位运算

由此我们便实现了电路的层次化分解

四位全加器为顶层模块

四个1位全加器为其子模块

下面利用QuartusII软件

讲解一下具体的实现方法

首先在主界面下新建一个工程add_4

操作方法参照前几讲

这里已经提前建好了该工程

下一步是在工程下新建一个设计输入文件

这里以原理图为例

将其保存至工程文件夹下

这就是四位全加器的顶层模块设计文件

称为顶层实体

除此之外

还需新建一个子模块的设计输入文件

这里同样选择原理图文件

也将其保存至工程文件夹下

注意名称为add_1

此时在“Files(文件)“栏目内

便出现了两个设计输入文件

这里需要注意

软件默认与工程名称相同的

设计输入文件为顶层实体

如果在工程中出现多个设计输入文件

请大家注意文件命名

接下来需要在add_1原理图文件中

输入一位全加器的设计电路

由于前几讲中

我们已经设计过1位全加器的电路了

这里可将其复制到该文件中

也可将之前设计的1位全加器原理图

直接添加到该工程

这里需要强调的是

如果采用添加文件到工程的方式

那么该工程便不需要新建

1位全加器的原理图了

由于我们已经新建了

1位全加器的原理图文件

所以直接将之前的原理图

复制到当前文件中

子模块设计完成之后

接下来进行顶层模块的设计

在顶层模块的设计中

需将子模块作为一个元件进行调用

因此需要先将子模块的原理图

生成为一个元件符号

操作方法为:

在一位全加器的原理图界面

点击“文件”菜单栏下的“创建更新”选项

选择为当前文件创建一个元件符号

并将其保存在当前工程文件夹下

那么该子模块便可以被直接调用了

接下来打开4位全加器的原理图

添加原件

此时在工程文件夹下

会显示出我们自行生成的1位全加器

我们采用连续插入的方式

添加四个到原理图中

并摆放到合适的位置

然后按照设计思路进行连线

首先将前一级的进位输出

连接到后一级的进位输入上

然后再连接输入输出端口

由于加数是四位的

因此这里可以采取总线连接方式

我们先在原理图中添加输入、输出端口

并放置到合适的位置

接下来在输入端的引脚线上

引出一段延长线

注意该延长线必须是总线形式

在绘图工具栏点击总线工具

将光标移至输入端的引脚处

绘制一段延长线

大家会发现

总线的图形要比单根引脚线宽很多

单击该总线使其变为蓝色

然后通过键盘输入总线的名称

A[]3..0]

A表示总线的名称

[]3..0]零表示总线的宽度为四位

如果总线的宽度为N位

则应表示为N减一点点零

然后将端口名也改为A[3..0]

这里注意

端口名称可与其引脚连接总线名称不同

必须保证宽度是相同的

接下来绘制总线

A的四条信号线

它们分别连接于

四个1位全加器的加数输入端A

这里需要强调的是子模块的端口名与顶层

模块的端口名并不冲突

也请同学们不要混淆

我们分别在1位全加器的A端

引出一根信号线

注意不是总线

然后从低位到高位

依次命名为A0到A3

用来表示总线A的每一位

这样我们就利用节点标号的方法

将总线及对应的每一位引脚连接上了

所以在绘制原理图时

为了读图更加清晰

通常为两个需要连接的引脚

命名为相同的名称

也就是节点标号相同的引角

是默认连接在一起的

按照节点标号的方法

将其余端口连接完成

如图所示

其实如果是输入、输出端口为总线形式的话

可以不必在端口处引出延长线

直接将端口名命名为总线形式即可

例如A端口删掉延长线

直接将端口名命名为A3点点零

但是如果是非端口的引脚为总线形式

就必须引出延长线在命名了

我们将电路绘制完成之后

就可以按照前几讲的方法

进行后续的编译、仿真和编程下载了

在层次化设计中

最核心的部分就是功能的分解

也就是将顶层模块分解成一个个的子模块

再利用模块调用的方式

完成顶层模块的设计

在这一讲当中

我们采用的是原理图输入法

文本输入法也具有同样的道理

具体的实现过程会在学习了VHDL基本语法

知识后再进行讲解

同学们下一讲

再见

EDA技术与应用课程列表:

第一章 EDA技术概述

-1.1 EDA技术概述

--1.1.1 EDA技术概述 导学

--1.1.2 EDA技术概述 教学视频

--1.1.3 EDA技术概述 单元测验

--1.1.4 EDA技术概述 讨论

第二章 可编程逻辑器件概述

-2.1 可编程逻辑器件(PLD)概述

--2.1.1 可编程逻辑器件 导学

--2.1.2 可编程逻辑器件概述 教学视频

--2.1.3 可编程逻辑器件概述 单元测验

--2.1.4 可编程逻辑器件概述 讨论

-2.2 CPLD的结构和原理

--2.2.1 CPLD结构和原理 导学

--2.2.2 CPLD的结构和原理 教学视频

--2.2.3 CPLD的结构和原理 单元测验

--2.2.4 CPLD的结构和原理 讨论

-2.3 FPGA的结构和原理

--2.3.1 FPGA的结构和原理 导学

--2.3.2 FPGA的结构和原理 教学视频

--2.3.3 FPGA的结构和原理 单元测验

--2.3.4 FPGA的结构和原理 讨论

-2.4 FPGA和CPLD的选用

--2.4.1 FPGA和CPLD的选用 导学

--2.4.2 FPGA和CPLD的选用 教学视频

--2.4.3 FPGA和CPLD的选用 单元测验

--2.4.4 FPGA和CPLD的选用 讨论

-2.5 FPGA与CPLD的编程和配置

--2.5.1 FPGA与CPLD的编程与配置 导学

--2.5.2 FPGA与CPLD的编程与配置 教学视频

--2.5.3 FPGA与CPLD的编程与配置 单元测验

--2.5.4 FPGA与CPLD的编程与配置 讨论

第三章 EDA开发平台——QuartusII应用

-3.1 QuartusII概述

--3.1.1 Quartus Ⅱ概述 导学

--3.1.2 Quartus Ⅱ概述 教学视频

--3.1.3 Quartus Ⅱ概述 单元测验

--3.1.4 Quartus Ⅱ概述 讨论

-3.2 新建工程

--3.2.1 新建工程 导学

--3.2.2 新建工程 教学视频

--3.2.3 新建工程 单元测验

-3.3 设计输入

--3.3.1 设计输入 导学

--3.3.2 设计输入 教学视频

--3.3.3 设计输入 单元测验

--3.3.4 设计输入 讨论

-3.4 设计编译

--3.4.1 设计编译 导学

--3.4.2 设计编译 教学视频

--3.4.3 设计编译 单元测验

--3.4.4 设计编译 讨论

-3.5 仿真验证

--3.5.1 仿真验证 导学

--3.5.2 仿真验证 教学视频

--3.5.3 仿真验证 单元测验

--3.5.4 仿真验证 讨论

-3.6 器件编程

--3.6.1 器件编程 导学

--3.6.2 器件编程1 教学视频

--3.6.3 器件编程2 教学视频

--3.6.4 器件编程 单元测验

--3.6.5 器件编程 讨论

-3.7层次化设计

--3.7.1 层次化设计 导学

--3.7.2 层次化设计 教学视频

--3.7.3 层次化设计 单元测验

--3.7.4 层次化设计 讨论

-3.8 宏功能模块的使用

--3.8.1 宏功能模块的使用 导学

--3.8.2 宏功能模块的使用 教学视频

--3.8.3 宏功能模块的使用 单元测验

--3.8.4 宏功能模块的使用 讨论

第四章 VHDL语言概述

-4.1 VHDL语言概述

--4.1.1 VHDL概述 导学

--4.1.2 VHDL语言概述 教学视频

--4.1.3 VHDL语言概述 单元测验

--4.1.4 VHDL概述 讨论

-4.2 VHDL代码的结构

--4.2.1 VHDL代码的结构 导学

--4.2.2 VHDL代码的结构 教学视频

--4.2.3 VHDL代码的结构 单元测验

--4.2.4 VHDL代码的结构 讨论

-4.3 库和库声明

--4.3.1 库和库声明 导学

--4.3.2 库和库声明 教学视频

--4.3.3 库和库声明 单元测验

--4.3.4库和库声明 讨论

-4.4 实体说明

--4.4.1 实体说明 导学

--4.4.2 实体说明 教学视频

--4.4.3 实体说明 单元测验

--4.4.4 实体说明 讨论

-4.5 结构体

--4.5.1 结构体 导学

--4.5.2 结构体 教学视频

--4.5.3 结构体 单元测验

--4.5.3 结构体 讨论

-4.6 VHDL预定义数据类型

--4.6.1 VHDL预定义数据类型 导学

--4.6.2 VHDL预定义数据类型 教学视频

--4.6.3 VHDL预定义数据类型 单元测验

--4.6.4 VHDL预定义数据类型 讨论

-4.7 常量、变量和信号

--4.7.1 常量、变量和信号 导学

--4.7.2 常量、变量和信号 教学视频

--4.7.3 常量、变量和信号 单元测验

--4.7.4 常量、变量和信号 讨论

-4.8 运算操作符和属性

--4.8.1 运算操作符和属性 导学

--4.8.2 运算操作符和属性 教学视频

--4.8.3 运算操作符和属性 单元测验

--4.8.4 运算操作符和属性 讨论

-4.9 IF语句和WAIT语句

--4.9.1 IF语句和WAIT语句 导学

--4.9.2 IF语句和WAIT语句 教学视频

--4.9.3 IF语句和WAIT语句 单元测验

--4.9.4 IF语句和WAIT语句 讨论

-4.10 CASE语句

--4.10.1 CASE语句 导学

--4.10.2 CASE语句 教学视频

--4.10.3 CASE语句 单元测验

--4.10.4 CASE语句 讨论

-4.11 LOOP循环语句

--4.11.1 LOOP循环语句 导学

--4.11.2 LOOP循环语句 教学视频

--4.11.3 LOOP循环语句 单元测验

--4.11.4 LOOP循环语句 讨论

-4.12 进程

--4.12.1 进程 导学

--4.12.2 进程 教学视频

--4.12.3 进程 单元测验

--4.12.4 进程 讨论

-4.13 条件信号赋值语句

--4.13.1 条件信号赋值语句 导学

--4.13.2 条件信号赋值语句 教学视频

--4.13.3 条件信号赋值语句 单元测验

-4.14 选择信号赋值语句

--4.14.1 选择信号赋值语句 导学

--4.14.2 选择信号赋值语句 教学视频

--4.14.3 选择信号赋值语句 单元测验

-4.15 元件例化语句

--4.15.1 元件例化语句 导学

--4.15.2 元件例化语句 教学视频

--4.15.3 元件例化语句 单元测验

--4.15.4 元件例化语句 讨论

-4.16 VHDL模块化设计

--4.16.1 VHDL模块化设计

--4.16.2 VHDL模块化设计 教学视频

--4.16.3 VHDL模块化设计 单元测验

--4.16.4 VHDL模块化设计 讨论

第五章 设计方法概述

-5.1 设计方法概述

--5.1.1 设计方法概述 导学

--5.1.2 设计方法概述 教学视频

--5.1.3 设计方法概述 单元测验

--5.1.4 设计方法概述 讨论

-5.2 EDA综合设计案例(1)— 数字钟的设计

--5.2.1 EDA综合设计案例1 导学

--5.2.2 EDA综合设计设计案例1— 数字钟的设计 教学视频

--5.2.3 EDA综合设计案例1 单元测验

--5.2.4 EDA综合设计案例1 讨论

-5.3 EDA综合设计案例(2)—16×16点阵控制器设计

--5.3.1 EDA综合设计案例2 导学

--5.3.2 EDA综合设计案例2—16×16点阵控制器设计 教学视频

--5.3.3 EDA综合设计案例2 单元测验

--5.3.4 EDA综合设计案例2 讨论

思政教育

-国产EDA技术如何突破?

3.7.2 层次化设计 教学视频笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。