--- slideOptions: transition: slide --- # wire and reg ###### tags: `verilog` `digital design` `邏輯設計` `邏設` --- [TOC] ## English Version [English Version](https://hackmd.io/@dppa1008/r1ou171DI) ## Get started wire 和 reg 是我們在寫 verilog 最常用的兩種參數型態,卻也令初學者極為困惑,以下我們將介紹他們的差別。 --- ## wire - 沒有記憶性 - wire 就像是ㄧ條線路,電通過去了就沒有了,因此他沒有記憶性,只是訊號傳遞的ㄧ條線路罷了 - wire 用 assign 的方式給值 --- ```clike= wire a; assign a = b & c; ``` --- ![](https://i.imgur.com/dNW8uBz.png) - input port 和 output port 的<font color = #bf2222>初始值</font>都是 wire 型別 --- ## reg - 暫存器 - 在 combinational 電路中,他跟 wire 一樣會被合成成一條線路 - 在 sequential 電路中,往往與 DFF 一起使用,使他被合成成具有記憶性的 circuit - 在合成電路時, reg 合成的電路有很多種可能,舉個例子來說,今天我們定義了一個 reg 的二維矩陣,在合成電路時,他可能會自動判斷成<font color=#1644aa>記憶體</font>。 - reg 給值時,必須放在 <font color=#bf2222>always block</font> 或 <font color=#bf2222> initial block</font> 裡面 --- ```clike= reg a; always@(*)begin if (c == 2'b10) a = 1'b1; else a = 1'b0; end ``` --- ![](https://i.imgur.com/pSVKsV5.png) --- # [:maple_leaf:Homepage:maple_leaf:](https://hackmd.io/s/ByZ-fyuHV)