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

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > TMS320C61416控制FPGA數(shù)據(jù)加載設(shè)計(jì)(一)

          TMS320C61416控制FPGA數(shù)據(jù)加載設(shè)計(jì)(一)

          作者: 時(shí)間:2013-09-25 來(lái)源:網(wǎng)絡(luò) 收藏
          PADDING-TOP: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BACKGROUND-COLOR: rgb(255,255,255); orphans: 2; widows: 2; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px">  2 硬件實(shí)現(xiàn)

            系統(tǒng)采用2片Xilinx Virtex-4系列的600萬(wàn)門(mén)的 XC4VLX60。主MCU是TI公司高性能定點(diǎn)處理器TMS320C6416,對(duì)外有2個(gè)EMIF總線接口,分別是64位寬EMIFA和16位寬EMIFB。EMIFB上掛有8位8MB的Flash和16位CPLD:Flash做2片的BIN文件保存,之前由仿真器燒寫(xiě);CPLD用于2片地址譯碼和DSP與FPGA配置部分的邏輯接口。整個(gè)數(shù)據(jù)流程是在DSP上電啟動(dòng)后,Bootloader自行引導(dǎo)用戶程序運(yùn)行。該程序負(fù)責(zé)由EMIFB總線搬移Flash空間中BIN文件,通過(guò)CPLD分別對(duì)2片F(xiàn)PGA進(jìn)行配置加載。硬件系統(tǒng)拓?fù)鋱D如圖2所示。

          TMS320C61416控制FPGA數(shù)據(jù)加載硬件框圖

            3 軟件設(shè)計(jì)

            軟件包括3部分:引導(dǎo)Bootloader代碼,加載FPGA用戶程序以及接口部分的CPLD Verilog代碼。

            3.1 DSP Bootloader

            本系統(tǒng)中目標(biāo)板處于FPGA調(diào)試后期,需要固化其加載程序。整板上電后,要求脫離仿真器自行加載FPGA,因此這里采用DSP的EMIF BooT方式。它是由DSP上電復(fù)位后,以默認(rèn)ROM時(shí)序通過(guò)EDMA自行搬移BCE1的ROM空間前1 KB內(nèi)容到片內(nèi),在其0x0地址開(kāi)始運(yùn)行。

            一般由C編寫(xiě)的程序代碼長(zhǎng)度都遠(yuǎn)大于1 KB,如果只是純粹由DSP搬移Flash前1 KB空間,這樣便會(huì)丟失數(shù)據(jù),程序無(wú)法正常運(yùn)行。這里采用由匯編語(yǔ)言寫(xiě)的一個(gè)兩次搬移的Bootloader程序,來(lái)引導(dǎo)較大的用戶程序。使用匯編語(yǔ)言是因?yàn)槠浯a效率高,代碼長(zhǎng)度短(本系統(tǒng)中只有256字節(jié))。兩次搬移是因?yàn)榈谝淮蜠SP自行搬移后的Bootloader會(huì)占用片內(nèi)的0x0地址前1 KB空間,與下一步的用戶程序0x0地址拷貝沖突(中斷向量表必須放在0x0地址,否則會(huì)丟失中斷跳轉(zhuǎn)的絕對(duì)地址),且運(yùn)行中的Bootloader不能覆蓋自身。所以把拷貝用戶程序的那部分代碼放在片內(nèi)較底端運(yùn)行,騰出了用戶空間的0x0地址。最后整體拷貝結(jié)束后,Bootloader再跳轉(zhuǎn)到用戶程序入口地址c_int00運(yùn)行。


          上一頁(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); })();