fpga中wire和reg的区别
生活随笔
收集整理的這篇文章主要介紹了
fpga中wire和reg的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
wire表示直通,即只要輸入有變化,輸出馬上無條件地反映;reg表示一定要有觸發,輸出才會反映輸入。wire表示直通,即只要輸入有變化,輸出馬上無條件地反映;reg表示一定要有觸發,輸出才會反映輸入。 不指定就默認為1位wire類型。專門指定出wire類型,可能是多位或為使程序易讀。wire只能被assign連續賦值,reg只能在initial和always中賦值。wire使用在連續賦值語句中,而reg使用在過程賦值語句中。? ? ? ? 不指定就默認為1位wire類型。專門指定出wire類型,可能是多位或為使程序易讀。wire只能被assign連續賦值,reg只能在initial和always中賦值。wire使用在連續賦值語句中,而reg使用在過程賦值語句中。
?在連續賦值語句中,表達式右側的計算結果可以立即更新表達式的左側。在理解上,相當于一個邏輯之后直接連了一條線,這個邏輯對應于表達式的右側,而這條線就對應于wire。在過程賦值語句中,表達式右側的計算結果在某種條件的觸發下放到一個變量當中,而這個變量可以聲明成reg類型的。根據觸發條件的不同,過程賦值語句可以建模不同的硬件結構:如果這個條件是時鐘的上升沿或下降沿,那么這個硬件模型就是一個觸發器;如果這個條件是某一信號的高電平或低電平,那么這個硬件模型就是一個鎖存器;如果這個條件是賦值語句右側任意操作數的變化,那么這個硬件模型就是一個組合邏輯。? ? ? ? 在連續賦值語句中,表達式右側的計算結果可以立即更新表達式的左側。在理解上,相當于一個邏輯之后直接連了一條線,這個邏輯對應于表達式的右側,而這條線就對應于wire。在過程賦值語句中,表達式右側的計算結果在某種條件的觸發下放到一個變量當中,而這個變量可以聲明成reg類型的。根據觸發條件的不同,過程賦值語句可以建模不同的硬件結構:如果這個條件是時鐘的上升沿或下降沿,那么這個硬件模型就是一個觸發器;如果這個條件是某一信號的高電平或低電平,那么這個硬件模型就是一個鎖存器;如果這個條件是賦值語句右側任意操作數的變化,那么這個硬件模型就是一個組合邏輯。
?輸入端口可以由wire/reg驅動,但輸入端口只能是wire;輸出端口可以使wire/reg類型,輸出端口只能驅動wire;若輸出端口在過程塊中賦值則為reg型,若在過程塊外賦值則為net型。用關鍵詞inout聲明一個雙向端口, inout端口不能聲明為reg類型,只能是wire類型;輸入和雙向端口不能聲明為寄存器類型。? ? ? ? 輸入端口可以由wire/reg驅動,但輸入端口只能是wire;輸出端口可以使wire/reg類型,輸出端口只能驅動wire;若輸出端口在過程塊中賦值則為reg型,若在過程塊外賦值則為net型。用關鍵詞inout聲明一個雙向端口, inout端口不能聲明為reg類型,只能是wire類型;輸入和雙向端口不能聲明為寄存器類型。
?簡單來說硬件描述語言有兩種用途:1、仿真,2、綜合。? ? ? 簡單來說硬件描述語言有兩種用途:1、仿真,2、綜合。
對于wire和reg,也要從這兩個角度來考慮。對于wire和reg,也要從這兩個角度來考慮。
1. 從仿真的角度來說,HDL語言面對的是編譯器(如Modelsim等),相當于軟件思路。1. 從仿真的角度來說,HDL語言面對的是編譯器(如Modelsim等),相當于軟件思路。 這時:這時: wire對應于連續賦值,如assignwire對應于連續賦值,如assign reg對應于過程賦值,如always,initialreg對應于過程賦值,如always,initial
2. 從綜合的角度來說,HDL語言面對的是綜合器(如DC等),要從電路的角度來考慮。2. 從綜合的角度來說,HDL語言面對的是綜合器(如DC等),要從電路的角度來考慮。 這時:這時: 1、wire型的變量綜合出來一般是一根導線;1、wire型的變量綜合出來一般是一根導線; 2、reg變量在always塊中有兩種情況:2、reg變量在always塊中有兩種情況: (1)、always后的敏感表中是(a or b or c)形式的,也就是不帶時鐘邊沿的,綜合出來還是組合邏輯(1)、always后的敏感表中是(a or b or c)形式的,也就是不帶時鐘邊沿的,綜合出來還是組合邏輯 (2)、always后的敏感表中是(posedge clk)形式的,也就是帶邊沿的,綜合出來一般是時序邏輯,會包含觸發器(Flip-Flop)(2)、always后的敏感表中是(posedge clk)形式的,也就是帶邊沿的,綜合出來一般是時序邏輯,會包含觸發器(Flip-Flop)
在設計中,輸入信號一般來說你是不知道上一級是寄存器輸出還是組合邏輯輸出,那么對于本級來說就是一根導線,也就是wire型。而輸出信號則由你自己來決定是寄存器輸出還是組合邏輯輸出,wire型、reg型都可以。但一般的,整個設計的外部輸出(即最頂層模塊的輸出),要求是寄存器輸出,較穩定、扇出能力也較好。
?在連續賦值語句中,表達式右側的計算結果可以立即更新表達式的左側。在理解上,相當于一個邏輯之后直接連了一條線,這個邏輯對應于表達式的右側,而這條線就對應于wire。在過程賦值語句中,表達式右側的計算結果在某種條件的觸發下放到一個變量當中,而這個變量可以聲明成reg類型的。根據觸發條件的不同,過程賦值語句可以建模不同的硬件結構:如果這個條件是時鐘的上升沿或下降沿,那么這個硬件模型就是一個觸發器;如果這個條件是某一信號的高電平或低電平,那么這個硬件模型就是一個鎖存器;如果這個條件是賦值語句右側任意操作數的變化,那么這個硬件模型就是一個組合邏輯。? ? ? ? 在連續賦值語句中,表達式右側的計算結果可以立即更新表達式的左側。在理解上,相當于一個邏輯之后直接連了一條線,這個邏輯對應于表達式的右側,而這條線就對應于wire。在過程賦值語句中,表達式右側的計算結果在某種條件的觸發下放到一個變量當中,而這個變量可以聲明成reg類型的。根據觸發條件的不同,過程賦值語句可以建模不同的硬件結構:如果這個條件是時鐘的上升沿或下降沿,那么這個硬件模型就是一個觸發器;如果這個條件是某一信號的高電平或低電平,那么這個硬件模型就是一個鎖存器;如果這個條件是賦值語句右側任意操作數的變化,那么這個硬件模型就是一個組合邏輯。
?輸入端口可以由wire/reg驅動,但輸入端口只能是wire;輸出端口可以使wire/reg類型,輸出端口只能驅動wire;若輸出端口在過程塊中賦值則為reg型,若在過程塊外賦值則為net型。用關鍵詞inout聲明一個雙向端口, inout端口不能聲明為reg類型,只能是wire類型;輸入和雙向端口不能聲明為寄存器類型。? ? ? ? 輸入端口可以由wire/reg驅動,但輸入端口只能是wire;輸出端口可以使wire/reg類型,輸出端口只能驅動wire;若輸出端口在過程塊中賦值則為reg型,若在過程塊外賦值則為net型。用關鍵詞inout聲明一個雙向端口, inout端口不能聲明為reg類型,只能是wire類型;輸入和雙向端口不能聲明為寄存器類型。
?簡單來說硬件描述語言有兩種用途:1、仿真,2、綜合。? ? ? 簡單來說硬件描述語言有兩種用途:1、仿真,2、綜合。
對于wire和reg,也要從這兩個角度來考慮。對于wire和reg,也要從這兩個角度來考慮。
1. 從仿真的角度來說,HDL語言面對的是編譯器(如Modelsim等),相當于軟件思路。1. 從仿真的角度來說,HDL語言面對的是編譯器(如Modelsim等),相當于軟件思路。 這時:這時: wire對應于連續賦值,如assignwire對應于連續賦值,如assign reg對應于過程賦值,如always,initialreg對應于過程賦值,如always,initial
2. 從綜合的角度來說,HDL語言面對的是綜合器(如DC等),要從電路的角度來考慮。2. 從綜合的角度來說,HDL語言面對的是綜合器(如DC等),要從電路的角度來考慮。 這時:這時: 1、wire型的變量綜合出來一般是一根導線;1、wire型的變量綜合出來一般是一根導線; 2、reg變量在always塊中有兩種情況:2、reg變量在always塊中有兩種情況: (1)、always后的敏感表中是(a or b or c)形式的,也就是不帶時鐘邊沿的,綜合出來還是組合邏輯(1)、always后的敏感表中是(a or b or c)形式的,也就是不帶時鐘邊沿的,綜合出來還是組合邏輯 (2)、always后的敏感表中是(posedge clk)形式的,也就是帶邊沿的,綜合出來一般是時序邏輯,會包含觸發器(Flip-Flop)(2)、always后的敏感表中是(posedge clk)形式的,也就是帶邊沿的,綜合出來一般是時序邏輯,會包含觸發器(Flip-Flop)
在設計中,輸入信號一般來說你是不知道上一級是寄存器輸出還是組合邏輯輸出,那么對于本級來說就是一根導線,也就是wire型。而輸出信號則由你自己來決定是寄存器輸出還是組合邏輯輸出,wire型、reg型都可以。但一般的,整個設計的外部輸出(即最頂層模塊的輸出),要求是寄存器輸出,較穩定、扇出能力也較好。
轉載于:https://www.cnblogs.com/songfeixiang/p/3733839.html
總結
以上是生活随笔為你收集整理的fpga中wire和reg的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女孩们争着打的HPV“抗癌”疫苗:男性也
- 下一篇: Objective-C组合模式(Comp