如何在芯片的PL上構建軟核處理器?
到目前為止,我們已經(jīng)在之前的文章中聊過(guò)Zynq SOC內部的 PS和PL,以及在Zynq SoC PS部分的ARM Cortex-A9處理器上運行的操作系統。但是有一個(gè)領(lǐng)域我們還沒(méi)有去探索過(guò),那就是在芯片的PL上構建軟核處理器。PicoBlaze在賽靈思軟核中是一個(gè)比較常見(jiàn)的軟核。它是一個(gè)8位處理器,由于它的高精確性(每條指令需要兩個(gè)周期),很多基于賽靈思可編程器件的系統設計使用PicoBlaze 軟核處理器來(lái)代替狀態(tài)機和其他控制結構。你甚至可以使用PicoBlaze 處理器通過(guò)I2C和RS232總線(xiàn)實(shí)現串行通信,使設計更加精簡(jiǎn)并且節省設計時(shí)間。
本文引用地址:http://dyxdggzs.com/article/201710/365723.htm我們應該做的第一件事就是從PicoBlaze專(zhuān)區下載最新版本的PicoBlaze處理器。這個(gè)最新的PicoBlaze處理器支持UltraScale 和7系列所有可編程器件(包括Zynq SOC)。
我們的目的是讓其作為一個(gè)標準的IP模塊,我們可以打包并且添加到我們的VIVADO模塊圖中。然而,在這之前,我們第一步是得了解下隨PicoBlaze處理器會(huì )帶來(lái)什么東東,以及它的開(kāi)發(fā)流程。在我們的下載目錄中我們將看到以下文件:
1、KCPSM6.Vhd:這是PicoBlaze 處理器的源代碼文件。
2、KCPSM6.exe:這是一個(gè)匯編程序用于生成機器代碼和文件所需的內存。
3、ROM_Form.vhd: 這是被匯編可執行文件用來(lái)生成VHDL文件,該文件包括了我們建立的目標程序。
4、KCPSM6_design_template.vhd: 這是一個(gè)PicoBlaze 處理器的例化模板文件。
5、All_kcpsm6_syntax.psm:該文件定義了所有的匯編指令和語(yǔ)法。
在PL上實(shí)現PicoBlaze 的開(kāi)發(fā)流程是:
1、編寫(xiě)程序可執行PicoBlaze程序。在這個(gè)例子中,我們將實(shí)現一個(gè)簡(jiǎn)單的流水燈。我們可以使用all_KCPSM6_syntax.psm 文件作為一個(gè)快速參考,里面有我們要用到的PicoBlaze 匯編指令,同時(shí)在下載的文件中也有大量的用戶(hù)指南(PDF)可以讓我們快速上手。
2、寫(xiě)完這個(gè)簡(jiǎn)單的程序,我們就用KCPSM6.exe匯編器進(jìn)行編譯,它將建立一個(gè)用我們對應的程序名命名的RAM文件。這個(gè)文件內包含一些將被PicoBlaze 控制器執行的程序,你必須將這個(gè)文件鏈接到PicoBlaze 處理器來(lái)建立功能系統,
3、修改RAM文件大小,如下圖所示,根據芯片系列將6S改成7S,并且選擇內存大小為2K:
4、在同一個(gè)文件夾內,創(chuàng )建一個(gè)頂層文件將處理器和RAM 結合PicoBlaze所需的其他代碼連接起來(lái) 。比如說(shuō),當寫(xiě)成如下時(shí)就是聲明它作為輸出端口:
5、使用VIVADO的工具—>“建立和打包IP”選項來(lái)新建一個(gè)IP,將以上三個(gè)文件打包成一個(gè)IP。
6、在打包這個(gè)程序之后,我們檢查確認下是否被包含進(jìn)來(lái)成為一個(gè)倉庫,(如果沒(méi)有,我將手工添加)并且將這個(gè)IP模塊添加到模塊圖。
7. 將PicoBlaze 模塊的時(shí)鐘鏈接到FPGA時(shí)鐘(設置為40MHZ),并且定義三個(gè)輸出接口連接到MicroZed 的LED對應的IO上。
8. 編譯設計并且導出到SDK
當我們編譯完這個(gè)設計,如果我們有一個(gè)JTAG連接器,我們將位流文件燒錄到FPGA并且看看LED是否有閃爍,或者我們可以導出到SDK并且建立一個(gè)Boot文件,在上電之后通過(guò)Boot文件來(lái)運行這個(gè)程序。
我將在下次深入探討我們剛剛建立的設計。同時(shí),我將這個(gè)Demo用到的文件也附加到這個(gè)博客中。我提供了PSM文件和頂層文件。如果你下載了PicoBlaze軟核,你可以使用PicoBlaze 匯編器來(lái)生成一個(gè)Test.vhd內存文件。
評論