



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PYNQ中MicroBlaze程序文件的加載過程
警告:這篇文章可以做為專業(yè)人士飯后甜點,但是非專業(yè)人士
請火速撤離,以免造成永久性大腦皮層損傷。
在PYNQ的baseoverlay中添加了MicroBlaze,通過
MicroBlaze來配置PMOD和ardonio接口并驅動外部設備。但是平
常我們對MicroBlaze編程都是將MicroBlaze的代碼文件被硬件的
bitstream文件融合成一個文件下載到(FPGA)里面去執(zhí)行。但
是,在PYNQ里面顯然不是這樣的。PYNQ的邏輯部分也就是Overlay
都是在系統(tǒng)起來后動態(tài)加載的,再啟動MicroBlaze里面的程序。那
么這一切都是如何實現(xiàn)的呢?
首先在PYNQ的overlay里面的MicroBlaze使用的是雙端口
Block(RAM),PS端可以對這個RAM進行讀寫,那么問題就簡單
了,等。verlay配置完成,PS端再將二進制程序文件吸入的到
MicroBlaze指令存儲器里面,再復位MicroBlaze就可以了。
這一過程設計復雜的文件調用和地址映射。首先來看一下這一
功能在(Python)里面實現(xiàn)的。
首先我們看一個使用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)
先調用baseoverlay,這個不用說。接下來使用的一個
Pmod_ADC函數(shù)指定Pmod接口是A還是B。這個函數(shù)在pmod_adc.py
文件里,讓我們進如pmod_adc.py看一下這個函數(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
這里面使用一個Pmod函數(shù)指定了所使用的程序文件,也就是
pmod_adc.bin。這程序是自己寫的MicroBlaze程序編譯生成的,可
以在SDK里面完成程序并編譯得到.bin文件。
在pmod.py文件里面我們可以看到Pmod函數(shù)通過super()函
數(shù)調用父PynqMicroblaze里面初始化函數(shù)。關于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ù)來載入
我們的二進制程序文件。并在載入完成后使用了run()函數(shù),在
run()函數(shù)里面復位了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()
讓我們再進入pl.py,會發(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育新思潮情感智能在教學中的突破性應用
- 智慧醫(yī)療與輔助型教育機器人探討
- 商業(yè)秘密保護的法理與實踐
- 智慧城市的環(huán)保設施與可持續(xù)發(fā)展探討
- 特種車輛監(jiān)管方案
- 店物流倉儲方案模板
- 電纜通道改建方案
- 車床定制改裝方案
- 浴池項目合作方案
- 教育政策分析的實踐智慧與啟示
- 港口裝卸作業(yè)培訓
- 2025年湖北省武漢市中考數(shù)學真題(無答案)
- 鉗工考試試題及答案
- 2025至2030中國牙科氧化鋯塊行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 拖欠維修費車輛以車抵債協(xié)議范本
- 呼倫貝爾農墾集團有限公司招聘筆試題庫2025
- 《中華人民共和國職業(yè)分類大典》(2022年版)各行業(yè)職業(yè)表格統(tǒng)計版(含數(shù)字職業(yè))
- 醫(yī)院檢驗科實驗室生物安全程序文件SOP
- 一級二級三級醫(yī)養(yǎng)結合機構服務質量評價標準(試行)
- DB51∕T 1462-2012 柳杉二元立木材積表、單木出材率表
- 生物質氣化耦合高效發(fā)電與多聯(lián)產技術20161127 (1) (1)
評論
0/150
提交評論