SOPC可編程片上系統是一種獨特的嵌入式微處理系統。首先,它是SoC,即由單個芯片完成整個系統的主要邏輯功能;其次,它是可編程系統,以FPGA為硬件基礎,具有靈活的設計方式,可裁減、可擴充、可升級,並具備軟硬件系統在線可編程的能力。
本系統採用了Altera公司的CycloneIIFPGA開發平台和相應的開發工具QuartusII進行系統硬件部分的開發;利用NiosIIIDE實現了語音識別算法的編譯、鏈接、調試和運行;同時還應用了Altera公司獨具特色的C2H加速工具,實現了語音算法程序的硬件加速,使系統性能得到了明顯的提升。
此次設計採用了二維條形碼進行語音特徵的存儲,一方面是考慮到二維條形碼的成本很低,市場應用潛力巨大;另一方面,正因為在個人證件上擁有了二維條形碼,系統可以脱離數據庫的支持,變得更加靈活實用。
系統結構
本設計採用SOPC的可編程設計思想,以CycloneII中實現的NiosII處理器為核心,系統架構如圖1所示。

圖1系統結構框圖
中心處理模塊可以接收其他模塊的數據,並進行處理,再將處理結果送到外部設備進行顯示和報告。語音採集模塊在用户註冊和認證時採集用户口令(即語音),其中包含A/D採樣、量化、編碼等,並會將數字形式的數據送到中心處理模塊等待處理。系統以串口掃描槍做為條碼掃描設備,用於讀取個人證件上嵌入聲紋特徵的二維條形碼中的數據,這些數據是在用户註冊時生成的。
本設計將SOPC設計與二維條形碼數據存儲相結合,不僅發揮了各自的特點,而且擴寬了應用領域。
系統工作流程分為註冊和驗證兩個階段。註冊過程需要採集同一用户的多個語音,通過註冊算法生成個人的生物特徵,將其嵌入到二維條碼中,再打印條碼到此用户的個人證件上。這樣的證件具備了唯一、不易複製等特點,從而提高了證件的安全性能。對證件進行驗證時,先用條碼掃描設備讀取條碼中的特徵數據,然後現場採集證件持有人的語音,進行比對,給出驗證結果。
硬件的具體實現
本設計以32位NiosII軟核處理器為系統的核心部分,負責執行指令和數據運算。各種IP都可以通過SOPCBuilder連接到Avalon總線上,其中包含用户自定義的外設。用户外設的編寫需要符合Avalon總線的規範。
系統硬件結構如圖2所示,包括CPU、UART、LCD、三態橋、片外存儲器控制,以及各種輸入/輸出控制,這些IP都可以直接複用。這樣的系統設計方法不僅模塊化,而且大大縮短了系統設計週期。FFT運算模塊不僅可以直接使用IP,還可以用C2H加速工具來提高系統性能。在此次設計中,FFT、DCT以及數據量較大的循環運算都採用C2H完成了硬件加速,效果較為明顯。

圖2系統硬件結構
NiosII軟核處理器
NiosII是32位軟核處理器,具有較高的性能。本設計在Altera的CycloneII上實現了處理器的配置,可以通過添加用户自定義指令來增強系統設計性能,同時可以添加多個片內存儲器來提高數據的處理能力。
串口通信
本設計用到的掃描槍通過串口(UART)連接到開發平台上,目的是對二維條形碼中包含語音特徵的數據進行讀取,通過Avalon總線將數據傳送到相應的片外存儲器中等待處理。
TImer
本設計利用SOPCBuilder工具將兩個TImer掛到Avalon總線上。其中一個設置為在IDE中運行C程序時的系統時鐘,另外一個用作計時器。算法程序中設置了多個時間戳(TImestamp),相鄰兩個時間戳內程序段的運行時間可以用這兩個時間戳的差值來表示。時間戳的設置對程序運行沒有影響。設置計時器的最終目的是:將完全的軟件實現與用C2H加速後的程序運行時間進行比較。
語音採集和語音報告驗證結果
系統中,語音採集和語音報告驗證結果部分均由Wolfson公司的WM8731L完成。WM8731L可以獨立於NiosII軟核處理器單獨工作,其控制模塊可按照I2C總線的時序編寫。WM8731L內部含有A/D、D/A模塊,同時具備較高的採樣率和量化精度。本設計採用了8kHz的採樣率,16位的量化精度。
在語音採集部分,由於A/D是串行數據輸出,因此編寫了串行到並行數據轉換以及寫SRAM控制的Verilog模塊。語音報告結果部分通過GPIO與CPU進行數據、地址通信,將不同的語音按照不同的驗證結果播放出來,這些語音的數據已經事先燒寫進FLASH中。GPIO的控制可以通過NiosIDE來完成。類似地,播放語音部分由於從FLASH讀出的數據是並行的,因此編寫了並行到串行數據轉換的Verilog模塊。
加速模塊
首先,在NiosIDE下運行算法C語言程序,利用計時器找出程序運行的瓶頸環節。而後對瓶頸部分利用C2H工具進行硬件加速,從而提高系統性能。這部分主要包括FFT運算加速和循環運算加速模塊。
軟件流程
個人證件的驗證流程如圖3所示。驗證分為兩個基本過程,首先要讀取條碼中的數據,即用户登錄;然後採集用户語音,即用户身份輸入。經過特徵比對,給出驗證結果,由此可以説明用户現場所持證件是否屬於其個人。

圖3驗證過程軟件流程圖
C2H硬件加速
NiosIIC2H加速器可以將ANSIC源程序代碼轉換成用户自定義的硬件加速模塊。利用C2H工具,開發人員首先在AlteraNiosII處理器中開發和調試C語言算法,而後將分析出的C程序瓶頸代碼轉換成硬件加速模塊。硬件加速模塊被掛到Avalon總線上,作為用户外設來使用。由此實現了從軟件運行算法到硬件加速處理的轉換過程。需要注意的是,並不是所有的C代碼都可以轉換成硬件加速模塊。C2H編譯器的特點如下:
①支持大部分的ANSIC代碼和C語言結構,如指針、堆棧、結構體、全局和局部變量、循環、函數調用等;
②C2H編譯器可以將C語言的語法成分映射為硬件結構,而且用户可以控制這些硬件加速結構;
③由於IDE6.0整合了C2H工具,用户無需學習新的開發環境;
④C2H可以利用SOPCBuilder將加速好的硬件結構自動連接到Avalon總線上,無需用户手動處理;
⑤C2H可以產生硬件結構、資源利用率等詳細報告。
本設計中規定用户採集語音的時長約為1s,內容為“你好”。在這樣的條件下,利用計時器計算從預處理到給出識別結果的程序運行時間。系統時鐘頻率設置為50MHz。通過試驗,得出運行時間約為5s,這顯然不能滿足實際需求。對實驗結果進行分析,發現程序運行耗時主要集中在預處理和特徵提取這部分,將其稱為“前端”。經過分析前端的代碼運行情況,設計師發現程序運行時間較長的主要原因是該部分包含了大量的矩陣運算和循環運算。下一步工作就是分析程序的運行瓶頸。經過分析研究發現,本設計算法中的瓶頸主要集中在加窗、FFT和DCT等部分,它們的耗時一般佔到整個程序運行的60%以上。若將這些環節加速成功,性能將有較大提升。
圖4中顯示了在SOPCBuilder中向Avalon總線加載C2H加速器和片內RAM的情況。圖中顯示了兩個加速器:accelerator_c2h_fft_fft和accelerator_c2h_fft_ham,分別對應FFT和加窗(漢明窗)的硬件加速運算過程,SOPCBuilder並沒有為這兩個模塊分配基地址。圖4中最下方的4個片內RAM可以起到數據緩存的作用。SinRAM與CosRAM為FFT加速運算提供正弦和餘弦的查找表數據,dataRRAM與dataIRAM分別用於存儲FFT運算後生成數據的實部和虛部。

圖4C2H加速器和添加的片內RAM
gt是設計中同一用户註冊時的3段語音(內容相同)。通過表1可以看出,完全軟件計算時,FFT耗時大約為2s;利用C2H工具加速後,耗時僅約為0.01s,提速效果良好。而後再將算法程序中其它環節進行加速,則設計的整體性能是可以滿足實際需求的。因此,C2H對運行在SOPC系統上軟件算法的加速處理是十分有效的。
結語
本文闡述了一種基於FPGA平台的應用設計實例,不僅能充分體現SOPC設計理念,而且與生物特徵技術有機結合,發揮了二者的優勢,具有廣闊的應用前景。另外,本設計採用了Altera的C2H加速工具對軟件算法進行硬件加速,實驗結果表明利用這種方法進行設計效果明顯。由於使用C2H工具對算法有一定的限制,因此某些情況下,用户自定義指令和用户外設仍然是不可或缺的設計方法。這幾種設計手段的有機結合是FPGA設計的主要方向。
責任編輯:gt
相關推薦
理解Verilog編碼技巧掌握FPGA中狀態機的寫法掌握非重疊序列檢測代器Verilog代碼編寫
發燒友學院發表於 2020-04-21 00:00
• 26213次閲讀

AD9280 的輸入量程是0-2V,實際輸入電壓範圍是0-1V,如果輸出定義為無符號數,輸出的數字量範圍是0-255,實際輸出...
發表於 2021-01-11 22:53• 16次閲讀

集微網消息,日前,復旦微在回覆上交所問詢函中表示,公司28nm大規模億門級FPGA產品於2019年初....
發表於 2021-01-11 18:06• 357次閲讀

文檔密匙dingxin
發表於 2021-01-11 17:10• 22次閲讀

主板是電腦的核心部件,無論是商用的還是工業級的, 電腦就是通過主板將CPU等各種器件和外部設備有機地....
發表於 2021-01-11 16:42• 17次閲讀

嵌入式技術正在不斷髮展——運行速度更快,結構更緊湊,成本更低。一台配備圖形處理單元(GPU)的超級計....
發表於 2021-01-11 16:29• 301次閲讀

● 獨特的爐門設計,使開門操作安全簡便,確保爐內高温熱氣不外漏。 ● 微電腦PID控制器,操作簡便,....
發表於 2021-01-11 13:58• 21次閲讀

隨着UWB(ultra wide band)信號產生與接收技術的發展,對UWB信號傳播特性的認識逐漸....
發表於 2021-01-11 12:51• 72次閲讀

發射光譜層析(EST)技術是一種不干擾原待測場分佈的測量診斷技術,他在熱物理量測試、等離子體診斷等方....
發表於 2021-01-11 12:49• 28次閲讀

程控三相交流功率源的應用十分廣泛,它被大量應用於冶金、通信、化工、電力及軍工等諸多行業。用於交流調壓....
發表於 2021-01-11 09:56• 243次閲讀

2021中國IC風雲榜“年度最具成長潛力獎”徵集現已啓動!入圍標準要求為營收500萬-1億元的未上市....
發表於 2021-01-11 09:37• 225次閲讀

封裝技術已從單芯片封裝開始,發展到多芯片封裝/模塊、三維封裝等階段,目前正在經歷系統級封裝與三維集成....
發表於 2021-01-10 10:44• 259次閲讀

代碼覆蓋率是衡量軟件測試完成情況的指標,通常基於測試過程中已檢查的程序源代碼比例 計算得出。代碼覆蓋....
發表於 2021-01-09 11:12• 304次閲讀

OI-915便攜式壓力校驗系統,也為現場數字壓力校驗系統,由計量測試主機、OI系列壓力源和專用計量測....
發表於 2021-01-09 09:45• 95次閲讀

在英特爾FPGA技術大會上,英特爾有兩個重要發佈,一個是發佈了最新的英特爾 開放式 FPGA 堆棧(....
發表於 2021-01-08 17:52• 376次閲讀

並不是所有元件都具有相同的靜止功耗。根據普遍規則,器件工藝技術尺寸越小,泄漏功耗越大。但並不是所有工....
發表於 2021-01-08 17:46• 209次閲讀

下圖來自原始FPGA專利,顯示了FPGA的基本結構。在此簡化的FPGA中,有9個邏輯塊(藍色)和12....
發表於 2021-01-08 17:29• 270次閲讀

概述 在進行FPGA硬件設計時,引腳分配是非常重要的一個環節,特別是在硬件電路上需要與其他芯片通行的引...
發表於 2021-01-08 17:29• 101次閲讀

FPGA工程師們應該都會吐槽Verilog的語法,相當的不友好,尤其是對於有很多接口的模塊,像AXI4/AXI-Li...
發表於 2021-01-08 17:23• 101次閲讀

時序邏輯電路的時鐘是控制時序邏輯電路狀態轉換的“發動機”,沒有它時序邏輯電路就不能正常工作。因為時序....
發表於 2021-01-08 17:18• 193次閲讀

跨時鐘域處理是FPGA設計中經常遇到的問題,而如何處理好跨時鐘域間的數據,可以説是每個FPGA初學者的必修...
發表於 2021-01-08 16:55• 54次閲讀

具有D寄存器的25位預加器,以增強A路徑的能力 •INMODE控件支持在乘法(A*B)和加法操作(A:B)...
發表於 2021-01-08 16:46• 0次閲讀

根據方正證券發佈的全球半導體漲幅排名的榜單當中,Lattice、Cree、英偉達位列2020年漲幅前....
發表於 2021-01-08 16:31• 412次閲讀

嵌入式安裝是一種安裝工業平板電腦和工業監視器等設備的方式。這種安裝方式更節省空間,更漂亮,你需要知道什麼嵌...
發表於 2021-01-08 15:48• 101次閲讀

受香港科學園的孵化和加速計劃邀請,香港高雲參加2020年第一屆基於通信主題的研討會與工作坊(Them....
發表於 2021-01-08 15:24• 211次閲讀

芯片供電分別為3.3V、2.5V、1.1V,上電前測試3.3V對地阻值1.8K,1.1V對地阻值幾百歐,上電後發現電流大,斷電再...
發表於 2021-01-08 14:42• 55次閲讀

Altera FPGA中NC引腳連接電源或者地會不會有影響?...
發表於 2021-01-08 14:31• 50次閲讀

概述 機器人運動系統式一套高複雜性、高耦合性、驅動力小於機體物理自由度的非線性系統,為了實現機器人在....
發表於 2021-01-08 11:37• 487次閲讀

嵌入式軟件開發 在項目的開發過程中,使用調試工具是必不可少的。 串口簡單靈活的特性常被工程師用作代碼....
發表於 2021-01-08 11:08• 264次閲讀

嘉賓介紹:唐佐林(論壇賬號:@delphi_tang)狄泰軟件學院創始人,活躍在一線的技術專家。一直以來從事系統的架構...
發表於 2021-01-08 10:37• 303次閲讀

作為FPGA的發明者——賽靈思,手握極具靈活性、高性能的FPGA技術,似乎看別的芯片都有一種嫌棄不夠....
發表於 2021-01-08 09:19• 760次閲讀

由於成本上的優勢,目前市場上的NAND閃存主流已經變成了TLC、QLC,MLC都很罕見了,SLC閃存....
發表於 2021-01-08 09:19• 606次閲讀

STM32是ST(意法半導體)公司推出的基於ARM內核Cortex-M3的32位微控制器系列。Cor....
發表於 2021-01-08 09:16• 314次閲讀

ProDAQ6150是一款高精度LXI熱電偶測試設備,可提供16/32/48路測試通道。可支持所有常....
發表於 2021-01-07 16:41• 122次閲讀

ProDAQ6100LXI主機遵循LXIRev1.3標準並提供ClassA或ClassB規格標準的功....
發表於 2021-01-07 16:38• 124次閲讀

AI芯片主要分為CPU 、GPU、FPGA以及ASIC。其中以CPU、GPU、FPGA、ASIC的順....
發表於 2021-01-07 15:59• 261次閲讀

龍芯中科是我國領先的CPU巨頭,龍芯中科從指令集、微結構等底層做起,核心技術全靠自研,打造出令人矚目....
發表於 2021-01-07 15:50• 331次閲讀

2020年12月27日,由中國科學院計算研究所主辦,清華大學、上海交通大學以及鑑釋科技承辦的第八屆開....
發表於 2021-01-07 11:45• 286次閲讀

X86是由Intel推出的一種複雜指令集,用於控制芯片的運行的程序,現在X86已經廣泛運用到了家用P....
發表於 2021-01-07 11:34• 109次閲讀

trace32 for rt-thread support 1.概述 2.trace32的基本使用 ....
發表於 2021-01-07 10:34• 132次閲讀

1.項目需求 FPGA :V7-690T兩片 Resource:兩片FPGA通過X12 gth互聯;....
發表於 2021-01-07 10:15• 128次閲讀

作為一名電子人,咱們都知道隨着摩爾定律的提出,為半導體產業指明瞭之後幾十年的發展之路。然而許多人不知....
發表於 2021-01-07 10:04• 284次閲讀

前一篇文章我們介紹了通過小腳丫FPGA核心開發板來進行門電路的實驗過程。當然,我們還可以畫出更多複雜....
發表於 2021-01-06 17:19• 142次閲讀

今天我們任務是通過小腳丫板載的兩個數碼管來顯示字符,所以首先我們要了解一下數碼管的基本工作原理,接下....
發表於 2021-01-06 17:17• 196次閲讀

用一個僅有14條I/O腿的FPGA最小系統模塊實現幾種儀器的功能,並且要有控制界面。 這款FPGA ....
發表於 2021-01-06 17:14• 183次閲讀

小腳丫FPGA的綜合技能學習平台,功能見下圖: 實物長這樣: 不少同學搭配口袋儀器,可以在這個板上觀....
發表於 2021-01-06 17:12• 177次閲讀

基於STM32F103的一款嵌入式系統學習/控制平台。 它長這個樣子: 正面照 背面照 下面是實物 ....
發表於 2021-01-06 17:10• 187次閲讀

評論