為什么硬件設計容易軟件難?
或許是我個人對于硬體的偏見吧!但根據(jù)我多年來的觀察,在嵌入式領域的硬體設計一向比軟體設計更簡單。我在此所指的主要是指數(shù)位硬體設計,它能利用具有清楚定義輸入與輸出的邏輯模組。幾年前,你只需利用幾個LSI(大規(guī)模整合)與MSI(中等規(guī)模整合)元件,加上一些記憶體,然后連接在印刷電路板(PCB)上即可。這種硬體設計(至今仍然)是非常簡單的。
本文引用地址:http://www.j9360.com/article/276819.htm如今,你可能會使用FPGA、記憶體,甚至一顆MCU。你還會用到一、兩個電源模組與連接器,以便連接到其他板卡或機箱。你甚至還可能利用一款無線周邊元件或一顆類比數(shù)位轉換器(ADC)。
無論如何,這些都是非常明確定義的“模組”,具有標準的介面與匯流排。即使是FPGA,你也只是用了相同的設計手法——除非你得將幾個預定義的功能(IP核心)連接至標準的匯流排、記憶體以及幾個固定功能的周邊。
這樣的設計模式相當簡單,而且已經成功實現(xiàn)數(shù)十年了。只需連接一些明確定義的高性能模組(但我們在元件或IP核心中整合的功能越多,這些模組也越變越大),就可以創(chuàng)造出所需的系統(tǒng)或子系統(tǒng)。一個搭載FPGA以及標準元件與連接器的典型電路板案例是Diligent Inc.針對Xilinx Zynq SoC FPGA系列推出的Zybo開發(fā)套件。

硬體設計并不難
然而,當你必須為MCU或FPGA編寫軟體時,最棘手部份才算開始。硬體設計人員解決問題的方式可能是先問:“哪里有明確定義的模組可讓我用來打造軟體設計?”
我們會期待有高性能模組所用的介面、預先定義的記憶體模組來保存各種結構、圖表與初始化向量。有許多時候,硬體模組能夠輕松地利用參數(shù)與初始化暫存器加以客制化。但專為通用演算法與結構所用的客制化編碼模組在哪里呢?
現(xiàn)在,我們也許能幸運地找到馬達控制演算法或一些相當高階的數(shù)位訊號處理功能,但擁有無縫連接主模組的通用介面或記憶體緩沖結構的機會有多大?也許目前有許多驅動器可用于連接至UART或乙太網路(Ethernet)埠等介面元件,但那些通常只是較低階的功能,主要在于使其易于控制MCU或FPGA上的硬體。
所以,我認為嵌入式軟體十分復雜,因為共同設計“流程”必須從頭開始打造。嵌入式軟體設計并不容許直接套用硬體的設計“流程”——像硬體世界一樣提供一連串具有通用“匯流排”的標準軟體“元件”選擇。
但我經常只是想編寫幾個控制部份,可能再加上一種“特殊配方”的演算法。
數(shù)位硬體領域可以采用這種模組化的方式,為什么在軟體設計時卻不能?
評論