中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > U盤SoC的設計與實現(xiàn)

        U盤SoC的設計與實現(xiàn)

        作者: 時間:2013-05-16 來源:網(wǎng)絡 收藏

        控制傳輸?shù)膶崿F(xiàn):
        SETUP階段:從圖4中可看出,當token_valid_i、Pid_setup、ep0_sel有效時,表明收到一個有效的令牌包,udc_as_o被拉高,表示開始數(shù)據(jù)傳送,轉入ctrl_setup_stage狀態(tài),此時cpu把device_bufok_i信號拉高,隨后開始接收數(shù)據(jù),在setup階段8個字節(jié)的標準請求數(shù)據(jù)接收完成后,send_hdsk_pkt_o信號變高,表示數(shù)據(jù)接收正確,要求發(fā)送一個ACK的握手包。

        本文引用地址:http://www.antipu.com.cn/article/159369.htm

        f.JPG


        DATA階段:數(shù)據(jù)階段是可選的,并且數(shù)據(jù)階段的傳送方向可以是IN或OUT。以IN為例來介紹,當Pid_in、token_valid_i、ep0_sel有效時,udc_as_o被拉高,表示開始數(shù)據(jù)傳送,轉入ctrl_in_stage_empty,接著轉入ctrl_in_stage狀態(tài),CPU將device_bufok_i拉高,表示開始接收數(shù)據(jù),等待數(shù)據(jù)傳完后,send_hdsk_pkt_o信號變高,表示數(shù)據(jù)接收正確,并將toggle機制翻轉,要求打包模塊發(fā)送一個ACK的握手包。
        STATUS階段:STATUS階段也分為STATUS IN和STATUS OUT兩種情況。在STATUS OUT階段,接受到HOST發(fā)送過來的空數(shù)據(jù)包后,狀態(tài)機會將send_hdsk_pkt_o信號拉高,發(fā)送ACK包給HOST。其狀態(tài)機同SETUP狀態(tài)機類似。
        中斷、批量、同步傳輸?shù)腎N實現(xiàn):在硬件設計上,中斷、批量和同步3種傳輸方式的處理都是一樣的,只是在系統(tǒng)配置時,各傳輸方式對應的端點不同。下面以3種傳輸方式的IN傳輸來介紹。圖5為3種傳輸方式的IN傳輸?shù)臓顟B(tài)機。

        g.JPG


        從上圖可看出,在收到IN令牌后,狀態(tài)機將tide_as_o拉高,表示開始傳送數(shù)據(jù),轉入In_transfer_empty狀態(tài),再轉入In_transfer狀態(tài),cpu若能傳送數(shù)據(jù),則把device_buf_ok_i信號置高,開始接收數(shù)據(jù),等待數(shù)據(jù)傳送完畢時,狀態(tài)機會將send_data_pkt_o拉高,將此信號送至打包模塊,從而將所需要的數(shù)據(jù)發(fā)送給HOST。
        2.1.5 打包模塊
        本模塊接收從SIE傳來的控制信號,根據(jù)協(xié)議,產生所需要的包傳送給發(fā)送模塊。
        2.1.6 tx模塊
        tx模塊是總線發(fā)送模塊。它將打包模塊發(fā)送過來的包信息,進行并串轉換,位填充,NRZI編碼后,將數(shù)據(jù)發(fā)送給主機。此模塊同rx模塊類似,不再贅述。
        2.2 8051CPU
        此設計中的CPU為一個驗證過的IP核。它包含:1個8位中央處理器、1個片內振蕩器及時鐘電路、4 KB ROM程序存儲器、128B RAM數(shù)據(jù)存儲器、可尋址64 KB外部數(shù)據(jù)存儲器和64 KB外部程序存儲器的控制電路、32條可編程的I/O線(4個8位并行I/O接口)、2個16位的定時,計數(shù)器、1個可編程全雙工串行接口、5個中斷源、2個優(yōu)先級嵌套中斷結構。將的通信請求接入到CPU的一個外部中斷接口上,當的通信請求到來時,系統(tǒng)會產生一個中斷,轉入中斷服務程序。
        此外,還需要設計一個CPU的固件firmware,實現(xiàn)USBCORE的上電初始化過程(向UDC_Control中的控制寄存器和狀態(tài)寄存器寫入初始數(shù)據(jù))、USB CORE中斷處理并完成USB傳輸事務、使設備擺脫異常狀態(tài)等功能。
        2.3 UDC_Control
        UDC_Control模塊位于CPU和USB CORE之間,它完成CPU對USB通信的控制和數(shù)據(jù)的讀寫操作。UDC_CTRL模塊中設有22個特殊功能寄存器,來完成USB通信。
        USB_INT1和USB_INT2為中斷寄存器,其各個位分別表示USB通信的9種中斷請求(剩下的位為保留位),但USBCORE一次只能向CPU提供一個中斷信號,這兩個USB_INT寄存器供軟件在進入中斷后查詢是USB的何種中斷。EP0_CTRL、EP0_INFIFO_DATA、EPO_INFIFO_CNT、EP0_OUTFIFO_ DATA、EP0_OUTFIFO_CNT這5個寄存器都是與Endpoint0相關的,Endpoint0是由一個輸入端點和一個輸出端點組成,用來實現(xiàn)控制傳輸。所有支持USB標準請求和Class定義的請求都通過這個端點來處理。其中EP0_CTRL用來對Endpoint0的傳輸進行控制,當CPU要向USB主機傳送數(shù)據(jù)時,就會將數(shù)據(jù)寫入EP0_INFIFO_DATA,EP0_INFIFO_CNT是CPU向EP0_INFIFO_DATA中寫入數(shù)據(jù)的字節(jié)數(shù)。EP0_OUT,Endpoint1,Endpoint2,Endpoint3,Endpoint4的寄存器情況類似,在此不再多做介紹。UDC_STATUS和DEVICE_CTRL是接口狀態(tài)和控制寄存器,對CPU和USB CORE的通信進行監(jiān)控。
        2.4 NandFlash
        針對NandFlash讀寫的特點,特別是其可隨機讀,但無法隨機寫的問題,需要通過設置緩沖區(qū)來解決。在與USB Host進行數(shù)據(jù)交換的過程中,最小的單位是扇區(qū):512字節(jié)。由于NandFlash在寫之前必須先擦除,而一擦又必須擦一個Block,因此在擦除某Block之前必須保存同一個Block中有關扇區(qū)的數(shù)據(jù)。因此,如果每收到一個扇區(qū)的內容就進行一次擦、保存、寫的操作,系統(tǒng)任務將十分繁重,無法及時響應USB Host端的請求。因此,在系統(tǒng)中設置32K的緩沖區(qū),每完一次數(shù)據(jù)傳輸后,記下本次要寫的開始扇區(qū)和總扇區(qū)數(shù),將本次要寫的數(shù)據(jù)涉及的扇區(qū)以外的數(shù)據(jù)從NandFlash中讀出來,存放在緩沖區(qū)中對應位置,然后擦除一個Block,再將緩沖區(qū)中內容一次全部重新寫入NandFlash。



        評論


        相關推薦

        技術專區(qū)

        關閉