避免MCU或編程語(yǔ)言干擾設計
如果三個(gè)溫度僅僅用于加權以得到一個(gè)“更真實(shí)”的系統溫度,控制邏輯不需要改變,只需將含wrappers的溫度傳感塊以統一格式輸入這三個(gè)溫度,然后通過(guò)一個(gè)wrappers來(lái)對這三個(gè)溫度進(jìn)行加權,生成控制邏輯所需的單一溫度。這種方法易于包含來(lái)自不同的溫度輸入(例如,圖形處理器的二極管結測量和連接到PCB的模擬熱敏電阻),因為wrappers將系統邏輯與硬件隔離開(kāi)。
讓我們以?xún)蓚€(gè)不同的實(shí)現例子驗證這個(gè)論點(diǎn):一個(gè)用于墻恒溫器,另一個(gè)是顯卡上的溫度控制子系統。首先對于墻恒溫器,如圖2所示,假定使用基于8051的賽普拉斯PSoC3設備。“溫度傳感器”部分的硬件由連接到ADC(16位Δ-Σ轉換器)的熱敏電阻組成。“用戶(hù)輸入”部分的硬件由5個(gè)常開(kāi)按鍵開(kāi)關(guān)組成,一邊連接到電路接地端,另一邊連接到含內部上拉電阻的5輸入數字端口。“熱和冷命令”模塊的硬件部分包括三個(gè)功率場(chǎng)效應管,由配置為開(kāi)漏低輸出的3輸出端口驅動(dòng)。最后,“顯示輸出”塊的硬件實(shí)現是串行字符液晶顯示器,能夠根據需要顯示字母數字字符串。
對于第2個(gè)應用,即顯示卡,將用戶(hù)輸入從離散開(kāi)關(guān)變?yōu)镮2C基于寄存器的從接口(由主CPU而不是人類(lèi)直接控制),并將串行LCD顯示變?yōu)镾PI-從控制顯示器(使用一系列的寄存器和指令,可能是安裝在主計算機外殼前面板上的遠程變頻顯示,未安裝到顯卡上)。溫度輸入和HVAC命令保持不變。圖3顯示了早期實(shí)施的變化,假定使用基于8051的賽普拉斯PSoC3設備。
用戶(hù)輸入的兩種實(shí)現均可服務(wù)于“GetThermostatSetting”、“IsHeaterEnabled”、“IsCoolerEnabled”和“IsFanOn”。對于第一個(gè)墻恒溫器應用,“用戶(hù)輸入”將數字端口包裝到所列的服務(wù)中,當設備被調用時(shí),提供端口的實(shí)時(shí)讀數(一種可能的實(shí)施)。對于另一個(gè)應用,基于I2C從機的實(shí)現,相同的服務(wù)將來(lái)自I2C主機寫(xiě)入的寄存器的最新值返回到“控制邏輯”部分,也許經(jīng)常返回也許僅在上電時(shí)返回。并且這些實(shí)現還有很多其它特點(diǎn),包括用作切換鍵的墻上按鈕開(kāi)關(guān)而不是瞬間讀數,甚至在“用戶(hù)輸入”部分的wrappers深層進(jìn)行邊沿觸發(fā)異步處理。
綜合上述的關(guān)鍵是:系統設計隱藏了硬件細節;硬件和實(shí)施細節被系統設計包裝并隱藏。通過(guò)外端設計(即代碼)的實(shí)施細節,可以保護這些應用實(shí)現時(shí)避免分裂,可以做到個(gè)性化的設計,權衡利弊,保證項目成功交付,并仍然能夠提供可復用性和組設計。不要讓賣(mài)方牽引注意力——先設計系統,然后加強保護系統設計實(shí)現細節不被抄襲。
評論