ISPl362在基于FPGA的紅外成像系統(tǒng)中的應用
ISPl362設備控制器內(nèi)部40多個寄存器。編寫代碼時的重點工作就是根據(jù)寄存器每一位代表的意義確定配置值,特別是有些關鍵位,只有正確配置方能保證芯片的正常工作。在使用ISPl362之前,要先配置的寄存器有模式寄存器、硬件配置寄存器、中斷使能寄存器等,端點配置寄存器可以在任何時刻完成,但僅在枚舉后的初始化后才有效。為了便于程序設計,在一開始對模式寄存器、硬件配置寄存器、中斷使能寄存器等配置的同時,也對16個端點配置寄存器進行配置。端點0為控制端點,包括in和out端點,這兩個端點大小固定,均為64 B。枚舉過程就是通過這個端點進行的。其余14個為可編程端點,也可以被配置成雙緩沖端點進一步提高吞吐量。設計中端點1配置為64 B雙緩沖批量in端點;端點2配置為16 B中斷out端點;端點3配置為16 B中斷in端點等;可以禁能不用的端點。配置模式寄存器時,尤其要注意可以通過第三位來使能所有中斷。對于硬件配置寄存器,要注意中斷輸出管腳INT2的設置,這里選擇低電平有效的中斷信號模式。對這些寄存器正確配置之后,ISP1362就會進入預期工作模式。
由于ISP1362中需要配置的寄存器很多,因此本設計中先在FPGA生成一片16位,大小為128 B的ROM,再將需要配置的寄存器的寫命令和配置值按照順序?qū)懭隦OM中,配置時,只需將ROM中的數(shù)據(jù)依次寫入芯片中即可。寄存器的配置時序如圖3所示(為便于觀察,圖3中只截取了部分寄存器的配置情況)。本文引用地址:http://2s4d.com/article/191755.htm
圖3中信號clk_50M為全局時鐘;ISP_Rst為芯片的復位信號;ISP_CS,ISP_WR,ISP_RD分別為ISPl362的片選信號、讀信號、寫信號,均為低電平有效;ISP_Al為模式選擇信號,當其值為1時,芯片工作于設備控制器模式,為O時芯片工作于主機控制器模式;ISP_A0為高時對應的ISP_Data為DC的初始化命令,當ISP_AO為低時對應的ISP_Data為寫入相應寄存器的配置值。
2.2設備接收請求
主機的每次請求,都是將請求以setup包的形式發(fā)送到out端點的out緩沖區(qū)。當out緩沖區(qū)接收到數(shù)據(jù)時,芯片的INT2管腳將會有中斷產(chǎn)生。在模式寄存器、硬件配置寄存器、中斷使能寄存器正確配置之后,當有中斷事件產(chǎn)生時,ISP1362內(nèi)部的SIE就能夠檢測到中斷,并置中斷寄存器的相應位為高電平。固件通過讀取并分析中斷寄存器的值來判斷中斷類型,再進行中斷事件的處理。
固件首先檢測到的是out中斷。這是因為在上電復位以后,主機就向out緩沖區(qū)發(fā)第一個setup請求包。當接收到out中斷時,固件首先讀取out端點的端點狀態(tài)寄存器將中斷清除,以便于芯片接收其他的中斷。接著固件再根據(jù)端點狀態(tài)寄存器的值判斷out緩沖區(qū)內(nèi)是否含有setup包,然后固件讀取out緩沖區(qū)。
根據(jù)out緩沖區(qū)的內(nèi)容判斷是何種請求,再決定做何響應。in中斷的產(chǎn)生不同于out中斷。in中斷是在in緩沖區(qū)由空變滿之后才產(chǎn)生的,in中斷的產(chǎn)生需要固件進行寫in緩沖區(qū)的操作。換而言之,是寫in緩沖區(qū)的操作引發(fā)了in中斷的產(chǎn)生,而不是in中斷的產(chǎn)生引發(fā)了寫緩沖區(qū)的操作。當固件檢測到in中斷時,同樣要通過讀in端點的端點狀態(tài)寄存器將中斷清除。
評論