基于SOPC的指紋識(shí)別模塊設(shè)計(jì)
引言
未來(lái)的系統(tǒng)發(fā)展趨勢(shì)是實(shí)現(xiàn)可編程片上系統(tǒng)(SOPC),將CPU、接口電路都融合到一塊芯片當(dāng)中。我們采用 Altera公司的 Cyclone系列器件中的 EP1C6Q240C8型號(hào)FPGA,它內(nèi)部可嵌入 Nios II軟核,通過(guò)用 VHDL語(yǔ)言設(shè)計(jì)指紋讀取接口 UART加上模塊需要的 IP核,使用 Quartus II軟件中的SOPC Builder在 FPGA內(nèi)部構(gòu)建 Nios II系統(tǒng),再通過(guò)管腳配置,與外圍電路相連,在Nios II IDE環(huán)境中實(shí)現(xiàn)外圍器件程序設(shè)計(jì)和指紋識(shí)別算法設(shè)計(jì)。構(gòu)建一個(gè)以 Nios II為處理核心的 SOPC系統(tǒng),使系統(tǒng)變得更加小巧、靈活。同時(shí)也實(shí)現(xiàn)了指紋芯片的前端設(shè)計(jì),這也是這個(gè)課題的研究目的之一,再通過(guò)ASIC集成設(shè)計(jì)電路技術(shù)做成超大規(guī)模集成電路—指紋識(shí)別芯片。這樣擴(kuò)大了指紋技術(shù)的適用范圍和應(yīng)用市場(chǎng)領(lǐng)域,例如指紋汽車(chē)鎖、指紋槍械、指紋掌上電腦、手機(jī)等嵌入式應(yīng)用的廣闊領(lǐng)域。
模塊整體硬件設(shè)計(jì)
指紋識(shí)別模塊的硬件設(shè)計(jì)采用 SOPC的設(shè)計(jì)思路[1],在FPGA內(nèi)部實(shí)現(xiàn)指紋讀取 UART接口、FLASH存儲(chǔ)器接口、SDRAM控制器、PIO控制的鍵盤(pán)和 LCD顯示接口。這個(gè)充分利用 FPGA的 IP核優(yōu)勢(shì),利用 SOPCBuilder將這些接口、控制器和 PIO集成到 FPGA內(nèi)部。各部分之間是通過(guò) Avalon總線相連,形成以 Nios II處理器為核心的 SOPC系統(tǒng),再通過(guò) TCL腳本語(yǔ)言進(jìn)行管腳配置,把 FPGA內(nèi)部的輸入輸出信號(hào)配置到 FPGA的 IO管腳上,實(shí)現(xiàn)與外圍器件指紋傳感器、SDRAM存儲(chǔ)器芯片、FLASH存儲(chǔ)器芯片、鍵盤(pán)和 LCD顯示連接。使用FPGA內(nèi)部的Nios II 處理器進(jìn)行控制,保證模塊功能得以實(shí)現(xiàn)。整個(gè)識(shí)別模塊的硬件框圖如圖1。
整個(gè)模塊各個(gè)器件的功能是:FLASH專(zhuān)用配置芯片的作用是存儲(chǔ)程序,每次上電時(shí),為整個(gè)系統(tǒng)配置程序。因?yàn)镕PGA是基于RAM結(jié)構(gòu)的,所以在每次掉電時(shí),程序會(huì)丟失。指紋讀取接口 UART是要連接指紋傳感器,進(jìn)行指紋圖像的正確讀取。FLASH存儲(chǔ)器用來(lái)保存指紋模板數(shù)據(jù),保證指紋模板掉電后數(shù)據(jù)不丟失。SDRAM存儲(chǔ)器為輸入指紋數(shù)據(jù)的隨機(jī)存儲(chǔ)和正在匹配的指紋模板數(shù)據(jù)的存儲(chǔ)。PIO控制,就是直接用FPGA管腳控制鍵盤(pán)和LCD顯示。模塊中有1個(gè)4×4的按鍵,功能:錄入指紋健、刪除指紋健、確認(rèn)健、復(fù)位健、刪除輸入字符健、關(guān)機(jī)健、 0~9字符健。LCD顯示匹配結(jié)果和各個(gè)功能的完成情況。中央控制和處理單元 NiosII處理器主要負(fù)責(zé)整個(gè)系統(tǒng)的協(xié)調(diào)工作、對(duì)外圍器件的操作和指紋算法的處理。
圖1
Altera的Cyclone EP1C6Q240C8型號(hào)FPGA,它的LE數(shù)目是5980,內(nèi)部有 2個(gè)PLL,能內(nèi)嵌 3種類(lèi)型的 Nios II 處理器。且和別的 FPGA相比,能滿足模塊功能并且價(jià)格相對(duì)比較低廉。故設(shè)計(jì)中選用這款芯片。
利用 SOPC Builder構(gòu)建 Nios II硬件系統(tǒng)
利用 SOPC Builder 組件在加入整個(gè)系統(tǒng)正常運(yùn)行必須的標(biāo)準(zhǔn)性 Nios II 處理器和 RAM 存儲(chǔ)器(onchip_memory)。這是整個(gè)指紋識(shí)別模塊的核心處理單元。標(biāo)準(zhǔn)性的 NiosII 處理器占用 FPGA1200LE 資源,做到了性能和面積之間平衡,而且在性能上也能滿足本系統(tǒng)設(shè)計(jì)要求,也為以后添加或修改功能做好準(zhǔn)備。RAM 存儲(chǔ)器選擇的數(shù)據(jù)寬度是32bits,存儲(chǔ)容量4K byte。用來(lái)存儲(chǔ)程序中數(shù)據(jù)和數(shù)據(jù)緩存。
為了使 Nios II 軟核與外部存儲(chǔ)器之間進(jìn)行通信,必須在Avalon 總線和連接外部存儲(chǔ)器的總線之間加入 Avalon 三態(tài)總線橋[2]。可從添加 SOPC Builder 組件菜單中直接添加,如圖 2 所示:
圖2 Analon 三態(tài)總線橋
利用 SOPC Builder 最大的優(yōu)勢(shì)就是利用豐富的 IP 核資源。在 SOPC Builder 圖形界面中添加 SDRAM 控制器 IP 核、FLASH 存儲(chǔ)器接口 IP 核、P IOIP 核。SDRAM 控制器數(shù)據(jù)總線采用 16 位,Banks 選擇 4 個(gè),F(xiàn)LASH 存儲(chǔ)器接口采用地址總線20,數(shù)據(jù)總線是16,按鍵選擇 16 個(gè)PIO,液晶的控制端口選擇 3 個(gè)PIO,數(shù)據(jù)端口選擇 8 個(gè)PIO,這些數(shù)據(jù)的選擇根據(jù)選擇的外圍器件而定。利用 IP 核即節(jié)省了開(kāi)發(fā)時(shí)間又增加了系統(tǒng)的穩(wěn)定性。
SOPC Builder 有自定義邏輯功能。把設(shè)計(jì)的指紋讀取接口UART,通過(guò)組件編譯器,創(chuàng)建 UART 組件[3],在 Avalon Components 下的 User Logic 中找到UART,把這個(gè) UART 組件加到 SOPC 系統(tǒng)中。在 SOPC Builder 中添加的 Nios II 處理器、存儲(chǔ)器、各種接口都是通過(guò) Avalon 總線連接到一起的,在 Nios II 處理器協(xié)調(diào)下使各模塊互相協(xié)調(diào)工作。Avalon 總線總線提供一個(gè)通道,使數(shù)據(jù)可以在各個(gè)模塊之間高速的流動(dòng)。對(duì)于總線競(jìng)爭(zhēng)的問(wèn)題,借助于 Avalon 總線所支持的主從外設(shè)訪問(wèn)方式可以得到有效的解決。本設(shè)計(jì)中,將通道中數(shù)據(jù)的流動(dòng)分成主動(dòng)和被動(dòng)兩個(gè)響應(yīng)方式。在主動(dòng)響應(yīng)方式下,數(shù)據(jù)的流動(dòng)由由各部件主動(dòng)提出,在被動(dòng)響應(yīng)方式下,各部件只能響應(yīng)其他部件的請(qǐng)求。SOPC Builder 通過(guò) Auto-Assign Base Addresses 讓系統(tǒng)自動(dòng)分配基地址。通過(guò) Auto-Assign IRQs 讓系統(tǒng)自動(dòng)分配中斷。指紋識(shí)別模塊的硬件整體配置圖如圖 3 所示。
圖3 指紋識(shí)別模塊的硬件整體配置圖
當(dāng)在 SOPC Builder 中配置硬件完成后,運(yùn)行Generate, 生成Nios II 系統(tǒng)。設(shè)計(jì)的FPGA 內(nèi)部的PLL 系統(tǒng)時(shí)鐘電路。當(dāng)在處理指紋算法時(shí),利用 FPGA 內(nèi)部PLL(鎖相環(huán))的作用, 使處理速度加快。為了提高 SDRAM 存儲(chǔ)器的存儲(chǔ)速度,也需要提高系統(tǒng)時(shí)鐘。利用 Quartus II 中的宏功能模塊設(shè)計(jì) PLL 內(nèi)部接口如圖4, clk 為 PLL 的輸入時(shí)鐘25MHz。Ratio 為倍頻 / 分頻系數(shù),C0 是 Nios II 的時(shí)鐘輸入,倍頻系數(shù)為2,所以Nios II 的時(shí)鐘輸入是50MHz,C1 是SDRAM 時(shí)鐘輸入,倍頻系數(shù)是4,所以 SDRAM 的時(shí)鐘輸入頻率是100MHz。
圖4 利用宏模塊設(shè)計(jì)的 PLL 內(nèi)部接口
整個(gè) SOPC 設(shè)計(jì)之后的 FPGA 內(nèi)部 Nios II 系統(tǒng)如圖5 所示,采用 TCL 腳本對(duì) FPGA 進(jìn)行管腳分配,下面是一段SDRAM 的 TCL 腳本 [4] 程序。實(shí)現(xiàn)與外部器件的連接。
圖 5 FPGA 內(nèi)部的 Nios II 系統(tǒng)圖
結(jié)論
使用基于Nios II 處理器的SOPC 解決方案可大大縮短開(kāi)發(fā)時(shí)間,拓展系統(tǒng)開(kāi)發(fā)的靈活性,SOPC 已經(jīng)成為現(xiàn)實(shí)。隨著Nios II 核嵌入式處理器性能的不斷提升以及其開(kāi)發(fā)工具和 IP 核庫(kù)的的不斷完善,其用途將更加廣泛。相信在不遠(yuǎn)的將來(lái), 電子產(chǎn)品設(shè)計(jì)工程師將能夠充分體會(huì)到 Nios II 處理器系統(tǒng)給他們?cè)O(shè)計(jì)帶來(lái)的便捷。而且為我們自主研發(fā)指紋識(shí)別芯片提供了一種方法。
參考文獻(xiàn)
[1] 王建校,危建國(guó).SOPC 設(shè)計(jì)基礎(chǔ)與實(shí)踐.西安 : 西安電子科技大學(xué)出版社,2006,(4):48-49
[2] 熊建.基于 SOPC 的 ICE 調(diào)試器設(shè)計(jì)與實(shí)現(xiàn)技術(shù)研究[D].電子科技大學(xué)碩士論文,2005.3:40
[3] 李或,于宏毅.簡(jiǎn)化 UART 功能的 FPGA 實(shí)現(xiàn).現(xiàn)代電子技術(shù), 2004.4:65
[4] 吳繼華,王誠(chéng).Altera FPGA/CPLD 設(shè)計(jì) ( 高級(jí)篇 ). 北京 : 人民郵電出版社,2005,(7): 252-253