#

Itzuli blogera

Urtero 700 irabazten dituzten FPGA ingeniarientzako ordainpeko aholkuak

FPGA PCB

FPGA PCB–FPGA ingeniariak

Soldata handia irabazi nahi duten FPGAko ingeniarientzat, kontuan hartu beharreko hainbat estrategia gako daude. Lehenik eta behin, funtsezkoa da FPGA diseinuan eta garapenean zure gaitasunak hobetzea. Verilog eta VHDL bezalako lengoaietan aditua izateak, baita FPGA garapen tresnak eta plataformak menperatzea ere, alorrean balio handiko aktibo bihurtuko zara.

Hamar urte baino gehiago dira unibertsitate garaian FPGArekin harremanetan jarri nintzenetik. Oraindik gogoan dut EDA plataforman lehen aldiz kronometro digitalak, galdetegien burrunbagailuak eta pasahitzen blokeoak bezalako esperimentuak osatzeko zirrara. Garai hartan, oraindik ez nengoen HDL hardware deskribapen lengoaiarik jasan, beraz, diseinuak 74 serieko gailu logikoen bidez eraiki ziren MAX+plus II ingurune eskematikoan. Geroago, graduondoko ikasketetan eta ondorengo lanetan, Quartus II, Foundation, ISE eta Libero erabili nituen, eta Verilog HDL hizkuntza ere ikasi nuen. Ikasketa prozesu honen bidez, pixkanaka-pixkanaka Verilog-en abilezia estimatzen joan nintzen. Kode txiki batek diseinu eskematiko konplexuak osatu ditzakeela konturatu nintzen, eta hizkuntzaren eramangarritasuna eta funtzionagarritasuna diseinu eskematikoena baino askoz ere indartsuagoa zen.

Estandarren garrantzia FPGA Diseinu Logikoan

Industrian lan egin duten lagunek badakite enpresek estandarrak azpimarratzen dituztela, batez ere diseinu handietarako (software edo hardware). Ia ezinezkoa da estandarrak jarraitu gabe lortzea. Diseinu logikoa ez da salbuespena: estandarrak betetzen ez badituzu, akatsak aurki ditzakezu hilabete geroago arazketan. Idatzi duzun kodeari erreparatuz gero, baliteke seinale-funtzio asko ahaztuta izatea, are gutxiago erroreen egiaztapena. Norbaitek proiektu baten erdibidean uzten badu, oinordekoak ziurrenik hutsetik hasi beharko du diseinua. Jatorrizko bertsioari eginbide berriak gehitu behar badituzu, ziurrenik berriro hasi beharko duzu, diseinuaren berrerabilgarritasuna lortzea zailduz.

Logikari dagokionez, honako estandar hauek garrantzitsuak direla uste dut:

  1. Diseinuaren Dokumentazioa: Diseinu ideiak, inplementazio zehatzak, etab., dokumentuetan idatzi behar dira, eta zorrotz aztertu eta onartu ondoren bakarrik egin daiteke lanaren hurrengo urratsa. Ikuspegi honek proiektua egoera kontrolagarri eta lorgarri batean mantendu dezake.
  2. Kodearen Normalizazioa: estandarizatu seinaleen izenak, erabili minuskulak seinaleen izenetarako eta maiuskulak parametroetarako, markatu behe-mailako seinale eraginkorrak. _n amaieran (adibidez, rst_n), eta antolatu ataka-seinaleak linea bakoitzeko seinale batekin, simulazio-egiaztapenean erroreak errazago hautemateko.
  3. Erlojuaren domeinuen kudeaketa: Erabili erloju bakarra modulu bakoitzeko, eta erabili erloju-domeinua isolatzeko modulu dedikatu bat erloju-domeinu anitzak dituzten diseinuetan, sintetizadoreak emaitza optimoagoa sintetiza dezan.
  4. Saihestu Logika Konbinatorioa Latchetarako: FPGA diseinuetan, debekatuta dago konbinazio-logika hutsa erabiltzea latchak sortzeko. D txankletak dituzten blokeoak onartzen dira, adibidez, konfigurazio-erregistroak.
  5. Seinalearen Sinkronizazioa: Orokorrean, FPGAra sartzen diren seinaleak sinkronizatu behar dira lehenik sistemaren funtzionamendu-maiztasuna handitzeko.
  6. Erregistratu irteera guztiak: Moduluaren irteera guztiak erregistratu behar dira lan-maiztasuna handitzeko eta diseinuan denbora-konbergentzia lortzeko.
  7. Saihestu itxitako erlojuak: Potentzia baxuko diseinua ez bada, ez erabili erloju itxiak, diseinuaren ezegonkortasuna areagotuko baita.
  8. Erlojua Gaitu Seinaleak: Debekatuta dago kontagailuz banatutako seinaleak beste moduluetarako erloju gisa erabiltzea. Horren ordez, erabili erlojua gaitzeko seinaleak.

Errendimendu handiko denboraren diseinua

Nire nagusiak Huawei eta Junlong-en lan egiten du, beraz, jakina, Huawei eta Alteran diseinu logikoko praktika batzuk kontatu zizkigun. Gure proiektuaren estandarrak Huawei-ko praktiketan oinarritzen dira funtsean. Azken hilabeteetako lanetan, niregan inpresiorik sakonena Huaweiren esaera izan zen: denbora diseinatuta dago, ez simulatu edo osatuta. Gure enpresan, proiektu bakoitzari azterketa zorrotza egiten zaio. Berrikuspena gainditu ondoren bakarrik egin daiteke lanaren hurrengo urratsa. Diseinu logikoa adibide gisa hartuta, kodea berehala idazten hasi beharrean, diseinu-plan orokorra eta diseinu-plan zehatza idatzi behar ditugu. Plan hauek berrikusi eta bideragarritzat jo ondoren, kodeketa has daiteke. Orokorrean, zeregin hauetan ematen den denbora kodeketan emandako denbora baino askoz handiagoa da.

Plan orokorrak moduluen zatiketa, interfaze-seinaleak eta lehen eta bigarren mailako moduluen denborak eta etorkizunean diseinua nola probatu ditu. Plan-maila honetan, garrantzitsua da denborak lehen mailako moduluarekin bat egiten duela ziurtatzea (eta azkenik bigarren mailako modulura). Zer esan nahi du honek? Diseinu zehatza egiten dugunean, zalantzarik gabe, doikuntza batzuk egingo ditugu seinale batzuen denboran. Hala ere, denboraren doikuntza hauek lehen mailako moduluari eragin diezaiokete gehienez, ez diseinu osoari. Gogoan dut eskolan nengoela, denboraren diseinua ulertzen ez nuelako, sarritan beste modulu-seinaleen denbora egokitu behar izaten nuen seinale baten denbora ez zelako betetzen, eta hori oso frustrantea zen.

Diseinu logiko zehatzeko planean, dagoeneko diseinatu dugu modulu maila bakoitzaren interfaze-denbora, eta modulu maila bakoitza nola inplementatzen den zehazten da funtsean. Hori lortu dugulako, modu naturalean kodetzea azkarragoa da. Garrantzitsuena, ikuspegi honek diseinua egoera kontrolagarrian mantendu dezake eta diseinu osoa berriro hasteko beharra saihestu dezake leku batean akatsak direla eta.

Zeintzuk dira zirkuitu baten funtzionamendu-maiztasunari eragiten dioten faktoreak?

Zirkuituaren lan-maiztasuna erregistroen arteko seinalea hedatzeko atzerapenarekin eta erlojuaren okerrarekin lotuta dago batez ere. FPGAko erlojua lerro luzeetan ibiltzen bada, erlojuaren okerra oso txikia da eta ez ikusi egin daiteke. Hemen, sinpletasunerako, seinalearen hedapen-atzerapenari eragiten dioten faktoreak bakarrik hartzen dira kontuan. Seinalearen hedapen-atzerapenak erregistroaren irekiera eta ixte-atzerapena, bideratze-atzerapena eta konbinazio-logika bidezko atzerapena barne hartzen ditu. Zirkuituaren lan-maiztasuna handitzeko, hiru atzerapen hauek landu eta ahalik eta txikien egin behar ditugu.

  1. Murriztu atzerapena bideraketa aldatuz: Zehaztu seinale garrantzitsu batzuen bideratzea, hala nola erlojuak eta kontrol-seinaleak, haiek igarotzeko FPGA ahalik eta gutxien. Horrek bideratze-atzerapena modu eraginkorrean murrizten du.
  2. Murriztu Logika Konbinatorialaren Kopurua: Erabili bilaketa-taulak (LUT) ahalik eta gehien ate logikoen ordez. Gainera, pertsona batzuek kaskadako erregistroak erabiltzen dituzte ate kopurua murrizteko, baina biderik onena kanalizazioa erabiltzea da ate kopurua murrizteko.

Oro har, ate kopurua murriztea eta bideratzea aldatzea zirkuituaren lan-maiztasuna handitzeko modu eraginkorrak dira. Benetako diseinuan, askotan bien konbinazioa izaten da. Hala ere, hau ez da absolutua. Kasu batzuetan, bideratzea aldatzeak ez du atzerapena murrizten, eta modurik eraginkorrena ate kopurua murriztea da.

Diseinu Logikoaren Erronkak: Sistemaren Arkitektura eta Simulazioaren Egiaztapena

Enpresan sartu nintzenean, nire nagusiak esan zidan diseinu logikoaren zailtasuna ez dagoela RTL mailako kodearen diseinuan, sistemaren arkitekturaren diseinuan eta simulazioaren egiaztapenean baizik. Gaur egun, Txinan, diseinu sintetizagarrietan enfasi handiagoa dago, baina ez dirudi informazio handirik dagoen sistema arkitekturaren diseinuari eta simulazioen egiaztapenari buruz, eta horrek Txinako diseinu maila nahiko baxua isla dezake.

Eskolan nengoenean, beti pentsatu nuen RTL mailako kodea ondo egiten zen bitartean, simulazio-egiaztapena formalitate bat besterik ez zela, eta, beraz, mespretxuz baztertu nuen HDL jokabidearen deskribapenaren sintaxia eta ez nintzela proba-bankuei buruz ikasteko gogorik, uste bainuen. uhin-formak marraztea komenigarria zen; Ez nekien ezer sistema arkitekturaren diseinuari buruz. Enpresan gauza batzuk aurkitu nituen arte ez nintzen konturatu guztiz ezberdina zela.

Izan ere, atzerriko herrialdeetan, simulazioaren egiaztapenean gastatutako denbora eta eskulana RTL mailako kodean gastatutakoaren bikoitza izango da ziurrenik. Orain, simulazioaren egiaztapena bide kritikoa da milioika ate txipak diseinatzeko.

Simulazioaren egiaztapena: modelizazioa eta automatizazioa

Simulazioaren egiaztapenaren zailtasuna, batez ere, diseinuaren zuzentasuna guztiz eta zehaztasunez egiaztatzeko modelatzean datza (batez ere kode-estaldura handitzeko). Prozesu honetan, egiaztapen-abiadura ere garrantzitsua da.

Egiaztapena, termino sinpleetan, estimulu iturrien estaldura nahikoa nola sortu eta gero akatsak detektatu nola sortu da. Pertsonalki, uste dut simulazioaren egiaztapenean oinarrizkoena egiaztapenaren automatizazioa lortzea dela. Horregatik ere testbankuak idatzi behar ditugu. Nire egungo diseinuetako batean, ordubete inguru behar da simulazio-exekuzio bakoitzeko (hau da, benetan, diseinu txikia). Uhin-formak marraztu ezin direnez egiaztapen-automatizazioa lortu, uhin-formak marraztuz simulatzen baditugu, lehenik eta behin, uhin-forma hiltzera eramango da (batez ere algoritmo konplexuak eta sarrerako banaketa estatistikoa duten diseinuetarako), bigarrenik, uhin-formari erreparatuz hilgarria izango da, eta hirugarrena, errorea hautemateko tasa ia zero da. Beraz, nola lortu automatizazioa? Nire maila oso mugatua da oraindik, beraz, BFMri buruz (bus funtzioaren eredua) labur-labur bakarrik hitz egin dezaket.

MAC nukleo bat egitearen adibidea hartuta (atzeko planoa PCI busa da), MAC_BFM, PCI_BFM eta PCI_BM (PCI portaera eredua) behar ditugu. MAC_BFM-ren funtzio nagusia Ethernet fotogramak (estimulu iturriak) sortzea da, ausazko luzera eta fotograma goiburuekin, eta edukia ere ausazkoa da. Bidaltzean, PCI_BMra ere kopiatzen du; PCI_BFM-ren funtzioa PCI busaren portaera simulatzea da, adibidez, proban dagoen gailuak fotograma zuzena jasotzen duenean, eskaera bat bidaliko dio PCI busari, eta PCI_BFM-k erantzungo dio eta datuak ekarriko ditu; PCI_BMren funtzio nagusia MAC_BFM-k bidaltzen duena PCI_BFM-k jasotzen duenarekin alderatzea da. MAC_BFM-ren bidalketa-informazioa eta PCI_BFM-ren harrera-informazioa dituenez, diseinua zentzuzkoa bada, beti automatikoki eta guztiz probatu dezake proban dagoen gailua normaltasunez funtzionatzen duen ala ez, horrela detekzio automatikoa lortuz.

Huawei nahiko ondo egiten ari dela uste da Txinan simulazio-egiaztapenean. Egiaztapen plataforma nahiko ona ezarri dute, eta komunikazioarekin lotutako BFM gehienak ondo eginda daude. Nire lagunari entzun nion orain proba-plataforman gailua proban jarri eta parametroak konfiguratu besterik ez dutela egin behar proban dagoen gailua behar bezala funtzionatzen duen automatikoki detektatzeko.

Hizkuntza Gogoetak

HDL hizkuntzei dagokienez, Txinan jende asko eztabaidatzen ari da zein den hobea VHDL eta Verilog-en artean. Izan ere, pertsonalki uste dut hori ez dela oso esanguratsua. Kanpoko enpresa handi gehienek, funtsean, Verilog erabiltzen dute RTL mailako koderako, beraz, oraindik gomendatzen diet guztiei Verilog ikastea ahalik eta gehien. Simulazioari dagokionez, VHDL jokabidearen modelizazioan Verilog baino ahulagoa denez, oso gutxi daude VHDLrekin egindako simulazio-ereduak. Noski, Verilog ere ez da perfektua. Izan ere, Verilog-ek jokabide konplexuen modelizaziorako duen gaitasuna ere mugatua da. Adibidez, oraindik ez ditu matrizeak onartzen. Algoritmoen diseinu konplexu batzuetan, abstrakziorako goi-mailako lengoaiak behar dira jokabide-ereduak deskribatzeko. Atzerriko herrialdeetan, simulazio-eredu asko SystemC eta E hizkuntza erabiliz egiten dira, eta Verilog erabiltzea zaharkitutzat jotzen da. Huawei-k Txinan duen egiaztapen-plataforma SystemC-n idatzita dagoela dirudi.

Etorkizuneko Perspektibak

Sistemaren arkitekturaren diseinuari dagokionez, lantzen ari naizen diseinua nahikoa handia ez denez, oraindik ez dut esperientzia handirik. Sistema informatikoen arkitekturari buruzko ezagutza batzuk izan behar ditudala sentitzen dut. Zatiketaren oinarrizko oinarria funtzionaltasuna da, eta ondoren, bus-egitura, biltegiratze-egitura eta prozesadore-arkitektura egokiak hautatuz. Sistemaren arkitekturaren zatiketak modulu funtzional bakoitza argi eta inplementatzeko erraza izan behar du. Parte honetan esperientzia txiki bat izan ondoren, pixka bat partekatuko ditudala uste dut, beraz, oraingoz ez zaitut engainatuko.

Ikuspegi pertsonalak

Azkenik, labur laburtzen dut. Praktika gehiago, pentsamendu gehiago eta galdera gehiago egitean datza dena. Praktikak perfektua egiten du. Hobe da zuk zeuk praktikatzea besteen irtenbideak ehun aldiz irakurtzea baino. Praktikarako motibazioa, neurri batean, interesetik eta beste batean presiotik dator. Pertsonalki uste dut azken hau garrantzitsuagoa dela. Baldintzak izateak erraz sortuko du presioa, hau da, hobe da benetako proiektuaren garapenean praktikatzea, ikasketak egiteagatik ikastea baino.

Praktika prozesuan, gehiago pentsatu eta arazoen arrazoiei buruz pentsatu beharko zenuke. Arazoak konpondu ondoren, galdetu zergatik gehiago aldiz. Hau ere esperientzia metatzeko prozesu bat da. Proiektuen erregistroak idazteko ohitura baduzu, are hobea da. Idatzi bertan ebatzitako arazoak, arrazoiak, irtenbideak eta metodoak. Azkenik, egin galdera gehiago. Pentsatu ondoren arazoren bat konpondu ezin baduzu, galdetu. Azken finean, gaitasun indibidualak mugatuak dira. Galdetu ikaskideei, lankideei, bilatzaileei eta sarekideei. Artikulu batek edo lagunen gidaritza batek arazoak azkar konpontzen lagun zaitzake.

Ondorioa

Simulazio funtzionalaren ondoren, FPGAn diseinatzen ari garenez, RTL mailako kodea funtsean sintesiaren emaitzarekin eta simulazio funtzionalaren emaitzarekin diseinuan zehar koherentea izango dela ziurtatzen da. Sintesi-diseinuaren ondorengo denbora-txosten estatikoari denbora-mugak urratzeaz ohartarazten ez den bitartean, arbelean arazketa egiten jarrai dezakegu. Izan ere, Huawei eta ZTE-n, FPGA diseinatzerakoan ere ez dute denbora-simulazioa egiten, denbora-simulazioak denbora asko behar duelako eta efektua ez da zertan hobeagoa izan denboraren analisi estatikoko txostena ikustea baino.

Jakina, ASIC diseinua bada, simulazioaren egiaztapenaren lan-karga handiagoa da. Erloju anitzeko domeinuen diseinua dakarenean, osteko simulazioa egiten da oro har. Hala ere, simulazio ostekoa egin aurretik, egiaztapen-tresna formalak erabili ohi dira eta denboraren analisi estatikoko txostena diseinu-eskakizunen urraketak egiaztatzeko erabiltzen da. Hau egin ondoren, simulazioaren osteko lan-karga askoz txikiagoa izan daiteke.

Baldintza honek hornikuntzan edo ekoizpen-argitalpenean eragina badu, alderatu osagai elektronikoen hornikuntzarekin eta gainazaleko akaberarekin azken fitxategiak berrikusteko bidali aurretik.

Lortu PCB&PCBA aurrekontua azkar

Gomendatzen Mezuak

Hartu aurrekontu bizkor bat
Ezagutu nola lagun dezakeen gure esperientziak PCBA proiektuan.