摘 要:SOPC(片上可編程系統(tǒng))技術(shù)是將FPGA技術(shù)和嵌入式技術(shù)結(jié)合在了一起,它的定制性強(qiáng)、易于裁剪和移植,使得這種設(shè)計(jì)方法成為未來(lái)電子設(shè)計(jì)的一個(gè)重要的發(fā)展方向。本文基于FPGA平臺(tái),定制Nios II軟核處理器,驅(qū)動(dòng)DS1302實(shí)時(shí)時(shí)鐘芯片,實(shí)現(xiàn)了數(shù)字鬧鐘的功能。
關(guān)鍵詞:SOPC;Nios II;DS1302
中圖分類號(hào):TP334.7
SOPC(片上可編程系統(tǒng))是在SoC(片上系統(tǒng))技術(shù)上發(fā)展起來(lái)的,它至少包含一個(gè)嵌入式的處理器內(nèi)核。這些內(nèi)核可以使硬核、固核和軟核,應(yīng)用場(chǎng)景和范圍都各不相同。[1]本設(shè)計(jì)采用的是Nios II軟核處理器,這是Altera公司基于其高速FPGA芯片開(kāi)發(fā)的一款開(kāi)源的處理器內(nèi)核,主頻根據(jù)FPGA芯片的不同有所區(qū)別,一般對(duì)于Cyclone II芯片EP2C208C8,可以穩(wěn)定的運(yùn)行在100MHz,性能可以滿足基本的要求。
Nios II只是一個(gè)處理器內(nèi)核,需要添加一些外設(shè)的IP核,才能構(gòu)成Nios CPU。本文在EP2C208C8系列FPGA上,定制了基于Nios II的軟核CPU,進(jìn)而驅(qū)動(dòng)DS1302實(shí)時(shí)時(shí)鐘芯片,實(shí)時(shí)采集時(shí)鐘數(shù)據(jù),顯示在LCD12864顯示屏上;驅(qū)動(dòng)了外部的按鍵,實(shí)現(xiàn)鬧鐘的設(shè)定功能;驅(qū)動(dòng)了蜂鳴器,實(shí)現(xiàn)了定時(shí)鬧鈴的功能。
1 系統(tǒng)的硬件部分設(shè)計(jì)
1.1 Nios II軟核處理器的定制
Altera公司在以往的Quartus版本中提供了SOPC Builder設(shè)計(jì)工具,用以定制CPU,而今的版本中,已經(jīng)使用Qsys替代了SOPC Builder,設(shè)計(jì)的方法類似。本設(shè)計(jì)中仍然采用了SOPC Builder設(shè)計(jì)工具。如圖1所示,為Nios II軟核CPU的定制,其中包括了Nios II 處理器內(nèi)核、SDRAM控制器、EPCS串行Flash控制器、Jtag Uart調(diào)試接口、實(shí)時(shí)時(shí)鐘IO接口、LCD接口、蜂鳴器、按鍵接口等。其中需要注意的是要將Nios II的復(fù)位指針設(shè)成EPCS,異常指針設(shè)置成SDRAM。自動(dòng)分配基地址,自動(dòng)分配中斷號(hào),經(jīng)過(guò)Generate之后,就會(huì)產(chǎn)生Nios II CPU的模塊,將模塊添加到電路圖中,就完成了軟核處理器的定制工作。
圖1 Nios II軟核CPU的定制
1.2 鎖相環(huán)PLL配置
在電路圖中添加鎖相環(huán)PLL的IP核。我們需要輸出兩路時(shí)鐘,一路時(shí)鐘是100MHz,提供給CPU,另外一路也是100MHz,相位是-72度,提供給SDRAM。由于我們開(kāi)發(fā)板上提供的晶振只有20MHz,所以我們需要設(shè)置PLL模塊,進(jìn)行5倍的倍頻,一路設(shè)置-72度的相位差。
1.3 配置工程
在Quartus工程中,我們需要設(shè)置電路圖中每個(gè)引腳對(duì)應(yīng)的具體FPGA管腳。在這里我們使用.tcl腳本文件,事先寫好管腳的名稱和實(shí)際管腳號(hào)的對(duì)應(yīng)關(guān)系,直接運(yùn)行.tcl腳本,這樣不容易出錯(cuò)。另外我們還要設(shè)置不使用的管腳為As input tri-stated,保證這些管腳不會(huì)對(duì)我們的設(shè)計(jì)造成影響。具體設(shè)計(jì)的電路圖如圖2所示。編譯工程,就完成了硬件部分的設(shè)計(jì)。
圖2 電路設(shè)計(jì)圖
2 系統(tǒng)的軟件部分設(shè)計(jì)
軟件部分的設(shè)計(jì),我們?cè)贜ios II IDE下進(jìn)行。這是基于Eclipse的Nios II專用的軟件設(shè)計(jì)IDE工具。軟件部分的流程圖如圖3所示。
圖3 軟件流程圖
2.1 LCD12864驅(qū)動(dòng)設(shè)計(jì)
本系統(tǒng)中使用的LCD是128*64的COG液晶,將驅(qū)動(dòng)IC集成到了LCM上,省去了PCB底板,節(jié)省了空間。LCD使用的驅(qū)動(dòng)芯片是ST7565P,支持三種接口方式。本系統(tǒng)采用的是串行接口方式,只需要四根線LCD_CS(片選)、LCD_A0(地址)、LCD_SCL(時(shí)鐘)、LCD_SI(數(shù)據(jù)),就可以完成驅(qū)動(dòng),節(jié)省了IO資源。由于此LCD不帶中文字庫(kù),在設(shè)計(jì)中還要添加字庫(kù)文件支持。
2.2 DS1302驅(qū)動(dòng)的設(shè)計(jì)
DS1302是一款常見(jiàn)的實(shí)時(shí)時(shí)鐘芯片,是由DALLAS 公司推出的涓流充電實(shí)時(shí)時(shí)鐘芯片,內(nèi)含一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài) RAM,僅需要三根線:RES(復(fù)位)、I/O(數(shù)據(jù)線)、SCLK(串行時(shí)鐘)就可以驅(qū)動(dòng)。
2.3 按鍵和蜂鳴器驅(qū)動(dòng)
按鍵的驅(qū)動(dòng),主要是時(shí)鐘定時(shí)的設(shè)定選擇。本設(shè)計(jì)中需要注意的部分就是按鍵的防抖,否則會(huì)造成設(shè)置錯(cuò)誤。在設(shè)置鬧鐘的程序中,還添加了光標(biāo)的移動(dòng),這樣可以實(shí)時(shí)的顯示當(dāng)前正在調(diào)節(jié)的數(shù)位。蜂鳴器主要是實(shí)現(xiàn)鬧鈴的功能,在設(shè)計(jì)中主要要設(shè)置IO口的初始化的數(shù)值,否則上電之后,蜂鳴器會(huì)一直鳴響。
3 結(jié)束語(yǔ)
本設(shè)計(jì)是SOPC設(shè)計(jì)方法的在生活中的應(yīng)用,體現(xiàn)了FPGA和嵌入式技術(shù)的結(jié)合,體現(xiàn)了未來(lái)電子設(shè)計(jì)的發(fā)展方向,具有重要的實(shí)際意義。
參考文獻(xiàn):
[1]李蘭英, Nios II嵌入式軟核SOPC設(shè)計(jì)原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2006.
作者簡(jiǎn)介:朱嫻(1984-),女,江蘇南京人,學(xué)院實(shí)驗(yàn)中心教師,講師,南京大學(xué)電子與通信工程碩士,研究方向:實(shí)驗(yàn)教學(xué)、電子與通信。
作者單位:南京航空航天大學(xué)金城學(xué)院,南京 211156