• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > EDA/PCB > 設計應用 > ISPl362在基于FPGA的紅外成像系統中的應用

    ISPl362在基于FPGA的紅外成像系統中的應用

    作者: 時間:2010-03-31 來源:網絡 收藏

    2.3設備響應請求
    當芯片工作于設備控制器模式下時,設備端的工作就是被動的執行主機發來的請求。請求類型的確定是通過讀取out緩沖區里的setup包來完成的。一個setup包(即請求包)有8個字節,根據其中第二個字節能夠判斷出請求類型。由流程圖可以看出,枚舉過程中主機要發出獲取描述符、設置地址、設置配置等請求,對于獲取描述符的請求,還需要進一步判斷是獲取何種描述符的請求,這可以通過請求的第三,四字節的值來確定。一旦確定了請求類型,設備就可以確定該如何響應請求。當確定主機發的是獲取何種描述符請求之后,固件就將相應的描述符的值寫入in端點的端點緩沖區。寫in端點緩沖區的方法與寄存器配置類似,其時序如圖4所示。

    本文引用地址:http://www.czjhyjcfj.com/article/191755.htm


    圖4中ISP_A0為高時對應的ISP_Data(即0001)是寫in緩沖區的命令,ISP_A0為低時對應的ISP_Data為寫入的數據,其中第一個數據即(0012)為要寫入的數據的長度,其余為設備描述符。當需要發送數據時,只需使能in緩沖區即可。若是設置地址請求,固件的工作就是將地址值取出來寫入設備地址寄存器,然后再向主機發送一個空包。

    3 LISB固件代碼實現
    上用Verilog HDL實現上述功能時,難點有:一是多驅動問題;二是輸入/輸出端口的使用問題。由于程序中有多個模塊同時作用于ISP1的控制信號線以及數據線,如果處理不當,可能會產生同一時刻對同一信號有兩次或兩次以上的賦值的現象。為了避免這種情況的發生,就要在適當的時刻給信號線附上高阻,即當一個模塊在驅動某一信號時,應避免其他模塊也在這一時刻驅動這一信號。芯片的16位數據線為雙向,這可以減少管腳的數量,節省資源。但在使用時若不注意,同樣容易出錯。inout管腳在使用時一般用三態門來實現,當inout端口不輸出時,要將三態門置高阻。這在具體的軟件實現中可以使用一個連續賦值(Assign)語句來實現,通過連續賦值語句將一個條件操作符賦值給這個輸入/輸出變量。該設計的代碼中,雙端口用語句ISP_Data=en? data:16’hzzzz實現其輸入/輸出功能。當en信號為高時,ISP_Data作為輸出信號使用,其值即為data的值;當en信號為低時,ISP_Data作為輸入信號使用。因此,程序中就可以根據需要通過控制en信號的高低來實現ISP_Data的輸入/輸出使用。

    4 結語
    采用高性能的Altera的中的EP2C70F672C6作為主控器件,實現了ISP1在設備控制器工作模式下的功能,為解決紅外圖像處理系統中的數據傳輸問題提供了新的途徑。在具體的軟件實現中,成功地解決了多驅動問題和雙向端口的使用問題。驗證結果表明,程序的穩定性好、可移植性高,并且容易實現、易于維護。在成功地進行了枚舉的過程之后,加載上設備驅動程序即可實現數據向主機以12 Mb/s的傳輸。


    上一頁 1 2 3 4 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 营口市| 托克托县| 六安市| 凤阳县| 澳门| 六安市| 新郑市| 昌图县| 定西市| 苗栗县| 天台县| 金寨县| 准格尔旗| 吐鲁番市| 忻城县| 天长市| 钦州市| 铜川市| 齐齐哈尔市| 宜宾市| 玉屏| 噶尔县| 富裕县| 林甸县| 阿城市| 特克斯县| 山阳县| 襄城县| 平塘县| 天镇县| 丰都县| 塔河县| 梅州市| 涟水县| 公安县| 甘泉县| 日土县| 双柏县| 麻阳| 襄汾县| 竹北市|