最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

神電測(cè)控:LabVIEW FPGA番外篇:實(shí)驗(yàn)63:FPGA2FPGA之間自定義高速通信協(xié)議(ACK/REQ)

2021-07-11 11:56 作者:神電測(cè)控  | 我要投稿

????????核心思想:來自于PXI機(jī)箱背板上的總線,可以讓多個(gè)板卡之間實(shí)現(xiàn)P2P總線互聯(lián)。

????????很多場(chǎng)合下,一片F(xiàn)PGA可能無法滿足實(shí)際項(xiàng)目應(yīng)用需求,比如一個(gè)非常復(fù)雜的算法可能需要借助多個(gè)FPGA并行計(jì)算;再比如要實(shí)現(xiàn)128路,每路50MS/s更新率的DAC模擬輸出,此時(shí)就需要多個(gè)FPGA+多個(gè)AD9767模塊共同參與協(xié)作,才能達(dá)到完美的效果!

????????如果多個(gè)FPGA板子就近放在一起,板與板之間通過開放的引腳進(jìn)行互聯(lián)。其中一個(gè)板子充當(dāng)主設(shè)備,負(fù)責(zé)與上位機(jī)PC主機(jī)通信,其余的FPGA板子則采用環(huán)形菊花鏈的方式組建網(wǎng)絡(luò)。那么采用什么樣的傳輸方式,可以將上位機(jī)下發(fā)的數(shù)據(jù)(比如任意波形)及時(shí)高效的傳遞給每一個(gè)FPGA進(jìn)行共享呢?

????????低速情況下,可以采用UART串口通信協(xié)議,好處是只占用兩個(gè)FPGA IO口,但是波特率很難做上去;而傳統(tǒng)的FSMC總線規(guī)則又太多,位寬有限制,不利于FPGA精簡(jiǎn)優(yōu)化,邏輯資源消耗多;SPI總線同樣存在數(shù)據(jù)傳輸速度瓶頸。

????????為此,我們可以根據(jù)實(shí)際情況,采取自定義的ACK/REQ握手協(xié)議,配合不同的數(shù)據(jù)位寬,達(dá)到像ARM和RISC-V精簡(jiǎn)指令集那般的效果!兼顧通信帶寬和FPGA邏輯資源的均衡。

????????下面我們向大家簡(jiǎn)單介紹一下環(huán)形菊花鏈里面的多個(gè)FPGA數(shù)據(jù)轉(zhuǎn)發(fā)共享自定義協(xié)議的實(shí)現(xiàn)方法。

1、介紹

????????本節(jié)實(shí)驗(yàn)給出的LabVIEW FPGA程序,則使用簡(jiǎn)單的握手ACK/REQ協(xié)議數(shù)據(jù)以并行方式,通過連接在FPGA板與板之間的外部任意6個(gè)IO引腳,實(shí)現(xiàn)穩(wěn)定、可靠、高速的傳輸。通信協(xié)議是一種單向發(fā)送/接收實(shí)現(xiàn),其中,2兩個(gè)IO分別作為ACK和REQ握手,余下4個(gè)IO作為半個(gè)字節(jié)的數(shù)據(jù)位寬,當(dāng)然用戶可以根據(jù)實(shí)際情況拓展數(shù)據(jù)位寬。

????????范例程序包括帶有兩個(gè)FPGA終端的項(xiàng)目。一個(gè)充當(dāng)發(fā)射器,一個(gè)充當(dāng)接收器。時(shí)鐘速率可以通過配置FPGA里面的定時(shí)循環(huán)時(shí)鐘來調(diào)整傳輸帶寬。由于兩個(gè)FPGA板子之間通過異步握手,沒有同步時(shí)鐘線,雖然不會(huì)達(dá)到同步協(xié)議可能達(dá)到的速度,但是這個(gè)ACK/REQ異步通信協(xié)議對(duì)于來自兩個(gè)甚至多個(gè)明顯不同速率或漂移的時(shí)鐘差異相當(dāng)穩(wěn)健。

2、基本配置

????????本節(jié)實(shí)驗(yàn)演示的自定義協(xié)議需要ACK、REQ和4行數(shù)據(jù)線共計(jì)6個(gè)FPGA DIO。如果用戶使用的是PXIe機(jī)箱背板總線或者PCI板卡上的RTSI總線,那么可以添加的數(shù)據(jù)線還是比較少的。但是如果,用戶選擇的是市面上通用的FPGA板子,那么可以修改此案例程序里面的自定義協(xié)議VI,以使用更多數(shù)據(jù)線來提高傳輸速度。

????????另外,我們還提供了一個(gè)可以在上位機(jī)PC上直接模擬仿真這個(gè)自定義協(xié)議的示例VI,非常直觀,模擬仿真完成后再分別編譯下載到兩個(gè)不同的FPGA目標(biāo)板子里面進(jìn)行測(cè)試。

3、操作原理

????????發(fā)送端FPGA在空閑狀態(tài)等待輸入有效信號(hào)變高,然后在下一個(gè)循環(huán)迭代中(或單周期定時(shí)循環(huán)SCTL中的時(shí)鐘周期),發(fā)送端將把該數(shù)據(jù)放在數(shù)據(jù)線上并置高ACK線;同時(shí),接收端FPGA正在等待ACK線上的置高。當(dāng)接收端FPGA看到ACK線為高電平時(shí),它將接收來自數(shù)據(jù)線的數(shù)據(jù)并置高 REQ 線;發(fā)送端FPGA在取消確認(rèn)ACK線之前等待REQ 線變高。一旦接收端FPGA看到ACK線被置低,接收端就會(huì)將REQ線置低,這樣就完成了一次數(shù)據(jù)傳輸。最后,接收端和發(fā)送端FPGA又重新回到空閑狀態(tài),再次準(zhǔn)備好進(jìn)行下一次的數(shù)據(jù)傳輸。

????????具體的兩個(gè)FPGA終端項(xiàng)目瀏覽器,如圖1所示。里面的兩個(gè)核心收發(fā)子VI封裝的時(shí)候,都是滿足標(biāo)準(zhǔn)的四線握手來的,方便用戶集成到自己的FPGA程序里面去。

圖1:FPGA2FPGA自定義異步傳輸協(xié)議項(xiàng)目瀏覽器截圖


4、發(fā)送端(FPGA 1)

????????發(fā)送端FPGA VI前面板很簡(jiǎn)單,如圖2所示,對(duì)應(yīng)的程序框圖里面有一個(gè)封裝好的ACK/REQ通用型發(fā)送子VI,如圖3所示。這個(gè)子VI包括了接收一個(gè)輸入來定義用于每個(gè)函數(shù)的數(shù)字線、要傳輸?shù)臄?shù)據(jù)位以及與單周期定時(shí)循環(huán) (SCTL) 中的其他函數(shù)一起使用的有效輸入信號(hào)。這便是我們整本《LabVIEW FPGA開發(fā)寶典》反復(fù)強(qiáng)調(diào)的一個(gè)知識(shí)點(diǎn):四線握手。

圖2:發(fā)送端FPGA程序前面板(ACK/REQ半字)
圖3:發(fā)送端FPGA程序框圖(ACK/REQ半字)

????????以后用戶自己在封裝VI時(shí),也要考慮到四線握手,這樣才能讓每個(gè)函數(shù)VI都能方便的被調(diào)用,集成到自己的FPGA主程序里面去。這個(gè)子VI里面是一個(gè)加了反饋節(jié)點(diǎn)的標(biāo)準(zhǔn)狀態(tài)機(jī),如圖4所示,技巧性很高,值得大家學(xué)習(xí)。

? ??

圖4:發(fā)送端FPGA核心子VI狀態(tài)機(jī)程序框圖(滿足四線握手)

????????當(dāng)我們點(diǎn)擊FPGA VI前面板上的“Input Valid”按鈕時(shí),發(fā)送端FPGA就會(huì)將前面板上的數(shù)據(jù)發(fā)送給接收端。

5、接收端(FPGA2)

????????接收端FPGA VI前面板也很簡(jiǎn)單,如圖5所示,對(duì)應(yīng)的程序框圖里面有一個(gè)封裝好的ACK/REQ通用型接收子VI,如圖6所示,也滿足四線握手。這個(gè)接收子VI接受數(shù)字線路分配的輸入(對(duì)應(yīng)發(fā)送端的同一條DIO),內(nèi)部是一個(gè)標(biāo)準(zhǔn)的接收狀態(tài)機(jī),如圖7所示。當(dāng)接收到新數(shù)據(jù)時(shí),將輸出有效標(biāo)志進(jìn)行置位。

圖5:接收端FPGA程序前面板(ACK/REQ半字)
圖6:接收端FPGA程序框圖(ACK/REQ半字)
圖7:接收端FPGA核心子VI狀態(tài)機(jī)程序框圖(滿足四線握手)

????????需要注意的是:由于數(shù)據(jù)更新比較快,所以在實(shí)際的項(xiàng)目應(yīng)用里面,應(yīng)該根據(jù)這個(gè)子VI的輸出有效信號(hào)將接收到的數(shù)據(jù)立刻存放到FIFO里面進(jìn)行緩沖起來,以確保所有的數(shù)據(jù)不會(huì)丟失,如圖8所示。這個(gè)FIFO也是四線握手的,貫穿了整個(gè)《LabVIEW FPGA開發(fā)寶典》,凡是遇到高速數(shù)據(jù)流通信的場(chǎng)合都會(huì)用到FIFO進(jìn)行數(shù)據(jù)緩沖和轉(zhuǎn)移(比如,UART、USB、千兆以太網(wǎng)、PCIe等)。

圖8:將接收端的數(shù)據(jù)利用四線握手放到FIFO里面進(jìn)行緩沖


神電測(cè)控:LabVIEW FPGA番外篇:實(shí)驗(yàn)63:FPGA2FPGA之間自定義高速通信協(xié)議(ACK/REQ)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
横峰县| 达孜县| 建宁县| 十堰市| 紫阳县| 乌鲁木齐市| 武陟县| 乡宁县| 万山特区| 博白县| 嵊泗县| 新泰市| 北京市| 遂平县| 盈江县| 商河县| 晋江市| 永吉县| 景洪市| 泌阳县| 修文县| 大宁县| 朝阳市| 普安县| 六枝特区| 温州市| 大渡口区| 巴中市| 岑溪市| 宁乡县| 新密市| 宁陕县| 邵武市| 巫山县| 淳化县| 大理市| 鸡东县| 利辛县| 鹰潭市| 汝阳县| 广灵县|