當(dāng)前位置:首頁 > 工業(yè)控制 > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀] 眾多FPGA 應(yīng)用均可通過使用簡(jiǎn)單的軟核處理器來簡(jiǎn)化時(shí)序控制結(jié)構(gòu)的生成,從而深受其益。作者:Adam P. Taylore2v公司工程系統(tǒng)負(fù)責(zé)人aptaylor@theiet.orgPicoBlaze 是一款結(jié)構(gòu)緊湊的8 位軟核微控制器,F(xiàn)PGA工程師可在

 眾多FPGA 應(yīng)用均可通過使用簡(jiǎn)單的軟核處理器來簡(jiǎn)化時(shí)序控制結(jié)構(gòu)的生成,從而深受其益。

作者:Adam P. Taylor

e2v公司工程系統(tǒng)負(fù)責(zé)人

aptaylor@theiet.org

PicoBlaze 是一款結(jié)構(gòu)緊湊的8 位軟核微控制器,F(xiàn)PGA工程師可在其所選的賽靈思FPGA 中對(duì)其進(jìn)行實(shí)例化。一旦實(shí)現(xiàn),該處理器完全包含到僅使用邏輯Slice 和Block RAM 的FPGA 架構(gòu)中;無需外部易失性和非易失性存儲(chǔ)器。

由于其實(shí)現(xiàn)方案封裝面積小,F(xiàn)PGA 才可能容納多個(gè)PicoBlaze 實(shí)例化。每個(gè)實(shí)例化用于實(shí)現(xiàn)通常由狀態(tài)機(jī)創(chuàng)建的控制結(jié)構(gòu)。這樣不僅能縮短開發(fā)時(shí)間,而且還可用標(biāo)準(zhǔn)化方法來控制結(jié)構(gòu)生成。由于賽靈思FPGA結(jié)構(gòu)潛在的高性能,PicoBlaze 實(shí)例化往往能夠超越許多分離式8 位微控制器。

下面讓我們看看如何在我們的設(shè)計(jì)中充分利用這款便捷的器件。

PICOBLAZE 架構(gòu)

在使用這個(gè)處理器之前,首先讓我們了解一下它的架構(gòu)。PicoBlaze 是一款基于RISC 架構(gòu)的非常簡(jiǎn)單的8 位微控制器(如圖1 所示)。該控制器有一個(gè)12 位的地址端口,這意味著它可以處理多達(dá)4096 個(gè)存儲(chǔ)器位置。

圖1 – PicoBlaze架構(gòu),處理器(左)和存儲(chǔ)器(右)

每個(gè)地址位置包括一個(gè)18 位指令,用以定義該處理器必須執(zhí)行的操作。該處理器的輸入輸出可能通過兩個(gè)8位端口(一個(gè)輸入端口,一個(gè)輸出端口)。該控制器還提供了一個(gè)8 位識(shí)別端口,可讓多達(dá)256 個(gè)外設(shè)通過該端口進(jìn)行讀寫。此外,該控制器還提

供一個(gè)64、128 或256 字節(jié)大小可選的高速暫存存儲(chǔ)器。跟所有微處理器一樣,PicoBlaze 包含一個(gè)算術(shù)邏輯單元并支持一個(gè)中斷。有了這些功能,意味著該控制器能夠?yàn)镕PGA 設(shè)計(jì)工程師帶來眾多優(yōu)勢(shì)。

PicoBlaze 最重要的一個(gè)方面是它具有高度的確定性,這意味著所有指令都需要兩個(gè)時(shí)鐘周期才能執(zhí)行完畢,中斷服務(wù)最多需要四個(gè)時(shí)鐘周期。( 您可以通過下載賽靈思用戶指南,了解有關(guān)PicoBlaze 架構(gòu)的更多詳情。)

如何使用PICOBLAZE?

FPGA 應(yīng)用通常需要結(jié)合并行和時(shí)序操作,其中數(shù)據(jù)流主要采用并行操作,而控制結(jié)構(gòu)主要以時(shí)序結(jié)構(gòu)實(shí)現(xiàn),如狀態(tài)機(jī)。(參見《賽靈思中國(guó)通信》第46 期,“ 如何在您的FPGA 中實(shí)現(xiàn)狀態(tài)機(jī)”)。然而,復(fù)雜的控制結(jié)構(gòu)如果以狀態(tài)機(jī)實(shí)現(xiàn),可能會(huì)變得

難以處理,不僅會(huì)延長(zhǎng)驗(yàn)證時(shí)間,而且還會(huì)讓開發(fā)周期的后期修改變得困難重重。復(fù)雜的狀態(tài)機(jī)還需要花更多時(shí)間來開發(fā),如果需要開發(fā)數(shù)個(gè),那么花費(fèi)時(shí)間就會(huì)相當(dāng)長(zhǎng)。

此外,您還可以使用PicoBlaze控制通過RS232、I2C 和SPI 接口的串行通信。事實(shí)上,您采用典型8位微處理器實(shí)現(xiàn)的任何方案均可在PicoBlaze 中實(shí)現(xiàn), 而且具有更高的性能。工程師們已經(jīng)用PicoBlaze 在控制系統(tǒng)中實(shí)現(xiàn)PID 控制器。他們結(jié)合使用PicoBlaze 與I2C、SPI 或并行DAC 來創(chuàng)建方形、鋸齒和三角形以及更復(fù)雜的正弦/ 余弦等各種參考波形(使用移位加CORDIC 算法)。在您的FPGA 中實(shí)例化PicoBlaze 微控制器來實(shí)現(xiàn)這些時(shí)序功能,不僅可縮短開發(fā)時(shí)間,而且還允許在開發(fā)周期的

后期階段進(jìn)行簡(jiǎn)單的修改。當(dāng)然,作為軟核,PicoBlaze 還有助于解決過時(shí)問題,而且在您開發(fā)ASM 模塊時(shí)還支持設(shè)計(jì)重用。

首個(gè)PICOBLAZE 實(shí)例化

遵循以下幾個(gè)簡(jiǎn)單步驟,您就可以在您的設(shè)計(jì)中快速實(shí)現(xiàn)PicoBlaze。首先,確保您將用于目標(biāo)器件中的微控制器是最新版本。您可從賽靈思PicoBlaze 下載區(qū)下載這些微控制器產(chǎn)品,這里既提供支持最新7 系列器件的版本,又提供能與舊版Spartan®-3

和Virtex®-4 器件協(xié)同使用的微控制器版本。

當(dāng)下載了正確的處理器版本后,將這些文件解壓到您的工作目錄下并確保您能讀取“read-me”文件,同時(shí)根據(jù)需要密切關(guān)注路徑的設(shè)置以及賽靈思的環(huán)境變量。在您的工作目錄中, 您將注意到以下文件或應(yīng)用,以及有用的read-me 文件、許可證文件和用戶指南。

• KCPSM6.Vhd: 這是一個(gè)真正的PicoBlaze 源代碼。

• KCPSM6.exe :這是一個(gè)匯編程序,您可運(yùn)用其生成所需的機(jī)器碼和存儲(chǔ)器文件。

• ROM_Form.vhd :這是一個(gè)可執(zhí)行匯編程序,使用該文件可以生成VHDL 文件,您創(chuàng)建的程序?qū)⒋鎯?chǔ)在這里。

• KCPSM6_design_template vhd :這是一個(gè)PicoBlaze 處理器模板實(shí)例。

• All_kcpsm6_syntax.psm :這個(gè)文件是關(guān)于所有匯編程序命令和語法的定義。

對(duì)于我們的實(shí)例設(shè)計(jì),如果你不想將PicoBlaze 及其程序存儲(chǔ)器添加到現(xiàn)有項(xiàng)目中,那么最后一步您應(yīng)在我們能實(shí)例化PicoBlaze 及其程序存儲(chǔ)器的ISE® 設(shè)計(jì)套件中創(chuàng)建一個(gè)新的項(xiàng)目。

一旦完成上述步驟,我們就準(zhǔn)備開始在我們的應(yīng)用中創(chuàng)建PicoBlaze處理器。在此最簡(jiǎn)單的層面上,您只需在您的設(shè)計(jì)中聲明兩個(gè)組件:一個(gè)是處理器本身,另一個(gè)是程序存儲(chǔ)器,如圖1 所示 ( 處理器位于左側(cè)方框中,存儲(chǔ)器位于右側(cè)方框中,用以提供上下文環(huán)境)。當(dāng)然,如果您需要實(shí)現(xiàn)一個(gè)以上的實(shí)例化,那么您應(yīng)該提供若干個(gè)存儲(chǔ)器組件,用于存儲(chǔ)不同的程序。然而,首先需要我們做的是了解典型項(xiàng)目的開發(fā)流程。

開發(fā)流程

創(chuàng)建首個(gè)PicoBlaze 實(shí)例其實(shí)很簡(jiǎn)單。第一步,使用Notepad++ 之類的編輯器創(chuàng)建一個(gè)空白的文本文件。該文件應(yīng)該具備一個(gè) .PSM 的文件擴(kuò)展名,比如像“test.psm”這樣的。您可以用PicoBlaze 匯編程序?qū)ξ⒖刂破鬟M(jìn)行編程。

賽靈思在All_kcpsm6_ syntax.psm 文件中對(duì)該語法進(jìn)行了詳細(xì)介紹,您可以自行下載。無論怎樣,這個(gè)語法很容易理解和掌握。圖2 是匯編程序代碼片段的示例,這是一個(gè)簡(jiǎn)單程序,用以閃存運(yùn)行頻率為2Hz、時(shí)鐘頻率為 40MHz 的LED。

圖2 – 用于項(xiàng)目閃存LED的匯編程序代碼片段

一旦您對(duì)自己的匯編程序感到滿意后,就可以進(jìn)行下一步:通過您下載的匯編程序可執(zhí)行文件運(yùn)行該程序。這樣將會(huì)生成一個(gè)存儲(chǔ)器文件 (您的FPGA 中會(huì)用到的VHDL)、一個(gè)日志文件和一個(gè)十六進(jìn)制文件,我們將在后文介紹它們的用途。圖3 顯示了針對(duì)上述代碼片段所運(yùn)行的匯編程序流程。一旦運(yùn)行匯編程序,您現(xiàn)在就能夠在您的FPGA 內(nèi)實(shí)例化PicoBlaze。

圖3 –使用KCPSM6匯編程序生成存儲(chǔ)器文件

您現(xiàn)在擁有兩個(gè)所需的VHDL文件:KCPSM6.vhd 和由匯編程序創(chuàng)建的包含您的應(yīng)用的VHDL 文件( 在本例中為test.vhd)。第二步:

在您的VHDL 設(shè)計(jì)中聲明兩個(gè)組件(KCPSM6 和Memory) 并對(duì)他們進(jìn)行實(shí)例化(如圖4 所示)。在圖5 所示的代碼片段中可以看到這個(gè)簡(jiǎn)單的VHDL 示例。這個(gè)VHDL 示例實(shí)現(xiàn)的PicoBlaz 可以將LED 閃存到LX9Spartan® 開發(fā)板上。

圖4 – PicoBlaze上下文方框圖

圖5 –將LED閃存到LX9 Spartan開發(fā)板上的PicoBlaze的代碼片段

仿真與驗(yàn)證

一旦您在應(yīng)用中完成了設(shè)計(jì)文件的實(shí)例化,您肯定希望能在綜合和實(shí)現(xiàn)之前在仿真環(huán)境中驗(yàn)證一下該系統(tǒng)或模塊的性能。由于PicoBlaze 使用的是邏輯Slice 和 Block RAM,所以您在Mentor Graphics 的Mod-elSim 或賽靈思ISE 中的ISim ( 如果您是在

Vivado® 設(shè)計(jì)套件中的Xsim 中實(shí)現(xiàn)您的PicoBlaze,也可使用Xsim) 等程序中進(jìn)行仿真就極其簡(jiǎn)單。

由于Block RAM 包含有針對(duì)您程序的指令,所以仿真工作自然就簡(jiǎn)單?;旧?,您只需要提供一個(gè)時(shí)鐘以及實(shí)例化要求的其他輸入輸出。圖6 顯示了在ISim 中進(jìn)行的PicoBlaze仿真結(jié)果,以及指令加載之間的兩個(gè)時(shí)鐘周期。

圖6 – ISim仿真結(jié)果

圖6 – ISim仿真結(jié)果

升級(jí)您的程序

在FPGA( 以及比特文件) 中內(nèi)置PicoBlaze 的最大優(yōu)勢(shì)之一就是在FPGA 配置完成后PicoBlaze 開始直接在其RAM 中運(yùn)行程序。然而,在某些情況下,您可能需要修改該處理器核正在執(zhí)行的程序。雖然根據(jù)設(shè)計(jì)余下部分的復(fù)雜程度,您可能會(huì)重新運(yùn)行Implementation 階段(包括更新了的存儲(chǔ)器文件),但這會(huì)非常耗時(shí),尤其是您只在實(shí)驗(yàn)室里嘗試各種可能的情況下。因此,在重新運(yùn)行Implementation 階段之前可以用JTAGloader 更新處理器 核的程序存儲(chǔ)器,來調(diào)試你的軟件程序。其中JTAG loader 也能通過下載獲得。

在使用JTAG loader 之前,首先需要在您的設(shè)計(jì)設(shè)置中啟用該加載程序。在一個(gè)程序存儲(chǔ)器的實(shí)例化中使用通用C_JTAG_LOAD-ER_ENABLE: integer := 1 。注意您一次只能為您設(shè)計(jì)中的一個(gè)內(nèi)存實(shí)例設(shè)置該參數(shù)。

在您的設(shè)計(jì)中啟用該程序后,您必須從JTAG_loader 目錄中選擇和你的操作系統(tǒng)匹配的版本并將其復(fù)制到您的工作目錄下 ( 即十六進(jìn)制文件所在位置)?,F(xiàn)在您可以打開一個(gè)命令窗口并導(dǎo)航到您的工作目錄下,然后使用以下命令。

jtagloader –l .hex

注意:我已經(jīng)我的操作系統(tǒng)重新命名為可執(zhí)行文件版本,即jtagloader.exe。

當(dāng)您在您的最新PSM 文件上運(yùn)行匯編程序時(shí),此項(xiàng)操作將下載所創(chuàng)建的十六進(jìn)制文件,結(jié)果如圖7 所示。下載該文件后,您將注意到JTAGloader 會(huì)停止處理器執(zhí)行并在釋放處理器復(fù)位之前下載新的程序到存儲(chǔ)器中,此時(shí)處理器開始運(yùn)行新的程序。

一旦您對(duì)PSM 文件的更新行為感到滿意,您就可以重新運(yùn)行實(shí)現(xiàn)方案和比特文件生成,從而確保下次該器件經(jīng)過配置,能夠執(zhí)行更新的程序。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉