01基于FPGA的cy7c68013a雙向通信實(shí)驗(yàn)
cy68013
本教程是基于FPGA的cy7c68013a的USB雙向通信實(shí)驗(yàn),本教程主要內(nèi)容:
1.cy7c68013a的固件編寫,以及生成iic固件和下載固件。
2.cy7c68013a的slave模式,以及他的讀寫時(shí)序
3.cy7c68013a的FPGA的上板測(cè)試,包括發(fā)送和接收兩部分
02開發(fā)過(guò)程
cy68013
01驅(qū)動(dòng)
在進(jìn)行試驗(yàn)前要先安裝好Cypress提供的usb驅(qū)動(dòng),插上usb后,電腦就會(huì)檢測(cè)到未識(shí)別的設(shè)備,這時(shí)打開設(shè)備管理器,右鍵未識(shí)別的usb,然后手動(dòng)選擇驅(qū)動(dòng)。
在驅(qū)動(dòng)會(huì)在本教程最后的鏈接中給出,如圖所示:
02固件
固件是在CY68013的FPGA內(nèi)部有一個(gè)MCU,需要給MCU固化程序,固件的編寫主要是確定IN和OUT端點(diǎn),以及一些標(biāo)志信號(hào)。
固件只需要改這些參數(shù)即可,一般情況下不需要修改,很容易看出本教程中設(shè)置的時(shí)鐘是48MHz,然后設(shè)置EP2為OUT端點(diǎn),512字節(jié),4緩沖,bulk (注意OUT,IN都是相對(duì)PC來(lái)說(shuō)的,OUT表示PC--->cy7c68013a,IN則相反)
EP6為IN端點(diǎn),512字節(jié),4緩沖,bulk
flag_a 為EP2的EF,也就是空標(biāo)志信號(hào),為低時(shí)表示空,也就是沒(méi)有數(shù)據(jù)過(guò)來(lái),為高則表示有數(shù)據(jù)來(lái)了
flag_d 為EP6的FF,也就是滿標(biāo)志信號(hào),為低時(shí)表示寫滿了,這時(shí)再去寫就是無(wú)效寫了,為高則表示沒(méi)有寫滿,可以繼續(xù)寫。
教程提供的固件所在文件夾:固件源碼什么的都在Firmware文件中
03時(shí)序
Slave FIFO的時(shí)序如圖所示。
有圖很容易看出,再寫之前要先把FIFOADR確認(rèn)好,這個(gè)決定了你寫的對(duì)象是誰(shuí)
slave讀操作
然后在該fifo非滿時(shí)(相應(yīng)的FF標(biāo)志位高),才可以進(jìn)行寫操作,這個(gè)時(shí)序很簡(jiǎn)單,就是拉低slwr信號(hào)就可以了,注意FD要與slwr對(duì)齊。
注意:寫操作時(shí),slwr與FD的數(shù)據(jù)都是FPGA來(lái)控制的,為了讓cy7c68013a更好的采樣,ifclk與clk反向之后再發(fā)送給cy7c68013a.
讀時(shí)序跟寫也是類似的,再讀之前先確定FIFOADR,然后拉低sloe,這時(shí)FD總線就會(huì)出現(xiàn)第一個(gè)數(shù)據(jù),然后檢測(cè)到slrd為低時(shí),F(xiàn)D就會(huì)顯示下一個(gè)數(shù)據(jù)。
04FPGA與cy7c68013a通信
前面主要是準(zhǔn)備工作,現(xiàn)在正是進(jìn)入測(cè)試:
項(xiàng)目工程如下:
具體代碼都已經(jīng)有了詳細(xì)注釋了,這里就不詳細(xì)解釋。
本教程所用的調(diào)試工具是官方的工具
03調(diào)試
Deep learnning
下面給出寫的signal tap 的調(diào)試截圖
寫是一次寫512個(gè)字節(jié)數(shù)據(jù),0-255,注意usb的fifo是一次發(fā)送16位的,也就是2個(gè)字節(jié)。先發(fā)送低字節(jié),然后再發(fā)送高字節(jié),這我直接把低字節(jié)給賦值為0了
前面局部放大圖
后面局部放大圖,注意只有在flag_d為高時(shí),slwr為低才是有效寫,否則就是無(wú)效寫,因?yàn)楫?dāng)flag_d為低時(shí),表示寫滿了,這時(shí)fifo就會(huì)丟棄后面寫的數(shù)據(jù)。
PC端接收到的數(shù)據(jù)要2個(gè)字節(jié)一起讀,因?yàn)閡sb是16位發(fā)送的,可以看出接收到的數(shù)據(jù)的確是0000-00FF。
注意:pc接收數(shù)據(jù)按照下圖標(biāo)的編碼順序執(zhí)行
pc發(fā)送數(shù)據(jù)按1-->2-->3的步驟,可以看出我們發(fā)送了12 34 56 78 這4個(gè)字節(jié)
注意這里我是設(shè)置了cmd_flag標(biāo)志信號(hào)的,只有cmd_flag為高時(shí)的cmd_data的數(shù)據(jù)才是有效的,也就是pc發(fā)送過(guò)來(lái)的數(shù)據(jù)
alter 的fifo ip 是可以讀寫位寬不一致的,具體看下面的圖。
由上圖可以看出這個(gè)和usb是一樣的格式,都是先發(fā)低字節(jié),然后再發(fā)高字節(jié)。或者說(shuō)先接收低字節(jié),然后再接收高字節(jié)。
至此本教程就全部介紹完了,教程只挑了最關(guān)鍵的部分講述USB的開發(fā),但是包括了固件,驅(qū)動(dòng)和FPGA程序,一個(gè)完整的USB和FPGA開發(fā)的工程完全可以進(jìn)行在此基礎(chǔ)上進(jìn)行二次開發(fā)。
審核編輯:湯梓紅
-
FPGA
+關(guān)注
關(guān)注
1629文章
21736瀏覽量
603307 -
usb
+關(guān)注
關(guān)注
60文章
7945瀏覽量
264622 -
Cypress
+關(guān)注
關(guān)注
11文章
137瀏覽量
82104 -
CY7C68013A
+關(guān)注
關(guān)注
2文章
20瀏覽量
21652 -
編寫
+關(guān)注
關(guān)注
0文章
29瀏覽量
8443 -
雙向通信
+關(guān)注
關(guān)注
0文章
13瀏覽量
8620
原文標(biāo)題:基于FPGA的cy7c68013a雙向通信教程
文章出處:【微信號(hào):gh_873435264fd4,微信公眾號(hào):FPGA技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論