面向硬體程式設計的一些思考

2023-01-02 18:27:06 字數 3496 閱讀 5190

一、硬體程式設計

其實說道硬體程式設計,大家肯定乍一聽感覺很難,很高大上,但是我想說的是除了需要了解一些硬體程式設計中對於各種機器工作狀態的理解之外,剩下的就真沒有什麼了,基本都是邏輯and邏輯and實際,說白了就是看文件,理清楚邏輯再加上一些根據實際狀況的除錯就可以很輕鬆的能夠搞定硬體程式設計。

硬體程式設計是什麼呢?其實我們用到的電腦裡面的驅動就是面向硬體的程式設計,只不過驅動程式是真正硬體裡面程式的一種輔助程式。硬體程式設計就是對可以進行邏輯操控的硬體進行程式設計,讓他做你想要做的事情,這裡說道可程式設計硬體,基本上都是針對的一類有儲存功能的,邏輯可變的一系列晶元的乙個總稱,常見的有51微控制器,arduino,arm處理器(一般手機上面用的)等等。

一般常見的基礎電子元件是不可以被程式設計的,如電阻,led,電子管等

如果你可以用你寫的程式來操作這些類似cpu的處理器,那麼恭喜你,你已經邁入了硬體工程師領域的大門了。說到硬體程式設計,為了操作簡單,和硬體接觸方便,通常用的語言都是c,c++,彙編等基礎語言,在一般程式設計師上手上來說的話是完全沒有問題的,尤其是到了arduino時代,用c程式設計arduino的程式簡直不要這麼簡單。

二、硬體選擇

一般來講的話,如果真心想要學習硬體程式設計的人都會從51系列的微控制器入手,包括stc89c52,stc12s5c60s等等,如果想要進一步高階的話,要接觸到stm32系列的微控制器了,他同樣比較簡單,但是效能和效率上要比基礎的51微控制器好很多,然後下一步肯定就是面向arm的程式設計了,想要做arm的程式設計,首先需要了解一些關於linux的知識,因為一般用arm的微控制器光有程式已經是不夠的了,還必須要有硬體系統才可以很好的管理,也為程式設計者省去了很多事情,還有linux的核心對於基礎硬體的操作也很好,linux的**也是用c語言寫的,所以他們臭味相投。

如果你只是想要了解一下硬體程式設計,想做為乙個個人興趣愛好的話,可以從arduino來入手,因為他基本不需要你懂微控制器中的什麼暫存器了,中斷了就可以讓你實現很多功能,所以比較容易做出東西,可以讓初學者有乙個很簡單的認識,並且arduino的功能也是非常強大,它自己整合了很多的硬體處理庫,方便操作不同的硬體電路,它還可以直接用物件的角度來考慮整個硬體的世界,比較適合某些自身程式設計師。

三、程式設計

其實說道程式設計,感覺天下的程式是一家,不管是純軟體程式設計還是硬體中的軟體程式設計也好,核心的語句總是那麼幾個,核心的流程也總是那麼幾個,並且考慮的東西都是一樣的,怎樣可以獲得正確的資料,怎樣去處理。

然而不同的地方在於可能純軟體程式設計中需要的資料要不就是從介面(inte***ce)上人輸入的,要不就是獲得已有的,要不就是從某個函式方法中獲得的。但是硬體程式設計需要從硬體中讀取資料,資料有的時候不是很直接,類似於訊號一類的東西,比如有的硬體(感測器)反饋回來的是一組電平數,或者是一段pwm波形,你就需要去按照說明文件對其進行合理的分析,然後才能得到你想要的結果,然後需要考慮如何顯示,像是在螢幕上哪個畫素點亮,哪個畫素點滅等一系列細小的東西。

然後再硬體程式設計中絕大部分都是單執行緒的程式設計所以需要考慮時序的問題,可能稍微邏輯不好就會導致整個資料的讀取錯誤,並且微控制器在操作其他硬體的時候是需要對硬體進行加電初始化的,還有進行加點激勵才會讀取資料的,對於這些情況也需要注意,這個時候理解一些計算機或者硬體工作原理就顯得格外重要了。

四、總結

其實我感覺每個程式設計師都應該去經歷一些硬體程式設計的考驗,從我們經歷的各種學習來看包括網路原理,作業系統,軟考基礎等的訓練,我再來看硬體程式的編寫和硬體說明書,就會突然發現有很多熟悉的身影,因為他們就是真真正正的用在這些硬體上面的理論,所以我們寫程式的時候也不能光考慮最後的實現,還要考慮實際中電路或者硬體的工作方法,這個時候我們寫出來的程式肯定會更加的高效、更加的有依據。

作者:王嘯tr1912

**:csdn

原文:版權宣告:本文為博主原創文章,**請附上博文鏈結!

veriloghdl與vhdl區別【1】:

vhdl——vhsic(very high speed integrated circuit) hdl,由美國dod支援開發的hdl,1987

年成為ieee 1076-1987 標準,後修訂為ieee 1076-1993 標準。

verilog來自c 語言,易學易用,程式設計風格靈活、簡潔,使用者眾多,特別在asic領域流行;

vhdl 來自ada,語法嚴謹,比較難學,在歐洲和國內有較多使用者;

兩者描述的設計層次有所不同:

vhdl:系統級、行為級、rtl 級、門級

veriloghdl:行為級、rtl 級、門級、開關級

不支援:電路級(spice)、版圖級(gdsii/cif)

verilog最早是用來模擬閘電路邏輯的,對於邏輯建模比較方便,但是對於highlevel programming結構比較差。

vhdl有很多highlevel programming庫支援,程式設計比較方便。但對於底層,門級別邏輯建模不是很方便,也不需要。因為fpga設計流程裡也不需要,用vhdl去建立門邏輯模型。

所以,fpga設計的話vhdl應用比較多,設計asic的話用verilog比較多。

還有,systemverilog在verilog基礎上新增了很多高階語言程式設計環境。但是,同樣對於硬體建模就不是很方便了。【2】

fpga和dsp的區別【3】:

兩者功能比較:

fpga【4】:

時序控制能力強。(時序能力強,沒有指令週期,速度快)

控制能力較強(由於沒有指令集,不如arm和微控制器)。

數字訊號處理及演算法弱(這裡講的弱是指內部不整合dsp的前提下)

dsp:

時序控制能力較弱。(沒辦法。有了指令集,就有指令週期。而且受到時鐘約束)

控制能力較強(有指令集。但是不是專業搞控制的)

數字訊號處理及演算法強(專業特長嘛)

dsp和fpga開發的概述:

dsp,專用電路(內部結構已經固定)通過對ram內部的指令和資料工作(這個是cpu和arm等等的工作方式)所以開發遵循嵌入式軟體的設計原則。除錯應更注重於演算法的實現。

fpga,asic一種,經典fpga的內部結構是暫存器+組合邏輯(查詢表)。最後是按照邏輯電路進行設計。所以是屬於硬體設計原則。

除錯除了需要關心功能以外,還需要關心電路方面的特性。比如說延遲,整體功率等等。

開發工具:

dsp**器,開發板。**器比較多,網上查吧,dsp**器,網上大堆的,嫌不夠正規,ti**自己找教程和datasheet。

fpga:開發工具比較多,他分成綜合工具,**工具和開發板,。**麼,modelsim,時序**利器。也是網上去找吧。多滴很~~

技術支援你不用擔心~ti和xilinx和altera的支援非常非常地道。就乙個問題。英文要好。

至少你能靜下心來看。上了他們的**。你就知道什麼叫專業。

fpga還好,因為就幾家大公司才有能力出。dsp麼,具體問題具體分析咯。

選擇策略方面。這個是經驗談啊:不能絕對的說。

dsp麼,專業性比較強。而且的確能做別的ic做不了的事情(人家裡面乘法器資源沒話說穩定性和效率在數字訊號處理這塊基本無人能出其右)fpga呢相對來說可以運用的面比較廣泛(不過也是近期的事情。其實fpga很早就有。

只是當初設計領域都是通訊方面的。現在有整合cpu和dsp以及公司提供的軟核的強力支援,設計面越來越廣

作者:syzheng500

**:csdn

程式設計中的一些感悟

羅恩發表於2002 10 29 8 16 01 1 學習應該從基礎打起,不要一開始就嘗試最高深的技術。2 每看一本書,不要說這章我以前學習過了,也掌握的很好,因此我可以跳過這一章看更 重要的了。3 對於作業,遇到不會的盡量不要立刻向別人請教。如果實在解決不了的問題,可以先完成你會的,然後把一些特別的...

總結的一些電腦硬體常識

補充 說的5000 只是型號,不代表什麼,型號越大產品越新,當然功能越強,比方5000 比4000 就好,但也不一定。intel和amd標識也不一樣。現在amd有4000 5000 5400 等,intel有e1400e2200e5200等 一 看引數識cpu cpucentralprocessun...

QA績效的一些思考

1.1 文件目的 的目的保障系統 軟體的質量。qa人員的工作成果是一種綜合的勞動體現。工作性質看,人員工作中需要對工作物件進行分析 設計 執行 觀察 總結 從工作環境看,人員工作活動和各部門的同事有很多的交流 系統測試,頁面的測試,課件的測試等等。那麼對 人員考評的標準應該是乙個綜合考評的標準,目的...