当前课程知识点:EDA技术与应用 >  第四章 VHDL语言概述 >  4.16 VHDL模块化设计 >  4.16.2 VHDL模块化设计 教学视频

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

4.16.2 VHDL模块化设计 教学视频在线视频

下一节:4.16.4 VHDL模块化设计 讨论

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

4.16.2 VHDL模块化设计 教学视频课程教案、知识点、字幕

同学们,大家好

这一讲,我们来学习

VHDL的模块化设计思想和方法

VHDL语言的一个重要特点

就是支持自顶向下的模块化设计

这是一种非常重要的设计思想

它能够使一个大型设计的

分工、协作、仿真、测试更加容易

代码的维护或者升级也会更加便利

设计者可以从系统的角度统筹规划

把一个复杂的设计分解成若干底层模块

每个底层模块根据需要

又可以分解为更底层的模块

这样做可以使我们的代码编写工作更简单

结构更清晰

效率更高

一般来说

顶层设计实体

和能够继续分解的那些模块

只做元件例化

不做具体的逻辑描述

只有最底层的模块

才需要描述具体的行为和功能

那么,通常分解到最底层的时候

电路的功能已经非常简单明确了

而且,有些底层模块

还可以被多个上层设计重复调用

这样就极大地简化了

编程的难度和复杂程度

提高了设计的复用性和效率

下面,我们通过一个1位全加器的设计

来进一步体会VHDL模块化设计思想

加深对元件例化语句的学习和应用

由数字逻辑电路的知识

我们可以知道

1位全加器

可以用两个半加器和一个或门来组成

因此,我们可以把1位全加器

作为顶层设计实体

自顶向下划分为三个底层单元

那么这三个单元呢,分别来自两个元件

其中一个元件是半加器

它被调用了两次

另一个是或门,调用一次

设计者可以分别设计半加器和或门电路

然后在1位全加器的设计中

用元件例化语句调用这两个元件

使它们和当前设计中的端口或内部信号相连

这样就实现了1位全加器的顶层设计

下面我们来看具体的设计过程

首先是底层模块

1位半加器的VHDL描述

库声明和程序包声明

然后是实体说明

元件名为h_adder

端口a和b是半加器的输入端口

so是半加器的和

co是进位输出端口

所有端口的数据类型

都是std_logic类型

结构体采用数据流描述

定义信号temp,宽度为1到0

a、b并置后赋值给temp

进程内部是CASE语句

按照1位半加器的真值表

写出相应的WHEN子句

实现半加器的逻辑功能

这是或门的VHDL描述

端口a、b是输入端口

c是输出端口

c是a和b相或的结果

完成了底层模块的设计之后

就可以开始设计顶层文件了

在顶层设计中不做功能或行为的描述

而是用元件例化的方式

调用底层模块,实现模块化设计

首先是库声明和程序包声明

然后是实体说明

顶层实体名为f_adder

ain、bin是输入端口

cin是来自低位的进位信号

也是输入端口

sum是全加器的和

cout是进位输出

在结构体的声明部分,我们要做两件事

一是要对需要调用的底层模块进行元件声明

二是要定义三个信号d、e、f

相当于是当前设计中的三条线

以供底层模块连入顶层设计所需

完成了元件例化的准备工作后

我们开始写元件例化语句

第一次调用的例化名为u1

例化元件名是h_adder

端口映射关系是a映射到ain

b映射到bin

co映射到信号d

so映射到信号e

第二次调用的例化名是u2

例化元件名还是h_adder

端口映射关系是a映射到信号e

b映射到cin

co映射到信号f

so映射到端口sum

第三次调用的例化名为U3

例化元件是or2

端口映射关系是a映射到信号d

b映射到f

c映射到端口cout

这样,通过三个元件例化语句

完成了对三个底层模块的调用

实现了1位全加器的模块化设计

模块化的设计思想

对于可编程逻辑器件的设计十分重要

利用元件例化语句可以很方便地实现

系统的模块化设计

设计者自顶向下

对系统的结构进行合理的模块化分解

直至得到最底层模块的功能

然后对最底层模块进行行为和功能的描述

再利用元件例化语句

自底向上实现系统的全部功能

这就是我们所说的

自顶向下和自底向上的设计方法

好,本讲到这里就结束了

同学们,再见

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技术如何突破?

4.16.2 VHDL模块化设计 教学视频笔记与讨论

也许你还感兴趣的课程:

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