前言
在自動化領域,FPGA(現場可編程門陣列)的作用越來越重要。這些設備構成控制單元的大腦,控制單元包含控制系統各種功能的邏輯。
從環境中收集信息的不同傳感器信號被傳遞到FPGA,并驅動必要的控制輸出。隨著系統復雜性的增加,迫切需要對各種輸入和輸出條件下的電路行為有一個全面了解。
SaberRD是一款綜合仿真軟件,可以虛擬設計和驗證任何與電氣系統有關的東西。健壯的仿真引擎為模擬和混合信號系統提供了可靠的資源。該仿真器支持VHDL-AMS,它是IEEE標準VHDL語言的擴展,主要用于FPGA和其他數字系統的建模。
此設計示例演示了在SaberRD中包含FPGA的系統仿真。該設備使用VHDL語言建模,系統仿真的目的是為監視器提供適當的信號,系統通過VGA接口將八種顏色的視頻發送到顯示器。
VGA顯示系統介紹
當今的系統變得越來越復雜,必須針對所有可能的組合對系統進行分析。以下分別說明示例系統的詳細信息。
1、 數字系統仿真
數字系統由以離散步長改變信號狀態的代碼組成。FPGA是數字系統,它接收數字輸入并根據設備上編程的邏輯提供數字輸出。來自各種外設(例如傳感器和驅動器)的信息通常是模擬性質的,使用模數轉換器將信息傳輸到FPGA。同樣,FPGA的輸出通過接口將數字信號轉換為有意義的輸出。
此類設備可以使用VHDL語言輕松建模。隨著仿真需求的增加,大多數設備制造商通常會在組件上附帶VHDL或其他仿真模型,以便設計工程師可以在原型構建過程之前仿真完整的行為。SaberRD支持VHDL-AMS語言,它是VHDL語言的混合信號擴展。因此,這些模型可以很容易地用于仿真使用這些FPGA或其他數字系統的系統。
2、 VGA顯示系統
在本設計示例中,VGA 顯示由 FPGA的三位數字輸出構成。數字輸出由兩個模塊實現,如圖 1所示。第一個產生水平和垂直同步信號的模塊定義為同步模塊(sync_mod),第一個模塊還產生第二個模塊圖像生成模塊(img_gen) 所需的信號。
圖 1帶有兩個模塊的頂層原理圖
img_gen模塊的輸出是三位輸出。這意味著VGA顯示器中可以有8種組合,因此可以有8種顏色。位組合的數字輸出與VGA顏色輸出對應如表 1所示。
表 1數字輸出與VGA顏色輸出對應表
3、 同步模塊
同步模塊為VGA顯示器生成垂直和水平同步信號。該模塊具有三個輸入,它們是:
- 開始 --- 這將激活/停用模塊
- 時鐘 --- 系統時鐘
- 重置 --- 重置同步模塊
兩個輸出信號是垂直和水平同步信號,它們直接連接到 VGA 連接器。
除了兩個輸出之外,還有三個信號輸入到圖像生成模塊。其中兩個輸出x_control和y_control控制 x 和 y 像素。此設計默認的VGA顯示分辨率為640 X 480。因此,x_control 從 0 計數到639,y_control 從 0 計數到479。為了完成此任務,模塊中創建了兩個計數器模型。一個計數器滿足水平分辨率,另一個滿足垂直分辨率。第三個信號是 Video_on 信號,用于啟用/禁用視頻。代表同步模塊的符號如圖 2所示。
圖2同步模塊符號圖
4、 圖像生成模塊
該模塊為VGA顯示器生成RGB輸出,該模塊具有在顯示中生成所需塊的部分。如前所述,三個RGB輸出是數字信號,可產生八種組合,從而在顯示中產生八種顏色。圖像生成模塊的符號如圖 3所示。
圖 3圖像生成模塊符號圖
該模塊的VHDL模型有幾個部分來描述輸出數字信號。在VGA顯示器上生成的最終圖像用于PONG游戲,該游戲具有三個主要組件,如圖 4所示。
圖 4圖像生成模塊在輸出端的VGA顯示
在VGA顯示器上看到的PONG游戲中的三個主要組件是:
- Wall - 限制球越過并在屏幕上以黑色顯示。
- Ball - 在屏幕中移動并以綠色顯示。
- Bar – bar由img_gen模塊上的button_r和button_l輸入控制,并以藍色顯示。
圖像生成模塊生成數字輸出以顯示三種顏色,屏幕的其余部分為紅色。以下是 RGB 數字引腳上預期的輸出:
表2圖像生成模塊期望的輸出
圖像生成模塊的輸入x_control和y_control定義了顯示器上的像素,x_control和 y_control給定值下的顏色輸出由圖 4決定。對于y_control的每個值,x_control的值從0掃描到639,,y_control的值從0掃到469。這樣就形成了一個640X480分辨率的視頻,完成了一個顯示周期。這是由圖像生成模塊的video_on輸入決定的。
SaberRD中仿真與分析
SaberRD仿真平臺中主要進行瞬態分析,它根據時間仿真系統性能。SaberRD運行關于時間的模擬,并繪制各種信號以檢查系統輸出。在SaberRD中運行仿真有幾個選項可用于可視化電路中不同部分的操作。用于運行各種分析、繪制結果、測量各種參數等的自動化工具對于提高設計工程師的生產力非常有用。
該設計還附帶一個運行瞬態分析并繪制rgb輸出信號的實驗。除此之外,video_on信號以及指定顯示器上像素的 x 和 y 值。
1、 如何運行實驗Experiment
a、下載設計文件中,打開設計vhdl_fpga_demo.ai_dsn。
b、轉到Simulate選項卡,在Analysis列表中選擇Experiment,在屏幕右邊的Experiments列表中選擇transient_analysis。開始仿真。
c、仿真完成后,results窗格將顯示圖表和實驗報告。
d、雙擊實驗報告,在報告中可以看到Ball和Bar寬度的測量值。
e、雙擊圖表“key_outputs”,如圖 5所示的波形圖顯示出來。
2、 結果和觀察
了解設計的預期結果以了解仿真結果是否符合預期非常重要。設計的期望已經在上面的部分中解釋過。運行實驗后,結果窗格中會顯示圖表和實驗報告。雙擊圖表“key_outputs”結果如下圖 5。
圖5瞬態仿真波形圖
如前所述,對于變量“y”的每個值,變量“x”從 0變為639?!畒’ 的值從0到479以完成一個顯示周期。這是640X480分辨率VGA顯示器的定義。
如圖 4所示,顯示和背景中有三個項目。這會在輸出引腳上產生rgb(0)、rgb(1)和rgb(2)的四種組合,如表1中所述。圖 5中提到了在一個顯示周期中的四個區域。
當圖表放大到區域1時,信號如圖 6所示??梢钥闯?rgb 輸出為 0、0 和 0,這表示黑色表示墻壁。
圖6黑色墻壁的RGB輸出狀態
區域2被縮放以查看屏幕上顯示的球。球是綠色的,輸出應該是010。圖 7中顯示的放大區域也證實了這一點。
圖7綠色球的RGB輸出狀態
區域3表示背景,顏色為紅色。紅色的代碼是100,如下圖 8所示。
圖8紅色背景的RGB輸出
顯示器上的最后一個對象是藍色的Bar,RGB輸出應為001,如下圖 9所示。
圖9藍色Bar的RGB輸出
除此之外,圖表上還有兩個測量值。這些測量以像素為單位顯示寬度,其中Ball的寬度為20,Bar 的寬度為120像素。這可以通過打開img_gen.vhd模型來驗證,如下圖 10所示。
圖10圖像生成模塊代碼
按比例,Ball和Bar的寬度可以在實驗報告中驗證,如圖 11所示。
圖11測量顯示Ball和Bar的寬度
這里描述了圖 10中紅框中顯示的Bar和Ball寬度如何與圖 11中的脈沖寬度測量相關。一個video_on脈沖寬度,對于給定的“y”,在此期間,“x”像素從0變為639 ,如圖 12所示,為1.28ms。在此期間 x 像素為藍色的時間為240us。
圖12以像素為單位計算Bar的寬度
因此,以像素為單位的Bar寬度為
同樣,以像素為單位的 Ball 的寬度為
結論
該設計示例表明 FPGA 的仿真可以在SaberRD 中執行,并且自動化方法有助于獲得易于閱讀的結果。在仿真工具中執行的詳細分析表明,電路的輸出符合設計要求和所需的輸出。因此,SaberRD 被證明是用于仿真涉及到 FPGA 的設計的有前途的解決方案。
-
FPGA
+關注
關注
1626文章
21678瀏覽量
602037 -
連接器
+關注
關注
98文章
14345瀏覽量
136207 -
RGB
+關注
關注
4文章
798瀏覽量
58394 -
VHDL語言
+關注
關注
1文章
113瀏覽量
17988 -
VGA接口顯示
+關注
關注
0文章
3瀏覽量
969
發布評論請先 登錄
相關推薦
評論