天天看點

fpga驅動rgb液晶屏_DE10Nano開發闆上LT24液晶屏應用(基于SoPC)

1. 建立工程(Project)

1.1 使用SystemBuilder工具

   SystemBuilder是友晶公司為自己的産品DE10-Nano開發的一款友善建立工程的圖形界面工具,針對開發闆資源,簡化了晶片選擇、引腳配置設定等操作。

這次設計将要用到如下一些資源,包括時鐘信号,兩個按鍵,4個開關,8個發光二極管以及LT24電阻式觸摸液晶顯示屏。

fpga驅動rgb液晶屏_DE10Nano開發闆上LT24液晶屏應用(基于SoPC)

1.2 在Quartus Prime中打開Project

fpga驅動rgb液晶屏_DE10Nano開發闆上LT24液晶屏應用(基于SoPC)

2. 使用Tool菜單下的Platform Designer設計硬體系統

2.1 添加IP子產品

依次添加:

1)CPU

在IP Catalog中找到NIOS II,選擇資源優化(Resource-optimized)或者性能優化(Performance-optimized)。查找IP時可以利用關鍵字進行快速查找,添加IP時,可以暫時不用關注Message欄中的紅色錯誤資訊。

2)時鐘鎖相環PLL

由于DE10-Nano提供的是50MHz時鐘信号,是以Reference Clock Frequency這一項輸入50.0MHz,選擇輸出時鐘個數,在每個輸出時鐘的相關欄輸入對應參數。這裡将第一個輸出時鐘outclk0的Desired Frequency項填入100MHz,其餘使用預設參數,并将locked信号export出去。

3)記憶體

因為DE10-Nano的1G SDRAM是和内置的HPS處理器部分相連,使用起來相對複雜,這裡選用FPGA片記憶體儲器On-chip Memory作為我們的系統記憶體。參數主要是将大小設定為32位230K,其餘的使用預設值。需要注意的是片記憶體儲器的大小受FPGA資源的限制。

4)JTAG UART

用于和主PC機進行通信,可以将一些資訊輸出到PC機的console控制台中用于程式調試,使用預設參數即可。

5)Timer

内部定時器IP,基本CPU系統中的常用外設之一。這裡提示一下,調用Quartus IP核時,滑鼠右鍵彈出的快捷菜單中,通過Details選擇User Guide文檔,或者直接在加入的IP核頁面裡選擇Documentation/Details按鈕,裡面有關于相應IP的詳細使用說明。

6)PIO

基本輸入輸出端口也是CPU系統中最常見的,通過它們就可以和很多外設互動。由于在開始建立系統時,我們選用了DE10-Nano上的2個按鍵(KEY),4個開關(SWITCH)和8個發光二極管(LED),是以需要添加3個PIO IP來控制它們,2個輸入1個輸出,位寬分别為2,4,8。如果輸入端口需要具有中斷功能,還能設定Edge Capture以及Interrupt參數來使其具備中斷功能。由于這個IP加入了好幾個,是以建議重命名,以友善自己将來進行通路。最後,這幾個端口都将和外設打交道,是以将它們都export 到外部,适當重命名連到外部的名字,不然自動命名的名字會比較長。

7)System ID

一個隻讀的系統标志IP,其中包含2個隻讀寄存器,系統ID和時間戳Timestamp(After 1970-01-01),可供NIOS II來确定軟體是否适用所使用的硬體平台。

   接下來需要添加的就是和觸摸屏相關的接口外設了。其中,觸摸屏采用的控制晶片是AD7843,它是一個12位AD轉換器,能擷取在屏上觸摸的位置。液晶屏采用的驅動晶片是ILI9341。通過閱讀資料手冊,可以獲得詳細的關于這兩個晶片的控制細節。

fpga驅動rgb液晶屏_DE10Nano開發闆上LT24液晶屏應用(基于SoPC)

8)觸摸屏相關IP

a)SPI接口

下圖來自AD7843晶片資料,描述了其控制時序,可以看到其通信方式類似SPI,是以添加SPI IP。将其類型設定為Master,因為觸摸屏屬于Slave,SCLK設定為32KHz(隻要滿足AD7843通信要求即可),資料寄存器設為8位MSB Firs。最後将名字重命名改為touch_panel_spi,并把external端口export出去。這個接口将和觸摸屏的ADC_CN_N、ADC_DCLK、ADC_DIN、ADC_DOUT相連。

fpga驅動rgb液晶屏_DE10Nano開發闆上LT24液晶屏應用(基于SoPC)

b)PIO

觸摸屏的BUSY和中斷請求信号則由兩個1位的PIO輸入端口負責實作。其中,中斷請求的輸入端口要選擇中斷功能,将其設定為同步下跳沿捕獲(synchronously capture / FALLING)以及産生邊沿中斷請求(Generate IRQ / EDGE)。最後重命名友善自己使用。

9)液晶屏相關IP

在IP庫的大學計劃(University Program / Audio & Video)分類中可以找到LT24 Controller,它是一個Avolon-ST接口。另外,友晶公司也提供了一個簡單的Avolon-MM接口IP。這裡選用友晶的IP完成設計。

将友晶的LT24 Controller拷貝到工程檔案所在目錄的IP檔案夾下,打開QSYS時會自動加載該IP核到IP庫中,選中後添加進工程,不需要進行參數設定,将和液晶屏相連的端口export出去。另外,液晶屏還要能被CPU控制複位,而IP核中并沒有複位引腳控制,是以增加一個輸出PIO用于LCD的複位信号。

fpga驅動rgb液晶屏_DE10Nano開發闆上LT24液晶屏應用(基于SoPC)

到這裡,就添加了這個工程所需的基本IP核了,接下來進行系統的連接配接和資源配置設定等内容。

2.2 連接配接與資源配置設定

1)時鐘

    系統時鐘主要來自鎖相環PLL的100MHz輸出,而PLL的參考時鐘來自FPGA的50MHz時鐘端口,完成所有時鐘連接配接。

2)複位信号

複位信号如不需要特别考慮,可以直接選System / Create Global Reset Network菜單建立全局複位網絡。

3)CPU設定

首先,在連接配接關系上根據需要設定好NIOS II資料總線(data_master)和指令總線(instruction_master)通路的裝置。通常,資料總線需要通路存儲器以及所有外設,指令總線隻需要通路存儲程式所在的存儲器即可。

接下來,給所有外部裝置配置設定位址,可以手動逐一配置設定,也可以選System / Assign Base Address菜單由系統自動配置設定。

然後,根據需要連接配接中斷資源,并配置設定中斷号,也可選System / Assign Interrupt Numbers讓系統自動配置設定。

   最後,将NIOS II參數中的Vectors頁籤中的複位和異常向量的位置指定為on-chip memory,選用預設位址即可。

fpga驅動rgb液晶屏_DE10Nano開發闆上LT24液晶屏應用(基于SoPC)

到此,我們的硬體系統設計完成。

2.3 Generate HDL

儲存後,點選右下角Generate HDL按鈕,系統将為我們産生對應HDL檔案,就可以在Quartus Prime中進行引用了。

3. 完善工程

在引用之前生成的QSYS IP之前,我們需要手動添加IP檔案(.qip)到工程中。

當我們關閉Platform Designer時,系統也會自動彈出視窗提示我們生成的IP檔案名及位置,并提示我們需要手動添加進工程。

另外,我們可以打開自動生成的*_inst.v檔案,複制其代碼粘貼到工程的Verilog HDL檔案中,這樣可以少打不少字還不容易出錯。

fpga驅動rgb液晶屏_DE10Nano開發闆上LT24液晶屏應用(基于SoPC)

接下來,修改與QSYS IP外部端口相連的端口為FPGA端口清單中的相應端口。其中,PLL的相位鎖定輸出信号可以不用連接配接,液晶屏的LT_LCD_ON和LT24_RESET_N兩個信号在我們設計的QSYS中也沒有,我們可以用HDL語句為其指定邏輯。簡化起見,設定LCD常亮,添加“assign LT24_LCD_ON = 1’b1;”,系統複位信号接到内部reset_n結點并設定為1,添加“wire reset_n; assign reset_n = 1’b1;”兩條語句,并将QSYS的複位信号連到reset_n結點。

自此硬體系統設計完畢,編譯整個工程項目,得到FPGA的配置檔案。 

4. 下載下傳硬體系統到FPGA

編譯後,會得到.sof檔案,通過Quartus Tools / Programmer 将其配置到FPGA上,即在FPGA内實作了一個SoC系統,接着可為其進行軟體開發了。