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

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

LabVIEWCompactRIO 開發(fā)指南28 可重入和非重入子VI之間的權(quán)衡

2023-05-22 11:00 作者:bjcyck  | 我要投稿

LabVIEWCompactRIO?開發(fā)指南28

了解可重入和非重入子VI之間的權(quán)衡

重入是子VI執(zhí)行屬性中的設(shè)置。在LabVIEW?FPGA中,子VI執(zhí)行默認(rèn)設(shè)置為可重入。重入在FPGA邏輯中創(chuàng)建子VI的多個(gè)副本。這能夠并行執(zhí)行子VI的多個(gè)副本,同時(shí)存儲(chǔ)不同且獨(dú)立的數(shù)據(jù)存儲(chǔ)。

在圖5.14的示例中,子VI設(shè)置為可重入,因此這兩個(gè)循環(huán)同時(shí)運(yùn)行,并且任何內(nèi)部移位寄存器、局部變量或VI范圍的存儲(chǔ)器數(shù)據(jù)點(diǎn)對(duì)于每個(gè)實(shí)例都是唯一的。

圖5.14.子VI設(shè)置為可重入

對(duì)于LabVIEWFPGA,這也意味著函數(shù)的每個(gè)副本都使用自己的FPGA,切入性對(duì)于代碼可移植性是有效的,但可能使用更多門。如果嘗試保存FPGA資源,則可能需要將執(zhí)行屬性更改為非重入執(zhí)行。但是,對(duì)于小型子VI,在這種情況下,可能會(huì)使用更多的FPGA結(jié)構(gòu),因?yàn)榫幾g器會(huì)向FPGA結(jié)構(gòu)添加更多邏輯來處理仲裁。以下部分介紹避免仲裁的技術(shù)。

避免仲裁

當(dāng)LabVIEWFPGA代碼包含具有多個(gè)讀取器或?qū)懭肫鞯墓蚕碣Y源(例如I/O節(jié)點(diǎn)或不可重入子VI)時(shí),就會(huì)發(fā)生仲裁。在這些情況下,編譯器會(huì)向FPGA結(jié)構(gòu)添加更多邏輯來處理此仲裁。如果擔(dān)心盡量減少使用的FPGA結(jié)構(gòu)的數(shù)量,請(qǐng)盡量避免仲裁。有關(guān)仲裁如何運(yùn)作的更多信息,請(qǐng)參閱《LabVIEW?FPGA?Help?Document:?Managing?Shared?Resources》。

如上述幫助文檔所述,可以通過更改LabVIEW中的仲裁設(shè)置來避免仲裁,但更可靠的技術(shù)是以防止仲裁的方式設(shè)計(jì)應(yīng)用程序。下面列出了其中一些技術(shù):

■最小化共享資源

■在時(shí)間關(guān)鍵型代碼(如FIFO)中使用double-sided資源

■避免多個(gè)讀取器和/或?qū)懭肫鞯絛ouble-sided資源

另一種技術(shù)是在需要多個(gè)編寫器的情況下創(chuàng)建多個(gè)全局或局部變量。例如,考慮使用LabVIEW?FPGA?VI,它使用一個(gè)環(huán)路從模擬輸入節(jié)點(diǎn)讀取數(shù)據(jù),使用兩個(gè)額外環(huán)路來處理模擬數(shù)據(jù)。在這種情況下,可以創(chuàng)建兩個(gè)單獨(dú)的全局或局部變量,例如A和B,以寫入模擬輸入環(huán)路。在第一個(gè)處理循環(huán)中,可以從變量A讀取,在第二個(gè)處理循環(huán)中,可以從變量B讀取。

創(chuàng)建計(jì)數(shù)器和計(jì)時(shí)器

如果需要在一段時(shí)間后觸發(fā)事件,請(qǐng)使用Tick?Count函數(shù)測(cè)量經(jīng)過的時(shí)間,如圖5.15所示。不要使用內(nèi)置于While循環(huán)和SCTL中的迭代終端,因?yàn)樗罱K會(huì)在其最大值時(shí)飽和。這發(fā)生在循環(huán)的2,147,483,647次迭代之后。在40MHz時(shí)鐘速率下,這只需要53.687秒。相反,使用無符號(hào)整數(shù)和反饋節(jié)點(diǎn)以及Tick?Count函數(shù)創(chuàng)建自己的計(jì)數(shù)器,以根據(jù)40MHzFPGA時(shí)鐘提供時(shí)間。

圖5.15.使用Tick?Count測(cè)量經(jīng)過的時(shí)間

由于對(duì)計(jì)數(shù)器值使用無符號(hào)整數(shù),因此當(dāng)計(jì)數(shù)器滾動(dòng)更新時(shí),已用時(shí)間計(jì)算將保持正確。這是因?yàn)槿绻褂脽o符號(hào)整數(shù)從一個(gè)計(jì)數(shù)值中減去另一個(gè)計(jì)數(shù)值,即使計(jì)數(shù)器溢出,仍然可以得到正確答案。

另一種常見的計(jì)數(shù)器類型是迭代計(jì)數(shù)器,用于測(cè)量循環(huán)執(zhí)行的次數(shù)。無符號(hào)整數(shù)通常是迭代計(jì)數(shù)器的首選,因?yàn)樗鼈冊(cè)跐L動(dòng)更新之前提供最大的范圍。用于計(jì)數(shù)器的無符號(hào)64位整數(shù)數(shù)據(jù)類型提供了巨大的計(jì)數(shù)范圍,相當(dāng)于大約180億。即使FPGA時(shí)鐘以40MHz運(yùn)行,該計(jì)數(shù)器14,000年也不會(huì)溢出。

圖5.16.無符號(hào)整數(shù)通常是迭代計(jì)數(shù)器的首選

?

需要說明的是,上述的例程和文檔,都是可以下載的,雙擊即可打開,其中壓縮文件是可以采用粘貼復(fù)制的方式,拷貝到硬盤上。這不是圖片,各位小伙伴看到后嘗試一下,這個(gè)問題就不用加微信咨詢了。有關(guān)LabVIEW編程、LabVIEW開發(fā)等相關(guān)項(xiàng)目,可聯(lián)系們。附件中的資料這里無法上傳,可去公司網(wǎng)站搜索下載。


LabVIEWCompactRIO 開發(fā)指南28 可重入和非重入子VI之間的權(quán)衡的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
夏河县| 黄龙县| 肥西县| 苏尼特右旗| 潮州市| 出国| 阿拉善盟| 苍南县| 潜江市| 名山县| 黄冈市| 连平县| 久治县| 汪清县| 额尔古纳市| 镇巴县| 萝北县| 沧州市| 名山县| 同心县| 平原县| 如东县| 乡宁县| 黎平县| 禹城市| 南平市| 浮梁县| 嘉义市| 青阳县| 长春市| 攀枝花市| 垦利县| 岱山县| 沁源县| 宜宾县| 林西县| 荣成市| 马边| 德兴市| 乐陵市| 股票|