下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PYNQ中MicroBlaze程序文件的加載過程
警告:這篇文章可以做為專業(yè)人士飯后甜點(diǎn),但是非專業(yè)人士
請(qǐng)火速撤離,以免造成永久性大腦皮層損傷。
在PYNQ的baseoverlay中添加了MicroBlaze,通過
MicroBlaze來配置PMOD和ardonio接口并驅(qū)動(dòng)外部設(shè)備。但是平
常我們對(duì)MicroBlaze編程都是將MicroBlaze的代碼文件被硬件的
bitstream文件融合成一個(gè)文件下載到(FPGA)里面去執(zhí)行。但
是,在PYNQ里面顯然不是這樣的。PYNQ的邏輯部分也就是Overlay
都是在系統(tǒng)起來后動(dòng)態(tài)加載的,再啟動(dòng)MicroBlaze里面的程序。那
么這一切都是如何實(shí)現(xiàn)的呢?
首先在PYNQ的overlay里面的MicroBlaze使用的是雙端口
Block(RAM),PS端可以對(duì)這個(gè)RAM進(jìn)行讀寫,那么問題就簡單
了,等。verlay配置完成,PS端再將二進(jìn)制程序文件吸入的到
MicroBlaze指令存儲(chǔ)器里面,再復(fù)位MicroBlaze就可以了。
這一過程設(shè)計(jì)復(fù)雜的文件調(diào)用和地址映射。首先來看一下這一
功能在(Python)里面實(shí)現(xiàn)的。
首先我們看一個(gè)使用MicroBlaze的例子,以Pmod(ADC)為
例。測試代碼如下;
f(rom)pynq.overlays.baseimportBaseOverlay
frompynq.1ibimportPmod_ADC
base=BaseOverlay("base.bit")
if_id=input("Typeinthein(te)rfacelDused
(PMODAorPMODB):”)
ifif_id.upper()=='PMODA':
adc=Pmod_ADC(base.PMODA)
else:
adc=Pmod_ADC(base.PMODB)
先調(diào)用baseoverlay,這個(gè)不用說。接下來使用的一個(gè)
Pmod_ADC函數(shù)指定Pmod接口是A還是B。這個(gè)函數(shù)在pmod_adc.py
文件里,讓我們進(jìn)如pmod_adc.py看一下這個(gè)函數(shù):
PMOD_ADC_PROGRAM="pmod_adc.bin”
classPmodADC(object):
def_init_(self,mb_info):
self.microblaze=Pmod(mb_info,PMOD_ADC_PROGRAM)
self.Iog_running=0
這里面使用一個(gè)Pmod函數(shù)指定了所使用的程序文件,也就是
pmod_adc.bin。這程序是自己寫的MicroBlaze程序編譯生成的,可
以在SDK里面完成程序并編譯得到.bin文件。
在pmod.py文件里面我們可以看到Pmod函數(shù)通過super()函
數(shù)調(diào)用父PynqMicroblaze里面初始化函數(shù)。關(guān)于super()函數(shù)的
使用自行谷歌。
frompynq.libimportPynqMicroblaze
classPmod(PynqMicroblaze):
def_init_(self,mb_info,mbprogram):
ifnotos.path,isabs(mb_program):
mb_program=os.path,join(BIN_L0CA(TI)ON,mb_program)
super().—init_(mb_info,mb_program)
在PynqMicroblaze里面,使用了PL.load_ip_data函數(shù)來載入
我們的二進(jìn)制程序文件。并在載入完成后使用了run()函數(shù),在
run()函數(shù)里面復(fù)位了Micro了aze。
classPynqMicroblaze:
defrun(self):
self,states'RUNNING'
self.reset_(pi)n.write(0)
defprogram(self):
self,reset()
PL.load_ip_data(self.ip_name,self,mbprogram,
zero=True)
ifself.interrupt:
self,interrupt,clear()
self,run()
讓我們?cè)龠M(jìn)入pl.py,會(huì)發(fā)現(xiàn)load_ip_data函數(shù)使用MMIO接
口函數(shù)寫入了程序文件。
defload_ip_data(cis,ip_name,data,zero=False):
cis.client_request()
withopen(data,‘rb')asbin_file:
size=os.fstat(bin_file.fileno()).st_size
target_size=cls._ip_dict[ip_name][<addr_range,]
ifsize》target_size:
r(ai)seRunTImeError("BinaryfiletoobigforIP”)
mmio=MMI0(cis._ip_dict[ip_name]['phys_addr'],
target_size)
buf=bin_file.read(size)
mmio.write(0,buf)
ifzeroandsize^target_size:
mmio.write(size,b'\x00'*(tar
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44971-2024土壤硒含量等級(jí)
- 工作總結(jié)之大學(xué)生銷售實(shí)習(xí)總結(jié)
- 銀行業(yè)務(wù)流程管理制度
- 銀行合規(guī)監(jiān)督制度
- 科技有限公司轉(zhuǎn)讓合同(32篇)
- 《連鎖企業(yè)員工培訓(xùn)》課件
- 武漢凱德1818廣場購物中心案例研究分析報(bào)告(上)
- 新產(chǎn)品開發(fā)(toshiba案例分析組)
- 【培訓(xùn)課件】青浦區(qū)科技管理相關(guān)政策
- 2025屆廣東省佛山市第四中學(xué)高考考前提分?jǐn)?shù)學(xué)仿真卷含解析
- FOCUS-PDCA改善案例-提高術(shù)前手術(shù)部位皮膚準(zhǔn)備合格率醫(yī)院品質(zhì)管理成果匯報(bào)
- 期末(試題)-2024-2025學(xué)年人教PEP版英語六年級(jí)上冊(cè)
- 專題07:回憶性散文閱讀(考點(diǎn)串講)
- 2024年云南省昆明滇中新區(qū)公開招聘20人歷年(高頻重點(diǎn)復(fù)習(xí)提升訓(xùn)練)共500題附帶答案詳解
- 創(chuàng)新創(chuàng)業(yè)創(chuàng)造:職場競爭力密鑰智慧樹知到期末考試答案章節(jié)答案2024年上海對(duì)外經(jīng)貿(mào)大學(xué)
- 醫(yī)院檢驗(yàn)科實(shí)驗(yàn)室生物安全程序文件SOP
- 學(xué)問海鮮智慧樹知到期末考試答案2024年
- 教你成為歌唱達(dá)人智慧樹知到期末考試答案2024年
- 供應(yīng)商調(diào)查評(píng)價(jià)表(簡易版)
- 寫字樓保潔服務(wù)投標(biāo)方案
- MRPERP基本原理
評(píng)論
0/150
提交評(píng)論