999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的sigmoid函數(shù)FPGA實(shí)現(xiàn)

2014-07-01 23:45:10劉毅飛
微處理機(jī) 2014年1期
關(guān)鍵詞:語言方法設(shè)計(jì)

劉毅飛

(湖北科技學(xué)院生物醫(yī)學(xué)工程學(xué)院,咸寧437100)

基于Python的sigmoid函數(shù)FPGA實(shí)現(xiàn)

劉毅飛

(湖北科技學(xué)院生物醫(yī)學(xué)工程學(xué)院,咸寧437100)

sigmoid函數(shù)是人工神經(jīng)網(wǎng)絡(luò)中通常采用的傳遞函數(shù),采用基于Python的軟硬件協(xié)同設(shè)計(jì)方法,在FPGA上實(shí)現(xiàn)了定點(diǎn)sigmoid函數(shù)。實(shí)驗(yàn)結(jié)果表明采用基于Python的軟硬件協(xié)同設(shè)計(jì)方法,可以利用Python上大量的包和模塊從而大幅度提高系統(tǒng)設(shè)計(jì)、仿真和校驗(yàn)的效率,并且能將軟件算法快速有效地轉(zhuǎn)換為硬件實(shí)現(xiàn),在整個(gè)軟硬件設(shè)計(jì)過程中僅采用Python語言,解決了當(dāng)前系統(tǒng)設(shè)計(jì)中軟硬件設(shè)計(jì)者分別采用不同設(shè)計(jì)語言存在的溝通問題。

Python語言;現(xiàn)場可編程門陣列;sigmoid函數(shù);軟硬件協(xié)同設(shè)計(jì);神經(jīng)網(wǎng)絡(luò)

1 引 言

人工神經(jīng)網(wǎng)絡(luò)在模式識別、分類、人工智能領(lǐng)域有著廣泛應(yīng)用。在人工神經(jīng)網(wǎng)絡(luò)中,sigmoid函數(shù)是人工神經(jīng)網(wǎng)絡(luò)中常用的一種傳遞函數(shù),在嵌入式應(yīng)用中,sigmoid函數(shù)通??梢栽贒SP和FPGA上實(shí)現(xiàn)。FPGA作為一種可編程邏輯器件,具有功耗低、可以在上面實(shí)時(shí)實(shí)現(xiàn)大量的算法。目前在FPGA上面有許多神經(jīng)網(wǎng)絡(luò)和sigmoid函數(shù)的實(shí)現(xiàn)方案,在這些方案中普遍采用Verilog和VHDL語言進(jìn)行硬件設(shè)計(jì),而軟件設(shè)計(jì)通常采用其他高級語言比如C語言,Python語言等,由于這種設(shè)計(jì)方法硬件設(shè)計(jì)者和軟件設(shè)計(jì)者之間采用不同的設(shè)計(jì)語言,存在著仿真和校驗(yàn)效率低、軟硬件設(shè)計(jì)者之間溝通較為困難等問題,而軟硬件協(xié)同設(shè)計(jì)方法在軟硬件設(shè)計(jì)過程中僅采用一種設(shè)計(jì)語言,具體到神經(jīng)網(wǎng)絡(luò)上比如采用SystemC[1],handle-C[2]等基于C語言的軟硬件協(xié)同設(shè)計(jì)語言。Python[3]是一種簡單易學(xué)并且功能強(qiáng)大的編程語言,采用這種新的基于Python的軟硬件設(shè)計(jì)方法,可以通過Python擴(kuò)展包MyHDL[4]使其能支持硬件設(shè)計(jì)和仿真,并能夠在FPGA上快速實(shí)現(xiàn)人工神經(jīng)網(wǎng)絡(luò)中的sigmoid函數(shù)。

2 方法

2.1 sigmoid的FPGA實(shí)現(xiàn)方法

在人工神經(jīng)網(wǎng)絡(luò)中,通常使用的一種sigmoid函數(shù)為log-sigmoid函數(shù),其公式如式(1)所示,函數(shù)f(x)的值域在(0,1)之間,

sigmoid的FPGA實(shí)現(xiàn)方法主要包括LUT查找表,分段線性逼近,高階逼近或泰勒級數(shù)展開[5-8]等。本文采用文獻(xiàn)[8]中描述的分段線性逼近方法,計(jì)算公式如式(2)

2.2 log-sigmoid定點(diǎn)數(shù)的格式表示

通常在FPGA上的數(shù)可以采用定點(diǎn)和浮點(diǎn)兩種方式來表示,由于定點(diǎn)的表示方式盡管設(shè)計(jì)較為復(fù)雜,但是速度較快,占用FPGA資源較小,通常采用定點(diǎn)來完成。本設(shè)計(jì)中輸入數(shù)x為9位定點(diǎn)數(shù),其中符號位1位,整數(shù)4位,小數(shù)4位;輸出y也為9位定點(diǎn)數(shù),符號位1位,整數(shù)1位,小數(shù)位7位。式(2)中的常數(shù)采用符號位1位,整數(shù)1位,小數(shù)位7位的表示方式。

2.3 Python軟硬件協(xié)同設(shè)計(jì)

基于Python的軟硬件協(xié)同設(shè)計(jì)過程如圖1所示[9],圖中Python的硬件設(shè)計(jì)部分采用MyHDL可綜合子集,最后使用MyHDL的toVerilog()方法將MyHDL設(shè)計(jì)自動(dòng)轉(zhuǎn)換為相應(yīng)的Verilog代碼,而Python硬件測試平臺可以使用任何Python語句從而支持復(fù)雜的仿真校驗(yàn)。另外MyHDL支持與Verilog混合仿真,設(shè)計(jì)的硬件測試平臺還可以用來作為轉(zhuǎn)換后的Verilog代碼測試平臺,也就是測試平臺可以重用,不用重新編寫,仿真速度和設(shè)計(jì)效率大大提高。在仿真符合要求之后,就可以進(jìn)行FPGA設(shè)計(jì)流程后續(xù)的下載,綜合和測試工作。

3 結(jié)果

3.1 實(shí)驗(yàn)環(huán)境

Python上存在大量的軟件包,模塊可以用來提高設(shè)計(jì)效率,實(shí)驗(yàn)用到的Python包包括:硬件設(shè)計(jì)和仿真使用MyHDL 0.8[10],繪圖使用matplotlib,定點(diǎn)設(shè)計(jì)采用fixedpoint,數(shù)值運(yùn)算采用numpy。波形查看工具為GTKWAVE,Python開發(fā)環(huán)境使用SPE(Stani’s Python Editor),所有的這些工具都是免費(fèi)的。FPGA器件采用altera公司CycloneII2C35F672C6,編譯綜合采用Quartus 12.1sp1 webpack。

圖1 基于Python軟硬件協(xié)同設(shè)計(jì)流程

3.2 仿真波形

在設(shè)計(jì)過程中生成的VCD仿真波形可以隨時(shí)采用GTKWAVE查看,可以便于校驗(yàn)設(shè)計(jì)是否正確,最終設(shè)計(jì)完成的sigmoid函數(shù)輸出的仿真模擬波形如圖2所示。

3.3 精度及誤差

由于整個(gè)過程采用Python設(shè)計(jì),Python存在大量的軟件包可以使用,來評估設(shè)計(jì)精度和繪制各種圖,采用matplotlib包繪制的MyHdl完成的sigmoid函數(shù)FPGA實(shí)現(xiàn)和numpy的sigmoid函數(shù)比較圖如圖3所示,函數(shù)輸入x在[-8,8]之間時(shí)的sigmoid函數(shù)FPGA實(shí)現(xiàn)誤差如圖4所示。

圖2 MyHDL的sigmoid實(shí)現(xiàn)的仿真波形

圖3 sigmoid函數(shù)的實(shí)現(xiàn)比較圖

圖4 MyHDL的sigmoid函數(shù)的FPGA實(shí)現(xiàn)的誤差圖

3.4 綜合結(jié)果

在仿真,校驗(yàn)和精度符合系統(tǒng)設(shè)計(jì)要求后,采用MyHdl包的toVerilog()方法將Python的sigmoid硬件描述自動(dòng)轉(zhuǎn)換為Verilog描述,另外MyHDL本身還支持與modelsim的協(xié)同仿真。使用modelsim仿真的波形如圖5所示,與圖2的Python環(huán)境下仿真波形相似,采用Quartus編譯綜合后FPGA資源使用情況為:使用125個(gè)LE,9個(gè)寄存器。

圖5 sigmoid函數(shù)的Modelsim仿真波形圖

4 結(jié)束語

采用一種新的基于Python的軟硬件協(xié)同設(shè)計(jì)方法,在FPGA上實(shí)現(xiàn)了在人工神經(jīng)網(wǎng)絡(luò)上廣泛使用的sigmoid函數(shù)。設(shè)計(jì)仿真過程使用Python語言擴(kuò)展包MyHDL及其他python包,使得仿真校驗(yàn)和傳統(tǒng)的設(shè)計(jì)方法相比效率更高,仿真速度也更快。從轉(zhuǎn)換后的硬件綜合結(jié)果可以看出,Python也具有較好的硬件描述能力,可以有效地完成硬件設(shè)計(jì)。

現(xiàn)代系統(tǒng)的算法越來越復(fù)雜,傳統(tǒng)的軟硬件設(shè)計(jì)分開的方法越來越不適應(yīng)市場對設(shè)計(jì)的要求。采用Python的軟硬件協(xié)同設(shè)計(jì)方法,軟硬件設(shè)計(jì)僅僅采用一種語言Python,軟硬件設(shè)計(jì)者之間不存在溝通問題,另外仿真和校驗(yàn)的速度也會(huì)大大提高。所以采用基于Python的軟硬件協(xié)同設(shè)計(jì)方法設(shè)計(jì)效率大大提高,設(shè)計(jì)的產(chǎn)品能更快地進(jìn)入市場。

[1]Lettnin D,Braun A,Bodgan M,et al.Synthesis of Embedded SystemC Design:A Case Study of Digital Neural Networks[C].Proceedings of the Design,Automation and Test in Europe Conference and Exhibition Designers:IEEE,2004:248-253.

[2]Pandya V,Areibi S,Moussa M.A Handel-C Implementation of the Back-Propagation Algorithm On Field Programmable Gate Arrays[C].Proceedings of the 2005 International Conference on Reconfigurable Computing and FPGAs:IEEE,2005.

[3]Python Software Foundation.Python Documentation(Python 2.7)[EB/OL].[2013-6-10],http://www.python.org.

[4]Decaluwe J.MyHDL:a Python-Based Hardware Description Language[J].Linux Journal,2004,127(10):5.

[5]Tommiska M T.Efficient digital implementation of the sigmoid function for reprogrammable logic[C].IEEE Proceedings-Computers and Digital Techniques:IET,2003:403-411.

[6]Himavathi S,Anitha D,Muthuramalingam A.Feedforward Neural Network Implementation in FPGA Using Layer Multiplexing for Effective Resource Utilization[J].IEEE TRANSACTIONS ON NEURAL NETWORKS,2007,18(3):880-888.

[7]Namin,A.H.Leboeuf,K.Wu Huapeng Artificial neural networks activation function HDL coder[C].IEEE International Conference on Electro/Information Technology.Windsor,ON:IEEE,2009:389-392.

[8]Amin H,Curtis K M,Hayes-Gill B R.Piecewise linear approximation applied to nonlinear function of a neural network[C].IEEE Proceedings-Circuits,Devices and Systems:IET,1997:313-317.

[9]劉毅飛.基于Python的軟硬件協(xié)同設(shè)計(jì)方法[J].現(xiàn)代電子技術(shù),2013,36(8):76-78.

[10]Decaluwe J.MyHDLmanual[R].Decaluwe J.2013.5

FPGA Im p lementation of Sigmoid Function Based on Python

LIU Yi-fei
(School of Biomedical Engineering,Hubei University of Science and Technology,Xianning 437100,China)

Sigmoid is an activation function which is commonly used in the artificial neutral network.This paper implementes the sigmoid function on FPGA by using the software and hardware co-design methodology based on Python.The result shows that themethod can highly improve efficiency of system design,simulation and verification by using many python packages and modules,and it can quickly convert the software algorithm to its hardware implementation.During the software and hardware design,only python design language is used,so there is no gap between the hardware and software designers.

Python;FPGA;Sigmoid;Software-hardware co-design;Neutral network

10.3969/j.issn.1002-2279.2014.01.020

TN407

:A

:1002-2279(2014)01-0073-03

劉毅飛(1971-),男,湖北咸寧人,副教授,碩士,主研方向:嵌入式系統(tǒng)、醫(yī)學(xué)圖像處理與分析。

2013-03-15

猜你喜歡
語言方法設(shè)計(jì)
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
瞞天過海——仿生設(shè)計(jì)萌到家
讓語言描寫搖曳多姿
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
累積動(dòng)態(tài)分析下的同聲傳譯語言壓縮
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
我有我語言
捕魚
主站蜘蛛池模板: 一级毛片免费的| 美女内射视频WWW网站午夜| 日韩在线观看网站| 伊在人亞洲香蕉精品區| 日本久久网站| 国产在线观看一区二区三区| 精品久久蜜桃| 国产黄网站在线观看| 在线观看欧美国产| 国产熟睡乱子伦视频网站| V一区无码内射国产| 精品国产女同疯狂摩擦2| 在线国产毛片手机小视频 | 99国产在线视频| 久久人搡人人玩人妻精品| 日本手机在线视频| 成人在线观看一区| 综合人妻久久一区二区精品 | 久久精品免费看一| 狠狠色丁香婷婷| 亚洲av日韩综合一区尤物| 日韩在线成年视频人网站观看| 国产亚洲成AⅤ人片在线观看| 国产成人免费高清AⅤ| 丰满少妇αⅴ无码区| 无码人中文字幕| 久久中文字幕2021精品| 日本尹人综合香蕉在线观看| 成人精品视频一区二区在线| 狠狠色丁婷婷综合久久| 男女男精品视频| 国产真实乱了在线播放| 婷婷五月在线视频| 久久精品这里只有精99品| 国产一区免费在线观看| 午夜视频在线观看免费网站 | 呦视频在线一区二区三区| 亚洲精品成人片在线播放| 免费午夜无码18禁无码影院| 91网站国产| 91免费国产在线观看尤物| 国产精品真实对白精彩久久| 欧美日韩中文国产| 国产一级精品毛片基地| 91口爆吞精国产对白第三集 | 欧美亚洲国产日韩电影在线| 中国一级特黄视频| 久久男人资源站| 欧美一级在线看| 乱色熟女综合一区二区| AV不卡在线永久免费观看| 亚洲精品国产精品乱码不卞| 亚洲国产精品不卡在线| 欧美国产日本高清不卡| 天天爽免费视频| 亚洲av无码久久无遮挡| 麻豆精品在线| 国产成在线观看免费视频| 黄色网站在线观看无码| 亚洲欧美综合另类图片小说区| 依依成人精品无v国产| 亚洲综合久久一本伊一区| 91福利一区二区三区| 亚洲无码免费黄色网址| 国产福利影院在线观看| a级毛片网| 亚洲人成影院在线观看| 少妇精品久久久一区二区三区| 亚洲一区二区三区中文字幕5566| 伊人网址在线| 亚洲天堂视频在线观看| 日韩欧美高清视频| 国产精品3p视频| 看av免费毛片手机播放| 国产精品性| 色综合a怡红院怡红院首页| 国产欧美在线视频免费| 中文字幕伦视频| 欧美日韩在线第一页| 亚洲最大情网站在线观看| 精品99在线观看| 欧美亚洲欧美区|