<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > U盤(pán)SoC的設計與實(shí)現

U盤(pán)SoC的設計與實(shí)現

作者: 時(shí)間:2013-05-16 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/159369.htm

f.JPG


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

g.JPG


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



關(guān)鍵詞: U盤(pán) 片上系統 USB Verilog HDL

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>