iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
Software Development

數位 IC 設計起手式系列 第 8

Day 08: 第一個 Verilog 模組

  • 分享至 

  • xImage
  •  

介紹完了線路和線路的應用後,我們要開始組裝成模組囉!

但是在開始之前,我們要先認識模組的基本元件。

Port

Port 的中文是端口,意思是說如果外部想要與模組有任何互動,則必須透過 Port 來交流。
模組會使用到的 Port 大致分成三種:

  1. input:模組的輸入端口
  2. output:模組的輸出端口
  3. inout:雙向傳輸的端口

其中, input 和 output 最常被使用到,因此之後會著重在介紹這兩種端口。

Port 到底是什麼呢?簡單來說,他也是一種線路,但是他還有一個功能就是連接模組內外。如果沒有特別指定,port 的預設為 wire 。

定義模組

語法如下:

module <Name>(
    <port1>,
    <port2>,
    ...
);
    // some code
    
endmodule         // 宣告結尾所需關鍵字

定義端口變數的方法大致可以分成兩種:

  1. 定義端口變數後,在模組內指定端口類型
  2. 在定義端口變數的同時,指定端口類型

我們來嘗試定義半加器 (Half Adder) 的模組吧!
半加器所需的端口有: 輸入端口 A, 輸入端口 B, 輸出端口 Cout, 輸出端口 Sum 。

// 方法 (一)
module HalfAdder (A, B, Cout, Sum);
    input A, B;        // 指定 port 的類型:input
    output Cout, Sum;  // 指定 port 的類型:output
    // some code
endmodule
// 方法 (二)
module HalfAdder (
    input A, B, 
    output Cout, Sum
);
    // some code
endmodule

這兩種方法中,我比較喜歡的是方法二,因為我可以很清楚知道每一個端口的功用為何,不需要透過內部定義來查證。

加深一點難度吧!我們嘗試實作四位元的加法器,所需的端口有: 輸入端口 A (4-bit), 輸入端口 B (4-bit), 輸出端口 Sum (4-bit), 輸入端口 Cout (1-bit)

module Add4 (
    input [3:0] A, B,
    output [3:0] Sum,
    output Cout
);
    // some code
endmodule

上一篇
Day 07: 線路的拆與合
下一篇
Day 09: 自製模組啟用!
系列文
數位 IC 設計起手式30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言