新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 如何在芯片的PL上構建軟核處理器?

        如何在芯片的PL上構建軟核處理器?

        作者: 時間:2017-10-13 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/201710/365723.htm

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

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

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

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

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

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

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

        在PL上實現PicoBlaze 的開發流程是:

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

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

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

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

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

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

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

        8. 編譯設計并且導出到SDK

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

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



        關鍵詞: MicroZed 賽靈思

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 磐石市| 阳泉市| 社会| 古蔺县| 庆云县| 惠安县| 隆林| 五常市| 芦溪县| 浦江县| 屏南县| 弋阳县| 临朐县| 洪洞县| 仙居县| 通榆县| 大丰市| 赤峰市| 林周县| 涟水县| 绥棱县| 托克逊县| 陇川县| 乐平市| 湄潭县| 门头沟区| 武定县| 赣榆县| 陆河县| 大宁县| 通山县| 东丽区| 勃利县| 海宁市| 德兴市| 宿州市| 海安县| 镶黄旗| 伊宁县| 什邡市| 安丘市|