應用 Digilent Nexys 4 DDR 設計創意 LED 燈條與音效

image 20190613 iycv27at1hi26

完成這個項目所需零件有:

  • Digilent Nexys 4/ Nexys 4 DDR 開發板(現已改為 Nexys A7)
  • USB A到Micro-B 傳輸線
  • 裝有 Vivado 的 PC 或筆記本電腦(請先安裝WebPAck版本)
  • WS2812 LED燈條
  • 三對公對公線
  • VGA線的VGA LCD顯示器

此設計可與 Digilent 的 Nexys 4/Nexys 4 DDR (現已改為 Nexys A7開發板一起使用。這些開發板使用相同的 Xilinx Artix 7 FPGA(XC7A100T-1CSG324C)和非常相似的原理圖。但是兩塊板的 pin 腳分配不同,但是源文件是相似的,除了.xdc 文件是特定於每個板的。編譯文件(.bit或.bin)也是特定於主板的。

Nexys 4 DDR Spectral Sources.zip 文件包括:

  • 項目的源文件
  • 自動構建項目所需的.tcl文件
  • 一個 readme.txt 文件,描述了建立項目的過程
  • 用於對 FPGA 進行編程的.bit 和 .bin 文件,分別是 Nexys 4 或 Nexys 4 DRR 板上的 SPI 快閃記憶體

Vivado WebPack 可以從此處下載 https://www.xilinx.com/support/download.html
安裝Vivado,創建項目,編譯並下載到FPGA文件。

麥克風的 PDM 訊號經過濾波並抽取為 48KHz,16位音頻擷取字串。音頻樣本字符串儲存在時域 Block RAM 中,用於 VGA 顯示。音頻字符串的相同副本儲存在第二塊 RAM 中,傳送至 FFT 核心。FFT 輸出數據也儲存在頻域區 RAM中。時域和頻域區 RAM 都傳送到 VGA 圖像控制器。時間訊號顯示在螢幕的上半部分,頻譜顯示在螢幕的下半部分。頻域區 RAM 還為 30 個 LED 串控制器供電。燈串中的每個 LED 都分配一個 47Hz 頻率(總頻率範圍為 47Hz 至 1.4kHz)。每個 LED 具有恆定的顏色,從 RED(對應於光譜中的最低頻率)到 VIOLET(最高頻率)。每個 LED 的強度顯示分配頻率的瞬間功率。

Nexys 4(DDR)板的音頻輸出產生音頻輸入訊號的混響版本。

Nexys 4(DDR)板的開關選擇:

FFT transform sensitivity - sw(2:0):
“000” = lowest sensitivity

“111” = high sensitivity
LED displayed pattern – sw (15:14)
“00” = FFT spectrum,
“01” and “10” = Rainbow
“11” = constant color (yellow)

 

image 20191009 2124fc8338ed9

 

將Nexys 4連接到:

  • VGA顯示器/ 透過 USB 連接 PC/ WS2812 可尋址 LED 燈條,透過連接器 JC 上的3條公對公線
  • GND(白線)至 JC5
  • Vcc(紅線)至JC6
  • 數據(綠線)到JC4

 

157060464410

157060464610

 

將 Nexys 4 DDR SpectralSources.zip 解壓縮到一個方便的文件夾中
開啟 PC,VGA 顯示器和 Nexys 4(DDR)板
啟動 Vivado 點擊“打開硬體管理器”
點擊 “打開新的硬體目標”

在接下來的兩個窗口中單擊“下一步”。
確保在“選擇硬件目標”中選擇 Nexys 4 DDR 板(僅當您連接了更多Xilinx FPGA板時)。
點擊下一步”


點擊“完成”
點擊“程序設備”,然後選擇“ xc7a100t_0”
導航到適當的.bit文件:

/Nexys4DdrSpectralSources/bin/Nexys4/TopNexys4Spectral.bit 用於Nexys 4板或 /Nexys4DdrSpectralSources/bin/Nexys4DDR/TopNexys4Spectral.bit 用於Nexys 4 DDR板

點擊“程序”,然後等待“完成” LED 亮起。
播放音樂或者聲音,此時 LCD 顯示螢幕顯示時域和頻域。LCD條顯示音頻訊號的頻譜。如前所述,使用Nexys4(DDR)開關播放。

Nexys4DdrSpectralSources.zip 文件可透過下載代碼獲得。

在 Nexys4 DDR Spectral Sources.zip 中,打開描述該項目產生過程的 readme.txt 文件。請按照以下步驟從提供的源中重新建立 Vivado 項目。

重要說明:如 readme.txt 中所示,該項目已準備好為 Nexys4 DDR 板編譯。若要針對 Nexys 4 板進行編譯,請從項目中刪除名為Nexys4DDR_Master.xdc 的文件,然後添加名為 Nexys4_Master.xdc 的文件。(\src\constraints)。

分析項目的結構:

TopNexys4Spectral-每100毫秒產生一個 flgStartAcquisition 脈衝,以啟動計算週期。
實例: clkGenInst- 時脈產生器 Vivado IP 核心。使用 100MHz 輸入時脈並產生: VGA 控制器的 25MHz 時脈
音頻演示組件為 4.8 MHz。

Audio_demo_inst-Digilent Audio demo project,如項目描述,產生 16 位元 48KSPS 音頻訊號。
Inst_fftBlock-計算audio_demo輸出信號的FFT。
TimeBlkMemForFft-Vivado IP 核心:8 位元,1024 個採樣的雙端口 RAM,用於儲存音頻訊號並將其提供給 FFT 核心。
FftInst-Vivado IP 核心:計算上面儲存的訊號的FFT。

ResetStateMachine 初始化 FFT 核心。
TimeCounter 在 TimeBlkMemForFft 中索引樣本。
TimeAcqSync 將 TimeCounter 與 flgStartAcquisition 和音頻訊號的上升沿同步到零級。
FftLoadCounter索引樣本以下載 FFT IP 核心(時間樣本)。
FftUnloadCounter索引樣本以卸載 FFT IP 核心(頻域樣本)。

Inst_VgaCtrl –生成VGA同步訊號及垂直和水平計數器,以定位當前顯示的像素。
Inst_ImgCtrl –生成VGA顯示的圖像。
實例: TimeBlkMemForDisplay-Vivado IP 核心:8位元,1024 個樣本的雙介面 RAM,用於儲存音頻訊號並將其提供給 VGA 顯示器。
TimeBlkMemForFft 的同步克隆。
FreqBlkMemForDisplay-Vivado IP 核心:8位元,1024 個採樣的雙介面RAM,用於儲存音頻頻域採樣並將其提供給 VGA 顯示器。

inst_LedStringCtrl –建立圖像以顯示在 LED 燈條上。
產生彩虹的顏色定義。
儲存前 30 個頻域樣本的值。
結合以上兩個信息以在 LED 上產生頻率動態顯示。
讀取開關以選擇 LED上的靜態或動態圖像。

實例: 讀取燈條中每個 LED 的顏色數據。
為每個 LED 組合三種顏色
將 30 種 LED 顏色訊息組合在單個位串中。
將位串編碼為 NRZ 碼以驅動 LED 燈條。
U1-led_controller = led控制器


文章連結 │ Nexys 4 DDR LED燈帶音頻頻譜項目的DIY動手指南
程式碼下載 │  https://drive.google.com/file/d/1ftETM7bN_qLCqvJ6FDDKGhbwhxhPNdYu/view?usp=sharing

和澄科技 Haley Technology

電話 │ 886-3-5790380
傳真 │ 886-3-5790370
信箱 │ sales@haleytech.com
地址 │ 新竹市關新路27號18樓之2

               

 

 

M有任何問題嗎? Line 我們最快! 

產品搜尋