引言
SPI總線作為一種簡單高效的4線串行傳輸總線,在電子器件和系統中應用非常普遍,由于其輸入和輸出的信號線彼此獨立,因而傳輸可靠性更好。Altera公司的EDA設計工具中有自帶的SPI總線控制IP核,但目前介紹該IP核具體應用的文獻不多,本文結合我們在微投影系統研究中的需求,給出了該SPI IP核的應用實例。
1 SPI核的工作原理
1.1 硬件結構
SPI核的硬件結構如圖1所示,主要由波特率分頻器、發送數據寄存器、接收數據寄存器、狀態寄存器和控制寄存器組成。波特率分頻器主要將Avalon的系統時鐘進行分頻,SCK可以配置的頻率=Avalon系統時鐘頻率/(2的倍數)。
該IP核可以配置為主和從兩種模式。本設計為嵌入在FPGA中SPI核為主工作模式,可以控制最多16個從設備,如圖1所示的SEN0~SENl5。只有一個器件時,默認為SEN0信號。SPI核傳輸的數據寬度是由用戶配置的,可在1~32位之間,當一次數據傳輸結束之后SPI核發出一個中斷請求。
主要實現兩種傳輸邏輯(以主模式為例):
①發送邏輯。待發送的數據由Avalon從端口送入發送數據寄存器,再移入移位寄存器中,SCK跳變沿到來時開始數據傳輸(經SDAT信號線發出,先移入的數據是高位還是低位,取決于SOPC Builder的配置)。
②接收邏輯。移位寄存器捕獲到完整的數據后,再將其移入接收數據寄存器中(由SDO信號線捕獲數據)。
1.2 軟件結構
目前,在采用32位的軟核Nios II處理器中,提供了4層軟件開發模式:Nios II系統硬件,驅動程序層,硬件抽象層應用程序接口(HAL API),應用程序層。SPI核的應用和軟件結構如圖2所示。
2 SPI核的庫函數及其使用
該IP核的APl函數為alt_avalon_spi_command(),其原型為:
flags——置1時表示執行完該函數后,SS_N保持寫/讀操作相同的電平;置0時表示執行完該函數后,SS_N為寫/讀操作相反的電平。
alt u8、alt u32分別是Altera系統中定義的8位、32位無符號數。
3 應用實例
微投影技術顯示是目前投影的一個研究焦點,主流的技術包括:MOEMS微光機電微鏡偏轉技術、基于數字微鏡芯片的DLP技術和基于硅基液晶的LCOS技術。三種技術相比,LCOS具有成本低、體積小、低功耗等優點。
本設計使用的是鎂光公司的MT7DPWV2F鐵電硅基液晶(FLCOS),FLCOS比一般的LCOS在色彩對比度、液晶像素響應時間方面更為出色。該芯片的主要參數:像素分辨率為852×480,顏色深度24位,對比度300:1,光學鏡面反射率63%,尺寸23.4mm×9.8 mm×3.6 mm,功耗僅為75 mW。
圖3為微投影系統視頻處理與控制SOPC系統示意圖,總線上掛接了包括微處理器、Flash控制器、SDRAM控制器等。復合視頻信號經過硬件解碼后進入視頻處理模塊(完成去隔行處理、色空間轉換等功能),SPI控制器模塊和顯示控制器模塊一起控制片外的FLCOS芯片。FLCOS產生的圖像經過光學引擎放大,投影到屏幕上面來。
該FLCOS芯片有數十個可配置的內部寄存器,根據具體應用的需求,有4個寄存器是必須初始化配置的。
①休眠控制寄存器(地址為0x06)。如圖4所示,該寄存器默認值為00H,需要將bit3位改為1,芯片才能從睡眠模式進入工作模式。
②同步信號極性控制寄存器(地址為0x02)。如圖5所示,該寄存器默認值為C0h,將其bit7、bit6兩位改為0,以符合顯示時序控制器同步信號高電平有效的時序要求。
③LED輸出控制寄存器(地址為0x05)。如圖6所示,該寄存器默認值為09h,需要將bit5、bit6改為1,從而芯片能發出高電平有效的LED驅動信號,bit3到bit0默認為9h表示圖像的伽馬值為2.1。
④像素時鐘控制寄存器(地址為0x0f)。如圖7所示,默認值為40h,該寄存器需要配置為像素時鐘大小的2倍。由于本設計使用的像素時鐘為27 MHz,27×2=54,轉為十六進制數即為36h。
FLCOS芯片的初始化過程如圖8所示。上電后,芯片進入睡眠狀態,就需要對芯片進行SPI初始化配置,即對微投影寄存器進行寫操作,其時序如圖9所示。讀操作時要求器件地址(共8位)的最高位為1,寫操作時要求器件地址(共8位)的最高位為0。
作為SPI驗證的例子,先向微投影芯片地址為0x06的存儲單元寫入數據0x08后再從中讀出,并通過QuartusII內嵌的SignalTap II邏輯分析工具捕獲如下信號,依次為SPI片選信號SEN0、時鐘信號SCK和數據信號SDAT、SD0。結果顯示,所得到的這一寫入、讀出過程時序與圖9要求的芯片寫入、讀出時序一致。
芯片的初始化代碼如下:
結語
SPI IP核作為自定義組件加載到SOPC系統中,應用于微投影芯片上并實現其初始化。SPI接口十分廣泛,本文通過微投影的實例著重闡述了如何配置芯片的寄存器,實驗表明該IP核配置靈活,便于移植。