<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 浮點(diǎn)模型的定點(diǎn)化到產(chǎn)品級(jí)代碼的生成

          浮點(diǎn)模型的定點(diǎn)化到產(chǎn)品級(jí)代碼的生成

          作者: 時(shí)間:2011-11-28 來源:網(wǎng)絡(luò) 收藏

          轉(zhuǎn)換為是嵌入式軟件開發(fā)中的一個(gè)重要步驟,這項(xiàng)工作非常繁瑣,需要大量人力并且容易產(chǎn)生錯(cuò)誤。用數(shù)學(xué)設(shè)計(jì)的算法表示理想的算法行為,經(jīng)常必須轉(zhuǎn)換為數(shù)學(xué),才能用于更加經(jīng)濟(jì)的、只支持整數(shù)的大規(guī)模生產(chǎn)的硬件。轉(zhuǎn)換后,位精確的仿真使您在將該設(shè)計(jì)嵌入到硬件之前就能夠研究定點(diǎn)數(shù)據(jù)類型的行為。

          本文引用地址:http://www.ex-cimer.com/article/150023.htm


          本文使用具有容錯(cuò)能力的燃料系統(tǒng)作為示例,描述了將定點(diǎn)化并級(jí)的工具和工作流程。涵蓋的主題包括:


          * 準(zhǔn)備和數(shù)據(jù)

          * 分析、改進(jìn)以及優(yōu)化定點(diǎn)定標(biāo)

          * 優(yōu)化


          此處描述的方法采用 Simulink Fixed Point 中的兩種工具:Fixed-Point Advisor 和 Fixed-Point Tool。


          準(zhǔn)備模型和數(shù)據(jù)進(jìn)行轉(zhuǎn)換


          容錯(cuò)燃料系統(tǒng)模型包含三個(gè)主要組件:ECU 控制器、發(fā)動(dòng)機(jī)氣動(dòng)力學(xué)設(shè)備以及幾個(gè)傳感器。在本文中,我們著重講述 ECU 控制器。


          Fixed-Point Advisor 是一個(gè)交互式工具,旨在加速模型準(zhǔn)備過程

          圖1


          圖1: 通過 Fixed-Point Advisor 準(zhǔn)備模型。


          使用 Fixed-Point Advisor,我們可完成下列步驟(在下面會(huì)詳細(xì)討論):


          * 替換不支持的模塊。

          * 設(shè)置信號(hào)記錄并創(chuàng)建初始參考數(shù)據(jù)。

          * 指定目標(biāo)硬件特性。

          * 準(zhǔn)備數(shù)據(jù)類型和定標(biāo)。

          * 執(zhí)行初始數(shù)據(jù)類型和定標(biāo)。

          * 檢查模型對(duì)于級(jí)部署的適宜性。


          替換不支持的模塊


          Fixed Point Advisor 會(huì)檢查模型里是否有不支持定點(diǎn)數(shù)據(jù)類型的模塊。連續(xù)的模塊將被離散的模塊替換。Simulink 模塊支持的數(shù)據(jù)類型列表表明大多數(shù)模塊支持定點(diǎn)數(shù)據(jù)類型。與成百個(gè)嵌入式 MATLAB 函數(shù)(包括嵌入式算法設(shè)計(jì)中通常使用的函數(shù))一樣,Stateflow 完全支持定點(diǎn)數(shù)據(jù)類型。


          設(shè)置信號(hào)記錄并創(chuàng)建初始參考數(shù)據(jù)


          在仿真過程中,會(huì)記錄諸如輸入和輸出信號(hào)等感興趣的信號(hào),以用于與浮點(diǎn)模型的等值比較以及代碼。我們可以記錄所有信號(hào),或者從模型子系統(tǒng)層級(jí)中選擇信號(hào),包括未命名的信號(hào)。


          指定目標(biāo)硬件特性


          Fixed Point Advisor 會(huì)提醒我們?yōu)樽址汀⒄?、長(zhǎng)字節(jié)和其他對(duì)特定處理器而言獨(dú)特的屬性指定正確的字長(zhǎng),以避免仿真或代碼生成時(shí)產(chǎn)生錯(cuò)誤結(jié)果。


          準(zhǔn)備數(shù)據(jù)類型和定標(biāo)


          在初始設(shè)計(jì)中,工程師通常使用繼承數(shù)據(jù)類型傳遞,以加速原型設(shè)計(jì)并快速迭代幾個(gè)設(shè)計(jì)。當(dāng)項(xiàng)目接近化時(shí),他們會(huì)調(diào)整并指定每個(gè)數(shù)據(jù)類型并定標(biāo),以優(yōu)化定點(diǎn)結(jié)果。


          Fixed-Point Advisor 通過自動(dòng)執(zhí)行下列步驟,可加速此工作流程:


          * 去除輸出數(shù)據(jù)類型的繼承,以幫助避免數(shù)據(jù)類型傳遞沖突。

          * 放寬可能導(dǎo)致數(shù)據(jù)類型傳遞錯(cuò)誤的輸入數(shù)據(jù)類型的設(shè)置或限制。

          * 確定需要我們指定用于定點(diǎn)轉(zhuǎn)換的設(shè)計(jì)最小值和最大值的模塊。

          執(zhí)行初始數(shù)據(jù)類型和定標(biāo)


          依據(jù)我們的初始輸入,F(xiàn)ixed-Point Advisor 可為輸入模塊、常數(shù)、參數(shù)以及具有中間數(shù)據(jù)類型的模塊(例如求和模塊)建議數(shù)據(jù)類型和初始定標(biāo)。該工具使用設(shè)計(jì)或仿真浮點(diǎn)數(shù)據(jù)的最小值和最大值,建議初始定點(diǎn)數(shù)據(jù)定標(biāo)。該工具可報(bào)告定標(biāo)沖突并提出解決沖突的方法。然后,檢查數(shù)值錯(cuò)誤并分析記錄的信號(hào)。


          于是生成了初步定標(biāo)的定點(diǎn)模型,以及比較浮點(diǎn)到定點(diǎn)模型結(jié)果的方案。


          檢查模型對(duì)于產(chǎn)品級(jí)代碼部署的適宜性


          我們使用 Fixed-Point Advisor 來運(yùn)行最終檢查,以確定該模型對(duì)于產(chǎn)品級(jí)代碼部署的適宜性。包括:


          * 指出可生成昂貴的飽和和舍入代碼的模塊。

          * 指出有問題的定點(diǎn)操作,例如確保定點(diǎn)查找表有足夠的空間,以最大化代碼效率。


          分析、改進(jìn)以及優(yōu)化定點(diǎn)定標(biāo)


          使用 Fixed-Point Tool 可在您的模型中互動(dòng)地分析、改進(jìn)以及優(yōu)化定點(diǎn)定標(biāo)。該工具首先確定溢出和/或飽和的定點(diǎn)值。然后,通過臨時(shí)將所有信號(hào)轉(zhuǎn)換為浮點(diǎn)精度并執(zhí)行另一個(gè)仿真運(yùn)行,找到定標(biāo)的合適動(dòng)態(tài)范圍。合適的動(dòng)態(tài)范圍用于計(jì)算對(duì)于每個(gè)模塊而言更合適的定點(diǎn)定標(biāo)。然后,我們接受或拒絕每個(gè)信號(hào)的建議定標(biāo)。我們還可配置該工具,以忽略所選的模塊,使您能夠?qū)为?dú)定標(biāo)的模塊使用自動(dòng)定標(biāo)。

          圖2


          圖2:利用 Fixed-Point Tool 對(duì)容錯(cuò)燃料系統(tǒng)模型進(jìn)行自動(dòng)定標(biāo)。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();