資料介紹
軟件簡(jiǎn)介
深度學(xué)習(xí)模型的嵌入式部署一直以來(lái)都不是那么得容易,雖然現(xiàn)在有Nvidia Nano和TFLite的樹(shù)莓派部署,但要么硬件成本太高、功耗太大、要么性能太差,難以實(shí)用化和產(chǎn)品化。一方面,AI科學(xué)家和工程師沒(méi)有太多的嵌入式知識(shí),另一方面,嵌入式工程師沒(méi)有太多AI的知識(shí),因此很需要開(kāi)源硬件社區(qū)來(lái)解決這些問(wèn)題。
本文介紹AIoT目前的情況以及面臨的挑戰(zhàn),并講解Maix-EMC的開(kāi)發(fā)緣由,功能和實(shí)現(xiàn)。我們也希望有一定基礎(chǔ)的小伙伴可以加入開(kāi)源社區(qū)一起完善Maix-EMC,讓大家可以轉(zhuǎn)換更多結(jié)構(gòu)的模型到低成本AIoT硬件上。(參與項(xiàng)目貢獻(xiàn)的小伙伴可獲贈(zèng)Maix套裝一份!)
眼瞅著AI紅紅火火,無(wú)數(shù)的嵌入式工程師也眼紅著。與此同時(shí),一大批AI科學(xué)家開(kāi)發(fā)出來(lái)的模型,也面臨落地問(wèn)題?;诎沧炕蛘?a target='_blank' class='arckwlink_none'>Linux的開(kāi)發(fā)者還好,谷歌大佬給了TFLite的支持,但是沒(méi)有AI加速器的普通ARM平臺(tái)板子成本動(dòng)輒已經(jīng)幾百元了,而跑起模型來(lái)卻只有幾幀。。玩單片機(jī)的嵌入式工程師手頭的主控芯片往往算力最高僅數(shù)百M(fèi)OPS,內(nèi)存數(shù)百KB,也沒(méi)有TFLite解釋器,一切都是那么絕望。
?
OpenMV模組
另一方面,AI科學(xué)家和工程師們也有著自己的硬件夢(mèng),估計(jì)很多人早就用樹(shù)莓派玩起了TFLite,或者更深入地玩起了Tengine, NCNN等加速引擎。但是沒(méi)有AI加速器的加持,再怎么優(yōu)化,幀數(shù)還是個(gè)位數(shù),價(jià)格親民的樹(shù)莓派3+攝像頭 成本也要接近300元了!
?
樹(shù)莓派開(kāi)發(fā)板
作為嵌入式設(shè)備主控芯片的老大哥---ARM,早早地出了在自家Cortex-M系列芯片上運(yùn)行的NN后端支持庫(kù):CMSIS-NN。然而其充其量相當(dāng)于TF的ops的底層實(shí)現(xiàn),需要用戶小心翼翼地管理內(nèi)存,設(shè)置量化參數(shù)。這都2019年了,誰(shuí)還想要像5000年前那樣手工擼神經(jīng)網(wǎng)絡(luò)呢?
2019年,谷歌也推出了TFLite for Micro,與ARM相反,谷歌是從復(fù)雜的TFLite往下精簡(jiǎn)。粗粗翻閱TFLite for Micro的代碼,目前還在比較初級(jí)的階段,支持的ops比較少,內(nèi)存管理貌似不夠精簡(jiǎn)(使用了大量的allocator),為了支持一些動(dòng)態(tài)特性有些許效率的犧牲。當(dāng)然其優(yōu)點(diǎn)還是支持從谷歌的TFLite轉(zhuǎn)換。
目前,這兩者都還處于實(shí)驗(yàn)階段,還沒(méi)有跑起來(lái)MobileNet等大家耳熟能詳?shù)妮p量級(jí)網(wǎng)絡(luò),能跑的只是MNIST或者Cifar10等級(jí)的教學(xué)意義上的小網(wǎng)絡(luò),沒(méi)有任何的意義,并且它們對(duì)要求使用者具有豐富的神經(jīng)網(wǎng)絡(luò)經(jīng)驗(yàn),包括但不限于:量化,剪枝,蒸餾,壓縮。這些都大大限制了它的實(shí)用性。
不過(guò),高手在民間,2019年春節(jié),在UP主的QQ群里就活捉了一只來(lái)自拉夫堡大學(xué)的生猛老博,他的嵌入式神經(jīng)網(wǎng)絡(luò)框架NNoM就實(shí)現(xiàn)了不錯(cuò)的可用性,讓用戶可以忽略模型在嵌入式端的實(shí)現(xiàn)細(xì)節(jié),通過(guò)其解釋器自動(dòng)執(zhí)行完畢。在這個(gè)框架下,基本只受限于主控本身內(nèi)存,算力,以及作者本身的填坑速度了。
新的轉(zhuǎn)機(jī)
在2018年末,嘉楠耘智出了一款價(jià)格親民的高素質(zhì)純國(guó)產(chǎn)AI芯片----K210。其低廉的價(jià)格(3美金以下),新穎的核心(RISC-V 64GC),強(qiáng)大的算力(~1TOPS),較低的功耗(0.3~0.5W),以及穩(wěn)定的貨源。吸引了Sipeed和TensorLayer開(kāi)源社區(qū)的注意。圍繞著這款芯片,Sipeed開(kāi)源了一系列的硬件模塊設(shè)計(jì),制作了多款嵌入式板卡:MAIX Go/Bit/Dock/Duino…
?
Sipeed基于K210開(kāi)發(fā)的相關(guān)模組
為了方便大家快速上手,Sipeed開(kāi)發(fā)了易用的MaixPy (MicroPython)環(huán)境, 并兼容了多數(shù)OpenMV接口:
Github: Sipeed - MaixPy Micropython env for Sipeed Maix boards. Contribute to sipeed/MaixPy development by creating an account on GitHub.?github.com
?
?
雖然Maix板卡已經(jīng)具備了運(yùn)行MobileNet等典型網(wǎng)絡(luò)的能力,具備了實(shí)用性;然而,一直有個(gè)問(wèn)題困擾著Sipeed和TensorLayer社區(qū)的小伙伴們:芯片原廠提供的模型轉(zhuǎn)換器nncase不好用啊。原廠的模型轉(zhuǎn)換器主要有以下問(wèn)題:
-
對(duì)于AI開(kāi)發(fā)者不友好
用戶需要經(jīng)過(guò):h5 -> pb -> tflite -> kmodel 多道工序才能完成轉(zhuǎn)換。 -
出錯(cuò)提示過(guò)于簡(jiǎn)略
nncase的出錯(cuò)提示讓人摸不著頭腦,僅會(huì)報(bào)某層類型不支持,連層號(hào)都沒(méi)有。又因?yàn)閷拥霓D(zhuǎn)換涉及到前后文順序,單靠一個(gè)出錯(cuò)時(shí)的層號(hào),很難排查。 -
C#工程過(guò)于模塊化
雖然轉(zhuǎn)換器本身不是很大的工作量,但是nncase的C#工程過(guò)于細(xì)分,有三四級(jí)目錄,又沒(méi)有相應(yīng)文檔說(shuō)明,很多愛(ài)好者即使有心想改進(jìn)nncase,卻也耐不住性子去翻閱這樣繁雜的工程。
那么好的芯片,沒(méi)有好用的工具怎么行,既然原廠的工具不好用,那么開(kāi)源社區(qū)組團(tuán)上吧–>
擼一個(gè)模型轉(zhuǎn)換器吧
Maix-EMC的初衷就是做一個(gè)好用的、好維護(hù)的、社區(qū)型、跨平臺(tái)模型轉(zhuǎn)換器,設(shè)計(jì)目標(biāo)如下:
- 使用Python編寫,簡(jiǎn)潔清晰,適當(dāng)模塊化,讓有一定基礎(chǔ)的AI工程師能參與完善;
- 基于層結(jié)構(gòu)的模型解析,對(duì)于以層為基礎(chǔ)的深度學(xué)習(xí)框架有一定移植性(如,TensorLayer, Keras);
- 使用扁平化,無(wú)需復(fù)雜解析的模型文件,即時(shí)載入內(nèi)存,即時(shí)執(zhí)行;
- 嵌入式端解析器使用層類型進(jìn)行解析,后端運(yùn)算庫(kù)具備可插拔性(比如使用CMSIS-NN作為后端);
這個(gè)構(gòu)想埋在心里很久,一直苦于業(yè)務(wù)繁忙沒(méi)有時(shí)間去實(shí)現(xiàn),最近總算是抽空斷斷續(xù)續(xù)地開(kāi)始挖了這個(gè)坑。。如果你只想使用Maxi-EMC,而不關(guān)心它的細(xì)節(jié),請(qǐng)看這篇文章:
低成本AIoT硬件深度學(xué)習(xí)部署實(shí)戰(zhàn)?zhuanlan.zhihu.com
Maxi-EMC的基礎(chǔ)架構(gòu)
左側(cè):?EMC即這個(gè)工作的左側(cè),將PC端的模型文件轉(zhuǎn)換成二進(jìn)制扁平化的模型文件。PC端的模型文件我們選用了TensorLayer,因?yàn)門ensorLayer的層定義高度比較合適,基本等同于kmodel定義的層的高度,兩者轉(zhuǎn)換基本只是作了 量化,某些層的合并優(yōu)化, 極大地加快了開(kāi)發(fā)進(jìn)度。反觀TensorFlow的pb文件里算子,低到了Add, mul的程度, 需要手工整合這些低層次算子到層定義,非常不便。
中間:這個(gè)工作的中間是kmodel文件,類似于字節(jié)碼或者說(shuō)IR。這里模型文件沒(méi)有采用通用的protobuf(pb)或者flatbuffer(tflite), 因?yàn)閷?duì)于嵌入式平臺(tái)來(lái)說(shuō),它們的解析以及內(nèi)存消耗都太大。為了快速實(shí)現(xiàn)demo,并考慮嵌入式的效率,這里我們借用了k210 sdk中的kmodel v3格式。這個(gè)格式本是為K210設(shè)計(jì),但是同樣適用于普通嵌入式平臺(tái),只需新增通用層類型的定義。
右側(cè):這個(gè)工作的右側(cè)是嵌入式硬件平臺(tái)上的kmodel解釋器(interpreter)。對(duì)于k210, 我們只需借用SDK本身的kpu.c, 稍作修改即可。對(duì)于普通單片機(jī),我們只需將kpu.c中的卷積層計(jì)算函數(shù)替換成普通的cpu計(jì)算函數(shù)。這里的計(jì)算后端可以借用CMSIS-NN或者NNoM的計(jì)算后端,往上套上kmodel層參數(shù)的調(diào)用wrapper即可。
下面我們從左到右介紹整個(gè)流程的實(shí)現(xiàn)。
TensorLayer模型轉(zhuǎn)換為kmodel
層結(jié)構(gòu)的轉(zhuǎn)換
由于TensorLayer使用基于層的模型結(jié)構(gòu)描述,整個(gè)轉(zhuǎn)換過(guò)程比較簡(jiǎn)單。入口文件是edge_model.py,其中g(shù)en_edge_layers_from_network將TensorLayer層轉(zhuǎn)換為EMC的層中間表示形式。這里首先通過(guò)platform_table查表選擇當(dāng)前硬件平臺(tái)使用的TensorLayer層轉(zhuǎn)EMC層的函數(shù)表,以及打包模型的函數(shù)。
platform_table = {
# platform tl layer convertor model generator
'k210' : [tl_to_k210_table, gen_kmodel]
#'stm32' : gen_stm32_layer_func_table,
}
在tl_to_k210_table中,gen_edge_layer_from_network查找到對(duì)應(yīng)的TensorLayer層類型的表項(xiàng),并往后匹配到最長(zhǎng)的列表,將該列表交給layer_generator 來(lái)生成 EMC中間層的list (可能會(huì)在前后加了上傳/下載/量化/去量化的dummy層)
tl_to_k210_table= {
# TL layer class layer_generator merge
'Dense' :[gen_fc_layer, [[],]] ,
'Flatten' :[gen_flatten_layer, [[],]] ,
'Reshape' :[None, [[],]] ,
'GlobalMaxPool2d' :[gen_gmaxpool2d_layer, [[],]] ,
'GlobalMeanPool2d' :[gen_gavgpool2d_layer, [[],]] ,
'MaxPool2d' :[gen_maxpool2d_layer, [[],]] ,
'MeanPool2d' :[gen_avgpool2d_layer, [[],]] ,
'Concat' :[gen_concat_layer, [[],]] ,
'Conv2d' :[gen_k210_conv_layer, [[], ['BatchNorm'],]] ,
'DepthwiseConv2d' :[gen_k210_conv_layer, [[], ['BatchNorm'],]] ,
'ZeroPad2d' :[gen_k210_conv_layer, [['Conv2d'], \
['Conv2d', 'BatchNorm'], \
['DepthwiseConv2d'], \
['DepthwiseConv2d', 'BatchNorm']]] ,
'DummyDequant' :[gen_dequant_layer, [[],]] ,
'SoftMax' :[gen_softmax_layer, [[],]] ,
}
量化操作
由于TensorLayer目前沒(méi)有很好的量化API,所以在EMC的層轉(zhuǎn)換中附帶實(shí)現(xiàn)了參數(shù)量化。
edge_quant.py中可選minmax或者kld量化。實(shí)測(cè)對(duì)于小模型,minmax還是最簡(jiǎn)單直接,快速有效的方式。KLD方式可能略有提升,但有時(shí)卻會(huì)負(fù)優(yōu)化。。為了進(jìn)一步提升精度,我們還使用了Channel Wise的量化方式來(lái)降低精度損失。對(duì)每一個(gè)Channel使用不同的量化參數(shù),直到最后再合并,經(jīng)測(cè)試在大通道的模型中會(huì)有一定的優(yōu)化效果。
后處理及打包
至此我們初步將TensorLayer層轉(zhuǎn)換成了一系列層列表,我們?cè)偈褂胦ptimize_layers來(lái)優(yōu)化層列表,去除一些抵消的層(如相鄰的量化/去量化層),進(jìn)行一些可選的后處理(比如k210的stride修復(fù)步驟)。
然后我們使用gen_kmodel將層列表轉(zhuǎn)換成kmodel層列表中的每個(gè)層都有to_kmodel方法,調(diào)用該方法即可獲得當(dāng)前層符合kmodel格式的layer body的bytearray結(jié)果。gen_kmodel再把所有層的body堆疊在一起,統(tǒng)計(jì)好最大的動(dòng)態(tài)內(nèi)存需求,加好頭部,即得到了kmodel。
EMC 層支持的添加
這里簡(jiǎn)單介紹下如何添加新的層支持。首先在edge_model.py的tl_to_k210_table里加上你需要添加的TensorLayer層與EMC層的轉(zhuǎn)換表項(xiàng)。然后在對(duì)應(yīng)的xxx_layer.py中加上對(duì)應(yīng)的實(shí)現(xiàn)。K210相關(guān)的加速層在k210_layer.py中實(shí)現(xiàn)(目前已經(jīng)基本實(shí)現(xiàn),但是需要修復(fù)一些bug),CPU計(jì)算的非加速層,在edge_layer中實(shí)現(xiàn)。只需模仿其中的層的實(shí)現(xiàn),對(duì)每個(gè)層類型,完成以下一個(gè)函數(shù)和一個(gè)類:
- gen_xxx_layer: 輸入TL layer list, 轉(zhuǎn)換成EMC layer list;
- class xxx_Layer: 需要實(shí)現(xiàn)init方法(填充層信息),以及to_kmodel方法(按kmodel格式填充信息,返回打包的bytearray)
事實(shí)上,你可以實(shí)現(xiàn)自定義的to_xxxmodel方法,在此框架上實(shí)現(xiàn)你自己的模型格式。
kmodel簡(jiǎn)介
kmodel是一個(gè)自定義的,扁平化的模型存儲(chǔ)格式,模型格式的封裝已經(jīng)在EMC代碼里完成,這里簡(jiǎn)要介紹一下:在EMC中,我們調(diào)用了dissect.cstruct, 這是pyhton解析c結(jié)構(gòu)體的庫(kù), 很方便我們使用k210的kpu.c中關(guān)于kmodel的結(jié)構(gòu)體定義。在EMC中,這部分定義放在k210_constant.py中:
"
typedef struct
{
uint32 version;
uint32 flags;
uint32 arch;
uint32 layers_length;
uint32 max_start_address;
uint32 main_mem_usage;
uint32 output_count;
} kpu_model_header_t;
typedef struct
{
uint32 address;
uint32 size;
} kpu_model_output_t;
typedef struct
{
uint32 type;
uint32 body_size;
} kpu_model_layer_header_t;
...
kmodel 頭部是kpu_model_header_t, 描述了 版本,量化位數(shù),層數(shù),最大內(nèi)存占用大小(驅(qū)動(dòng)中一次性申請(qǐng)?jiān)撃P托枰膭?dòng)態(tài)內(nèi)存),輸出節(jié)點(diǎn)數(shù)量。在頭部之后,排列著若干個(gè)kpu_model_output_t,描述輸出節(jié)點(diǎn)的信息。在輸出節(jié)點(diǎn)信息之后,排列著所有層的頭部信息:kpu_model_layer_header_t,依次描述層的類型,層body的大小。在層頭部信息之后,就按層信息依次排列層body數(shù)據(jù),其中某些部分會(huì)要求一定的字節(jié)對(duì)齊。
層類型定義在edge_constant.py中,在原始的kpu.h的定義上稍作修改,區(qū)分了k210專用層和普通層(這里是為了快速移植K210驅(qū)動(dòng)才使用了K210專用層,理論上僅定義一套通用層標(biāo)準(zhǔn)比較好)
K210的kmodel解釋器的實(shí)現(xiàn)
可以參見(jiàn)kpu.c, 驅(qū)動(dòng)會(huì)按順序讀取kmodel每一層的層信息,根據(jù)層類型執(zhí)行對(duì)應(yīng)函數(shù)。
需要注意的是上傳/下載操作。K210內(nèi)存分為6M CPU內(nèi)存 和 2M KPU內(nèi)存。使用KPU計(jì)算的層,需要將待計(jì)算的數(shù)據(jù)上傳到KPU內(nèi)存。在KPU中,可以連續(xù)計(jì)算很多層CONV相關(guān)計(jì)算,而無(wú)需將結(jié)果下載到CPU內(nèi)存。但是一旦下一層是需要CPU運(yùn)算的層,則需要進(jìn)行一次下載才能繼續(xù)運(yùn)行。所以,我們需要留意TensorLayer層的順序,在需要切換KPU/CPU運(yùn)行的層前后,插入上傳,下載的dummy 層。在EMC中,我們使用meta_info[‘is_inai’]字段確認(rèn)當(dāng)前的待計(jì)算內(nèi)容是否在AI內(nèi)存。
另外,KPU計(jì)算,使用的2M內(nèi)存,是以乒乓形式使用,即輸入數(shù)據(jù)在開(kāi)端,則輸出結(jié)果在末端進(jìn)入下一層后,上一層的輸出結(jié)果作為了輸入結(jié)果,在末端,計(jì)算結(jié)果放到了開(kāi)端。
如此往復(fù)計(jì)算,EMC中meta_info[‘conv_idx’]記錄了當(dāng)前的卷積層序號(hào),進(jìn)而可以確認(rèn)當(dāng)前的輸出結(jié)果所在KPU內(nèi)存的偏移。
其它注意點(diǎn),需要下載kpu.c查看:https://github.com/kendryte/kendryte-standalone-sdk/blob/develop/lib/drivers/kpu.c
測(cè)試
我們使用Maix-EMC測(cè)試轉(zhuǎn)換了mbnet的每一層,與PC原始結(jié)果對(duì)比:
?
同一張圖片,alpha=1.0, top5的預(yù)測(cè)概率:
同一張圖片,alpha=0.75, top5的預(yù)測(cè)概率:
同一張圖片,alpha=0.5, top5的預(yù)測(cè)概率:
可以看到相對(duì)PC端的結(jié)果,K210的計(jì)算結(jié)果退化了3~6%,是否是轉(zhuǎn)換器原因造成的呢?
我們對(duì)比下谷歌的TFLite的量化工具的測(cè)試數(shù)據(jù):
發(fā)現(xiàn)對(duì)于MobileNet來(lái)說(shuō),TFLite的量化也造成了5.6%的損失,所以這是正常的損失。(當(dāng)然這里的tflite的精度是指的是數(shù)據(jù)集總體的精度損失,我前面僅測(cè)了一張圖片的概率損失,有差別)。雖然我們有很多方式改善訓(xùn)練后量化損失,但是基本都會(huì)膨脹模型體積,所以在這里不再贅述。
小結(jié)
目前Maix-EMC完成了初步簡(jiǎn)單結(jié)構(gòu)的模型轉(zhuǎn)換功能,可以基于TensorLayer框架快速部署到K210普通上,對(duì)于復(fù)雜模型仍然需要社區(qū)小伙伴一起完善。
- 嵌入式學(xué)習(xí)--基礎(chǔ)準(zhǔn)備
- 學(xué)習(xí)嵌入式的開(kāi)發(fā)線路,新手怎么學(xué)習(xí)嵌入式?
- 深度學(xué)習(xí)嵌入式系統(tǒng)
- 深度學(xué)習(xí)在嵌入式設(shè)備上的應(yīng)用
- 嵌入式學(xué)習(xí)
- 嵌入式學(xué)習(xí)路線怎么學(xué),如何學(xué)習(xí)嵌入式系統(tǒng)
- 基于預(yù)訓(xùn)練模型和長(zhǎng)短期記憶網(wǎng)絡(luò)的深度學(xué)習(xí)模型 19次下載
- 深度模型中的優(yōu)化與學(xué)習(xí)課件下載 3次下載
- 新型基于深度學(xué)習(xí)的目標(biāo)實(shí)時(shí)跟蹤算法 10次下載
- 學(xué)習(xí)嵌入式系統(tǒng)有哪些方向?
- 嵌入式應(yīng)該如何學(xué)習(xí)?嵌入式學(xué)習(xí)方法和嵌入式學(xué)習(xí)路線資料說(shuō)明
- 嵌入式軟件方向的學(xué)習(xí)難點(diǎn)有哪些應(yīng)該如何學(xué)習(xí)
- 嵌入式Linux與物聯(lián)網(wǎng)軟件開(kāi)發(fā)C語(yǔ)言內(nèi)核深度解析書籍的介紹
- 嵌入式DSP學(xué)習(xí)-學(xué)習(xí)筆記 8次下載
- [學(xué)習(xí)嵌入式]嵌入式系統(tǒng)學(xué)習(xí)方法,輕松入門嵌入式 79次下載
- 深度學(xué)習(xí)中的模型權(quán)重 390次閱讀
- 當(dāng)深度學(xué)習(xí)遇上TDA4 1160次閱讀
- 嵌入式系統(tǒng)應(yīng)該學(xué)習(xí)那些知識(shí) 4966次閱讀
- 嵌入式系統(tǒng)的全面解析 3146次閱讀
- 學(xué)習(xí)嵌入式技術(shù)的重點(diǎn)分享 2655次閱讀
- 學(xué)習(xí)嵌入式技術(shù)需要注意很多! 738次閱讀
- 新手學(xué)嵌入式學(xué)習(xí)路線大綱分享 嵌入式學(xué)習(xí)路線怎么學(xué) 3451次閱讀
- 到底該如何學(xué)習(xí)嵌入式? 8810次閱讀
- 基于SCADE模型的高安全性嵌入式軟件解決方案設(shè)計(jì) 2665次閱讀
- 嵌入式時(shí)代已經(jīng)來(lái)臨,嵌入式學(xué)習(xí)的方法你知道多少呢? 2920次閱讀
- 嵌入式系統(tǒng)的特點(diǎn)大匯總 5743次閱讀
- 嵌入式系統(tǒng)開(kāi)發(fā)學(xué)習(xí)心得體會(huì)_經(jīng)驗(yàn)總結(jié) 3w次閱讀
- 學(xué)嵌入式開(kāi)發(fā)入門_學(xué)嵌入式開(kāi)發(fā)需要看哪些書籍 2.4w次閱讀
- 嵌入式Linux的學(xué)習(xí)方法解析 3092次閱讀
- 學(xué)習(xí)嵌入式要什么基礎(chǔ) 4061次閱讀
下載排行
本周
- 1XL4015+LM358恒壓恒流電路圖
- 0.38 MB | 137次下載 | 1 積分
- 2elmo直線電機(jī)驅(qū)動(dòng)調(diào)試細(xì)則
- 4.76 MB | 9次下載 | 6 積分
- 3ADL-GPIB IEEE 488命令集函數(shù)參考手冊(cè)
- 0.67 MB | 2次下載 | 5 積分
- 4儀表培訓(xùn)課件
- 1.82 MB | 2次下載 | 1 積分
- 5DTSD1352導(dǎo)軌式多功能電能表安裝使用說(shuō)明書 V2.15
- 1.19 MB | 1次下載 | 免費(fèi)
- 6BQ79616-Q1和BQ75614-Q1 GUI用戶指南
- 4.51MB | 1次下載 | 免費(fèi)
- 7INA226EVM用戶指南
- 4.7MB | 1次下載 | 免費(fèi)
- 8INA226EVM修訂版A模型用戶指南和軟件教程
- 2.28MB | 1次下載 | 免費(fèi)
本月
- 1XL4015+LM358恒壓恒流電路圖
- 0.38 MB | 137次下載 | 1 積分
- 2新概念模擬電路第四冊(cè)信號(hào)處理電路電子書免費(fèi)下載
- 10.69 MB | 60次下載 | 免費(fèi)
- 3800VA純正弦波逆變器的參考設(shè)計(jì)
- 2.96MB | 32次下載 | 免費(fèi)
- 4純電動(dòng)汽?的主要部件及?作原理
- 5.76 MB | 15次下載 | 5 積分
- 5新概念模擬電路(電子版全集)
- 29.33 MB | 13次下載 | 免費(fèi)
- 6GP328和GP88S對(duì)講機(jī)的維修實(shí)列資料合集免費(fèi)下載
- 0.03 MB | 10次下載 | 10 積分
- 7Type-C VL160數(shù)據(jù)手冊(cè)
- 0.92 MB | 10次下載 | 3 積分
- 8elmo直線電機(jī)驅(qū)動(dòng)調(diào)試細(xì)則
- 4.76 MB | 9次下載 | 6 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935115次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191366次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183329次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73805次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65985次下載 | 10 積分
評(píng)論
查看更多