• 英特爾機器編程工具可檢測代碼中的Bug

    英特爾機器編程工具可檢測代碼中的Bug

    英特爾今天推出了機器編程研究系統ControlFlag,它可以自主檢測代碼中的錯誤。雖然仍處於早期階段,這個新穎的自我監督系統有望成為一個強大的生產力工具,幫助軟件開發者進行耗時費力的Debug。在初步測試中,ControlFlag利用超過10億行未標記的產品級別的代碼進行了訓練並學習了新的缺陷。 英特爾首席科學家、英特爾研究院機器編程研究主任及創始人Justin Gottschlich表示:“我們認為ControlFlag是一個強大的新工具,可以大幅減少評估和Debug代碼所需的時間和成本。研究發現,軟件開發者會花費大約一半的時間用來Debug。通過ControlFlag以及類似的系統,程序員有望大幅減少Debug的時間並把更多時間用於人類程序員最擅長的工作——向機器展現有創造性的新想法。” 在軟件重要性逐漸突顯的今天,開發者依然繼續把不成比例的大量時間用於修復Bug,而不是用於寫代碼。事實上,在IT行業每年花費的1.25萬億美元軟件開發成本中,大約有50%是用於Debug代碼1 。 隨着異構時代的來臨,即由多樣化專用處理器組合來管理當今的海量數據,管理這些系統所需的軟件變得越來越複雜,使得出現Bug的可能性也越來越高。此外,找到能夠為跨架構的硬件正確、高效、安全地寫代碼的程序員非常困難,這同樣也增加了代碼中出現難以發現的新錯誤的可能性。因此,Debug代碼工作將給開發者和整個行業帶來更高的代價。 完全實現的ControlFlag通過自動化處理測試、監控和Debug等繁瑣的軟件開發工作,可以幫助緩解上述挑戰。這不僅可以提高開發者的工作效率並讓他們把更多時間用於創意,也能解決當前軟件開發中成本最高的問題之一。 ControlFlag檢測Bug的功能是通過機器編程實現的,其中融合了機器學習、形式化方法、編程語言、編譯器和計算機系統。 具體來説,ControlFlag通過被稱為異常檢測(anomaly detection)的功能進行運轉。作為自然界中生活的人類,我們通過觀察瞭解到某些被認為是“正常”的模式。類似地,ControlFlag通過學習經過驗證的例子來檢測正常的編程模式,發現代碼中可能造成Bug的異常。此外,不管代碼使用什麼編程語言,ControlFlag都可以檢測這些異常。 ControlFlag的無監督模式識別方法的一個主要優勢是,它可以從本質上學會適應開發者的風格。在有限的需要評估的控制工具輸入信息中,ControlFlag可以識別編程語言中的各種風格,類似於讀者識別英語中使用完整單詞和縮略語的差異。 該工具會學會識別並標記這些風格選擇,並根據其洞察可以自制錯誤識別和建議解決方案,從而讓ControlFlag儘可能避免把兩個開發團隊之間的風格差異認為是代碼錯誤。 ControlFlag已經證明,能夠在廣泛使用的產品級別代碼中發現隱藏的Bug,而這些代碼之前已經被軟件開發者審核過。例如,在分析cURL(一個開源的命令行工具,被程序員廣泛地用於實現互聯網下載)時,ControlFlag發現了一個之前未被發現的異常,促使cURL開發者提出了一個更好的解決方案。 英特爾甚至已經開始評估在內部使用ControlFlag,在自己的軟件和固件產品化中尋找Bug。這是英特爾Rapid Analysis for Developers項目的關鍵組成部分,該項目旨在通過提供專家支持從而幫助程序員加快速度。

    時間:2020-12-04 關鍵詞: 英特爾 Bug 機器編程工具

  • 英特爾神經擬態生態系統發展和研究的最新進展

    英特爾神經擬態生態系統發展和研究的最新進展

    今天,英特爾分享了英特爾神經擬態研究社區(INRC)的最新進展。該社區自2018年成立以來發展迅速,現已擁有100多名成員。英特爾今天宣佈,聯想、羅技、梅賽德斯-奔馳和機器視覺傳感器公司Prophesee加入INRC,共同探索神經擬態計算在商業用例上的價值。此外,得益於英特爾神經擬態研究測試芯片Loihi的計算能力,英特爾還概括介紹了英特爾神經擬態研究社區更多的研究成果。 英特爾神經擬態計算實驗室總監Mike Davies 表示:“短短兩年時間裏,我們已經形成了一個充滿活力的社區,其中包括來自世界各地的數百名研究人員,神經擬態計算在計算效率、速度和智能功能方面帶來數量級提升的潛力讓他們深受鼓舞。我們第一次看到有越來越多證明這種潛力的場景出現。我們計劃與英特爾神經擬態研究社區的合作伙伴一起,在收穫的洞察基礎上,讓這一新生技術實現廣泛和顛覆性的商業應用。” 英特爾之所以創建英特爾神經擬態研究社區,是因為我們認為沒有任何公司能夠憑藉一己之力有效釋放神經擬態計算的全部潛力。通過與學術界、產業界和政府領域的一些知名研究人員進行合作,英特爾致力於解決神經擬態計算髮展中的挑戰,並在未來幾年內將其從研究原型發展為能夠引領產業的產品。 英特爾及其合作伙伴已經展示了在現實世界邊緣用例中所實現的數量級提升,並且看到了在擴展工作負載之後,解決更大的計算問題所取得的早期進展。隨着神經擬態計算的不斷髮展,英特爾和英特爾神經擬態研究社區還發現了神經擬態技術在現實世界中的各種潛在用例,例如:支持更高效且能夠自適應的機器人技術;在大型數據庫中快速搜索相似的內容;讓邊緣設備能夠實時做出複雜規劃和優化決策等。聯想、羅技、梅賽德斯-奔馳和Prophesee的加入,以及英特爾神經擬態研究社區中現有的《財富》世界500強企業和政府實驗室,證明神經擬態技術正在穩步成熟,將從學術實驗室逐步走向產業應用。 通過對英特爾神經擬態系統上的應用進行持續開發、原型設計和測試,英特爾和英特爾神經擬態研究社區成員獲得了越來越多的成果,並顯示在各種工作負載中神經擬態計算都能帶來性能的一致性提升。現有的研究結果——例如模仿人類嗅覺系統、將基於事件的觸感引入機器人,結合英特爾研究院開放日上所介紹的新基準,勾勒出一副新的圖景,即:神經擬態計算非常適合新興的、具有商業相關性的仿生智能負載。 英特爾研究院開放日重點介紹的基準更新包括: · 語音命令識別:埃森哲測試了在英特爾Loihi芯片上識別語音命令的能力和在標準圖形處理單元(GPU)上識別語音命令的能力,發現Loihi不僅達到了和GPU類似的精度,而且能效提高1000倍以上、響應速度快200毫秒。通過英特爾神經擬態研究社區,梅塞德斯-奔馳正在探索如何將這些結果應用到現實用例中,例如在汽車中加入新的語音交互命令。 · 手勢識別:傳統的AI可以很好地處理大數據並識別成千上萬個案例的模式,但它很難識別人與人之間細微的差異——比如我們用於交流的手勢。埃森哲和英特爾神經擬態研究社區合作伙伴展示了Loihi在快速學習和識別個性化手勢方面取得的切實進展。通過處理來自神經擬態相機的信息,只需幾次曝光Loihi即可學習新手勢。這可以應用於各種用例,例如與家庭中的智能產品進行交互或在公共場所的非接觸式顯示。 · 圖像檢索:零售行業的研究人員評估了Loihi對基於圖像的產品搜索應用。他們發現,在保持相同精度水平的情況下,Loihi生成圖像特徵向量的效率比傳統的中央處理單元(CPU)和GPU解決方案提升三倍多。這一結果是對英特爾今年早些時候發佈的神經擬態研究系統Pohoiki Springs的相似度搜索結果的補充,表明Loihi在百萬幅圖像數據庫中搜索特徵向量的速度比CPU快24倍,且能耗低30倍。 · 優化和搜索:英特爾及其合作伙伴發現,Loihi解決優化和搜索問題的效率比傳統CPU高1000倍、速度快100倍。優化問題,如約束滿足可以在邊緣端提供潛在價值,例如:讓無人機能夠實時規劃並做出複雜的導航決策。同樣的問題類型也可以擴展到複雜的數據中心負載,完成協助列車調度和物流優化等任務。 · 機器人技術:羅格斯大學和代爾夫特理工大學的研究人員展示了在Loihi上運行機器人導航以及微型無人機控制應用的演示。代爾夫特理工大學的無人機使用一個包含35個神經元,並且能演進的脈衝網絡進行光流着陸(optic flow landing),頻率超過250千赫茲。羅格斯大學發現,其Loihi解決方案所需的功耗比傳統移動GPU低75倍,而性能卻沒有任何下降。在11月於2020機器人學習大會上發佈的報告中,羅格斯大學的研究人員發現Loihi可以成功學習諸多OpenAI Gym的任務,其精度與深度行動者網絡(Deep Actor Network)旗鼓相當,而能耗卻比移動GPU解決方案降低了140倍。 此外,英特爾及其合作伙伴在英特爾研究院開放日活動上還展示了兩個使用最先進技術的神經擬態機器人演示。與蘇黎世聯邦理工學院的研究人員合作,英特爾展示了Loihi如何自適應地控制水平跟蹤無人機平台,實現最高可達20千赫茲的閉環速度以及200微秒的視覺處理延遲。與傳統解決方案相比,這意味着效率和速度都提高了1000倍。為了解決神經擬態軟件集成問題,英特爾和意大利理工學院(IIT)的研究人員在IIT的iCub機器人平台上演示了多種認知功能在Loihi上運行,其中包括基於快速、小樣本學習(few-shot learning)的物體識別,對學習對象的空間感知,以及對人類互動的實時決策。 隨着英特爾神經擬態研究社區的發展,英特爾將繼續對這個獨特的生態系統進行投資,並與成員合作以提供技術支持,探索神經擬態計算可以在哪些方面解決現實中的各種問題。此外,英特爾將繼續從英特爾神經擬態研究社區汲取經驗,並將其運用於公司即將發佈的下一代神經擬態研究芯片的研發中。 關於英特爾神經擬態研究社區:英特爾神經擬態研究社區是一個由世界各地的學術團體、政府實驗室、研究機構和公司組成的生態系統,它們與英特爾合作,進一步推動神經擬態計算並開發創新的人工智能應用。有興趣參加INRC併為Loihi開發產品技術的研究人員可以訪問英特爾神經擬態研究社區網站。當前成員列表也可以在該網站上查看。

    時間:2020-12-04 關鍵詞: 神經擬態生態系統 INRC 英特爾

  • 英特爾推動集成光電的發展,將用於數據中心

    英特爾推動集成光電的發展,將用於數據中心

    今天,在英特爾研究院開放日上,英特爾着重闡述了其業界領先的技術進步,向實現將光子與低成本、大容量的硅芯片進行集成的長期願景又邁進了一步。這些進步代表着光互連領域的關鍵進展,它們解決了電氣輸入/輸出(I/O)性能擴展上與日俱增的挑戰——目前需要大量數據計算的工作負載已經讓數據中心的網絡流量不堪重負。英特爾展示了包括微型化在內的關鍵技術構建模塊的多項進展,為光學和硅技術的更緊密集成奠定了堅實基礎。 英特爾資深首席工程師,英特爾研究院PHY 研究實驗室主任James Jaussi 表示:“我們正在靠近I/O功耗牆(Power Wall)和I/O帶寬鴻溝,這將嚴重阻礙性能擴展。英特爾在集成光電技術方面所取得的快速進展,將讓業界能夠重新構想通過光來連接的數據中心網絡和架構。目前,我們已經展示了與CMOS芯片緊密集成的一個硅芯片平台上所有關鍵的光學技術構建模塊。我們將光子技術與CMOS硅芯片緊密集成的研究,能夠系統地消除成本、能源和尺寸限制方面的障礙,以便為服務器封裝賦予光互連的變革性能力。” 在數據中心裏,新的以數據為中心的工作負載每天都在增長,隨着服務器間的數據移動不斷增加,對當今的網絡基礎架構提出了新的挑戰。行業正在迅速接近電氣I/O性能的實際極限。隨着計算帶寬需求不斷增長,電氣I/O的規模無法保持同步增長,從而形成了“I/O功耗牆”,限制了計算運行的可用能源。通過在服務器和封裝中直接引入光互連I/O,我們就能打破這一限制,讓數據更有效地移動。 在今天的英特爾研究院活動上,英特爾展示了在關鍵技術構建模塊方面的重大進展,這些構建模塊是英特爾集成光電研究的基礎。這些技術構建模塊包括光的產生、放大、檢測、調製、互補金屬氧化物半導體(CMOS)接口電路以及封裝集成,對於實現集成光電至關重要。此次活動中展示的原型將光子技術與CMOS技術進行了緊密結合,這是未來光子技術與核心計算芯片完全集成的一次概念驗證。英特爾還展示了比傳統組件小1000倍的微型環調製器。一直以來,傳統芯片調製器的大尺寸和高成本都是將光技術引入服務器封裝中的障礙,服務器封裝需要集成一百個這樣的器件。所有上述進展為硅光子的擴展應用奠定了基礎,這些應用不僅限於網絡上層,而且還包括服務器內部以及今後的服務器封裝。 構建模塊關鍵技術包括: · 微型環調製器(micro-ring modulators):傳統的芯片調製器佔用面積太大,並且放置於IC封裝的成本很高。英特爾開發的微型環調製器,將調製器尺寸縮小了1000倍以上,從而消除了將硅光子集成到計算封裝中的主要障礙。 · 全硅光電檢測器(all silicon photo detector):數十年來,業界一直認為硅實際上沒有光檢測功能。英特爾展示的研究結果證明事實並非如此。這一突破的一大好處就是讓成本更低。 · 集成半導體光學放大器:由於我們致力於降低總功耗,因此集成半導體光學放大器必不可少。該設備通過使用與集成激光器相同的材料實現。 · 集成多波長激光器(Integrated multi-wavelength lasers):使用一種稱為波分複用(wavelength division multiplexing)的技術,可以將來自同一激光的不同波長用在同一光束中傳輸更多數據。這樣就能使用單根光纜來傳輸額外數據,從而增加了帶寬密度。 · 集成:使用先進的封裝技術將硅光子與CMOS芯片緊密集成,可實現三大優勢:(1)更低的功耗、(2)更高的帶寬和(3)更少的引腳數(pin count)。英特爾是唯一一家在與CMOS芯片緊密集成的單一技術平台上,展示了將多波長激光器、半導體光學放大器、全硅光電檢測器以及微型環調製器集成到一起的公司。這項研究突破為集成光電技術的擴展奠定了基礎。 英特爾多年前提出宏大的目標,讓光作為連接技術的基礎。本次活動展示的集成光電技術研究即是向這一目標邁進所取得的意義深遠的進展。這項新的研究開啓了更多的可能性,包括更為分散的未來架構,多個功能模塊,如計算、內存、加速器和外圍設備將遍佈整個網絡,並在高速和低延遲鏈路中通過光學技術和軟件互連。

    時間:2020-12-04 關鍵詞: 數據中心 集成光電 英特爾

  • 英特爾發佈第二代Horse Ridge低温量子控制芯片

    英特爾發佈第二代Horse Ridge低温量子控制芯片

    在北京時間12月4日舉辦的英特爾研究院開放日活動上,英特爾推出第二代低温控制芯片Horse Ridge II,這標誌着英特爾在突破量子計算可擴展性方面取得又一個里程碑。可擴展性是量子計算的最大難點之一。在2019年推出的第一代Horse Ridge控制器的創新基礎上,Horse Ridge II支持增強的功能和更高集成度,以實現對量子系統的有效控制。新功能包括操縱和讀取量子位狀態的能力,以及多個量子位糾纏所需的多個量子門的控制能力。 英特爾研究院組件研究事業部量子硬件總監Jim Clarke表示:“憑藉Horse Ridge II,英特爾繼續在量子低温控制領域引領創新,發揮集成電路設計、研究院和技術開發團隊跨學科的深厚專業積澱。我們認為,僅僅增加量子位的數量而不解決由此產生的佈線複雜性,這就好比擁有一輛跑車,但總是堵在車流中。Horse Ridge II進一步簡化了量子電路的控制,我們期待這一進展能夠提高保真度,降低功率輸出,讓我們朝着‘無堵車’的集成量子電路發展再向前邁進一步。” 目前早期的量子系統使用室温電子設備,這些設備由很多同軸線纜連接到稀釋製冷機中的量子位芯片。考慮到製冷機的外形規格、成本、功耗和熱負荷,這種方法無法擴展用於大量量子位。藉助最初版本的Horse Ridge,英特爾邁出了應對上述挑戰的第一步,從根本上簡化了各項需求:不再需要對設備使用多個機架,也不再需要讓成千根電線進出製冷機來運行量子計算設備。相反,英特爾用高度集成的片上系統(SoC)代替了這些笨重的儀器,從而簡化了系統設計,並使用複雜的信號處理技術來加快設置時間,改善量子位性能,並讓工程團隊能夠有效地將量子系統擴展到更大的量子位數。 Horse Ridge II的設計基於第一代SoC產生射頻脈衝以操縱量子位狀態的能力,也稱為量子位驅動(Qubit Drive)。它引入了兩個額外的控制功能,從而可以將外部電子控件進一步集成到在低温製冷機內部運行的SoC中。 新功能包括: · 量子位讀出(Qubit readout):該功能允許讀取當前量子位狀態。該讀取意義重大,因為它允許進行片上低延遲量子位狀態檢測,而無需存儲大量數據,從而節省了內存和功耗。 · 多門控脈衝(Multigate Pulsing):能夠同時控制多個量子門,這對於有效的量子位讀取以及多個量子位的糾纏和操作至關重要,併為打造更具擴展性的系統奠定了基礎。 通過增加在集成電路內運行的可編程微控制器,讓Horse Ridge II能夠就三種控制功能的執行方式上擁有更高級別的靈活性和複雜的控制。該微控制器使用數字信號處理技術對脈衝進行額外濾波,有助於減少量子位之間的串擾。 Horse Ridge II使用英特爾®22納米低功耗FinFET技術(22FFL),其功能已在4開爾文温度下得到驗證。如今,一台量子計算機的工作環境為毫開爾文範圍,僅比絕對零度高几分之一。但是硅自旋量子位(英特爾量子工作的基礎)具有可在1開爾文或更高温度下運行的特性,這將大大降低量子系統製冷的難度。 英特爾的低温控制研究重點,是致力於讓控件和硅自旋量子位達到相同的工作温度水平。正如Horse Ridge II所展示的那樣,這一領域的不斷進步,代表了當今大力擴展量子互連所取得的進步,也是英特爾實現量子實用性長期願景的關鍵要素。

    時間:2020-12-04 關鍵詞: 芯片 量子控制芯片 英特爾

  • 安謀中國發布“玲瓏”多媒體產品線,首款ISP處理器面世

    安謀中國發布“玲瓏”多媒體產品線,首款ISP處理器面世

    2020年12月3日,中國上海——安謀中國今天發佈了全新“玲瓏”多媒體產品線,其中首款產品“玲瓏”i3/i5 ISP處理器由安謀中國本土團隊自主研發,在降噪、清晰度和寬動態等指標上達到業界領先水平,具有高畫質、低延時、可配置能力強、擴展兼容性高等特點。該款ISP處理器可廣泛適用於安防監控、AIoT及智能汽車等領域的視頻、圖像處理工作,滿足不同場景的數據處理需求。 安謀中國產品研發常務副總裁劉澍表示:“近年來,伴隨着智能化、網絡化的發展,視頻圖像處理被廣泛應用於智能安防、AIoT、智能汽車等諸多領域。受益於這些應用在中國的蓬勃發展,中國ISP市場呈現出增長迅速、需求多樣的特徵。為此,安謀中國組建本土團隊,歷時2年多自主研發出具有業界領先水平的‘玲瓏’i3/i5 ISP處理器。在研發過程中,我們始終聚焦中國客户需求,持續推動方案的演進迭代,不僅凸顯了安謀中國在ISP領域一流的研發實力和技術儲備,也進一步提升了安謀中國對本土客户快速響應、全面支持的技術保障能力。“ “玲瓏”ISP處理器依照不同場景的數據處理需求劃分為多個系列產品。今天發佈的i3系列主要針對低功耗的輕量級應用場景,支持2K視頻處理及單路視頻信號接入處理;i5系列主打中高端市場應用,支持4K視頻及多路視頻信號接入處理。未來,“玲瓏”ISP處理器還將推出更多差異化的產品系列,全面覆蓋市場。 “玲瓏”ISP 處理器概覽 “玲瓏”i3/i5 ISP處理器具有以下技術亮點: · 硬件架構靈活可配置,客户可自行選配可選模塊進行集成 · 多元的工作模式,可兼容線性、原始/壓縮的HDR數據,單路及多路攝像頭輸入,支持超高分辨率分屏處理 · DMA接口數據輸入輸出模式可配,可在ISP多個節點輸出不同格式的數據 · 軟件API接口豐富,圖像效果調試流程簡易、清晰 · 提供豐富的軟硬件參考設計,如標定工具、調優工具和MIPI轉DVP數字電路等 在前期市場反饋中,“玲瓏”i3/i5 ISP處理器在業界十分看重的寬動態處理效果和信噪比處理水平上表現優異。依託安謀中國領先的數字寬動態與融合寬動態結合的算法技術,“玲瓏”i3/i5 ISP處理器達到了像素級的局部寬動態自適應提升,並採用多尺度、多級降噪技術,以支持2D/3D自適應降噪,達到業界領先的信噪比表現。“玲瓏”i3/i5 ISP處理器同時設置了豐富的系統中斷和調試接口,具有低延時、低系統帶寬的特點,可對圖像質量進行調優技術支持。 為滿足不同行業客户複雜多變的需求,“玲瓏”i3/i5 ISP處理器將為客户提供從先期評估到最終量產的全方位技術支持。安謀中國不僅為客户提供豐富的ISP圖像效果評估手段,詳細的設計文檔和培訓支持,還將提供IP集成及後端的參考流程等深入的訂製服務。 “玲瓏”i3/i5及後續ISP處理器產品可以應對不同場景的多樣化需求。未來,“玲瓏”ISP處理器優異的信號處理能力還可以與AI處理器相結合,在智能安防等領域達成AI+ISP的強大效果。 目前,“玲瓏”i3/i5 ISP處理器均已可向客户交付。

    時間:2020-12-03 關鍵詞: 處理器 玲瓏 安謀中國

  • NI榮膺Frost&Sullivan亞太區最佳實踐獎

    新加坡– 2020年12月1日– NI收穫Frost&Sullivan今年的“亞太區測試與測量行業戰略創新與領導獎”,並於本月舉行的“亞太區最佳實踐獎”頒獎禮上與其他獲獎的優秀公司共襄盛典。 商業諮詢公司Frost&Sullivan將其專有的、基於數據度量的方法與廣泛的研究、深入的訪談、分析和基準測試相結合,在每個類別中精選出實至名歸的公司。對收入增長,產品/服務的價值和技術創新等指標進行考核評比,進而選拔出亞太地區最優秀的公司。此外,該獎項也表彰那些有創造力、或實現突破性創新、並將持續取得卓越成就的組織。 Frost&Sullivan合夥人兼亞太區董事總經理Shivaji Das表示:“這些獎項旨在表彰各自行業中最優秀的公司。我相信他們將繼續通過自己的成就來激發並積極影響他們的行業。” 40多年以來,NI與眾多優秀的工程師和企業攜手,共同解決全球最緊迫的挑戰。今年早些時候,NI再次承諾致力於連接人員、想法和技術,通過自動化測試和測量系統及解決方案大膽地推動願景成為現實。 “作為領先的測試和測量方案供應商之一,NI致力於現代化和持續精進。” Frost&Sullivan的行業實踐顧問Nancy Wang説:“公司在研發上投入了大量資金,並創新了商業模式,以幫助其在瞬息萬變的環境中更好地競爭。為高端客户提供物有所值的解決方案和增值服務也令NI保持了持續的競爭力。” NI亞太區銷售副總裁Joseph Soo表示:“我們很高興獲得這一享有盛譽的獎項,非常榮幸我們持續的創新和積極的變革受到Frost&Sullivan及業界的認可。”

    時間:2020-12-02 關鍵詞: 測試與測量 NI 最佳實踐獎

  • 小船説翻就翻:硬件工程師VS軟件工程師

    關於軟件工程師和硬件工程師總有太多的話題。 常態往往是這樣滴: 板子出問題了,硬件工程師:肯定是軟件的原因!軟件工程師:絕對是硬件的問題! 以下內容摘自知乎匿名用户一位美國在校學生所寫,雖然或有失偏頗,但還是很能説明問題的: 1. 我個人理解的就業與行業前景 因為我個人對美國這方面瞭解更多,就先從美國説一説。我相信硬件工程師和軟件工程師的就業前景應該是提這個問題的人最想知道的方面。 就我所瞭解的,在現在以及可預見的未來,這個行業對軟件工程師的需求絕對是碾壓硬件工程師的。也就是説,招軟件工程師的職位比硬件工程師的職位要多的多,而且軟件工程師找工作上來説會比硬件工程師更容易 先從企業的角度來講講。我個人認為造成這個差異的原因,第一個是基本上所有的公司,從初創公司到全球百強,都有對軟件工程師的需求。現在哪個公司不需要幾個碼農來開發app,或者做個web。但是做硬件這種工作並不是所有公司會去做的。舉個簡單的例子,摩根大通銀行在我們學校的招聘會上有明確招軟件工程師,expedia在我們學校招聘會上也明確招聘軟件工程師,如果這個兩個公司突然説要招電子工程師,這不是逗我嗎。。而且哪怕是硬件公司,也需要大量的軟件工程師來支持硬件前端工作。 第二點我覺得要歸功於現在的創業潮。不管在美國在中國互聯網創業都是趨勢,但是可以説絕大部分的初創互聯網公司做的都是軟件方向。有個點子,有點技術,找幾個合夥人抱着電腦就能開幹了。但是初創公司要專注做硬件開發就比較難了,因為成立設計硬件公司的門檻和起步開銷比較大。所以這也導致大部分初創公司以互聯網為主,能做的了硬件設計的公司基本上都是處於壟斷地位的大企業。 第三個很重要的原因就是硬件設計在現在來看已經是相對成熟的技術,我甚至有ee的同學跟我説大部分硬件的東西已經步入夕陽產業的範疇,因為很多東西已經成了規範,也因為很多東西被自動化所取代。前一陣子全球大牌的硬件公司才裁了不少人,intel更是裁掉了接近20%的硬件工程師。但是互聯網熱從90年代開始到現在熱頭還沒過,而且未來諸多產業如人工智能,機器學習,圖像識別,大數據都才剛起步,所以還有一定的上升空間。 還記得當初我們學校的初創公司招聘會上幾十家公司只有一家招硬件工程師,而且還是偏軟件的硬件工程師,剩下的公司裏98%都在找會碼代碼的人;大企業的招聘會上才能見到nvidia, arm, intel, TI 的身影,但是哪怕是這樣基本上所有的公司招牌上都會有大寫加粗的招computer science的字樣。。 再從個人的角度來講。想成為一名軟件工程師找到工作的門檻遠比成為一名合格的硬件工程師低很多。要想以軟件工程師的身份混到個飯碗,能學兩門語言學好常用的數據結構刷點題就基本上能找到薪水小几千的崗位。我甚至知道國內有專門的軟件工程師培訓機構,那種專門教java和算法,兩個月速成班,而且所聲稱的學生就業率還挺高的。但是要想成為一名合格的硬件工程師,不是科班出身的不好好學幾門模電數電信號邏輯設計的課,沒有在學校實驗室裏自己焊點電路做實踐,連簡歷都發不出去。而且現在要想學個什麼語言框架,網上搜一搜“”xxx語言入門教程“”就有非常豐富的資源,但是要是在網上搜“如何學好超大規模集成電路設計”,要想找到可以受用的資源幾乎是不可能的。而且就我所參加的招聘會來説,如果有招硬件工程師基本都要求有研究生的學位,但是對軟件工程師的要求基本上就是熟悉算法數據結構,會web編程有相關經歷就夠了。軟件工程師很多時候吃的是體力,硬件工程師大部分時候是吃經驗,所以硬件工程師一般得有一定的經歷積澱才能脱穎而出。尤其像模電這種上手程度很高的方向,沒個十年八年的相關經驗根本不算學成出師。所以説本身對從業者的資質要求更高,也是硬件工程師不好找工作的原因之一。 上面是我所認為的短時間內軟件工程師就找工作方面來説會比硬件工程師更容易的原因。但是這並不意味着會編程就肯定找得到工作,也不意味着硬件產業就會低迷下去。軟件工程師的職位多,但是每年從事這個職業的人也更多,雖然我認為現在軟件工程師短期內還沒有出現飽和的趨勢(畢竟那麼高的工資還擺在那),但是總有一天這個行業也會像金融產業一樣降温(人才供過於求)。硬件產業雖然大部分已經有步入夕陽產業的趨勢,但是曾經一度被宣稱沒啥好搞的供電網絡最近也被smart grid搞得神乎其神,美國top5的高校都還設立了相關實驗室。此外,現在物聯網,車聯網,智能家居的概念被炒得火熱,我相信等相關成熟的支持技術(能量採集,低功耗通信)以及統一的開發平台一旦出現,硬件工程師的需求只會更多,雖然這些產品依舊只有那些有背景的大公司才做得動(不過因為歐美國家電子產業上的封鎖,國家也在硬件設計上砸了很多銀子,初創企業也會慢慢增加,相信國內的相關機遇也會更多)。而且畢竟軟件產業畢竟還是依靠硬件,如何設計低功耗,高穩定性,能夠承載大吞吐量計算量的硬件也是這個產業的挑戰,畢竟人工智能,機器學習,視覺處理等領域是很吃硬件計算量的。沒有強大的硬件支持,阿狗要想打敗李世乭還是痴心妄想吧。 2. 工作常態  現在在一家設計為設計硬件的公司所設計軟件的百強軟件公司實習,做的工作大部分還是偏軟件,所以本身對工作常態也並沒有非常深入的自己的感受。但是就我觀察身邊的同事以及跟別人的交流來看,不管是做軟件硬件,都是要:對。着。電。腦。。。 軟件工程師平時就是上班啊調試程序,比較低級的碼農只能給高級軟件工程師大大下手,幫他們做測試,實現他們設計好的東西。當然了做到高級工程師了才有能力開發設計自己公司的產品。如果在初創公司工作節奏更緊張,如果趕上產品要上線可能需要加班調試。遇到程序爆炸了可能還需要on call(就是你負責的東西突然出問題了,你的manager直接打個電話給你你得馬上去公司修bug),至少我知道amazon是有這個機制。 我現在還沒有在純做硬件的公司實習過,但是從我知道的事實來看,硬件工程師不會比軟件工程師輕鬆。硬件工程師也需要調試電路啊調試腳本啊反正也有跟軟件工程師交叉的工作。工作環境的話取決於細分的工作類別。開發fpga的估計跟碼農一樣坐辦公室,搞mems的嵌入式的就長期入駐實驗室了。因為大部分硬件公司都是相對成熟的大企業,所以工作節奏普遍不會像在初創公司那麼緊張,不過像在華為這樣的企業就另説了。。。 當然了不管是在軟件工程師還是硬件工程師,工作強度應該都是高於其他industry的職業的。畢竟這個行業競爭會越來越激烈,這也是聰明人聚集的地方。 至於工資的話,就平均來講,美國這裏的軟件工程師年薪會略高於硬件工程師(從glassdoor以及其他門户的數據來看),但是軟件工程師一樣也有收入低的,硬件工程師的收入也有碾壓軟件工程師的。只要你技術過硬,薪水都不是事兒。 3. 個人感受  我個人的感覺是不管怎樣,這兩個行業在未來都會有非常非常多的機遇與挑戰(詳細原因見第一點)。不管是軟件設計還是硬件設計底下都有更多細小的分支(比如説你硬件設計是想做vlsi,dsp,處理器設計,通信,fpga開發還是嵌入式,軟件設計你想做web開發,app開發,軟件開發,嵌入式軟件工程師,操作系統還是distributed system)。 我個人是對兩個大方向都很有興趣,但是我決定自己最終的方向還是嵌入式設計和處理器設計,這兩個行業都應該算是夾在了純硬件設計和純軟件設計的中間。尤其是產業對嵌入式工程師的要求更高,能夠自己設計mixed signal pcb,自己調試應用代碼寫kernel code,能調試無線通信,基本意味着一個合格的嵌入式工程師要對硬件和軟件相關方面有足夠的知識。我自己是比較討厭做web開發app純開發軟件的工作,因為這些工作的門檻太低,不是科班出身的人可能都能混的比你好得多,體現不出來自己的價值。而且我比較喜歡把電路板和各種元件握在手裏的感覺,而且我發現自己能夠設計一個可以用的硬件的時候那種成就感會高於debug之後的成就感。當你發現自己在經受了大學的磨練真正擁有了學習知識的能力以後,豐富的網上資源以及自身的積累都會讓你學習這些網頁app知識非常輕鬆,所以我個人更喜歡硬件底層,以及和硬件底層打交道的軟件領域。軟件硬件的課程都不會簡單,而且兩個學科的工作量不是其他學科能比的(學工科的天天做project呆lab,學統計的上完課就回家看電影。。)所以要想學好,還是需要花一定精力,尤其美國的大學工科院系workload相對國內高校來説有增無減。確定這是你想要的,再給予考慮。以上內容是不是説出了做軟件與做硬件的不同體會?不過,據説,老工程師對此的回答是:工作久了就會發現其實需求才是根本,軟件硬件只是實現需求的途徑..... 【京廣集運】八個經驗搞定開關電源PCBLayout 【京廣集運】程序員又翻車了!腦袋短路時他們是怎麼想的? 【京廣集運】電源防反接電路的幾種實現方案 【京廣集運】知道了電容的這些作用,就可以玩轉電容 免責聲明:本文內容由21ic獲得授權後發佈,版權歸原作者所有,本平台僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平台立場,如有問題,請聯繫我們,謝謝!

    時間:2020-11-25 關鍵詞: 嵌入式 程序員

  • 8個經驗搞定開關電源PCBLayout

    素材來源:八號線攻城獅 其實對於一個開關電源工程師而言 PCB的繪製其實是對一款產品的影響至關重要的部分,如果你不能很好的Layout的話,整個電源很有可能不能正常工作,最小問題也是穩波或者EMC過不去。 這是別人家的成品開關電源,模組,今天以這個電源模組的設計重點跟大家聊聊。 1 經驗一:安規走線間距 這個是寫在協議裏面的,如果你不按照這個做,耐壓測試一定是過不了的,因為高電壓,會直接空氣擊穿。注意保險絲之前的距離是比較遠的,要求3mm以上,這就是為啥保險絲都會放在電路最前端的原因。 第二個要注意的是就算安規沒有寫,如果兩根走線太近,正常工作也依然會擊穿的,兩根1mm間距的PCB外層耐壓是200V,所以一般220v交流或者310V直流的走線距離至少2mm以上,一般都是在2.5mm以上的。 這些器件都是有安規要求的,説白了,就是兩個器件有最小尺寸需求的,太小的器件其實是不可能過安規的,這就是所謂的開關電源PCB工程師實質上是帶着鐐銬在跳舞的原因。 開關電源變壓器的骨架,同樣是為了符合安規所以要有嚴格的把關。尤其是初級,到次級的距離,小功率變壓器是必須飛線的。 飛線的長度也要被管控,如果飛線太短,耐壓可能會受到影響,而如果飛線太長,會有可能對外輻射電磁信號,EMC過不了,所以需要在規格書裏面詳細寫清楚,PCB繪製的時候,飛線的焊盤一定要注意,不能太妖孽。  2 經驗二:電流走向 這個其實很少有真的被提及,其實原因也很簡單。很多人不注意啊。 注意這裏保險絲之後,接壓敏電阻VR1再接x2電容的走線,完全是繞了一個彎這是為什麼? 理由很簡單,不讓電流在PCB上面有回頭路可以走。電流只走阻抗最小的部分,如果直接覆銅,必經的元器件就有可能會被跳過,所以這樣做不可以。 同樣的,這裏的電解電容,一樣是為了避免電流繞過必經的電容,直接流到負載上。 雖然畫法不同,但是實際起到的作用是一樣的。 這就是一個錯誤的案例,紅色L火線先接了共模電感,再接的x2電容,共模電感到x2電容的這段線就會產生一個奇妙的現象,電流來回走,變成了一根天線,x2電流充電的時候,導線內部電流是正向,電容放電的時候,導線內部的電流是反向的,這不是天線是什麼? 3 經驗三:最小高壓主電流回路 這就是實際佈線時候的佈局,大家可以參考一下,JT1是飛線,直接把310V正電壓引入了變壓器。 4 經驗四:獨立電壓採樣走線 開關電源的採樣電壓一定要和開關電源的大電流走線分開。要從開關電源輸出電源的最末端去獨立拉線採樣,這樣可以避免負載電流對採樣線上形成的干擾。 採樣電路在最末端。直接從負載輸出端取電壓,採樣走線上不走大電流,避免了各種採樣誤差。 5 經驗五:PCB載流能力 眾所周知PCB的過電流能力是有限的,但是PCB上的電流究竟能過多少呢? 上面這個表格可以給你一個詳細的參考。看過表格,你應該知道了對於小功率開關電源而言,高壓側的走線完全沒有必要搞的很粗,除非是為了為器件提供散熱,否則1mm一般是足夠的,最多2mm多數情況都能夠勝任了。 但是對於低壓側,大電流怎麼辦? 一方面是增加線寬,一方面是通過去掉部分阻焊層,並在鋼網層製造窗口,讓導線上錫水。導線的載流能力就會得到相應的增加。(注意一定要在Paste鋼網層開孔,否則不會真的上焊錫的,切記切記) 6 經驗六:PCB過孔散熱的技巧 許多時候我們需要通過PCB線路板來散熱,這個時候我們會打一些過孔,然後把熱量傳遞到PCB的反面去。 這時候有一個小技巧,那就是孔塞可以增加熱傳導的效率,但是孔塞有一個常見最大孔塞直徑,一般是過孔直徑不大於0.45mm、我保險一點一般都是取0.4mm直徑 7 經驗七:放電管的繪製 一般在開關電源的高壓側與低壓側之間會有一個放電管,用來釋放靜電。 許多工程師都會最後在PCB Layout的時候手工繪製。 而我的建議是直接做成一個封裝,然後和PCB關聯調用,這樣不會破壞PCB的聯動性。 只是説你需要繪製兩個異形封裝罷了。還算比較容易。 注意這裏只需要去掉阻焊層,千萬不要在中間繪製鋼網層,因為這裏是不需要上錫的,只有焊盤需要上錫 8 經驗八:元器件封裝 一般而言,元器件一律按照IPC-SM-782A封裝標準制作,對於個別需要承受高壓的採樣電阻單獨對待,因為電阻焊盤之間的間距和耐壓有關,所以焊盤需要適當拉開一些,但是同時又不能拉的太開,避免不必要的焊接不良率。 這是控制器用來直接連接高壓的採樣分壓電阻,如果間距不符合要求,很有可能就會耐壓不夠擊穿。貼片電阻器也是有耐壓的,不過耐壓不夠就要加大封裝。 這些差不多就是在開關電源設計時候的,全部PCB繪製經驗了。 説實話,開關電源的繪製一路被人忽悠過來,這裏面半桶水的人太多了,很多都是玄學,而這些都是相對來説算是靠譜一些的,試驗後驗證過的經驗,這也是那些開關電源製作大牛們的血淚教訓,很多時候他們當然不希望別人知道,這也沒有辦法,今天分享出來就是希望能有更少的人去走這些彎路,能給大家一些幫助。 【京廣集運】 電源防反接電路的幾種實現方案 【京廣集運】 知道了電容的這些作用,就可以玩轉電容 【京廣集運】 為什麼Y電容容量基本都不大於0.1uF? 【京廣集運】 華為內部資料:電容的介紹和深入認識 【京廣集運】 封裝圖鑑:掌握這17種元器件PCB封裝,設計板子就容易多了! 【京廣集運】 八層板PCB設計,電腦主板設計分析 免責聲明:本文內容由21ic獲得授權後發佈,版權歸原作者所有,本平台僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平台立場,如有問題,請聯繫我們,謝謝!

    時間:2020-11-24 關鍵詞: PCB 開關電源

  • 知道了電容的這些作用,就可以玩轉電容

    電容是電路設計中最為普通的常用器件,屬於無源元件,常常在高速電路中扮演重要角色。它的作用和用途多種多樣,如:在旁路、去藕、濾波、儲能方面的作用;在完成振盪、同步以及時間常數的作用等。 01 隔直流 電容的作用之一,阻止直流通過而讓交流通過。   02 旁路(去耦) 電容的另一個作用,為交流電路中某些並聯的元件提供低阻抗通路。       ▶旁路電容 旁路電容,又稱為退耦電容,是為某個器件提供能量的儲能器件。它利用了電容的頻率阻抗特性(理想電容的頻率特性隨頻率的升高,阻抗降低),就像一個水塘,它能使輸出電壓輸出均勻,降低負載電壓波動。旁路電容要儘量靠近負載器件的供電電源管腳和地管腳,這是阻抗要求。   在畫PCB時候特別要注意,只有靠近某個元器件時候才能抑制,電壓或其他輸信號因過大而導致的地電位抬高和噪聲。即把直流電源中的交流分量,通過電容耦合到電源地中,起到了淨化直流電源的作用。如下圖為旁路電容,畫圖時候要儘量靠近IC1.   ▶去藕電容 去耦電容是把輸出信號的干擾作為濾除對象。去耦電容相當於電池,利用其充放電,使得放大後的信號不會因電流的突變而受干擾。它的容量根據信號的頻率、抑制波紋程度而定,去藕電容就是起到一個“電池”的作用,滿足驅動電路電流的變化,避免相互間的耦合干擾。下圖為去耦電容。     ▶兩者區別 旁路電容實際也是去藕合的,只是旁路電容一般是指高頻旁路,也就是給高頻的開關噪聲提高一條低阻抗泄防途徑。高頻旁路電容一般比較小,根據諧振頻率一般取 0.1F、0.01F等;而去耦合電容的容量一般較大,可能是10F或者更大,依據電路中分佈參數、以及驅動電流的變化大小來確定。   旁路是把輸入信號中的干擾作為濾除對象,而去耦是把輸出信號的干擾作為濾除對象,防止干擾信號返回電源。 03 耦合 電容的還有耦合作用,即作為兩個電路之間的連接,允許交流信號通過並傳輸到下一級電路 。   用電容做耦合的元件,是為了將前級信號傳遞到後一級,並且隔斷前一級的直流對後一級的影響,使電路調試簡單,性能穩定。   如果不加電容交流信號放大不會改變,只是各級工作點需重新設計,由於前後級影響,調試工作點非常困難,在多級時幾乎無法實現。   04 濾波  這個對電路而言很重要,CPU背後的電容基本都是這個作用。   即頻率f越大,電容的阻抗Z越小。當低頻時,電容C由於阻抗Z比較大,有用信號可以順利通過;當高頻時,電容C由於阻抗Z已經很小了,相當於把高頻噪聲短路到GND上去了。     濾波作用:理想電容,電容越大,阻抗越小,通過的頻率也越高。電解電容一般都是超過1uF,其中的電感成份很大,因此頻率高後反而阻抗會大。   我們經常看見,有時會看到有一個電容量較大的電解電容並聯了一個小電容,其實大的電容通低頻,小電容通高頻,這樣才能充分濾除高低頻。電容頻率越高則衰減越大,電容像一個水塘,幾滴水不足以引起它的很大變化,也就是説電壓波動不是很大的時候,電壓可以緩衝,如下圖。   05 温度補償 針對其它元件對温度的適應性不夠帶來的影響,而進行補償,改善電路的穩定性。     由於定時電容的容量決定了行振盪器的振盪頻率,所以要求定時電容的容量非常穩定,不隨環境濕度變化而變化,這樣才能使行振盪器的振盪頻率穩定。因此採用正、負温度係數的電容釋聯,進行温度互補。   當工作温度升高時,C1的容量在增大,而C2的容量在減小,兩隻電容並聯後的總容量為兩隻電容容量之和,由於一個容量在增大而另一個在減小,所以總容量基本不變。   同理,在温度降低時,一個電容的容量在減小而另一個在增大,總的容量基本不變,穩定了振盪頻率,實現温度補償目的。 06 計時 電容器與電阻器配合使用,確定電路的時間常數。     輸入信號由低向高跳變時,經過緩衝1後輸入RC電路。電容充電的特性使B點的信號並不會跟隨輸入信號立即跳變,而是有一個逐漸變大的過程。當變大到一定程度時,緩衝2翻轉,在輸出端得到了一個延遲的由低向高的跳變。   時間常數:以常見的RC串聯構成積分電路為例,當輸入信號電壓加在輸入端時,電容上的電壓逐漸上升。而其充電電流則隨着電壓的上升而減小,電阻R和電容C串聯接入輸入信號VI,由電容C輸出信號V0,當RC (τ)數值與輸入方波寬度tW之間滿足:τ>>tW,這種電路稱為積分電路。   07 調諧 對與頻率相關的電路進行系統調諧,比如手機、收音機、電視機。   變容二極管的調諧電路   因為lc調諧的振盪電路的諧振頻率是lc的函數,我們發現振盪電路的最大與最小諧振頻率之比隨着電容比的平方根變化。此處電容比是指反偏電壓最小時的電容與反偏電壓最大時的電容之比。因而,電路的調諧特徵曲線(偏壓一諧振頻率)基本上是一條拋物線。 08 整流 在預定的時間開或者關半閉導體開關元件。     09 儲能 儲存電能,用於必須要的時候釋放。例如相機閃光燈,加熱設備等。如今某些電容的儲能水平己經接近鋰電池的水準,一個電容儲存的電能可以供一個手機使用一天。     一般地,電解電容都會有儲能的作用。對於專門的儲能作用的電容,電容儲能的機理為雙電層電容以及法拉第電容,其主要形式為超級電容儲能。   其中超級電容器是利用雙電層原理的電容器,當外加電壓加到超級電容器的兩個極板上時,與普通電容器一樣,極板的正電極存儲正電荷,負極板存儲負電荷;在超級電容器的兩極板上電荷產生的電場作用下,在電解液與電極間的界面上形成相反的電荷,以平衡電解液的內電場。這種正電荷與負電荷在兩個不同相之間的接觸面上,以正負電荷之間極短間隙排列在相反的位置上,這個電荷分佈層叫做雙電層,因此電容量非常大。 精彩文章推薦: 運算放大器和比較器有什麼區別? 為什麼Y電容容量基本都不大於0.1uF? RS485接口EMC電路設計方案 技術貼:STM32串口通信波特率如何計算 高速PCB設計EMI的九大規則,工程師必看 八層板PCB設計,電腦主板設計分析 免責聲明:本文內容由21ic獲得授權後發佈,版權歸原作者所有,本平台僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平台立場,如有問題,請聯繫我們,謝謝!

    時間:2020-11-24 關鍵詞: 元器件 電容

  • 解了這14道C語言謎題後,所有人卻都笑了!

    素材來源:電子世家- 巧學模電數電單片機 本文展示了14個C語言的迷題以及答案,代碼應該是足夠清楚的,而且有相當的一些例子可能是我們日常工作可能會見得到的。通過這些迷題,希望你能更瞭解C語言。 如果你不看答案,不知道是否有把握回答各個謎題?讓我們來試試。 1 下面的程序並不見得會輸出"hello-std-out",你知道為什麼嗎? #include #include int main() { while(1) { fprintf(stdout,"hello-std-out"); fprintf(stderr,"hello-std-err"); sleep(1); } return 0; } 參考答案 stdout和stderr是不同設備描述符。stdout是塊設備,stderr則不是。對於塊設備,只有當下面幾種情況下才會被輸入:遇到回車;緩衝區滿;flush被調用。而stderr則不會。 2 下面的程序看起來是正常的,使用了一個逗號表達式來做初始化。可惜這段程序是有問題的。你知道為什麼嗎? #include int main() { int a = 1,2; printf("a : %d\n",a); return 0; } 參考答案 這個程序會得到編譯出錯(語法出錯)。逗號表達式是沒錯,可是在初始化和變量聲明時,逗號並不是逗號表達式的意義。這點要區分,要修改上面這個程序,你需要加上括號:"int a = (1,2);"。 3 下面的程序會有什麼樣的輸出呢? #include int main() { int i=43; printf("%d\n",printf("%d",printf("%d",i))); return 0; } 參考答案 程序會輸出4321,你知道為什麼嗎?要知道為什麼,你需要知道printf的返回值是什麼。printf返回值是輸出的字符個數。 4 下面的程序會輸出什麼? #include int main() { float a = 12.5; printf("%d\n", a); printf("%d\n", (int)a); printf("%d\n", *(int *)&a); return 0; } 參考答案 該項程序輸出:"0 12 1095237632"。 原因是:浮點數是4個字節,12.5f轉成二進制是:01000001010010000000000000000000,十六進制是:0x41480000,十進制是:1095237632。所以,第二和第三個輸出相信大家也知道是為什麼了。 而對於第一個,為什麼會輸出0,我們需要了解一下float和double的內存佈局,如下: • float: 1位符號位(s)、8位指數(e),23位尾數(m,共32位)。 • double: 1位符號位(s)、11位指數(e),52位尾數(m,共64位)。 然後,我們還需要了解一下printf由於類型不匹配,所以,會把float直接轉成double,注意,12.5的float和double的內存二進制完全不一樣。別忘了在x86芯片下使用是的反字節序,高位字節和低位字位要反過來。所以: • float版:0x41480000 (在內存中是:00 00 48 41)。 • double版:0x4029000000000000 (在內存中是:00 00 00 00 00 00 29 40)。 而我們的%d要求是一個4字節的int,對於double的內存佈局,我們可以看到前四個字節是00,所以輸出自然是0了。這個示例向我們説明printf並不是類型安全的,這就是為什麼C++要引如cout的原因了。 5 下面,我們再來看一個交叉編譯的事情,下面的兩個文件可以編譯通過嗎?如果可以通過,結果是什麼? //file1.cint arr[80]; //file2.cextern int *arr; int main() { arr[1] = 100; printf("%d\n", arr[1]); return 0; } 參考答案 該程序可以編譯通過,但運行時會出錯。為什麼呢?原因是,在另一個文件中用 extern int *arr來外部聲明一個數組並不能得到實際的期望值,因為他們的類型並不匹配。所以導致指針實際並沒有指向那個數組。 注意:一個指向數組的指針,並不等於一個數組。 修改:"extern int arr[]"。 6 請説出下面的程序輸出是多少?並解釋為什麼?(注意,該程序並不會輸出"b is 20") #include int main() { int a=1; switch(a) { int b=20; case 1: printf("b is %d\n",b); break; default: printf("b is %d\n",b); break; } return 0; } 參考答案 該程序在編譯時,可能會出現一條warning: unreachable code at beginning of switch statement。我們以為進入switch後,變量b會被初始化,其實並不然,因為switch-case語句會把變量b的初始化直接就跳過了。所以,程序會輸出一個隨機的內存值。 7 請問下面的程序會有什麼潛在的危險? #include int main() { char str[80]; printf("Enter the string:"); scanf("%s",str); printf("You entered:%s\n",str); return 0; } 參考答案 本題很簡單了。這個程序的潛在問題是,如果用户輸入了超過80個長度的字符,那麼就會有數組越界的問題了,你的程序很有可能會crash了。 8 請問下面的程序輸出什麼? #include int main() { int i; i = 10; printf("i : %d\n",i); printf("sizeof(i++) is: %d\n",sizeof(i++)); printf("i : %d\n",i); return 0; } 參考答案 如果你覺得輸出分別是:10,4,11。那麼你就錯了。 錯在了第三個,第一個是10沒有什麼問題,第二個是4,也沒有什麼問題,因為是32位機上一個int有4個字節。但是第三個為什麼輸出的不是11呢?居然還是10?原因是,sizeof不是一個函數,是一個操作符,其求i++的類型的size,這是一件可以在程序運行前(編譯時)完全的事情,所以,sizeof(i++)直接就被4給取代了,在運行時也就不會有了i++這個表達式。 9 請問下面的程序的輸出值是什麼? #include #include #define SIZEOF(arr) (sizeof(arr)/sizeof(arr[0])) #define PrintInt(expr) printf("%s:%d\n",#expr,(expr)) int main() { /* The powers of 10 */ int pot[] = { 0001, 0010, 0100, 1000       }; int i; for(i=0;i

    時間:2020-11-24 關鍵詞: 嵌入式 C語言

  • RS485接口EMC電路設計方案

    一、原理圖 1.  RS485接口6KV防雷電路設計方案 圖1  RS485接口防雷電路 接口電路設計概述: RS485用於設備與計算機或其它設備之間通訊,在產品應用中其走線多與電源、功率信號等混合在一起,存在EMC隱患。 本方案從EMC原理上,進行了相關的抑制干擾和抗敏感度的設計,從設計層次解決EMC問題。 2.電路EMC設計説明: (1) 電路濾波設計要點: L1為共模電感,共模電感能夠對衰減共模干擾,對單板內部的干擾以及外部的干擾都能抑制,能提高產品的抗干擾能力,同時也能減小通過429信號線對外的輻射,共模電感阻抗選擇範圍為120Ω/100MHz ~2200Ω/100MHz,典型值選取1000Ω/100MHz; C1、C2為濾波電容,給干擾提供低阻抗的迴流路徑,能有效減小對外的共模電流以同時對外界干擾能夠濾波;電容容值選取範圍為22PF~1000pF,典型值選取100pF;若信號線對金屬外殼有絕緣耐壓要求,那麼差分線對地的兩個濾波電容需要考慮耐壓; 當電路上有多個節點時要考慮降低或去掉濾波電容的值。C3為接口地和數字地之間的跨接電容,典型取值為1000pF, C3容值可根據測試情況進行調整; (2) 電路防雷設計要點: 為了達到IEC61000-4-5或GB17626.5標準,共模6KV,差模2KV的防雷測試要求,D4為三端氣體放電管組成第一級防護電路,用於抑制線路上的共模以及差模浪湧干擾,防止干擾通過信號線影響下一級電路; 氣體放電管標稱電壓VBRW要求大於13V,峯值電流IPP要求大於等於143A; 峯值功率WPP要求大於等於1859W; PTC1、PTC2為熱敏電阻組成第二級防護電路,典型取值為10Ω/2W; 為保證氣體放電管能順利的導通,泄放大能量必須增加此電阻進行分壓,確保大部分能量通過氣體放電管走掉;  D1~D3為TSS管(半導體放電管)組成第三級防護電路,TSS管標稱電壓VBRW要求大於8V,峯值電流IPP要求大於等於143A;峯值功率WPP要求大於等於1144W; 3.接口電路設計備註: 如果設備為金屬外殼,同時單板可以獨立的劃分出接口地,那麼金屬外殼與接口地直接電氣連接,且單板地與接口地通過1000pF電容相連; 如果設備為非金屬外殼,那麼接口地PGND與單板數字地GND直接電氣連接。 二. PCB設計 1.  RS485接口電路佈局 圖1  RS485接口濾波及防護電路佈局 方案特點: (1)防護器件及濾波器件要靠近接口位置處擺放且要求擺放緊湊整齊,按照先防護後濾波的規則,走線時要儘量避免走線曲折的情況; (2) 共模電感與跨接電容要置於隔離帶中。 方案分析: (1)接口及接口濾波防護電路周邊不能走線且不能放置高速或敏感的器件; (2) 隔離帶下面投影層要做掏空處理,禁止走線。 2.  RS485接口電路分地設計 方案特點: (1)為了抑制內部單板噪聲通過RS485接口向外傳導輻射,也為了增強單板對外部干擾的抗擾能力,在RS485接口處增加濾波器件進行抑制,以濾波器件位置大小為界,劃分出接口地; (2)隔離帶中可以選擇性的增加電容作為兩者地之間的連接,電容C4、C5取值建議為1000pF,信號線上串聯共模電感CM與電容濾波,並與接口地並聯GDT和TVS管進行防護;且所有防護器件都靠近接口放置,共模電感CM置於隔離帶內,具體佈局如圖示。 方案分析: (1)當接口與單板存在相容性較差或不相容的電路時,需要在接口與單板之間進行“分地”處理,即根據不同的端口電壓、電平信號和傳輸速率來分別設置地線。“分地”,可以防止不相容電路的迴流信號的疊加,防止公共地線阻抗耦合; (2)“分地”現象會導致迴流信號跨越隔離帶時阻抗變大,從而引起極大的EMC風險,因此在隔離帶間通過電容來給信號提供迴流路徑。 相關文章推薦: RS485的上下拉電阻如何選擇? RS485方向切換如何設計電路?介紹5種方案及優劣勢分析 RS485是硬件接口,那麼他是怎麼實現數據通訊的呢?Modbus-RTU協議解析 一個小電路引起的疑惑:RS485電路 免責聲明:本文內容由21ic獲得授權後發佈,版權歸原作者所有,本平台僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平台立場,如有問題,請聯繫我們,謝謝!

    時間:2020-11-24 關鍵詞: PCB 電子電路

  • 運算放大器和比較器有什麼區別?

    運算放大器和電壓比較器在原理符號上確實是一樣的,都有5個引腳,其中兩個引腳為電源+和電源-,還有兩個引腳為同相輸入端(+)和反向輸入端(-),最後一個引腳是輸出端。 但是它們的功能是不一樣的,運放的功能及用途更復雜,而比較器就相對簡單得多。 電壓比較器 下面簡單講解一下比較器的基本原理,比較器的原理挺簡單,目的是比較兩個輸入端的電壓大小,若正輸入端的電壓為a,負輸入端的電壓為b,則當a>b時,輸出為高電平(邏輯1);當a<b時,輸出為低電平(邏輯0)。 下面結合原理圖進行説明,如下圖原理圖,比較器輸入端的電壓為IN1、IN2,供電為VCC/GND,上拉電阻1K,上拉電壓為VCC。 當輸入電壓IN1>IN2時,即正輸入端的電壓較高,輸出高電平(VCC); 當輸入電壓IN2>IN1時,即負輸入端的電壓較高,輸出低電平(0V)。 比較器的用途很廣,可用於比較熱敏電阻、光敏傳感器等電壓信號,用於離散量控制,比如通過比較器採集光敏電阻的電壓判斷白天還是夜晚等,比較器還可以用於模擬量負反饋電路當中,比如電壓調節等。 運算放大器 運放的用途很多,基本的運放電路有同相比例放大電路、反相比例放大電路、加法器、減法器、差分比例運算電路、微分電路、積分電路等,掌握這些基本的集成運放電路原理,基本上可以區分電路圖中符號一樣的電路符號屬於比較器還是運放。 一般情況下,運放都會在輸出端與輸入端之間串聯一個電阻用於反饋,而一般情況下電壓比較器輸出端與輸入端之間是沒有電阻的,絕大部分電路都可以通過此區別來區分,但是也有特殊情況,這要根據具體原理具體分析了。 比如 運放也可以當比較器使用 ,其輸出端與輸入端之間開環(不接反饋電阻),使用運放當比較器其別在於不用上拉電阻,當IN1>IN2時,輸出電壓為VCC(運放電源電壓),當IN1<IN2時,輸出電壓為0。 總結 專業基礎紮實,掌握電壓比較器和運放的基本電路之後,基本上直接就能夠判別原理屬於運放還是比較器,只有少量的特殊情況需要具體分析,通過專業知識分析其原理很快就能夠判別其屬於運放還是比較器。 相關文章推薦: 模擬電路的精髓:運放,該如何選型? 學會虛斷和虛短,運放電路就不難! 差分運放,PT100採集處理電路設計 模電老司機這樣説:學會“虛短”和“虛斷”,運放電路分析不求人 單比較器設計的滯回電路如何改變滯回回差? 合理使用運算放大器,方便你我他! 免責聲明:本文內容由21ic獲得授權後發佈,版權歸原作者所有,本平台僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平台立場,如有問題,請聯繫我們,謝謝!

    時間:2020-11-24 關鍵詞: 運算放大器 比較器

  • 技術貼:STM32串口通信波特率如何計算?

    波特率的計算 STM32下的波特率和串口外設時鐘息息相關,USART 1的時鐘來源於APB2,USART 2-5的時鐘來源於APB1。在STM32中,有個波特率寄存器USART_BRR,如下: STM32串口波特率通過USART_BRR進行設置,STM32的波特率寄存器支持分數設置,以提高精確度。USART_BRR的前4位用於表示小數,後12位用於表示整數。但是它還不是我們想要設置的波特率,想要設置我們串口的波特率大小還需要進行計算。其實有關波特率的計算是下面這一條表達式: 從上面的表達式,我們引入了一個新量USARTDIV,它表示對串口的時鐘源fck進行分頻。假設我們已知道了波特率和fck時鐘頻率的大小,那麼通過上式便可以計算出USARTDIV的具體大小,然後再通過USART的值大小對波特率寄存器進行設置。 USARTDIV通過上面的表達式得出,是一個帶有小數的浮點數(如27.75)。將小數部分和整數部分分開,分別得到一個整數值n(如27)和一個小數值m(如0.75)。有了這兩個值我們便可以填寫USART_BRR寄存器進而設置我們串口波特率大小了。 將整數部分m(27 = 0x1B)直接寫入USART_BRR的後12位部分;將小數部分n乘以16後得到的整數值(如0.75 x 16 = 12 = 0xC)寫入USART_BRR前4位部分,最後USART_BRR的值為0x1BC。 注意:如果小數部分乘以16之後仍帶有小數,則要四捨五入去除小數部分得到一個新的整數,再將其寫入USART_BRR的前四位。 為什麼在計算波特率的公式中要乘以16 我們知道串口通信是通過TXD和RXD這兩條線進行通信的,當接收器的RXD連接着發送器的TXD,接收器的TXD連接着發送器的RXD,接收器和發送器可以通過RXD和TXD互傳數據。當接收器檢測到RXD這條線的電平被拉為低電平,立即開始接收發送器發送過來的數據,剛剛那個低電平只是一個告知接收器可以接收數據的起始位而已。 在數據的傳輸中,信號可能受到一些干擾而產生一些抖動,如下圖。如果接收端只對這些信號數據採樣一次,那麼它有可能採樣到的是抖動的不準的數據,進而使數據傳輸不準確,所以接收端在採樣數據線上的數據,通常都要採樣多次,然後通過比較獲得準確的數據。 前面已經説過,USARTDIV,它表示對串口的時鐘源fck進行分頻,而這16表示的正是1bit數據的採樣次數。為什麼呢? 將這個表達式的分子分母倒過來,可以得到下面這條表達式 每一位的傳輸時間只有1/TX_baud,這個總時間除以16,所以每採樣一次的時間正好是T1,即新分頻後的週期。而初始的串口時鐘信號來自於APBx,APBx時鐘信號需要經過分頻才會等於T1,所以才需要分頻USARTDIV。 精彩文章推薦: STM32基礎分析——PWM配置 STM32單片機:獨立看門狗、窗口看門狗的配置 STM32如何配置外部中斷? stm32-hal庫開發簡介 STM32定時器如何配置? 如何高效閲讀《STM32參考手冊》?大神來教你! STM32只會用庫函數,不會用寄存器,能寫好程序嗎? 免責聲明:本文內容由21ic獲得授權後發佈,版權歸原作者所有,本平台僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平台立場,如有問題,請聯繫我們,謝謝!

    時間:2020-11-24 關鍵詞: 單片機 數字信號

  • 華為內部資料:電容的介紹和深入認識

    無源濾波元器件中,電容是一個很重要的基本元器件,但應用中由於對電容的認識不深,存在一些不正確的使用而造成問題。本文主要針對常用的三類電容(鋁電容、鉭電容和陶瓷電容),從電容結構、製造工藝入手,結合濾波模型關注的參數性能進行深入的剖析,最後引出如何正確可靠應用電容。結構上採取每類電容一大章,每一章三小節分析:第一小節簡單介紹電容的結構和生產加工工藝流程;第二小節為電容主要性能參數的變化特點,涉及到如何應用等方面;第三小節介紹電容使用中的物理可靠性問題需要關注的地方。同時附錄還對三類電容在參數、特性及應用上做了深入的比較。 精彩文章推薦: 初學不識“電容”意,再看已是電老炮 設計電路如何確定使用多大的電容?記住四種情況就夠了 電阻和電容並聯的幾個作用 為什麼要進行電容補償?如何補償? 免責聲明:本文內容由21ic獲得授權後發佈,版權歸原作者所有,本平台僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平台立場,如有問題,請聯繫我們,謝謝!

    時間:2020-11-24 關鍵詞: 元器件 電容

  • 高速PCB設計EMI的九大規則,工程師必看!

    隨着信號上升沿時間的減小及信號頻率的提高,電子產品的EMI問題越來越受到電子工程師的關注,幾乎60%的EMI問題都可以通過高速PCB來解決。 以下 是九大規則: 01 規則一:高速信號走線屏蔽規則 在高速的PCB設計中,時鐘等關鍵的高速信號線,走線需要進行屏蔽處理,如果沒有屏蔽或只屏蔽了部分,都會造成EMI的泄漏。建議屏蔽線,每1000mil,打孔接地。 02 規則二:高速信號的走線閉環規則 由於PCB板的密度越來越高,很多PCB LAYOUT工程師在走線的過程中,很容易出現一種失誤,即時鐘信號等高速信號網絡,在多層的PCB走線的時候產生了閉環的結果,這樣的閉環結果將產生環形天線,增加EMI的輻射強度。 03 規則三:高速信號的走線開環規則 規則二提到高速信號的閉環會造成EMI輻射,然而開環同樣會造成EMI輻射。 時鐘信號等高速信號網絡,在多層的PCB走線的時候一旦產生了開環的結果,將產生線形天線,增加EMI的輻射強度。 04 規則四:高速信號的特性阻抗連續規則 高速信號,在層與層之間切換的時候必須保證特性阻抗的連續,否則會增加EMI的輻射。也就是説,同層的佈線的寬度必須連續,不同層的走線阻抗必須連續。 05 規則五:高速PCB設計的佈線方向規則 相鄰兩層間的走線必須遵循垂直走線的原則,否則會造成線間的串擾,增加EMI輻射。 簡而言之,相鄰的佈線層遵循橫平豎垂的佈線方向,垂直的佈線可以抑制線間的串擾。 06 規則六: 高速PCB設計中的拓撲結構規則 在高速PCB設計中,線路板特性阻抗的控制和多負載情況下的拓撲結構的設計,直接決定着產品的成功還是失敗。 圖示為菊花鏈式拓撲結構,一般用於幾Mhz的情況下為益。高速PCB設計中建議使用後端的星形對稱結構。 07 規則七:走線長度的諧振規則 檢查信號線的長度和信號的頻率是否構成諧振,即當佈線長度為信號波長1/4的時候的整數倍時,此佈線將產生諧振,而諧振就會輻射電磁波,產生干擾。 08 規則八:迴流路徑規則 所有的高速信號必須有良好的迴流路徑。儘可能地保證時鐘等高速信號的迴流路徑最小。否則會極大的增加輻射,並且輻射的大小和信號路徑和迴流路徑所包圍的面積成正比。 09 規則九:器件的退耦電容擺放規則 退耦電容的擺放的位置非常的重要。擺放不合理根本起不到退耦的效果。其原則是:靠近電源的管腳,並且電容的電源走線和地線所包圍的面積最小。 相關文章推薦: EMC相關:有效降低傳導輻射干擾的技巧 EMC抗干擾設計——RS485 接口的電磁兼容設計 什麼是電氣間隙,什麼是爬電距離,PCB為什麼要開槽? 電磁繼電器的幾個參數,瞭解完就會用繼電器 模擬量傳感器如何抗干擾,有哪些措施? PCB板邊緣的敏感線為何容易ESD干擾 如何選用電源濾波器,電源濾波器有哪些重要參數? 免責聲明:本文內容由21ic獲得授權後發佈,版權歸原作者所有,本平台僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平台立場,如有問題,請聯繫我們,謝謝!

    時間:2020-11-24 關鍵詞: 電磁 PCB

首頁  上一頁  1 2 3 4 5 6 7 8 9 10 下一頁 尾頁
發佈文章