【Day10】模组化及引用模组

模组

在一个 .V 档案里面,可以有很多个 module,但是 Top Module 只会有一个,所以档名必须以 Top Module.v 来命名来辨别 Top Module。


模组化的概念

  • 每个模组的实际意义是一块实际的硬体电路。
  • 每一块模组都有自己的功能,再透过连接各个模组来达成特定功能。
  • 模组与模组之间也会是并行处理的。

引用模组

为甚麽会需要引用模组呢?

因为通常一个大模组往往会已由许多小模组所组成的,这样便有以下好处:

  • 一方面是可读性比较好,往後在维护方面也比较方便,因为电路分为一块一块的比较好去知道各个模块的功能,再针对特定的模块做优化就好。
  • 再来是除错,合成为大电路前,如果可以先提前测试每个模块功能是否正常,那 debug 起来也会比较快

引用模组的两种方法

将模组的埠与其他模组连接的方法有两种,分别是:

1.依照要引用之模组的埠列「顺序」(in order)来连接,也就是如果要引用的模组是:

module test(
  clkSys, 
  rst_n
);
..
...
....
endmodule

那麽引用时括号内的顺序就会对应到该模组括号内的顺序,例如:

reg clk;
reg reset_n;
test U0(clk, reset_n);//module instantiation

那麽这个模组的 {clk, reset_n} 就会接到 test 模组的 {clkSys, rst_n}

2.依「指定名称」(by name)的方法来连接,会以 " .该模组脚位(此模组脚位) " 来引用,例如:

reg clk;
reg reset_n;
//module instantiation
test U0(
  .clk(clk), 
  .reset_n(reset_n)
);

这样也会是一样的效果~~

而不管是哪一种引用法引用时都要给模组命名,像这边就是命名为 "U0"

对於一个较大的电路来说,可能接脚会非常的多,此时如果以 in order 的方式来连接,这个时候就算边看边打也相当不方便且容易犯错,所以通常我们会以 by name 的方法来连接来避免不必要的失误。


<<:  [day10]串接API实测-订单建置API

>>:  Android学习笔记16

Day 6 | 角色动画制作

今天要为大家介绍我们游戏的角色动画制作,说明如何使用PS与AE输出适合unity的格式,就拿帝江飞行...

Data Extraction Services | Web Scraping | Data Mining Services & Solutions

"Web Scrape Services is one of the leading da...

第十一天:学习 Gradle 的第一个指令 - init

花了这麽多时间搞清楚 Gradle 的各种安装方式,接下来就要开始学习使用 Gradle 指令。今天...

Day 06 - jS 微基础之ES6心得及准备进入React

对,就在我昨天不知所云的写完 for ... of 之後,我顺便把剩下的ES6课程读完了(其实这个连...

听见「多少」下雨的声音

感觉和知觉可说是心理学最早被定义出来的两个名词,甚至可能比心理学这门学问本身诞生的还要早。最一开始他...