2014年7月14日 星期一
2014年6月16日 星期一
Verilog wire與 reg 的不同
源自於
http://www.cnblogs.com/oomusou/archive/2007/10/10/919339.html
源自於
http://frankchang0125.blogspot.tw/2009/05/wire-vs-reg.html
簡單來說硬體描述語言有兩種用途:1. 仿真,2. 綜合
對於wire和reg,也要從這兩個角度來考慮:
--------------------------------------------------------------------------------------------
從仿真的角度來說,HDL語言面對的是編譯器 (如Modelsim等),相當於軟體思路
這時:
wire對應於連續賦值,如assign
reg對應於過程賦值,如always、initial
--------------------------------------------------------------------------------------------
從綜合的角度來說,HDL語言面對的是綜合器 (如DC等),要從電路的角度來考慮。
這時:
1. wire變數綜合出來一般是一根導線;
2. reg變數在always區塊中有兩種情況:
(1). always後是 (a or b or c) 型式的,也就是不帶Clock Edge的
綜合出來還是組合邏輯電路 (Combinational Logic)
(2). always後是 (posedge clk) 型式的,也就是帶Clock Edge的
綜合出來一般是循序邏輯電路 (Sequential Logic),會包含觸發器 (Flip-Flop)
在設計中:
1. 輸入信號一般來說你是不知道上一級是暫存器輸出還是組合邏輯輸出
=> 那麼對於本級來說就是一根導線,也就是wire型
2. 而輸出信號則由你自己來決定是組合邏輯輸出還是暫存器輸出
=> wire型、reg型都可以
3. 但一般的,整個設計的外部輸出 (即最頂層module的輸出),要求是暫存器輸出
=> 也就是reg型,較穩定、扇出能力也較好
以上轉載自此
--------------------------------------------------------------------------------------------
大體上來說wire和reg都類似於C/C++的變數
但若此變數要放在:
begin...end內,該變數須使用reg
begin...end外,則該變數須使用wire
另外使用wire時,須搭配assign;reg則不必
input、ouput、inout預設值都是wire
若wire和reg用錯地方,compiler都會提醒,所以不必太擔心
一個很重要的觀念:
在Verilog中使用reg,並不表示合成後就是暫存器(register)
1. 若在組合邏輯電路 (Combinational Logic)中使用reg,合成後仍只是net
2. 在循序邏輯電路 (Sequential Logic)中使用reg,合成後才會以flip-flop型式表示成暫存器(register)
http://www.cnblogs.com/oomusou/archive/2007/10/10/919339.html
源自於
http://frankchang0125.blogspot.tw/2009/05/wire-vs-reg.html
簡單來說硬體描述語言有兩種用途:1. 仿真,2. 綜合
對於wire和reg,也要從這兩個角度來考慮:
--------------------------------------------------------------------------------------------
從仿真的角度來說,HDL語言面對的是編譯器 (如Modelsim等),相當於軟體思路
這時:
wire對應於連續賦值,如assign
reg對應於過程賦值,如always、initial
--------------------------------------------------------------------------------------------
從綜合的角度來說,HDL語言面對的是綜合器 (如DC等),要從電路的角度來考慮。
這時:
1. wire變數綜合出來一般是一根導線;
2. reg變數在always區塊中有兩種情況:
(1). always後是 (a or b or c) 型式的,也就是不帶Clock Edge的
綜合出來還是組合邏輯電路 (Combinational Logic)
(2). always後是 (posedge clk) 型式的,也就是帶Clock Edge的
綜合出來一般是循序邏輯電路 (Sequential Logic),會包含觸發器 (Flip-Flop)
在設計中:
1. 輸入信號一般來說你是不知道上一級是暫存器輸出還是組合邏輯輸出
=> 那麼對於本級來說就是一根導線,也就是wire型
2. 而輸出信號則由你自己來決定是組合邏輯輸出還是暫存器輸出
=> wire型、reg型都可以
3. 但一般的,整個設計的外部輸出 (即最頂層module的輸出),要求是暫存器輸出
=> 也就是reg型,較穩定、扇出能力也較好
以上轉載自此
--------------------------------------------------------------------------------------------
大體上來說wire和reg都類似於C/C++的變數
但若此變數要放在:
begin...end內,該變數須使用reg
begin...end外,則該變數須使用wire
另外使用wire時,須搭配assign;reg則不必
input、ouput、inout預設值都是wire
若wire和reg用錯地方,compiler都會提醒,所以不必太擔心
一個很重要的觀念:
在Verilog中使用reg,並不表示合成後就是暫存器(register)
1. 若在組合邏輯電路 (Combinational Logic)中使用reg,合成後仍只是net
2. 在循序邏輯電路 (Sequential Logic)中使用reg,合成後才會以flip-flop型式表示成暫存器(register)
(原創) wire與reg的差異? (初級) (IC Design) (Verilog)
Abstract
Verilog初學者最常見的問題:『什麼時候該用wire?什麼時候又該用reg?』
Verilog初學者最常見的問題:『什麼時候該用wire?什麼時候又該用reg?』
Introduction
大體上來說,wire和reg都類似於C/C++的變數,但若此變數要放在begin...end內,該變數就須使用reg,在begin...end之外,則使用wire。
另外使用wire時,須搭配assign;reg則不必。
input,ouput,inout預設值都是wire。
大體上來說,wire和reg都類似於C/C++的變數,但若此變數要放在begin...end內,該變數就須使用reg,在begin...end之外,則使用wire。
另外使用wire時,須搭配assign;reg則不必。
input,ouput,inout預設值都是wire。
若wire和reg用錯地方,compiler都會提醒,所以不必太擔心。
一個很重要的觀念,在Verilog中使用reg,並不表示合成後就是暫存器(register)。若在組合電路中使用reg,合成後仍只是net,唯有在循序電路中使用reg,合成後才會以flip-flop形式表示成register。
一個很重要的觀念,在Verilog中使用reg,並不表示合成後就是暫存器(register)。若在組合電路中使用reg,合成後仍只是net,唯有在循序電路中使用reg,合成後才會以flip-flop形式表示成register。
訂閱:
文章 (Atom)
清除項目編譯快取 執行 flutter clean 重新取得套件依賴 執行 flutter pub get 完整重新編譯並執行 flutter run 1. 新增專案套件 (pubspec.yaml) 在 Flutter 專案根目錄下的 pubspec.yaml 中,新增 ...
-
Line 發報機 Python TKinter (CONFIG_LINE Message API_2.py) import serial import serial.tools.list_ports import tkinter as tk from tkinter import...
-
python pip 不是内部或外部命令 -- 解決方法 要安裝 Pyqt5 1. 首先,開啟命令提示字元。 2. 輸入 pip3 install pyqt5 好像不能執行 ! ! 錯誤顯示 : ‘ pip3 ’ 不是內部或外部命令、可執行的程式或批...
-
課程講義 下載 11/20 1) PPT 下載 + 程式下載 http://www.mediafire.com/file/cru4py7e8pptfda/106%E5%8B%A4%E7%9B%8A2-1.rar 11/27 2) PPT 下載...


































































