可編程門陣列(FPGA)是一種用戶可以編程的硬件電路,用于執行邏輯操作。與特定應用集成電路(ASIC)或處理器相比,FPGA具有多個優點。FPGA具備高能效、靈活的重編程性、支持并行處理以及較低的延遲,因此在許多應用中被廣泛使用。
然而,FPGA的靈活性需要面對電路重編程的挑戰,對于初學者而言,這會增加學習成本和難度。
為了解決這個問題,虛擬FPGA實驗室項目應運而生。該項目利用Makerchip平臺中的VIZ可視化功能,提供FPGA基本外設的可視化,以模擬物理實驗室的體驗。
Makerchip是一款免費的基于Web的集成開發環境(IDE),同時也提供makerchip-app,一款用于開發高質量集成電路的虛擬桌面應用程序。您可以在瀏覽器中編寫、編譯、模擬和調試Verilog設計。代碼、模塊圖和波形緊密集成在一起。Makerchip支持新興的事務級Verilog( Transaction-Level Verilog)標準。事務級Verilog(TL-Verilog)是一個重大的進步,它消除了Verilog的傳統語言特性,并引入了更簡單的語法。與此同時,TL-Verilog為流水線和事務添加了強大的構造。
簡單 || 強大 || 靈活
使用TL-Verilog語言編寫的設計進行調試時,可以通過可視化方式來觀察和分析設計的行為。通過在設計中插入調試語句,并以可視化形式顯示設計行為,幫助設計人員進行調試、驗證和優化的過程。
無需編寫測試臺即可查看模擬結果。IDE提供了內置的時鐘,并在信號未被賦予任何值時為其分配隨機值。
設計以邏輯圖形式表示。非常容易瀏覽設計層次結構、流水線和階段。
圖片
首先將簡單數字邏輯門的輸出可視化。從上面的GIF中可以看到左側是代碼部分,可以看到門的邏輯;右側是可視調試(VIZ)部分,可以看到每個邏輯門的可視化。我們可以在周期之間來回移動,并在右上角看到當前的周期。
可視調試是如何構建的?可視調試是一個JavaScript畫布,在其中使用了fabric.js,這是一個功能強大且簡單的JavaScript HTML5畫布庫框架,它使我們能夠在畫布元素上使用交互式對象模型。
目前,僅展示這些開發板。
在第一階段評估之前的編碼工作主要是在VIZ畫布屏幕上添加FPGA圖像,并支持可視化FPGA的LED燈、七段數碼管、LCD 16x2顯示器和VGA顯示器。下面是使用這些組件的示例演示:
演示:https://makerchip.com/sandbox/0mZf5hLPG/0y8h64Z#
圖片
上面的GIF演示了一個16位計數器的示例,其輸出顯示在LED燈上。在這里使用了Zedboard開發板。初始化可以在第26、27和28行中看到。m4+fpga_init將初始化開發板,m4+fpga_led將使LED燈工作。如果要使用其他開發板,請在第26行更改M4_BOARD的值。
演示:makerchip.com/sandbox/0mZf5hLPG/0zmh8rV
圖片
這個演示是一個從0到15的計數器,以十六進制值顯示在七段數碼管的四個數字中。* digit是共陽信號。每個七段數碼管包含段,基本上是可以通過發送低電平信號來打開的LED。要在七段數碼管中顯示數字8,需要通過低電平信號啟用所有段。
演示:makerchip.com/sandbox/0mZf5hLPG/0k5hYwz#
圖片
這個程序在LCD 16x2顯示器中打印以下內容:
第一行:FPGAs are fun!!!
第二行:—
完成后,將第一行和第二行向左移動一次。
演示:makerchip.com/sandbox/0mZf5hLPG/0nZhlW1
圖片
這是用于640* 480 VGA顯示器的可視化。信號和sy分別表示顯示光標的水平和垂直位置。當水平和垂直像素區域(和sy)小于64時,程序會繪制一個橙色的正方形,否則為藍色。在480p分辨率下,需要約40萬個周期來顯示一個完整的幀,包括所有前后廊道的時間約束。為了進行可視化,我們將每個正方形框設置為32x32像素,因此可以在約470個周期內完成一幀,以便更好地理解。無論如何,可以使用M4_COUNTER宏變量定義來調整正方形框的大小。還可以使用M4_FRAMES宏變量的定義來更改要可視化的幀數。
對于第二階段,開始可視化其他外設,如按鈕、滑動開關、LED RGB、溫度傳感器、光傳感器等。以下是使用這些可視化的演示。
演示:makerchip.com/sandbox/0mZf5hLPG/0pghQw2
圖片
當按下特定的按鈕時,此程序會點亮LED燈。按鈕應從開發板上輸入。不幸的是,Makerchip VIZ目前不支持交互功能。因此,為了使用這個外設,使用$pb信號手動給按鈕輸入。
演示:makerchip.com/sandbox/05yf0h91P/066hVzy
圖片
邏輯與上述按鈕示例相同。
演示:makerchip.com/sandbox/0mZf5hLPG/0mwh1MY
圖片
溫度和光傳感器位于開發板的左下角。這里我們使用太陽圖像作為熱源。隨著太陽圖像遠離溫度傳感器,相應的溫度讀數將顯示在七段數碼管中。用于顯示傳感器讀數的時間為四個時鐘周期。這是因為七段數碼管的陰極是連接在一起的。因此,為了顯示四個不同的數字,我們每個時鐘周期只啟用一個數字。由于一個周期的變化通常發生在幾十納秒的量級上,當在實際的FPGA中運行時,我們的肉眼會假裝所有數字在同一時間更新。
演示:makerchip.com/sandbox/0mZf5hLPG/0oYhlwR
圖片
這里使用燈泡圖像作為熱源。上述溫度傳感器示例的邏輯在這里同樣適用。
演示:makerchip.com/sandbox/0mZf5hLPG/0vghOl6
圖片
該程序根據占空比值在RGB LED中輸出不同的顏色,使用了脈寬調制(PWM)的概念。
SandPiper是一個代碼生成器,可以根據給定的TL-Verilog代碼生成可讀性強、結構良好的Verilog或SystemVerilog代碼。
SandPiper的SaaS版在云端作為微服務運行,以支持簡便的開源開發。請安裝SandPiper SaaS版用于此項目。
要在本地運行,可以從RedwoodEDA獲取SandPiper教育版。
運行FPGA設置的步驟如下:
圖片
a. TL-Verilog文件的輸入文件名
圖片
b. FPGA板名稱(如果板卡不在給定選項中,請提供板卡的零件號)
如果板卡在給定選項中:
圖片
如果板卡不在給定選項中:
圖片
c.(可選)如果板卡不在給定選項中,則約束文件應該以<filename_partno>.xdc的形式存在于您的工作目錄中。
例如:根據上面的圖像,應該是design_xc7a100tcsg324-1.xdc
d. 時鐘周期(以納秒為單位)
圖片
圖片
本文鏈接:http://www.tebozhan.com/showinfo-26-13636-0.html不可不知的FPGA設計妙招,使用Makerchip進行在線虛擬開發(附案例)
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: Vue 中可重用組件的 3 個主要問題