cpld加密
A. 怎樣將ALTERA的CPLD晶元的pof文件讀出來,被讀取的晶元是EMP7032SLC44-10N
是可編程邏輯器件(Programable Logic Device)的簡稱,FPGA是現場可編程門陣列(Field Programable Gate Array)的簡稱,兩者的功能基本相同,只是實現原理略有不同,所以我們有時可以忽略這兩者的區別,統稱為可編程邏輯器件或PLD/FPGA。
PLD是電子設計領域中最具活力和發展前途的一項技術,它的影響絲毫不亞於70年代單片機的發明和使用。
PLD能做什麼呢?可以毫不誇張的講,PLD能完成任何數字器件的功能,上至高性能CPU,下至簡單的74電路,都可以用PLD來實現。PLD如同一張白紙或是一堆積木,工程師可以通過傳統的原理圖輸入法,或是硬體描述語言自由的設計一個數字系統。通過軟體模擬,我們可以事先驗證設計的正確性。在PCB完成以後,還可以利用PLD的在線修改能力,隨時修改設計而不必改動硬體電路。使用PLD來開發數字電路,可以大大縮短設計時間,減少PCB面積,提高系統的可靠性。 PLD的這些優點使得PLD技術在90年代以後得到飛速的發展,同時也大大推動了EDA軟體和硬體描述語言(HDL)的進步。
如何使用PLD呢?其實PLD的使用很簡單,學習PLD比學習單片機要簡單的多,有數字電路基礎,會使用計算機,就可以進行PLD的開發。不熟悉PLD的朋友,可以先看一看可編程邏輯器件的發展歷程。
開發PLD需要了解兩個部分:1.PLD開發軟體 2.PLD本身
1.PLD開發軟體
由於PLD軟體已經發展的相當完善,用戶甚至可以不用詳細了解PLD的內部結構,也可以用自己熟悉的方法:如原理圖輸入或HDL語言來完成相當優秀的PLD設計。所以對初學者,首先應了解PLD開發軟體和開發流程。了解PLD的內部結構,將有助於提高我們設計的效率和可靠性。
如何獲得PLD開發軟體軟體呢? 許多PLD公司都提供免費試用版或演示版(當然商業版大都是收費的),例如:可以免費從 上下載Altera公司的 QuartusII (web版),或向其代理商索取這套軟體。Xilinx 公司也提供免費軟體:ISE WebPack,這套可以從xilinx網站下載。Lattice 提供isplever Base版下載,Actel等公司也都有類似的免費軟體提供。以上免費軟體都需要在網上注冊申請License文件,如果您對License的安裝還有不清楚,請仔細閱讀相關網頁上的說明,也可以下載這篇文檔:EDA軟體的license管理與安裝。 通常這些免費軟體已經能夠滿足一般設計的需要,當然,要想軟體功能更強大一些,只能購買商業版軟體。
如果您打算使用VHDL或Verilog HDL硬體描述語言來開發PLD/FPGA,通常還需要使用一些專業的HDL開發軟體,這是因為FPGA廠商提供的軟體的HDL綜合能力一般都不是很強,需要其他軟體來配合使用,詳細情況可以通過瀏覽:開發軟體欄目獲得等多信息.
對於PLD產品,一般分為:基於乘積項(Proct-Term)技術,EEPROM(或Flash)工藝的中小規模PLD,以及基於查找表(Look-Up table)技術,SRAM工藝的大規模PLD/FPGA。EEPROM工藝的PLD密度小,多用於5,000門以下的小規模設計,適合做復雜的組合邏輯,如解碼。SRAM工藝的PLD(FPGA),密度高,觸發器多,多用於10,000門以上的大規模設計,適合做復雜的時序邏輯,如數字信號處理和各種演算法。如希望進一步了解PLD/FPGA結構與原理,請點擊此處。
目前有多家公司生產CPLD/FPGA,最大的三家是:ALTERA,XILINX,Lattice, 您可以參閱PLD廠商欄目獲得更多信息
2.PLD/FPGA的分類和使用
在PLD/FPGA開發軟體中完成設計以後,軟體會產生一個最終的編程文件(如 .pof )。如何將編程文件燒到PLD晶元中去呢?
1.對於基於乘積項(Proct-Term)技術,EEPROM(或Flash)工藝的PLD(如Altera的MAX系列,Lattice的大部分產品,Xilinx的XC9500,Coolrunner系列), 廠家提供編程電纜,電纜一端裝在計算機的並行列印口上,另一端接在PCB板上的一個十芯插頭,PLD晶元有四個管腳(編程腳)與插頭相連。(如圖)
下載 ALTERA 編程電纜(Byteblaster MV)的數據手冊
下載 Xilinx編程電纜的電路原理圖
下載 Lattice的電纜資料
它向系統板上的器件提供配置或編程數據,這就是所謂的在線可編程(ISP,如下圖)。Byteblaster使用戶能夠獨立地配置PLD器件,而不需要編程器或任何其它編程硬體。編程電纜可以向代理商購買,也可以根據廠家提供的編程電纜的原理圖自己製作,成本僅需一,二十元。 早期的PLD是不支持ISP的,它們需要用編程器燒寫。目前的PLD都可以用ISP在線編程,也可用編程器編程。這種PLD可以加密,並且很難解密,所以常常用於單板加密。
1.將PLD焊在PCB板上 2.接好編程電纜 3.現場燒寫PLD晶元
2.對於基於查找表(LUT,Look-Up table)技術,SRAM工藝的FPGA(如Altera的所有FPGA,如ACEX,Cyclone,Stratix系列,Xilinx的所有FPGA,如Spartan,Virtex系列,Lattice的EC/ECP系列等),由於SRAM工藝的特點,掉電後數據會消失,因此調試期間可以用下載電纜配置PLD器件,調試完成後,需要將數據固化在一個專用的EEPROM中(用通用編程器燒寫,也有一些可以用電纜直接改寫),上電時,由這片配置EEPROM先對FPGA載入數據,十幾個毫秒到幾百個毫秒後,FPGA即可正常工作。(亦可由CPU配置FPGA)。但SRAM工藝的PLD一般不可以直接加密。
3.還有一種反熔絲(Anti-fuse)技術的FPGA,如Actel,Quicklogic的部分產品就採用這種工藝。但這種的PLD是不能重復擦寫,需要使用專用編程器,所以開發過程比較麻煩,費用也比較昂高。但反熔絲技術也有許多優點:布線能力更強,系統速度更快,功耗更低,同時抗輻射能力強,耐高低溫,可以加密,所以在一些有特殊要求的領域中運用較多,如軍事及航空航天。 為了解決反熔絲FPGA不可重復擦寫的問題,Actel等公司在90年代中後期開發了基於Flash技術的FPGA,如ProASIC系列,這種FPGA不需要配置,數據直接保存在FPGA晶元中,用戶可以改寫(但需要10幾伏的高電壓)。
隨著技術的發展,在2004年以後,一些廠家推出了一些新的PLD和FPGA,這些產品模糊了PLD和FPGA的區別。例如Altera最新的MAXII系列PLD,這是一種基於FPGA(LUT)結構,集成配置晶元的PLD,在本質上它就是一種在內部集成了配置晶元的FPGA,但由於配置時間極短,上電就可以工作,所以對用戶來說,感覺不到配置過程,可以傳統的PLD一樣使用,加上容量和傳統PLD類似,所以altera把它歸作PLD。 還有像Lattice的XP系列FPGA,也是使用了同樣的原理,將外部配置晶元集成到內部,在使用方法上和PLD類似,但是因為容量大,性能和傳統FPGA相同,也是LUT架構,所以Lattice仍把它歸為FPGA。
怎麼樣?對PLD/FPGA的使用有了一定的了解了吧,如有疑問,可在本站論壇:新手入門欄目上提出上提出,大家一起討論。
如果對您有幫助,請記得採納為滿意答案,謝謝!祝您生活愉快!
vaela
B. [圖]51單片機MCU + CPLD + LCD1602 是什麼意思
對單片機來講,不需要轉換成串列數據,CPLD完成地址並行到串列轉換輸出,這樣返槐可能是單片機沒有同步串列介面蔽蘆,提高地址寫入速度,或減少單片機模擬地址串列輸出的程序。
主要可能是由於這個電路圖是開漏並友發板,便於初學者了解單片機、CPLD及液晶的學習。
C. 初學者,向大俠們請教。單片機控制cpld的系統板中單片機控制cpld的信號不能正常輸出
那很明顯單片機的程序寫的沒有什麼問題,cpld應該是硬體察掘加密/編碼功能,你單片機那邊的演算法沒有正確爛虧,用示波表(最好多路)檢查下CPLD各路輸入不同情況時候輸出的變化,然後用線性方程逆推出來敗歷核函數,才實現完美破解。一句話總結:單片機演算法你沒寫對
D. FPGA和CPLD的區別是什麼
從答塌內部結構來看,CPLD是 Proct term(基於乘積項), FPGA是Look up Table(基於查找表);從程序洞舉如存儲來看, CPLD是內部EEPROM/FLASH SRAM,FPGA是外掛EEPROM。此外,CPLD組合邏輯資源豐富,集成度低,速度慢,可加密,主要用於完成控制邏輯,FPGA時序邏輯資納啟源豐富,集成度高,速度快,且有PLL、RAM和乘法器等,一般不能保密,能完成比較復雜的演算法。
E. 如何給自己的FPGA代碼加密,保障代碼專利不會被竊,歡迎各位出出主意
在使用方案上增加限制 如增加認證功能等
F. 晶元加密的加密方法
1、磨片,用細砂紙將晶元上的型號磨掉。對於偏門的晶元比較管用,對常用晶元來說,只要猜出個大概功能,查一下哪些管腳接地、接電源很容易就對照出真實的晶元了
2、封膠,用那種凝固後象石頭一樣的膠(如粘鋼材、陶瓷的那種)將PCB及其上的元件全部覆蓋。裡面還可故意搞五六根飛線(用細細的漆包線最好)擰在一起,使得拆膠的過程必然會弄斷飛線而不知如何連接。要注意的是膠不能有腐蝕性,封閉區域發熱不太大。
3、使用專用加密晶元,如ATMEL的AT88SC153等也就幾塊錢,只要軟體不能被反匯編出來,即使把所有信號用邏輯分析儀截獲下來也是無法復制的。
4、使用不可破解的晶元,如EPLD的EPM7128以上(目前已可破解)、ACTEL的CPLD等,但成本較高(百元以上),對小產品不適用
5、使用MASK IC,一般來說MASK IC要比可編程晶元難破解得多,這需要很大的批量。MASK不僅僅是至MCU,還包括ROM、FPGA和其它專用晶元
6、使用裸片,看不出型號也不知道接線。但晶元的功能不要太容易猜,最好在那團黑膠里再裝點別的東西,如小IC、電阻等
7、在電流不大的信號線上串聯60歐姆以上的電阻(讓萬用表的通斷檔不響),這樣在用萬用表測連線關系時將增加很大的麻煩。
8、多用一些無字(或只有些代號)的小元件參與信號的處理,如小貼片電容、TO-XX的二極體、三極體、三到六個腳的小晶元等,想查出它的真實面目還是有點麻煩的。
9、將一些地址、數據線交叉(除RAM外,軟體里需進行對應的交叉),測連線關系時沒法靠舉一反三來偷懶
10、PCB採用埋孔和盲孔技術,使過孔藏在板內。此方法成本較高,只適用於高端產品
11、使用其它專用配套件,如定做的LCD屏、定做的變壓器等、SIM卡、加密磁碟等
G. 能不能解析一塊晶元的系統
實了解晶元解密方法之前先要知道什麼是晶元解密,網路上對晶元解密的定義很多,其實晶元解密就是通過半導體反向開發技術手段,將已加密的晶元變為不加密的晶元,進而使用編程器讀取程序出來。
晶元解密所要具備的條件是:
第一、你要有一定的知識,懂得如何將一個已加密的晶元變為不加密。
第二、必須有讀取程序的工具,可能有人就會說,無非就是一個編程器。沒錯,就是一個編程器,但並非所有的編程器是具備讀取的功能。這也就是為什麼我們有時候為了解密一個晶元而會去開發一個可讀編程器的原因。那我們就講講,晶元解密常有的一些方法。
1、軟體攻擊
該技術通常使用處理器通信介面並利用協議、加密演算法或這些演算法中的安全漏洞來進行攻擊。軟體攻擊取得成功的一個典型事例是對早期ATMELAT89C系列單片機的攻擊。攻擊者利用了該系列單片機擦除操作時序設計上的漏洞,使用自編程序在擦除加密鎖定位後,停止下一步擦除片內程序存儲器數據的操作,從而使加過密的單片機變成沒加密的單片機迅侍,然後利用編程器讀出片內程序。
至於在其他加密方法的基礎上,可以研究出一些設備,配合一定的軟體,來做軟體攻擊。近期國內出現了一種凱基迪科技51晶元解密設備(成都一位高手搞出來的),這種解密器主要針對SyncMos.Winbond,在生產工藝上的漏洞,利用某些編程器定位插位元組,通過一定的方法查找晶元中是否有連續空位,也就是說查找晶元中連續的FFFF位元組,插入的位元組能夠執行把片內的程序送到片外的指令,然後用解密的設備進行截獲,這樣晶元內部的程序就被解密完成了。
2、電子探測攻擊
該技術通常以高時間解析度來監控處理器在正常操作時所有電源和介面連接的模擬特性,並通過監控它的電磁輻射特性來實施攻擊。因為單片機是一個活動的電子器件,當它執行不同的指令時,對應的電源功率消耗也相應變化。
這樣通過使用特殊的電子測量儀器和數學統計方法分析和檢測這些變化,即可獲取單片機中的特定關鍵信息。至於RF編程器可以直接讀出老的型號的加密MCU中的程序,就是採用這個原理。
3、過錯產生技術
該技術使用異常工作條件來使處理器出錯,然後提供額外的訪問來進行攻擊。使用最廣泛的過錯產生攻擊手段包括電壓沖擊和時鍾沖擊。低電壓和高電壓攻擊可用來禁止保護電路工作或強制處理器執行錯誤操作。時鍾瞬態跳變也許會復位保護電路而不會破壞受保護信息。電源和時鍾瞬態跳變可以在某些處理器中影響單條指令的解碼和執行。
4、探針技術
該技術是直接暴露晶元內部連線,然後觀察、操控、干擾單片機以達到攻擊目的。
5、紫外線攻擊方法
紫外線攻擊也稱為UV攻擊方法,就是利用紫外線照射晶元,讓加密的晶元變成了不加密的晶元,然後用編程器直接讀出程序。這種方法適合OTP的晶元,做單片機的工程師都知道OTP的晶元只能用紫外線才可以擦除。那麼要擦出加密也是需要用到紫外線。
目前台灣生產的大部分OTP晶元都是可以使用這種方法解密的,感興趣的可以試驗或到去下載一些技術資料。OTP晶元的封裝有陶塵昌納瓷封裝的一半會有石英窗口,這種事可以直接用紫外線照射的,如果是用塑料封裝的,就需要先將晶元開蓋,將晶圓暴露以後才可以採用紫外光照射。由於這種晶元的加密性比較差,解密基本不需要任何成本,所以市場上這種晶元解密的價格非常便宜,比如SONIX的SN8P2511解密,飛凌單片機解密等價格就非常便宜。
6、利用晶元漏洞
很多晶元在設計的時候有加密的漏洞,這類晶元就可以利用漏洞來攻擊晶元讀出存儲器里的代碼,比如我們以前的文章里提到的利用晶元代碼的漏洞,如果能找到聯系的FF這樣的代碼就可以插入位元組,來達到解密。
還有的是搜索代碼里派沒是否含有某個特殊的位元組,如果有這樣的位元組,就可以利用這個位元組來將程序導出。這類晶元解密以華邦、新茂的單片為例的比較多,如W78E516解密,N79E825解密等,ATMEL的51系列的AT89C51解密是利用代碼的位元組漏洞來解密的。
另外有的晶元具有明顯的漏洞的,比如在加密後某個管腳再加電信號的時候,會使加密的晶元變成不加密的晶元,由於涉及到國內某家單片機廠家,名稱就不列出來了。目前市場上能看到的晶元解密器都是利用晶元或程序的漏洞來實現解密的。
不過外面能買到的解密其基本上是能解得型號很少,因為一般解密公司都不會將核心的東西對外公布或轉讓。而解密公司自己內部為了解密的方便,自己會使用自製的解密工具,如果致芯科技具有可以解密MS9S09AW32的解密器、能專門解密Lpc2119LPC2368等ARM的解密器,使用這樣的解密器解密速度快,客戶到公司基本上立等可取。
7、FIB恢復加密熔絲方法
這種方法適用於很多的具有熔絲加密的晶元,最具有代表性的晶元就是ti的msp430解密的方法,因為MSP430加密的時候要燒熔絲,那麼只要能將熔絲恢復上,那就變成了不加密的晶元了,如MSP430F1101A解密、MSP430F149解密、MSP430F425解密等。
一般解密公司利用探針來實現,將熔絲位連上,也有的人因為自己沒有太多的解密設備,需要交由其它半導體線路修改的公司來修改線路,一般可以使用FIB(聚焦離子束)設備來將線路連接上,或是用專用的激光修改的設備將線路恢復。這些設備目前在國內的二手設備很多,也價格很便宜,一些有實力的解密公司都配置了自己的設備。這種方法由於需要設備和耗材,不是好的方法,但是很多晶元如果沒有更好的方法的時候,就需要這種方法來實現。
8、修改加密線路的方法
目前市場上的CPLD以及DSP晶元設計復雜,加密性能要高,採用上述方法是很難做到解密的,那麼就需要對晶元結構作前面的分析,然後找到加密電路,然後利用晶元線路修改的設備將晶元的線路做一些修改,讓加密電路失效,讓加密的DSP或CPLD變成了不加密的晶元從而可以讀出代碼。如TMS320LF2407A解密,TMS320F28335解密、TMS320F2812解密就是採用這種方法。
了解了這些破解晶元的方法,相應的,我們在設計晶元時也要對這些漏洞盡量加以規避,使自己的晶元更加安全。對於新手來說,設計一款單片機不是容易的事,如果有現成的模塊可以使用將會大大節省時間和精力,就有專門為電子工程師提供的電子設計模塊,並且全部使用立創商城的正品元器件,質量可靠、售後有保障,可以幫助大家快速搭建產品原型,縮短製作周期
H. 單片機加密解密,有沒有很好的辦法來
晶元解密及單片機解密必須要注意的幾點★凱基迪解密
(1)在選定加密晶元前,要充分調研,了解單片機破解技術的新進展,包括哪些單片機是已經確認可以破解的。盡量不選用已可破解或同系列、同型號的晶元,選擇採用新工藝、新結構、上市時間較短的單片機,如可以使用ATMEGA88/ATMEGA88V,這種國內目前破解的費用只需要1萬元左右;其他也可以和CPLD結合加密,這樣解密費用很高,解密一般的CPLD也要1萬左右。
(2)盡量不要選用MCS51系列單片機,因為該單片機在國內的普及程度最高,被研究得也最透。
(3)產品的原創者,一般具有產量大的特點,所以可選用比較生僻、偏冷門的單片機來加大仿冒者采購的難度,選用一些生僻的單片機,比如motorola單片機,目前國內會開發使用熟悉motorola單片機的人很少,所以破解的費用也相當高,從8000~3萬左右。
(4)在設計成本許可的條件下,應選用具有硬體自毀功能的智能卡晶元,以有效對付物理攻擊;另外程序設計的時候,加入時間到計時功能,比如使用到1年,自動停止所有功能的運行,這樣會增加破解者的成本。
(5)如果條件許可,可採用兩片不同型號單片機互為備份,相互驗證,從而增加破解成本。
(6)打磨掉晶元型號等信息或者重新印上其它的型號,以假亂真。
(7)可以利用單片機未公開,未被利用的標志位或單元,作為軟體標志位。
(8)利用MCS-51中A5指令加密,其實世界上所有資料,包括英文資料都沒有講這條指令,其實這是很好的加密指令,A5功能是二位元組空操作指令加密方法在A5後加一個二位元組或三位元組操作碼,因為所有反匯編軟體都不會反匯編A5指令,造成正常程序反匯編亂套,執行程序無問題仿製者就不能改變你的源程序。
(9)應在程序區寫上你的大名單位開發時間及仿製必究的說法,以備獲得法律保護;另外寫上你的大名的時候,可以是隨機的,也就是說,採用某種演算法,外部不同條件下,你的名字不同,比如husoon1011、jisppm1012等,這樣比較難反匯編修改。
(10)採用高檔的編程器,燒斷內部的部分管腳,具體如何燒斷,可以參考:單片機管腳燒斷的方法和破解。
(11)採用保密硅膠(環氧樹脂灌封膠)封住整個電路板,PCB上多一些沒有用途的焊盤,在硅膠中還可以摻雜一些沒有用途的元件,同時把MCU周圍電路的電子元件盡量抹掉型號。
(12)對SyncMos,Winbond單片機,將把要燒錄的文件轉成HEX文件,這樣燒錄到晶元內部的程序空位自動添00,如果你習慣BIN文件,也可以用編程器把空白區域中的FF改成00,這樣一般解密器也就找不到晶元中的空位,也就無法執行以後的解密操作。
I. CPLD和FPGA和DSP有何區別速度最快的是哪種
1.
CPLD速度最快。
2.
FPGA的集成度比CPLD高,具有更復雜的布線結構和邏輯實現。
3.
DSP主要用來計算,計算功能很強悍,一般嵌入式晶元用來控制,而DSP用來計缺態嫌算,譬如一般手機有一個arm晶元,主要用來跑界面,應用程序,DSP可能有兩個,adsp,mdsp,或一個,主要是加密解密,調制解調等。
4.
CPLD是屬於粗粒結構的可編程邏輯器件。它具有豐富的邏輯資源(即邏伏手輯門與寄存器的比例高)和高度靈活的路由資源。CPLD的路由是連接在一起的,而FPGA的路由是分割開的。FPGA可能更靈活,但包括很多跳線,因此速度較CPLD慢。
CPLD以群陣列(array
of
clusters)的形式排列閉鍵,由水平和垂直路由通道連接起來。這些路由通道把信號送到器件的引腳上或者傳進來,並且把CPLD內部的邏輯群連接起來。
J. 如何實現CPLD與FPGA之間的通信
cpld和fpga引腳直連就可以,電平應該是迅叢可以兼容的。我的想法是:cpld你當成個存儲器用,fpga控制cpld就相當於控制一個祥御存儲器,判斷比較是否相同的畝宴櫻話,如果提前已經知道所傳數據,你可以讓cpla預先存進去,然後比較,相同的話,給fpga一個電平變化,如果不知道所要傳過來的數據,那我就不太了解了