女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA學(xué)習(xí)系列:37. USB2.0的設(shè)計(jì)

FPGA學(xué)習(xí)交流 ? 2018-09-13 12:07 ? 次閱讀

設(shè)計(jì)背景:

USB(Universal Serial Bus2.0,通用串行總線)是一種應(yīng)用在計(jì)算機(jī)領(lǐng)域的新型接口技術(shù)USB接口具有傳輸速度更快,支持熱插拔以及連接多個(gè)設(shè)備的特點(diǎn)。目前已經(jīng)在各類外部設(shè)備中廣泛的被采用。USB接口有三種:USB1.1,USB2.0和USB3.0。理論上USB1.1的傳輸速度可以達(dá)到12Mbps,而USB2.0則可以達(dá)到速度480Mbps,并且可以向下兼容USB1.1

設(shè)計(jì)原理:

本次的設(shè)計(jì)主要設(shè)計(jì)我們用用的開發(fā)板是我們至芯出的第一代開發(fā)板,其中的USB芯片C是ypress的FX2LP系列中的CY7C68013A代,詳細(xì)的介紹不多說,見Cypress的官網(wǎng):在這里我就簡(jiǎn)化的給大家做一個(gè)簡(jiǎn)單介紹。

FX2的設(shè)計(jì)架構(gòu)如下圖,內(nèi)嵌480MBit/s的收發(fā)器,鎖相環(huán)PLL,串行接口引擎SIE——集成了整個(gè)USB 2.0協(xié)議的物理層。為適應(yīng)USB 2.0的480MBit/s的速率,F(xiàn)IFO端點(diǎn)可配置成2,3,4個(gè)緩沖區(qū)。 配置用的是“軟配置”——USB固件可由USB總線下載,片上不需集成ROM。擁有四個(gè)FIFO接口,可工作在內(nèi)部或外部時(shí)鐘下。端點(diǎn)和FIFO接口的應(yīng)用使外部邏輯和USB總線可高速連接。

image.png

基于FX2LP的USB開發(fā),包括三部分:固件程序、驅(qū)動(dòng)、上位機(jī)軟件。

固件程序我們?cè)?/span>kiil中寫出來,然后配置到我們的芯片中,固件的開發(fā)對(duì)我們FPGA工程師來說是不用寫的,是別的工程師配置好芯片我們拿來用的,其主要的配置過程如下圖:先上電復(fù)位,然后初始化我們的寄存器變量,然后調(diào)用配置函數(shù),打開中斷后,判斷是否接受到了我們的配置包,如果接收到了就調(diào)用TD_POLL()函數(shù),這個(gè)是函數(shù)是不停的執(zhí)行掃描我們的端點(diǎn)等。然后判斷我們的芯片是否掛起,如果掛起就叫醒芯片,如果沒有就一直調(diào)用TD_POLL函數(shù),這樣完成我們所需要的配置。

image.png

我們的項(xiàng)目是要把我們的FX2配置成從FIFO的模式, 配置為單片機(jī)工作時(shí)鐘24M,端點(diǎn)2輸出,字節(jié)1024,端點(diǎn)6輸入,字節(jié)1024,信號(hào)全設(shè)置為低電平有效等。我們的模塊驅(qū)動(dòng)時(shí)鐘我們配置成內(nèi)部輸出時(shí)鐘,也就是讓FX2給我們的設(shè)計(jì)當(dāng)做時(shí)鐘源,輸出一個(gè)最大的配置時(shí)鐘48M的時(shí)鐘。

在這邊說一下,我們的FX2的數(shù)據(jù)存儲(chǔ)區(qū)叫端點(diǎn),有512,1024字節(jié)兩個(gè)存儲(chǔ)大小之分。

FIFO的說明:

當(dāng)有一個(gè)與FX2芯片相連的外部邏輯只需要利用FX2做為一個(gè)USB 2.0接口而實(shí)現(xiàn)與主機(jī)的高速通訊,而它本身又能夠提供滿足Slave FIFO要求的傳輸時(shí)序,可以做為Slave FIFO主控制器時(shí),即可考慮用此傳輸方式。

Slave FIFO傳輸?shù)氖疽鈭D如下:

image.png

在這種方式下,FX2內(nèi)嵌的8051固件的功能只是配置Slave FIFO相關(guān)的寄存器以及控制FX2何時(shí)工作在Slave FIFO模式下。一旦8051固件將相關(guān)的寄存器配置完畢,且使自身工作在Slave FIFO模式下后,外部邏輯(如FPGA)即可按照Slave FIFO的傳輸時(shí)序,高速與主機(jī)進(jìn)行通訊,而在通訊過程中不需要8051固件的參與。

FX2系列的有3種封裝方式,我們我的開發(fā)板用的是56引腳的封裝方式的電路圖,其電路圖如下所示:

image.png


端口介紹:

IFCLK:FX2輸出的時(shí)鐘,可做為通訊的同步時(shí)鐘;

SLCS:FIFO的片選信號(hào),外部邏輯控制,當(dāng)SLCS輸出高時(shí),不可進(jìn)行數(shù)據(jù)傳輸;

SLOE:FIFO輸出使能,外部邏輯控制,當(dāng)SLOE無效時(shí),數(shù)據(jù)線不輸出有效數(shù)據(jù);

SLRD:FIFO讀信號(hào),外部邏輯控制,同步讀時(shí),F(xiàn)IFO指針在SLRD有效時(shí)的每個(gè)IFCLK的上升沿遞增。

SLWR:FIFO寫信號(hào),外部邏輯控制,同步寫時(shí),在SLWR有效時(shí)的每個(gè)IFCLK的上升沿時(shí)數(shù)據(jù)被寫入,F(xiàn)IFO指針遞增

FD[15:0]:數(shù)據(jù)線;

FIFOADR[1:0]:選擇四個(gè)FIFO端點(diǎn)的地址線,外部邏輯控制。

FLAGA,B,C端點(diǎn)的空滿標(biāo)志位

我們的開發(fā)驅(qū)動(dòng)大家可以在網(wǎng)上找,然后根據(jù)自己系統(tǒng)裝上合適的驅(qū)動(dòng),或者在我們的至芯論壇上搜EZ-USB,就可以看到我們老師發(fā)的帖子來講解驅(qū)動(dòng)的安裝。

我們的上位機(jī)軟件用的是官方的開發(fā)工具,只有如下的安裝包

然后安裝第一個(gè)和第二個(gè)就好了。

image.png


設(shè)計(jì)代碼:

讀模塊:

0moduleusb_rd(pi_clk,pi_rst_n,pi_usb_flagb,pi_usb_flagc, pio_usb_data,

1 po_usb_oe_n,po_usb_rd_n,po_usb_address,po_usb_wr_n,led);

2

3 inputpi_clk;

4 inputpi_rst_n;

5 inputpi_usb_flagb; //端點(diǎn)2標(biāo)志信號(hào)

6 inputpi_usb_flagc;//端點(diǎn)6標(biāo)志信號(hào)

7 inout[15:0]pio_usb_data;//輸入輸出端口

8

9 outputregpo_usb_oe_n;//讀標(biāo)志信號(hào)

10 outputregpo_usb_rd_n;//寫使能

11 outputregpo_usb_wr_n;//讀使能

12 outputreg[1:0]po_usb_address;//端點(diǎn)地址選擇

13 outputregled; //接收標(biāo)志正確指示燈

14

15 reg[15:0]temp_data;

16 reg[9:0]count;

17 reg[2:0]state;

18

19 assignpio_usb_data =(state ==10)?1:16'hzzzz; //讀數(shù) 據(jù),可以一直釋放數(shù)據(jù)總線的控制權(quán)

20

21 always@(posedgepi_clk ornegedgepi_rst_n)

22 if(!pi_rst_n)

23 begin

24 state <=0;

25 po_usb_oe_n <=1;

26 po_usb_rd_n <=1;

27 count <=0;

28 po_usb_wr_n <=1;

29 temp_data <=0;

30 end

31 else

32 case(state)

33 0 : state <=1;

34

35 1 : begin

36 po_usb_address <=2'b00;//地址指向端點(diǎn)2

37 state <=2;

38 end

39

40 2 : if(!pi_usb_flagb) //判斷端點(diǎn)2已經(jīng)滿

41 begin

42 po_usb_rd_n <=0;

43 state <=3;

44 po_usb_oe_n <=0;

45 end

46 else

47 state <=2;

48

49 3 : begin

50 if(count <512-1) //接收1024字節(jié)的數(shù) 據(jù)

51 begin

52 count <=count +1'b1;

53 end

54 else

55 begin

56 count <=0;

57 state <=4;

58 end

59 if(count ==2)

60 begin

61 temp_data <=pio_usb_data;

62 end

63 end

64

65 4 : begin

66 po_usb_rd_n <=1;

67 po_usb_oe_n <=1;

68 state <=0;

69 end

70

71 default: state <=0;

72 endcase

73

74 always@(*)

75 if(!pi_rst_n)

76 led <=1;

77 elseif(temp_data ==16'h33ff)//判斷我們接收數(shù)據(jù)是否正確

78 led <=0;

79

80endmodule

寫模塊:

0moduleusb_wr(pi_clk,pi_rst_n,pi_usb_flagb,pi_usb_flagc, pio_usb_data,

1 po_usb_oe_n,po_usb_wr_n,po_usb_address,po_usb_rd_n);

2

3 inputpi_clk;

4 inputpi_rst_n;

5 inputpi_usb_flagb; //端點(diǎn)2標(biāo)志信號(hào)

6 inputpi_usb_flagc; //端點(diǎn)6標(biāo)志信號(hào)

7 inout[15:0]pio_usb_data; //輸入輸出端口

8

9 outputregpo_usb_oe_n; //讀標(biāo)志信號(hào)

10 outputregpo_usb_wr_n; //寫使能

11 outputregpo_usb_rd_n; //讀使能

12 outputreg[1:0]po_usb_address; //端點(diǎn)地址選擇

13

14 reg[15:0]temp_data;

15 reg[2:0]state;

16

17 //在狀態(tài)的3,拿回?cái)?shù)據(jù)總線控制全,給寫入數(shù)據(jù)

18 assignpio_usb_data =(state ==3)?temp_data :16'hzzzz;

19

20 always@(posedgepi_clk ornegedgepi_rst_n)

21 if(!pi_rst_n)

22 begin

23 state <=0;

24 po_usb_oe_n <=1;

25 po_usb_wr_n <=1;

26 temp_data <=0;

27 po_usb_rd_n <=1;

28 end

29 else

30 case(state)

31 0 : state <=1;

32

33 1 : begin

34 po_usb_address <=2'b10;//地址指向端點(diǎn)6

35 state <=2;

36 end

37

38 2 : if(!pi_usb_flagc) //判斷端點(diǎn)6已經(jīng)空

39 begin

40 po_usb_wr_n <=0;

41 state <=3;

42 end

43 else

44 state <=2;

45

46 3 : if(temp_data <256-1) //發(fā)送1024 字節(jié)的數(shù)據(jù)

47 temp_data <=temp_data +1'b1;

48 else

49 begin

50 temp_data <=0;

51 state <=4;

52 end

53

54 4 : begin

55 po_usb_wr_n <=1;

56 state <=0;

57 end

58

59 default: state <=0;

60 endcase

61

62endmodule


上位機(jī)測(cè)試:

我們安裝好驅(qū)動(dòng)和下載的上位機(jī)軟件,然后在下面的界面中,點(diǎn)擊LGEEPROM按鈕,下載我們寫好的的.IIC固件。

image.png


然后在下面的頁面中會(huì)出現(xiàn)先選擇other endpt xfers選項(xiàng)

會(huì)出現(xiàn)我們的4個(gè)端點(diǎn),然后我們選擇寫入的端點(diǎn)或者讀的端點(diǎn)執(zhí)行讀寫操作

image.png


寫的端點(diǎn)是6端點(diǎn),我們選擇這個(gè)端點(diǎn),我們的寫入端點(diǎn)是1024個(gè)字節(jié),我設(shè)置的是512字節(jié),也就是寫入2次就可以寫滿了,

如下圖,和我們代碼中寫入數(shù)據(jù)值是一樣的。

image.png

image.png

讀操作也就是要讀我們的端點(diǎn)2,我們先要給端點(diǎn)一個(gè)數(shù),然后才能讀我們的端點(diǎn),我們寫入我們圖中顯示的數(shù),因?yàn)槲覀冊(cè)O(shè)計(jì)的是讀出的數(shù)如果第三個(gè)數(shù)位33ff 就讓我們的燈亮,值得一說的是,我們上位機(jī)顯示的時(shí)候是把低位顯示到了前面,高位顯示到了后面,我們一個(gè)包是1024字節(jié),后面的數(shù)自動(dòng)補(bǔ)零,讀出數(shù)據(jù)后可以看到我們的led燈亮,驗(yàn)證出我們的設(shè)計(jì)正確。

image.png



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1643

    文章

    21960

    瀏覽量

    614066
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何使用USB2.0將數(shù)據(jù)從fpga傳輸?shù)絇C?

    我正在嘗試使用 USB 2.0 從 ztex 板 USB-FPGA 模塊 2.13 向計(jì)算機(jī)發(fā)送信號(hào)。 從 fpga 方面,我使用的是 fifo 代碼,從計(jì)算機(jī)方面,我有一個(gè) ZTex
    發(fā)表于 05-29 06:28

    調(diào)試CX3 USB3.0兼容USB2.0出圖的問題求解

    調(diào)試CX3 USB3.0兼容USB2.0出圖的問題,我們?cè)谡{(diào)試一款sensor,需要輸出全分辨率1124x1364,USB3.0調(diào)試可以出圖,但是在調(diào)試USB2.0時(shí),無法調(diào)試出圖,在
    發(fā)表于 05-15 08:18

    在automaster和autoslave項(xiàng)目中如何配置參數(shù)來滿足usb3.0和usb2.0的數(shù)據(jù)傳輸?

    在automaster和autoslave項(xiàng)目中如何配置參數(shù),來滿足usb3.0和usb2.0的數(shù)據(jù)傳輸,因?yàn)橐贿厵z測(cè)到是usb3.0, 一邊是usb2.0
    發(fā)表于 05-09 06:26

    是否可以與USB2.0集線器 (CYUSB2302) 共享USB2通道SS線路直接到USB3.0端口?

    我們的SoM iMX8提供一個(gè)USB3.0 接口。 但在我們的應(yīng)用中我們需要一個(gè)完整的USB3.0 端口以及USB2.0端口。 在路由 USB3.0 的同時(shí),是否可以與
    發(fā)表于 05-08 07:38

    推薦一款USB2.0 MTT 2.0HUB SL6243

    推薦一款USB2.0 MTT 2.0HUBSL6243 SL6243目前封裝形式有5種,有些型號(hào)兼容市面上一些主流封裝。 以SL6243Q為例: SL6243Q 是一顆高集成度,高性能,低功耗
    發(fā)表于 03-31 14:29

    有沒有ASM3354 USB2.0口轉(zhuǎn)SATA的bridge?

    請(qǐng)問一下,有沒有ASM3354 USB2.0口轉(zhuǎn)SATA的bridge? 如果,使用TUSB9261(USB3.0 to SATA)USB3.0信號(hào)是否可以不接,因?yàn)闆]有USB3.
    發(fā)表于 12-23 07:12

    TUSB121x USB2.0電路板指南

    電子發(fā)燒友網(wǎng)站提供《TUSB121x USB2.0電路板指南.pdf》資料免費(fèi)下載
    發(fā)表于 10-25 10:10 ?0次下載
    TUSB121x <b class='flag-5'>USB2.0</b>電路板指南

    ARK3399 USB2.0 PC攝像頭控制器規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《ARK3399 USB2.0 PC攝像頭控制器規(guī)格書.pdf》資料免費(fèi)下載
    發(fā)表于 09-30 14:43 ?2次下載

    德州儀器USB2.0設(shè)備用晶體的選擇和規(guī)格

    電子發(fā)燒友網(wǎng)站提供《德州儀器USB2.0設(shè)備用晶體的選擇和規(guī)格.pdf》資料免費(fèi)下載
    發(fā)表于 09-29 10:18 ?0次下載
    德州儀器<b class='flag-5'>USB2.0</b>設(shè)備用晶體的選擇和規(guī)格

    FPGA + USB2.0 PHY USB3300 實(shí)現(xiàn)高速USB2UART

    本帖最后由 jf_73911065 于 2024-9-23 16:23 編輯 Malogic FPGA + USB2.0 PHY CY7C68000或USB3300 實(shí)現(xiàn)高速USB
    發(fā)表于 09-02 18:01

    USB 2.0信號(hào)質(zhì)量測(cè)試

    對(duì)于電子測(cè)試工程師來說,USB2.0的信號(hào)質(zhì)量測(cè)試可以確保數(shù)據(jù)傳輸?shù)目煽啃裕⑶覝p少噪聲和干擾。今天我們一起學(xué)習(xí)一下具體操作過程。Chrent整體連接USB2.0最高速率HighSpeed是480兆
    的頭像 發(fā)表于 08-30 12:57 ?2736次閱讀
    <b class='flag-5'>USB</b> <b class='flag-5'>2.0</b>信號(hào)質(zhì)量測(cè)試

    CYUSB3014是否會(huì)自動(dòng)調(diào)整工作模式USB3.0還是USB2.0

    CYUSB3014是否會(huì)自動(dòng)調(diào)整工作模式USB3.0還是USB2.0?它的工作模式是否可以或怎么通過FLAG傳輸給FPGA?
    發(fā)表于 08-14 08:00

    請(qǐng)問ESP32-S3 USB HOST是否支持USB2.0?

    規(guī)格書介紹ESP32-S2指定USB HOST支持的USB1.1,ESP32-S3的USB HOST支持USB2.0? 請(qǐng)問ESP32-S3 USB
    發(fā)表于 07-19 06:53

    Fcx3 usb2.0攝像頭分辨率問題求解

    你好:現(xiàn)在的項(xiàng)目能在USB3.0的基礎(chǔ)上實(shí)現(xiàn)OV5640的1200*1200分辨率傳輸,大約15fps。現(xiàn)在想在usb2.0的情況下同樣使用1200*1200分辨率傳輸,現(xiàn)在usb2.0默認(rèn)的640
    發(fā)表于 07-03 08:25

    矽力杰USB2.0接口ESD保護(hù)方案

    隨著PC、智能手機(jī)等通訊設(shè)備對(duì)于數(shù)據(jù)傳輸需求不斷增加,USB2.0被廣泛應(yīng)用于這些場(chǎng)景。USB2.0憑借其用戶友好性和可提供高速數(shù)據(jù)傳輸?shù)哪芰Γ赑C、消費(fèi)電子和移動(dòng)設(shè)備中成為不可或缺的接口
    的頭像 發(fā)表于 06-19 08:19 ?962次閱讀
    矽力杰<b class='flag-5'>USB2.0</b>接口ESD保護(hù)方案