0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

電子設(shè)計 ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師吳畏 ? 2018-06-20 14:10 ? 次閱讀

0 引言

計算機處理多媒體或文字信息的基礎(chǔ)是對相關(guān)信息進行編碼和解碼,以利于信息的傳輸、顯示和保護[1]。面對巨大信息量的處理需求,快速高效的編解碼系統(tǒng)能夠有效提高信息處理能力。近年來,隨著神經(jīng)網(wǎng)絡(luò)的發(fā)展和應用,利用神經(jīng)網(wǎng)絡(luò)進行數(shù)學函數(shù)回歸的方案,為信息的編解碼提供了簡單有效的途徑[2]。自編碼神經(jīng)網(wǎng)絡(luò)是一種無監(jiān)督的人工神經(jīng)網(wǎng)絡(luò),其利用反向傳播算法訓練使得網(wǎng)絡(luò)的輸出值等于輸入值,從而為輸入數(shù)據(jù)學習到一種特征表示,廣泛應用于圖像壓縮和數(shù)據(jù)降維等領(lǐng)域[3-4]。自編碼神經(jīng)網(wǎng)絡(luò)輸出等于輸入的特點適合用于數(shù)據(jù)編碼和解碼,相比于傳統(tǒng)的編解碼方法,如熵編碼[5],該算法更簡潔高效,結(jié)構(gòu)可擴展,實用性更強[3]。

而隨著編解碼器在一些低功耗、便攜式產(chǎn)品中的應用,高速、高精度和低功耗已經(jīng)成為編解碼器的一種發(fā)展趨勢?,F(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)是一種可編程邏輯器件,用戶可通過硬件描述語言完成硬件電路設(shè)計。FPGA內(nèi)部集成了具有高性能的數(shù)字信號處理器和大量存儲資源,可以高效低成本地實現(xiàn)定點運算和數(shù)據(jù)存儲,因此目前FPGA是一種理想的編解碼器實現(xiàn)平臺[5-6]。FPGA中各個硬件模塊并行執(zhí)行,可將計算量大的算法映射到FPGA中實現(xiàn)硬件加速。有學者嘗試采用FPGA作為神經(jīng)網(wǎng)絡(luò)的實現(xiàn)平臺,并取得了優(yōu)異的性能,尤以速度和功耗突出[7-8]。綜上所述,基于自編碼神經(jīng)網(wǎng)絡(luò),以FPGA為實現(xiàn)平臺的編解碼系統(tǒng),具有靈活性高、高速、低功耗等特點,可廣泛應用于各種低功耗、便攜式應用中。

本文通過分析自編碼神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和特點,提出了一種用于數(shù)據(jù)解碼的硬件實現(xiàn)架構(gòu)。根據(jù)網(wǎng)絡(luò)計算過程中包含的運算和神經(jīng)元間的并行性特點,結(jié)合FPGA高并行、低功耗和高速數(shù)據(jù)處理的優(yōu)勢,將自編碼神經(jīng)網(wǎng)絡(luò)的解碼部分映射到FPGA中。該架構(gòu)具有速度快、功耗低等特點,除文中論述的文字信息解碼外,該架構(gòu)具備擴展到圖像編解碼的可能性。

1 自編碼神經(jīng)網(wǎng)絡(luò)

人工神經(jīng)網(wǎng)絡(luò)是基于生物神經(jīng)網(wǎng)絡(luò)的基本原理,通過模擬人腦神經(jīng)系統(tǒng)的結(jié)構(gòu)和功能而建立的一個數(shù)學模型,該模型擁有以任意精度逼近一個離散值、實數(shù)值或者目標函數(shù)的功能[9-10]。自編碼神經(jīng)網(wǎng)絡(luò)是一種無監(jiān)督的人工神經(jīng)網(wǎng)絡(luò),其采用反向傳播算法,通過學習試圖使得網(wǎng)絡(luò)的輸出值等于輸入值,從而為輸入數(shù)據(jù)學習到一種特征表示[3-4]。

自編碼神經(jīng)網(wǎng)絡(luò)模型是一種對稱結(jié)構(gòu),中間為隱含層,輸入輸出層神經(jīng)元節(jié)點數(shù)相等且通過訓練使得網(wǎng)絡(luò)輸出值和輸入值相等。如圖1所示為自編碼神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖,輸入層和輸出層含有m個神經(jīng)元,隱含層含有n個神經(jīng)元,輸入層和隱含層下方的“+1”是偏置節(jié)點。自編碼神經(jīng)網(wǎng)絡(luò)的輸入層到隱含層構(gòu)成編碼器,隱含層到輸出層構(gòu)成解碼器,對自編碼神經(jīng)網(wǎng)絡(luò)的訓練過程就是通過調(diào)整編碼器和解碼器中的權(quán)值和偏置,使其逼近一個恒等函數(shù),從而使得網(wǎng)絡(luò)輸出值等于輸入值,這樣網(wǎng)絡(luò)隱含層的輸出數(shù)據(jù)為原始輸入數(shù)據(jù)的另一種特征表示,即該數(shù)據(jù)經(jīng)過自編碼神經(jīng)網(wǎng)絡(luò)的解碼器可以恢復原始的輸入數(shù)據(jù)[11]。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

在本文中,利用自編碼神經(jīng)網(wǎng)絡(luò)的編碼器對輸入數(shù)據(jù)進行編碼,所得到隱含層的輸出數(shù)據(jù)稱為原始數(shù)據(jù)的編碼;該編碼數(shù)據(jù)經(jīng)過自編碼神經(jīng)網(wǎng)絡(luò)的解碼器實現(xiàn)數(shù)據(jù)解碼,從而恢復原始輸入數(shù)據(jù)。下面參照圖1所示的自編碼神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),介紹自編碼神經(jīng)網(wǎng)絡(luò)的前向計算過程,首先計算隱含層n個神經(jīng)元的輸出如式(1):

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

輸出層m個神經(jīng)元的輸出如式(2):

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

通過對網(wǎng)絡(luò)前向計算過程式(1)和式(2)的分析可以看出:自編碼神經(jīng)網(wǎng)絡(luò)對信息的處理為從輸入層開始,經(jīng)過隱含層直到輸出層輸出為止,每一層各個神經(jīng)元之間的計算具有獨立性和并行性;式(1)和式(2)的計算包括乘加運算和激勵函數(shù)運算,且兩者按照順序依次進行。

2 FPGA設(shè)計方案

本章對基于FPGA的硬件解碼系統(tǒng)的設(shè)計需求進行分析,介紹整個系統(tǒng)的硬件架構(gòu)設(shè)計、系統(tǒng)工作原理,最后對設(shè)計中的網(wǎng)絡(luò)計算模塊進行詳細介紹。

2.1 系統(tǒng)分析

本文在FPGA中設(shè)計實現(xiàn)圖1所示自編碼神經(jīng)網(wǎng)絡(luò)的解碼器部分,從而實現(xiàn)數(shù)據(jù)解碼功能。在軟件端對自編碼神經(jīng)網(wǎng)絡(luò)進行訓練,得到網(wǎng)絡(luò)模型后將對現(xiàn)今最通用的單字節(jié)編碼ASCII碼歸一化后的數(shù)據(jù)輸入至自編碼神經(jīng)網(wǎng)絡(luò)的編碼器以獲得編碼數(shù)據(jù),最后將編碼數(shù)據(jù)送至FPGA端實現(xiàn)數(shù)據(jù)解碼以恢復原始輸入的ASCII碼。

通過對自編碼神經(jīng)網(wǎng)絡(luò)前向計算的分析,其計算過程中包括乘加運算和激勵函數(shù)運算,網(wǎng)絡(luò)每層中各個神經(jīng)元之間的計算具有獨立性和并行性。而對編碼數(shù)據(jù)進行解碼操作的過程中,要求所設(shè)計的硬件系統(tǒng)具有實時性特點。FPGA作為一個分布式并行處理系統(tǒng),其內(nèi)部包含大量邏輯單元和計算單元,且具有可編程、速度快、靈活性高、易配置、設(shè)計周期短等特點,因此本文選用FPGA作為所設(shè)計數(shù)據(jù)解碼器的硬件實現(xiàn)平臺。

所設(shè)計的解碼器為圖1所示自編碼神經(jīng)網(wǎng)絡(luò)的隱含層到輸出層部分,其所包含的權(quán)值參數(shù)有n×m個,偏置參數(shù)有m個,n和m分別表示網(wǎng)絡(luò)隱含層和輸出層神經(jīng)元的個數(shù)。由于實現(xiàn)解碼功能僅需要網(wǎng)絡(luò)的前向計算,因此網(wǎng)絡(luò)的權(quán)值和偏置為固定值,所以在設(shè)計中可利用FPGA內(nèi)部資源對網(wǎng)絡(luò)權(quán)值和偏置進行存儲并以固定值的形式參與網(wǎng)絡(luò)運算。

解碼器一次完整的解碼過程可簡述為:輸入數(shù)據(jù)→解碼計算→輸出結(jié)果。在實際應用中往往包含有多組編碼數(shù)據(jù),因此設(shè)計中將編碼數(shù)據(jù)存儲在外部存儲器中以供FPGA讀取。SD存儲卡是一種基于半導體快閃記憶器的新一代記憶設(shè)備,由于它具有體積小、數(shù)據(jù)傳輸快、可熱插拔等優(yōu)良特性,被廣泛應用于便攜式設(shè)備中[13]。因此本設(shè)計選擇使用SD卡來存儲編碼數(shù)據(jù)。SD卡讀操作為每次讀取一個扇區(qū)的數(shù)據(jù),而網(wǎng)絡(luò)計算模塊的輸入數(shù)據(jù)的個數(shù)與圖1所示隱含層神經(jīng)元個數(shù)相同,兩個數(shù)據(jù)量并不匹配。另外,SD卡讀數(shù)據(jù)操作和網(wǎng)絡(luò)計算為異步關(guān)系,因此本設(shè)計中加入FIFO模塊,作為SD卡讀數(shù)據(jù)模塊和網(wǎng)絡(luò)計算模塊兩個異步模塊之間的數(shù)據(jù)緩存器,這樣的設(shè)計也易于擴展到其他不同神經(jīng)元數(shù)量的網(wǎng)絡(luò)結(jié)構(gòu)。

另外,為了便于人為控制對多組編碼數(shù)據(jù)進行解碼,系統(tǒng)設(shè)計中利用按鍵來產(chǎn)生一次解碼操作的起始信號。本設(shè)計是以ASCII碼的編碼和解碼對系統(tǒng)進行測試,因此設(shè)計中采用專門顯示字母、數(shù)字和符號等的工業(yè)字符型液晶LCD1602顯示解碼結(jié)果。最后為了增加FPGA硬件系統(tǒng)穩(wěn)定性,減少系統(tǒng)時鐘的抖動和傾斜,設(shè)計中增加混合模式時鐘管理器(MMCM),用于在與輸入時鐘信號有設(shè)定的相位和頻率關(guān)系的情況下,生成不同的時鐘信號,該信號用于各個模塊工作。

2.2 硬件系統(tǒng)架構(gòu)

基于上述分析,所設(shè)計FPGA硬件系統(tǒng)結(jié)構(gòu)如圖2所示。系統(tǒng)外圍模塊包括存儲編碼數(shù)據(jù)的SD卡,產(chǎn)生差分時鐘信號的晶振,產(chǎn)生復位信號和控制系統(tǒng)工作的按鍵,和顯示網(wǎng)絡(luò)計算結(jié)果的LCD1602顯示器。FPGA內(nèi)部包含三大模塊,分別是:數(shù)據(jù)加載模塊、數(shù)據(jù)處理模塊和混合模式時鐘管理器。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

設(shè)計中利用SD卡來存儲編碼數(shù)據(jù),對SD卡的操作采用簡單的命令/響應協(xié)議[13],全部命令由FPGA發(fā)起,SD卡接收到命令后返回響應數(shù)據(jù)。要讀取SD卡中的數(shù)據(jù),需要首先完成SD卡的初始化,該系統(tǒng)按照功能分別設(shè)計SD卡初始化模塊和SD卡讀數(shù)據(jù)模塊,其符合FPGA模塊化的設(shè)計原則。FIFO模塊作為SD卡和網(wǎng)絡(luò)計算模塊之間的數(shù)據(jù)緩存器,同時又用于異步數(shù)據(jù)傳輸,因此在設(shè)計中采用獨立的讀時鐘和寫時鐘,以用于異步操作。

按鍵檢測模塊不斷讀取外部按鍵輸出信號key_in的值,當檢測到按鍵按下時該模塊產(chǎn)生一個高脈沖信號,該信號將作為一次解碼操作的起始信號。網(wǎng)絡(luò)計算模塊按照神經(jīng)網(wǎng)絡(luò)的計算方法對讀入的數(shù)據(jù)進行計算。顯示驅(qū)動模塊設(shè)計中采用有限狀態(tài)機的方式控制LCD1602的初始化和數(shù)據(jù)顯示操作,該模塊與網(wǎng)絡(luò)計算模塊之間有信號線連接,以實現(xiàn)將計算結(jié)果送至顯示驅(qū)動模塊,顯示驅(qū)動模塊控制LCD1602對計算結(jié)果進行顯示。

在圖2所示的硬件架構(gòu)圖中,混合模式時鐘管理器將外部時鐘分頻產(chǎn)生各個模塊工作所需要的時鐘信號,其通過兩個時鐘線分別與數(shù)據(jù)加載模塊和數(shù)據(jù)處理模塊連接,而數(shù)據(jù)加載模塊和數(shù)據(jù)處理模塊之間通過data_en、data和read_clk 3個信號連接。

2.3 系統(tǒng)工作原理

FPGA的特點是可以實現(xiàn)并行操作,在圖2所示的系統(tǒng)架構(gòu)圖中,數(shù)據(jù)加載模塊和數(shù)據(jù)處理模塊以并行異步的方式工作,下面對其工作原理分別介紹。

數(shù)據(jù)加載模塊:系統(tǒng)上電后,數(shù)據(jù)加載模塊首先控制SD卡初始化模塊對SD卡進行初始化,其初始化操作包含有一系列的命令,在初始化完成后SD卡初始化模塊輸出初始化完成信號。由于SD卡中的編碼數(shù)據(jù)是在PC端以FAT32文件系統(tǒng)的形式寫入的,因此在對SD卡初始化完成后,數(shù)據(jù)加載模塊控制SD卡讀數(shù)據(jù)模塊讀取SD卡中的FAT32文件系統(tǒng)信息,獲取編碼數(shù)據(jù)的長度,即文件所包含的字節(jié)數(shù),該數(shù)據(jù)將用于控制對編碼數(shù)據(jù)的讀取。最后,數(shù)據(jù)加載模塊不斷檢測FIFO中緩存數(shù)據(jù)的數(shù)量,當數(shù)據(jù)的數(shù)量不足設(shè)定值時便控制SD卡讀數(shù)據(jù)模塊將SD卡中的編碼數(shù)據(jù)讀入FIFO中進行緩存。

數(shù)據(jù)處理模塊:當按鍵檢測模塊檢測到外部按鍵被按下時會產(chǎn)生一個高脈沖信號,然后數(shù)據(jù)處理模塊會通過data_en、data和read_clk 3個信號從FIFO中讀取數(shù)據(jù)到網(wǎng)絡(luò)計算模塊進行計算,然后通過顯示驅(qū)動模塊控制將計算結(jié)果顯示在外部的LCD1602上。數(shù)據(jù)加載模塊和數(shù)據(jù)處理模塊之間data_en、data和read_clk 3個信號的時序關(guān)系如圖3所示,當data_en為高電平時,代表FIFO中存在有效的數(shù)據(jù)可以讀取,此時每當read_clk信號的上升沿到達時,從data端口可以讀取一個數(shù)據(jù)。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

如圖4所示為FPGA硬件系統(tǒng)工作流程圖,其中SD卡讀操作和網(wǎng)絡(luò)計算之間為異步關(guān)系,系統(tǒng)中所加入的FIFO模塊作為SD卡讀數(shù)據(jù)模塊和網(wǎng)絡(luò)計算模塊兩個異步模塊之間的數(shù)據(jù)緩存器。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

2.4 網(wǎng)絡(luò)計算模塊設(shè)計

網(wǎng)絡(luò)計算模塊是本設(shè)計中的核心模塊,用于實現(xiàn)圖1中的解碼器,將編碼數(shù)據(jù)和解碼器部分的權(quán)值與偏置按式(2)進行乘加運算,并經(jīng)過激勵函數(shù)得到輸出值。

通過對網(wǎng)絡(luò)前向計算分析可知其包括乘加運算和激勵函數(shù)運算。由于本設(shè)計中自編碼神經(jīng)網(wǎng)絡(luò)的輸入是對ASCII碼歸一化后的數(shù)據(jù),即原ASCII碼值除以128后的值,因此在FPGA模塊中激勵函數(shù)的輸出值需要擴大128倍才是真正的ASCII碼值。由于128=27,在FPGA中乘操作可通過移位實現(xiàn),因此對計算結(jié)果擴大128倍相當于將二進制格式的小數(shù)點右移7位。更進一步,直接截取小數(shù)點后7位即為計算結(jié)果擴大128倍后的ASCII碼值。因此在網(wǎng)絡(luò)計算模塊將計算分為3部分:乘加運算、激勵函數(shù)運算和截位運算,如圖5所示為一個輸出層神經(jīng)元的計算結(jié)構(gòu)示意圖,輸出層各個神經(jīng)元按照圖5所示的計算結(jié)構(gòu)以并行、獨立的方式進行計算。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

模塊中的乘加運算是將編碼數(shù)據(jù)、解碼器部分權(quán)值和偏置按照式(2)中激勵函數(shù)內(nèi)部的乘加運算規(guī)則進行計算。本設(shè)計輸出層神經(jīng)元的激勵函數(shù)為hard_sigmoid函數(shù)[12],表達式為式(3):

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

根據(jù)定義,hard_sigmoid函數(shù)為分段函數(shù),且各段均為線性關(guān)系,其非常便于在FPGA系統(tǒng)中實現(xiàn),即利用條件判斷語句對輸入進行判斷并輸出不同的值,如圖6所示為hard_sigmoid函數(shù)硬件實現(xiàn)示意圖。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

3 系統(tǒng)測試分析

為了測試所設(shè)計自編碼神經(jīng)網(wǎng)絡(luò)在FPGA平臺上的實現(xiàn),本文選擇的網(wǎng)絡(luò)結(jié)構(gòu)為輸入層、輸出層含有4個神經(jīng)元節(jié)點,隱含層含有8個神經(jīng)元節(jié)點。所選擇的應用背景為對ASCII碼的編碼和解碼,其中軟件端完成對ASCII碼的編碼,所得到的編碼數(shù)據(jù)在FPGA端實現(xiàn)解碼。

本實驗測試集由軟件生成,軟件環(huán)境下對ASCII碼中非控制字符(碼值為32~127,共96個)做歸一化處理,然后按照隨機組合的方式4個一組輸入至所設(shè)計的自編碼神經(jīng)網(wǎng)絡(luò)并獲得隱含層的輸出,將該輸出作為FPGA的測試輸入數(shù)據(jù)保存在SD卡中。所選擇的FPGA硬件平臺是Xilinx VC707 FPGA開發(fā)板,系統(tǒng)開發(fā)環(huán)境為Xilinx ISE 14.7,仿真環(huán)境為ModelSim SE 10.1c,如圖7所示為硬件系統(tǒng)測試圖。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

在圖7所示的硬件系統(tǒng)測試圖中,①為SD卡,②為LCD1602顯示屏,③為控制按鍵。系統(tǒng)上電后,通過控制按鍵的按下操作不斷從SD卡中讀取數(shù)據(jù),經(jīng)過網(wǎng)絡(luò)計算模塊計算后將結(jié)果顯示在LCD1602顯示屏上,每次顯示4個字符,如圖7中LCD1602顯示屏的第二行即為解碼后的4個數(shù)據(jù),對應于圖1所示神經(jīng)網(wǎng)絡(luò)的4個輸出。

3.1 網(wǎng)絡(luò)計算結(jié)果分析

神經(jīng)網(wǎng)絡(luò)經(jīng)過訓練得到一組最優(yōu)參數(shù),包括網(wǎng)絡(luò)權(quán)值和偏置。為了在FPGA中實現(xiàn)所設(shè)計自編碼神經(jīng)網(wǎng)絡(luò)的解碼器部分,需要獲取對ASCII碼編碼后的數(shù)據(jù)(神經(jīng)網(wǎng)絡(luò)隱含層的輸出數(shù)據(jù))和解碼器部分的網(wǎng)絡(luò)權(quán)值與偏置。另外由于FPGA僅能對二進制數(shù)據(jù)識別和計算,因此需要將上述數(shù)據(jù)轉(zhuǎn)換為二進制數(shù)據(jù)。

在FPGA設(shè)計中,數(shù)據(jù)的表示方式與FPGA邏輯資源消耗直接相關(guān)的。數(shù)據(jù)表示位數(shù)越多,數(shù)據(jù)精度越高,邏輯資源的消耗也就越多,因此在FPGA設(shè)計中需要權(quán)衡FPGA資源消耗和數(shù)據(jù)精度之間的關(guān)系。結(jié)合本文的實際應用,同時為了更好地權(quán)衡FPGA設(shè)計中的精度、資源占用和功耗,本設(shè)計采用定點數(shù)表示上述數(shù)據(jù)。

由于在FPGA設(shè)計中采用有限位定點數(shù)來表示數(shù)據(jù)時,對原數(shù)據(jù)進行定點量化的過程中會因為數(shù)據(jù)的截斷而產(chǎn)生誤差。根據(jù)網(wǎng)絡(luò)計算模塊的設(shè)計,其輸出為計算結(jié)果二進制小數(shù)點后7位,因此在設(shè)計中需要保證這7位數(shù)據(jù)正確,即與原始輸入數(shù)據(jù)相比,經(jīng)過解碼后輸出結(jié)果的誤差需要小于2-7,即應小于7.812 5×10-3。本文利用MATLAB下的Fixed Point Toolbox對數(shù)據(jù)進行量化,然后分析本設(shè)計中數(shù)據(jù)不同的量化位數(shù)對計算結(jié)果誤差的影響,如圖8所示為定點數(shù)表示中小數(shù)點的位數(shù)和最大誤差之間的關(guān)系。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

從圖8可以看出:

(1)隨著定點數(shù)小數(shù)位數(shù)的增加,最大誤差值不斷降低,即數(shù)據(jù)精度越來越高;

(2)定點數(shù)小數(shù)位變?yōu)?2位之后,其最大誤差基本保持不變;

(3)定點數(shù)小數(shù)位為9位時,其最大誤差與7.812 5×10-3基本一致;定點數(shù)小數(shù)位為10位時,其最大誤差已符合小于7.812 5×10-3的要求。

基于圖8所示的分析結(jié)果,本文在對設(shè)計中的網(wǎng)絡(luò)權(quán)值、偏置和編碼數(shù)據(jù)進行定點數(shù)量化時,小數(shù)位均設(shè)計為10位。進一步通過對網(wǎng)絡(luò)的權(quán)值、偏置和編碼數(shù)據(jù)的大小范圍進行分析可以確定其整數(shù)位的位數(shù),3種數(shù)據(jù)的二進制定點數(shù)格式如表1所示。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

本設(shè)計在ModelSim環(huán)境下對網(wǎng)絡(luò)計算模塊進行仿真,并對模塊輸出的計算結(jié)果與軟件中的原始輸入數(shù)據(jù)進行分析比對,所測試數(shù)據(jù)中的絕對誤差最大值小于7.812 5×10-3,符合設(shè)計中的誤差要求。另外通過硬件實測,所有被編碼后的數(shù)據(jù)經(jīng)過FPGA計算后均被正確解碼,并將結(jié)果顯示在LCD1602上,即所設(shè)計的FPGA硬件系統(tǒng)正確地完成了解碼功能,從而驗證了對所設(shè)計網(wǎng)絡(luò)計算模塊的誤差分析。

3.2 系統(tǒng)性能分析

如表2所示為Xilinx ISE對系統(tǒng)工程綜合實現(xiàn)后列出的主要資源占用情況。可以看出,DSP資源占用較大,主要原因是網(wǎng)絡(luò)計算模塊中的乘加計算和激勵函數(shù)運算均含有定點數(shù)乘法和加法操作,因此會占用較多的DSP資源。另外,BRAM資源的占用主要來自于FIFO模塊的實現(xiàn)和網(wǎng)絡(luò)計算模塊中網(wǎng)絡(luò)權(quán)值與偏置的存儲。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

如表3所示為FPGA硬件實現(xiàn)數(shù)據(jù)解碼的速度和軟件解碼速度的比較,軟件解碼是在MATLAB軟件中測試所得,CPUIntel Core i7,主頻為2.5 GHz。FPGA硬件解碼速度是通過在FPGA中設(shè)置計數(shù)器,對從讀取解碼器輸入數(shù)據(jù)到最后輸出結(jié)果的時鐘進行計數(shù),然后利用ChipScope工具查看計數(shù)值來計算工作時間。表3中的結(jié)果顯示,相比于CPU軟件解碼,本文所設(shè)計的FPGA硬件解碼器加速了7倍以上。

關(guān)于一種基于FPGA的低功耗高速解碼器的設(shè)計

通過Xilinx ISE自帶的XPower工具可以得到FPGA的運行功耗大致為0.389 W,所設(shè)計系統(tǒng)的外圍設(shè)備中LCD1602功耗大致為0.693 W,其余外設(shè)的功耗可忽略不計,因此整個系統(tǒng)總功耗為1 W左右。而相比之下,Intel Core i7-6500U主頻為2.5 GHz的CPU的功耗可高達65 W,可見本系統(tǒng)功耗僅為通用CPU的1.5%,因此特別適合將本文所設(shè)計的基于FPGA的解碼器應用于低功耗便攜式設(shè)備中。

4 結(jié)論

利用神經(jīng)網(wǎng)絡(luò)所具有的輸入輸出之間的映射關(guān)系,可以簡單高效地實現(xiàn)數(shù)據(jù)編碼和解碼。本文根據(jù)自編碼神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)和特點,將其用于編碼和解碼,并在FPGA中實現(xiàn)自編碼神經(jīng)網(wǎng)絡(luò)的解碼器部分。通過對軟件算法的設(shè)計和網(wǎng)絡(luò)計算過程的分析,按照功能和需求對FPGA模塊進行設(shè)計。利用ModelSim軟件對所設(shè)計的各個FPGA模塊進行仿真驗證,利用Xilinx ISE對整個工程進行設(shè)計、綜合和實現(xiàn),并將編程文件下載至Xilinx VC707 FPGA開發(fā)板中進行驗證,同時對FPGA系統(tǒng)的資源占用、計算速度和功耗進行評估。通過測試,對于在軟件中經(jīng)過編碼的數(shù)據(jù),在FPGA系統(tǒng)中可以正確解碼。同時相比于通用CPU,該系統(tǒng)計算過程加速了7倍以上,而運行功耗僅為CPU的1.5%,因此具有速度快、功耗低的特點,特別適合將其應用于實時性、低功耗便攜式設(shè)備中。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1630

    文章

    21779

    瀏覽量

    604892
  • 解碼器
    +關(guān)注

    關(guān)注

    9

    文章

    1144

    瀏覽量

    40848
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4777

    瀏覽量

    100988
收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)字語音解碼器低功耗設(shè)計方案

    本帖最后由 eehome 于 2013-1-5 10:02 編輯 數(shù)字語音解碼器低功耗設(shè)計方案
    發(fā)表于 08-20 12:50

    分享一種具有低功耗意識的FPGA設(shè)計方法

    分享一種具有低功耗意識的FPGA設(shè)計方法
    發(fā)表于 04-29 06:15

    如何去設(shè)計一種IPP嵌入式音頻解碼器

    如何去設(shè)計一種IPP嵌入式音頻解碼器?怎樣對IPP嵌入式音頻解碼器進行優(yōu)化?
    發(fā)表于 06-07 06:01

    一種基于分組的低功耗變長解碼器的設(shè)計

    變長碼作為一種最流行的數(shù)據(jù)壓縮技術(shù),已被許多數(shù)據(jù)壓縮標準,如JPEG,MPEG-2和H.263 等作為編碼方法。但由于解碼過程中的循環(huán)依賴性,限制了解碼吞吐率。本文介紹了一種基于
    發(fā)表于 06-09 11:31 ?17次下載

    歐勝推出超低功耗音頻編碼解碼器

    歐勝推出超低功耗音頻編碼解碼器 歐勝微電子日前宣布推出款帶有W類耳機和線路驅(qū)動的、世界領(lǐng)先的超低功耗編碼
    發(fā)表于 01-13 09:11 ?940次閱讀

    歐勝超低功耗編碼解碼器WM8904帶有W類耳機和線路驅(qū)動

    歐勝超低功耗編碼解碼器WM8904帶有W類耳機和線路驅(qū)動 歐勝微電子(Wolfson)近來宣布推出款帶有W類耳機和線路驅(qū)動的、世界領(lǐng)
    發(fā)表于 01-15 08:34 ?2784次閱讀

    MAX9526低功耗視頻解碼器

    MAX9526低功耗視頻解碼器將NTSC或PAL復合視頻信號轉(zhuǎn)換成8位或10位YCbCr分量視頻,符合ITU-R BT.656標準。該器件上電時進入完全工作模式并自動配置,對檢測到的輸入標準信號進行解碼。
    發(fā)表于 03-08 11:19 ?1715次閱讀
    MAX9526<b class='flag-5'>低功耗</b>視頻<b class='flag-5'>解碼器</b>

    一種具有查錯功能的10B_8B解碼器設(shè)計

    一種具有查錯功能的10B_8B解碼器設(shè)計_鄒陳
    發(fā)表于 01-07 21:39 ?2次下載

    一種高速卷積編解碼器FPGA實現(xiàn)

    一種高速卷積編解碼器FPGA實現(xiàn)
    發(fā)表于 02-07 15:05 ?22次下載

    一種基于低成本FPGA高速8B_10B編解碼器設(shè)計_陳章進

    一種基于低成本FPGA高速8B_10B編解碼器設(shè)計_陳章進
    發(fā)表于 03-19 11:46 ?0次下載

    SSM2603:低功耗音頻編解碼器 數(shù)據(jù)手冊

    SSM2603:低功耗音頻編解碼器 數(shù)據(jù)手冊
    發(fā)表于 03-19 11:42 ?3次下載
    SSM2603:<b class='flag-5'>低功耗</b>音頻編<b class='flag-5'>解碼器</b> 數(shù)據(jù)手冊

    SSM2602: 低功耗音頻編解碼器

    SSM2602: 低功耗音頻編解碼器
    發(fā)表于 03-21 11:04 ?1次下載
    SSM2602: <b class='flag-5'>低功耗</b>音頻編<b class='flag-5'>解碼器</b>

    ADXRS450:低功耗音頻編解碼器 數(shù)據(jù)手冊

    ADXRS450:低功耗音頻編解碼器 數(shù)據(jù)手冊
    發(fā)表于 03-21 14:11 ?1次下載
    ADXRS450:<b class='flag-5'>低功耗</b>音頻編<b class='flag-5'>解碼器</b> 數(shù)據(jù)手冊

    SSM2604:低功耗音頻編解碼器數(shù)據(jù)表

    SSM2604:低功耗音頻編解碼器數(shù)據(jù)表
    發(fā)表于 04-20 08:28 ?8次下載
    SSM2604:<b class='flag-5'>低功耗</b>音頻編<b class='flag-5'>解碼器</b>數(shù)據(jù)表

    ES8336低功耗音頻編解碼器規(guī)格書

    ES8336低功耗音頻編解碼器規(guī)格書
    發(fā)表于 06-13 18:13 ?3次下載