新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 如何在芯片的PL上構(gòu)建軟核處理器?

如何在芯片的PL上構(gòu)建軟核處理器?

作者: 時間:2017-10-13 來源:網(wǎng)絡(luò) 收藏

到目前為止,我們已經(jīng)在之前的文章中聊過Zynq SOC內(nèi)部的 PS和PL,以及在Zynq SoC PS部分的ARM Cortex-A9處理器上運行的操作系統(tǒng)。但是有一個領(lǐng)域我們還沒有去探索過,那就是在芯片的PL上構(gòu)建軟核處理器。PicoBlaze在軟核中是一個比較常見的軟核。它是一個8位處理器,由于它的高精確性(每條指令需要兩個周期),很多基于可編程器件的系統(tǒng)設(shè)計使用PicoBlaze 軟核處理器來代替狀態(tài)機和其他控制結(jié)構(gòu)。你甚至可以使用PicoBlaze 處理器通過I2C和RS232總線實現(xiàn)串行通信,使設(shè)計更加精簡并且節(jié)省設(shè)計時間。

本文引用地址:http://butianyuan.cn/article/201710/365723.htm

我們應(yīng)該做的第一件事就是從PicoBlaze專區(qū)下載最新版本的PicoBlaze處理器。這個最新的PicoBlaze處理器支持UltraScale 和7系列所有可編程器件(包括Zynq SOC)。

我們的目的是讓其作為一個標(biāo)準(zhǔn)的IP模塊,我們可以打包并且添加到我們的VIVADO模塊圖中。然而,在這之前,我們第一步是得了解下隨PicoBlaze處理器會帶來什么東東,以及它的開發(fā)流程。在我們的下載目錄中我們將看到以下文件:

1、KCPSM6.Vhd:這是PicoBlaze 處理器的源代碼文件。

2、KCPSM6.exe:這是一個匯編程序用于生成機器代碼和文件所需的內(nèi)存。

3、ROM_Form.vhd: 這是被匯編可執(zhí)行文件用來生成VHDL文件,該文件包括了我們建立的目標(biāo)程序。

4、KCPSM6_design_template.vhd: 這是一個PicoBlaze 處理器的例化模板文件。

5、All_kcpsm6_syntax.psm:該文件定義了所有的匯編指令和語法。

在PL上實現(xiàn)PicoBlaze 的開發(fā)流程是:

1、編寫程序可執(zhí)行PicoBlaze程序。在這個例子中,我們將實現(xiàn)一個簡單的流水燈。我們可以使用all_KCPSM6_syntax.psm 文件作為一個快速參考,里面有我們要用到的PicoBlaze 匯編指令,同時在下載的文件中也有大量的用戶指南(PDF)可以讓我們快速上手。

2、寫完這個簡單的程序,我們就用KCPSM6.exe匯編器進(jìn)行編譯,它將建立一個用我們對應(yīng)的程序名命名的RAM文件。這個文件內(nèi)包含一些將被PicoBlaze 控制器執(zhí)行的程序,你必須將這個文件鏈接到PicoBlaze 處理器來建立功能系統(tǒng),

3、修改RAM文件大小,如下圖所示,根據(jù)芯片系列將6S改成7S,并且選擇內(nèi)存大小為2K:

4、在同一個文件夾內(nèi),創(chuàng)建一個頂層文件將處理器和RAM 結(jié)合PicoBlaze所需的其他代碼連接起來 。比如說,當(dāng)寫成如下時就是聲明它作為輸出端口:

5、使用VIVADO的工具—>“建立和打包IP”選項來新建一個IP,將以上三個文件打包成一個IP。

6、在打包這個程序之后,我們檢查確認(rèn)下是否被包含進(jìn)來成為一個倉庫,(如果沒有,我將手工添加)并且將這個IP模塊添加到模塊圖。

7. 將PicoBlaze 模塊的時鐘鏈接到FPGA時鐘(設(shè)置為40MHZ),并且定義三個輸出接口連接到 的LED對應(yīng)的IO上。

8. 編譯設(shè)計并且導(dǎo)出到SDK

當(dāng)我們編譯完這個設(shè)計,如果我們有一個JTAG連接器,我們將位流文件燒錄到FPGA并且看看LED是否有閃爍,或者我們可以導(dǎo)出到SDK并且建立一個Boot文件,在上電之后通過Boot文件來運行這個程序。

我將在下次深入探討我們剛剛建立的設(shè)計。同時,我將這個Demo用到的文件也附加到這個博客中。我提供了PSM文件和頂層文件。如果你下載了PicoBlaze軟核,你可以使用PicoBlaze 匯編器來生成一個Test.vhd內(nèi)存文件。



關(guān)鍵詞: MicroZed 賽靈思

評論


相關(guān)推薦

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

關(guān)閉