http://kadhoai.com.cn 2026-04-26 19:24:44 來源:中國自動化學會專家谘詢工作委員會
摘要:與傳統的PLC、PAC以及基於PC的de係xi統tong控kong製zhi技ji術shu不bu同tong,嵌qian入ru式shi控kong製zhi技ji術shu可ke以yi根gen據ju受shou控kong對dui象xiang不bu同tong,為wei我wo們men提ti供gong多duo種zhong選xuan擇ze。微wei控kong製zhi器qi是shi嵌qian入ru式shi控kong製zhi技ji術shu中zhong最zui廣guang為wei人ren知zhi的de一yi項xiang,而er本ben文wen將jiang向xiang你ni展zhan示shiASIC和FPGA技術所具有的一些獨特優勢。
與傳統的PLC、PAC以及基於PC的de係xi統tong控kong製zhi技ji術shu不bu同tong,嵌qian入ru式shi控kong製zhi技ji術shu可ke以yi根gen據ju受shou控kong對dui象xiang不bu同tong,為wei我wo們men提ti供gong多duo種zhong選xuan擇ze。微wei控kong製zhi器qi是shi嵌qian入ru式shi控kong製zhi技ji術shu中zhong最zui廣guang為wei人ren知zhi的de一yi項xiang,而er本ben文wen將jiang向xiang你ni展zhan示shiASIC和FPGA技術所具有的一些獨特優勢。
嵌(qian)入(ru)式(shi)控(kong)製(zhi)係(xi)統(tong)不(bu)同(tong)於(yu)數(shu)據(ju)采(cai)集(ji)係(xi)統(tong)以(yi)及(ji)那(na)些(xie)隻(zhi)針(zhen)對(dui)標(biao)準(zhun)大(da)眾(zhong)化(hua)產(chan)品(pin)的(de)控(kong)製(zhi)係(xi)統(tong)。它(ta)可(ke)以(yi)複(fu)雜(za)到(dao)類(lei)似(si)一(yi)套(tao)電(dian)信(xin)交(jiao)換(huan)係(xi)統(tong),也(ye)可(ke)以(yi)如(ru)一(yi)套(tao)警(jing)報(bao)係(xi)統(tong)。在(zai)不(bu)同(tong)的(de)應(ying)用(yong)中(zhong),我(wo)們(men)可(ke)以(yi)采(cai)用(yong)多(duo)種(zhong)方(fang)案(an)來(lai)滿(man)足(zu)不(bu)同(tong)要(yao)求(qiu)。哪(na)種(zhong)方(fang)案(an)最(zui)適(shi)合(he)你(ni),一(yi)方(fang)麵(mian)由(you)最(zui)終(zhong)的(de)使(shi)用(yong)情(qing)況(kuang)決(jue)定(ding),另(ling)一(yi)方(fang)麵(mian)取(qu)決(jue)於(yu)係(xi)統(tong)生(sheng)命(ming)周(zhou)期(qi)。
有三種CPU方案用在嵌入式係統中最為合適。它們分別是:微控製器、現場可編程邏輯門陣列(FPGA)以及專用集成電路(ASIC)。
微控製器的最大優點是它們的高度適應性。開發人員可以通過C以及C++之類的高級語言對它們實施編程。如今,許多微控製器應用已經相當複雜了,以至於我們能夠采用Linux或Microsoft Windows Embedded之類的操作係統。
微控製器的高度適應性同時也成為了它們最大的缺陷。微控製器往往需要搭配一套編寫複雜、資源全麵的操作係統方能使用。在許多應用中,微控製器無法勝任那些對性能要求極高的任務。

嵌入式控製係統設計師可以利用FPGA和ASIC實現一些非常複雜的算法。這些算法會在結構緊湊的可編程硬件內高速運行。
ASIC和FPGA的特點
如今,我們還可以用另外兩種具有計算功能的芯片替代微控製器。它們分別是現場可編程邏輯門陣列(FPGA)以及專用集成電路(ASIC)。兩(liang)者(zhe)的(de)共(gong)同(tong)特(te)點(dian)首(shou)先(xian)是(shi)都(dou)采(cai)用(yong)了(le)硬(ying)件(jian)化(hua)的(de)布(bu)爾(er)邏(luo)輯(ji)算(suan)法(fa)。其(qi)次(ci),它(ta)們(men)都(dou)具(ju)有(you)高(gao)度(du)的(de)適(shi)應(ying)性(xing),能(neng)夠(gou)實(shi)現(xian)相(xiang)當(dang)豐(feng)富(fu)的(de)邏(luo)輯(ji)功(gong)能(neng)。這(zhe)些(xie)功(gong)能(neng)小(xiao)到(dao)簡(jian)單(dan)的(de)開(kai)關(guan)控(kong)製(zhi),大(da)到(dao)整(zheng)個(ge)微(wei)處(chu)理(li)器(qi)。再(zai)者(zhe),它(ta)們(men)都(dou)可(ke)以(yi)通(tong)過(guo)諸(zhu)如(ru)VHDL和Verilog之類的標準硬件描述語言(HDL)進行編程,不必動用由第三代或更高級編程語言編寫的軟件進行編程。
兩者的不同之處在於一次性工程成本(NRE)和可變成本,以及重複編程性、可測量性、開發時間(與產量有關)等方麵。
FPGA的特點是能夠被重複編程,從而為樣品開發提供了便利。此外,我們還能夠對FPGA進行產生調整和現場升級,從而加快了產品投放市場的速度。一款FPGA平台適用於多種產品,從而起到了平衡開發成本與資源的作用。如果我們采用ASIC或MCU作設計開發,那麼就無法得到這些優勢了。
維基百科把FPGA描述成一種包含了可編程邏輯器件(被稱為“邏輯模塊”)以及可編程互連網絡的半導體設備。邏輯模塊經過編程後能夠實現基本的邏輯門功能,例如與邏輯(AND)和異或邏輯(XOR),以及更複雜的複合邏輯功能,例如解碼器或數學運算功能。
ASIC是一種針對某種特殊應用定製的集成電路,它不具有通用性。例如,一款經過專門設計、用來實現手機中某項特定功能的芯片就是一種ASIC。
在設計一款全定製ASIC時,我們必須繪製出設備的整個光刻層。ASIC技術的NRE大部分消耗在將HDL代碼轉換為半導體結構階段。
無論是設計FPGA還是ASIC,都要先從編寫硬件描述語言(HDL)起步。但是在編寫HDL代碼之前,我們最好采用軟件或硬件仿真的方式來構建、測試並調試整個係統的算法。
算法的開發過程
一般而言,算法最初是作為一種係統工程策略,由用戶提出的使用要求所決定。
以一個機器人割草機為例。整個開發項目可能會從一次完整的計算機仿真開始。其中,處於開發階段的算法(AUD)是由C或C++程序模塊組合而成的。 這些模塊可能是借用了其他項目的開發成果,也可能是通過另外的多種途徑獲得的。
zhexiemokuaiyouyitaozhuanmendejiankongchengxutiaoyong。jiankongchengxudezuoyongshiduiqianrushixitongruanjianshixingdabaocaozuo。takeyizaizhuomiankaifaxitongshangyunxing,erqiezhuomianxitonghaikeyitongshiyunxingdianji、驅動器、傳感器以及圖形用戶界麵的的C或C++仿真模塊。
算(suan)法(fa)開(kai)發(fa)從(cong)一(yi)開(kai)始(shi)就(jiu)是(shi)在(zai)計(ji)算(suan)機(ji)上(shang)進(jin)行(xing)的(de),從(cong)而(er)保(bao)證(zheng)算(suan)法(fa)能(neng)夠(gou)完(wan)成(cheng)預(yu)訂(ding)的(de)功(gong)能(neng)並(bing)且(qie)時(shi)刻(ke)處(chu)於(yu)開(kai)發(fa)人(ren)員(yuan)的(de)掌(zhang)控(kong)之(zhi)中(zhong)。每(mei)一(yi)位(wei)明(ming)智(zhi)的(de)開(kai)發(fa)人(ren)員(yuan)都(dou)會(hui)在(zai)確(que)保(bao)算(suan)法(fa)正(zheng)確(que),並(bing)且(qie)不(bu)會(hui)出(chu)現(xian)潛(qian)在(zai)硬(ying)件(jian)隱(yin)患(huan)的(de)情(qing)況(kuang)下(xia)將(jiang)它(ta)移(yi)交(jiao)給(gei)測(ce)試(shi)工(gong)程(cheng)師(shi)。否(fou)則(ze),你(ni)最(zui)終(zhong)得(de)到(dao)的(de)將(jiang)是(shi)一(yi)台(tai)失(shi)控(kong)的(de)機(ji)器(qi)人(ren),就(jiu)像(xiang)科(ke)幻(huan)小(xiao)說(shuo)中(zhong)描(miao)述(shu)的(de)那(na)樣(yang)。簡(jian)直(zhi)就(jiu)是(shi)測(ce)試(shi)工(gong)程(cheng)101!
yidansuanfabeizhengmingnenggouzhixingzhengquedecaozuo,xitongkaifarenyuanjiukeyijiangtaxiazaidaodiyibujiqirengecaojiyangjizhong,bingqieduitazuoyixilieceshi,yibiankaifayingjianpingtai。duiyingjiankaifachengxueryan,suanfazaiqizhongbanyanlejiqirenceshixiangdaodejiaose。
硬件子係統可能已經經過了基於PC的數據采集係統和控製係統的測試。但是,這些係統中的測試程序與AUD相xiang比bi,隻zhi是shi擁yong有you相xiang同tong的de硬ying件jian接jie口kou規gui範fan而er已yi,在zai其qi他ta方fang麵mian不bu具ju有you相xiang似si性xing。而er且qie,各ge個ge硬ying件jian子zi係xi統tong可ke能neng還hai沒mei有you協xie同tong工gong作zuo過guo。因yin此ci,係xi統tong開kai發fa的de最zui後hou一yi個ge步bu驟zhou就jiu是shi整zheng合he所suo有you的de子zi係xi統tong,並bing且qie統tong一yi調tiao試shi。
係統集成最初可能是從在嵌入式單板計算機(SBC)上運行AUD開始的。這種計算機上運行的其實是用高級語言編寫,並經過硬件仿真調試的相同程序。這是AUD首次對實際硬件實行控製。
這(zhe)一(yi)階(jie)段(duan),許(xu)多(duo)軟(ruan)硬(ying)件(jian)接(jie)口(kou)以(yi)及(ji)軟(ruan)硬(ying)件(jian)自(zi)身(shen)的(de)問(wen)題(ti)都(dou)會(hui)暴(bao)露(lu)出(chu)來(lai)。在(zai)嵌(qian)入(ru)式(shi)控(kong)製(zhi)係(xi)統(tong)中(zhong),硬(ying)件(jian)與(yu)軟(ruan)件(jian)的(de)關(guan)係(xi)非(fei)常(chang)緊(jin)密(mi),以(yi)至(zhi)於(yu)任(ren)何(he)一(yi)處(chu)硬(ying)件(jian)或(huo)軟(ruan)件(jian)的(de)改(gai)動(dong)都(dou)可(ke)能(neng)影(ying)響(xiang)到(dao)對(dui)方(fang)。正(zheng)是(shi)由(you)於(yu)SBC具有機動性和可重複編程的特點,我們才選中它來實現完整的係統調試。

嵌入式控製係統設計師可以先利用FPGA對硬件設計作調試。然後,在產品產量允許的前提下,轉而使用定製ASIC。
硬件實現
在我們解決了所有軟件和硬件問題之後,就可以推出一款在外觀和功能上都與最終產品十分接近的樣品。ASIC與FPGA需要相同的引腳分布,它們都會被安裝到一塊小型母板上。母板可以支持任意一款引腳位置與之吻合的芯片。
如果我們采用FPGA,那麼就需要在母板上額外增加一塊程序存儲芯片。這塊芯片內存儲了FPGA內部的互聯信息。當我們把AUD下載到硬件之後,就會形成這些信息。FP
GA采用了動態RAM技術。這種技術的致命缺陷是具有易失性,FPGA內部運行的程序在斷電之後會全部丟失。
這一階段,係統開發人員可能會采用FPGA進行設計。因為FPGA版本的控製模塊在引腳分布上可以做到與ASIC版本一致,而且FPGA還具有可重複編程的特點。FPGAdezhimingruodiantongshiyeshitazuishouqinglaidedifang。yinweizaixitongtouruxianchangyingyongzhiqian,kaifarenyuanhenkenenghuiduiruanjianzuoshengji。zheyangdehua,ruguowomenzhishiweileshengjiASIC程序就開發一款新產品,這樣做在成本方麵顯然是行不通的。
即使我們的設計最終成為了一款產量達到千位數的標準產品,FPGA在經濟性方麵仍然具有優勢。隻有在產量達到幾百萬甚至更多的情況下,將AUD轉換到ASIC所產生的大量NRE投入才可能被補償掉。當然,對於消費類產品而言,這樣的產量很快就能達到。
把AUD轉換為適用於FPGA的HDL程序可能很困難也可能很簡單。這一方麵要看我們采用什麼工具將已有的經過調試的軟件轉換為指定硬件的HDL代碼,另一方麵要看這種轉換是在哪一階段完成的。
例如,Mathworks正在與ASIC、FPGA供應商合作開發一套工具,幫助工程師將那些采用Matlab與Simulink編寫的AUD代碼轉換為HDL,另有一些工具能夠將C和C++代碼轉換為HDL。
當然,基本的測試表明,係統在經曆任何重大改變之後,都必須重新作一遍開發測試。為了確保FPGA芯片下載了HDL代碼之後確實能夠執行原始AUD所指定的操作,我們必須做仿真和測試。當我們從FPGA編程轉換到定製ASIC設計時,也會麵臨同樣的問題。
翻譯:翁思健