FPGA之道(26)VHDL初始化

2021-10-02 18:06:01 字數 1271 閱讀 2202

訊號最終都會對應到儲存單元或者連線上,對於組合邏輯的訊號,在fpga上的歸屬應該是連線,而對於時序邏輯的訊號,在fpga上的歸屬上應該是暫存器、查詢表、塊儲存等儲存單元。

對於連線類的訊號,是否初始化對於晶元的行為幾乎沒有影響,因為晶元一上電後,整個fpga的輸入就由客觀環境確定了,那麼的連線被高電平驅動源驅動就是高電平,被低電平驅動源驅動就呈現低電平。而不會因為你給訊號賦了初值而影響這個結果,否則這也就不是乙個組合邏輯了。

對於類似暫存器類的儲存單元訊號,如果不賦初值的話,不同fpga晶元型號的預設的上電狀態會不同。有的是上電自動儲存高電平,有的是自動儲存低電平。由於時序邏輯的運算結果很多時候是和當前儲存單元中儲存的數值有關的,所以這類訊號如果未賦初值,很可能造成設計在不同的晶元上執行結果的不同,這是比較危險的。

當然了,也許有的編譯器或者晶元型號不支援賦初值的操作,那麼這個時候一定要注意復位邏輯的編寫。

初始化與**是息息相關的,無論是連線類還是儲存類的訊號,若沒有初始化,在**的一開始都會出現不可確定的波形,如果是std_logic型別的話,就會顯示』u』。

對於連線類訊號,只要在後續給定輸入,那麼輸出端的連線還是能夠回歸正常結果的。

但是對於儲存類的訊號,例如暫存器,如果這個暫存器存在反饋,例如:

signal a : std_logic;

process(clk)

begin

if(clk'event and clk = '

1')then

a <=

not a;

end if

;end process;

那麼對於a訊號,**器將永遠不可能給出確定的**結果。
初始化一般是在定義時,配合「:=」賦值符號進行的,例如:

signal a : std_logic :

='1'

; variable b : integer :

=512

; port(…

c :in std_logic_vector(

3 downto 0):

="1010"

; …)

;

type rt is array (

1 downto 0

) of std_logic_vector (

7 downto 0);

signal r0: rt :

=(x"11"

, x"88"

);

fpga初始化錯誤 FPGA低溫啟動失敗

在給 medium 板光端機做低溫試驗時,分別給傳送版 接收板斷電重新啟動,發現有的板子在 40 可以啟動,而有些板子在 20 都不能啟動,需要公升高溫度到 0 以上才能啟動,此時觀察到的現象是指示狀態的 4 個 led 燈都點亮,表現為 fpga 一直處於復位模式。medium 光端機使用的 fp...

2 6 建構函式與類成員的初始化

1 建構函式一大功能就是初始化成員變數 1 預設建構函式不帶參,無初始化功能 2 若無其他建構函式,則預設建構函式可以省略。但若有哪怕1個其他建構函式,則預設建構函式不能省,必須寫上。3 棧上分配物件時,若使用預設建構函式,則物件變數後面不加空的 若用帶參構造才需要加 初始化引數 2 c 的成員初始...

作業系統學習筆記 26 TSS初始化

tss初始化需要在gdt初始化完成後進行。相關 tr ltr load task register and str store task register tss使用gdt的內容 描述符的型別設定不可為忙,任務是不能巢狀的。s tssdesc type 0x09 load the task regi...