大家好,博主最近有事忙了幾天,沒有更新,今天正式回來了。那么又到了每日學(xué)習(xí)的時(shí)間了,今天咱們來聊一聊 簡談FPGA的上電復(fù)位,歡迎大家一起交流學(xué)習(xí)。
在基于verilog的FPGA設(shè)計(jì)中,我們常??梢钥吹揭韵滦问降倪M(jìn)程:
信號(hào)rst_n用來對(duì)進(jìn)程中所用變量的初始化,這個(gè)復(fù)位信號(hào)是十分重要的,如果沒有復(fù)位,會(huì)導(dǎo)致一些寄存器的初始值變得未知,如果此時(shí)FPGA就開始工作的話,極易導(dǎo)致錯(cuò)誤。
那么,這個(gè)復(fù)位信號(hào)來自何處?難道我們做好的系統(tǒng),每次上電后都要手動(dòng)按一下reset按鈕么?
答案是否定的!這個(gè)復(fù)位信號(hào)其實(shí)是由特定的程序來產(chǎn)生的,系統(tǒng)每次上電,都會(huì)由該程序產(chǎn)生一個(gè)復(fù)位信號(hào),從而避免了手動(dòng)復(fù)位。
在網(wǎng)上找了多種方案,覺得只有這個(gè)程序比較簡單實(shí)用,轉(zhuǎn)來如下:
說明:
1.第一個(gè)進(jìn)程用來延時(shí),當(dāng)上電后,延時(shí)100ms,以保證FPGA內(nèi)部達(dá)到穩(wěn)定狀態(tài);此時(shí)sys_rst_n始終為0,也就是系統(tǒng)時(shí)鐘處于復(fù)位狀態(tài)中;
2.當(dāng)100ms延時(shí)結(jié)束后,sys_rst_n與系統(tǒng)時(shí)鐘同步釋放,即sys_rst_n拉高,復(fù)位結(jié)束,系統(tǒng)開始正常工作。
今天就聊到這里,各位,加油。