SPI flash遠端載入FPGA 應用

2021-09-10 03:58:19 字數 2268 閱讀 9088

有的專案需要遠端更新韌體,更新完成後斷電、重啟即可。那遠端更新是如何實現的呢?用的最多的應該是乙太網或者自定義的區域網為主,當然還可以使用pcie、串列埠之類的,像xilinx還有golden image,以防止遠端更新失敗啟動不起來,它主要是flash存有兩個啟動檔案,正常情況下啟動預設的,當預設的被損壞,就從備用的啟動。本文章主要講解的是startupe2原語,這和遠端更新有什麼關係呢?請接著向下看。

我們知道,fpga掉電丟失,一般使用外部flash儲存**,flash有spi、bpi、qspi等介面,外部儲存器的時鐘管腳一般與fpga的cclk_0連線,當使用遠端更新時,首先fpga內部有控制flash的驅動(即邏輯控制flash時序),當然flash時鐘也需要控制了,但這時時鐘管腳已經連線到cclk_0,那該如何操作啊,你直接約束分配管腳試試,是通不過的,這時startupe2就派上用場了,那該如何使用啊,如下(verilog):

startupe2  #(

.prog_usr("false"), // activate program event security feature. requires encrypted bitstreams.

.sim_cclk_freq(0.0) // set the configuration clock frequency(ns) for simulation

)startupe2_inst

(.cfgclk(), // 1-bit output: configuration main clock output

.cfgmclk(), // 1-bit output: configuration internal oscillator clock output

.eos(), // 1-bit output: active high output signal indicating the end of startup.

.preq(), // 1-bit output: program request to fabric output

.clk(0), // 1-bit input: user start-up clock input

.gsr(0), // 1-bit input: global set/reset input (gsr cannot be used for the port name)

.gts(0), // 1-bit input: global 3-state input (gts cannot be used for the port name)

.keyclearb(1), // 1-bit input: clear aes decrypter key input from battery-backed ram (bbram)

.pack(1), // 1-bit input: program acknowledge input

.usrcclko(flash_clk), // 1-bit input: user cclk input

.usrcclkts(0), // 1-bit input: user cclk 3-state enable input

.usrdoneo(1), // 1-bit input: user done pin output control

.usrdonets(1) // 1-bit input: user done 3-state enable outpu

);其中flash_clk就是你時序控制的flash時鐘訊號,連線到這就行了,其它的不需要改動,也無需約束此管腳(因為此管腳不需要在頂層作為輸出訊號了)。當然你也可以例化qspi ip看裡面是如何使用的。

順便說一下,對於資料訊號,一般是inout型別,對於單bit可以如下使用:

assign data = data_en ? data_reg : 1'bz;

多bit可以如下使用:

//data_en=1:data_in--valid;0:data_out--valid

generate

genvar  j;

for (j = 0; j <= 3; j = j + 1)

begin : bidir_io

iobuf iobuf_i (

.io   (flash_data[j]),

.i    (data_out[j]),

.o    (data_in[j]),

.t    (data_en)                

);end

endgenerate

data_en、data_in、data_out是時序控制的訊號,flash_data為頂層的inout型別訊號(直接接晶元引腳)。

遠端載入與解除安裝DLL

dword getprocessidbyname lpctstr szprocess 注意要加exe字尾 while process32next hsnapshot,pe32 closehandle hsnapshot return dwret bool inject lpctstr szmodul...

Drools規則引擎遠端載入規則檔案

1.建立乙個drools工程 2.建立乙個dynamic web project 主要體現遠端載入規則檔案,將規則檔案放在這個工程中,並配上伺服器 其中,sample.drl是個規則檔案,在瀏覽器中訪問如圖所示 3.再drools工程中建立乙個類,我這裡類名為 remoteloadrule,意思就是...

dubbo 載入Bean和遠端呼叫分析(1)

這裡只講解dubbo註冊的bean 1.dubbo consumer 載入bean dubbonamespacehandler 是dubbo命名空間自定義配置檔案的解析處理器 public class dubbonamespacehandler extends namespacehandlersup...