1:首先進行的準備是有針對性的學習cpld物理構造和資源
先不要著急去買開發(fā)板,不要著急寫邏輯。了解硬件本身更加重要。Cpld是一個很大的范疇,初學者會淹沒在眾多廠家、眾多資料的海洋中。針對這個問題,筆者建議大家有所針對的進行知識獲取,推薦大家以altera的maxii系列cpld為突破口,首當其沖的就是EPM240這顆芯片。把它吃透,則maxii系列的其它都很好理解了,構造都一樣,只是資源增加而已。其它廠家的也好用了,因為它們都是大同小異的。之所以選擇emp240是因為它應用已經(jīng)很廣泛,市場上容易買到,而且價格便宜,批量買只有8元/片左右。
Emp240顧名思義具有240個宏單元。簡單理解就是有240個觸發(fā)器,或者理解成240個bit的存儲單元。這樣都好理解,以后對工程應用就容易估算容量了。對于工程來說,一般這么做,首先依據(jù)需求設計引腳的數(shù)量,然后再在開發(fā)環(huán)境中進行邏輯編寫、軟仿真,這樣,在硬件完全沒有開始之前,就能把邏輯部分全部設計完,只差物理驗證一步了。仿真分2布,寫邏輯時用quartus自帶的仿真即可。邏輯寫完之后,最好用modelsim。Modelsim是專門的仿真軟件,功能十分強大,但對初學者來說,最好先不要介入這個領域。先把cpld用上是最主要的。
好了,這樣就把目標縮小到一個點上了。需要花功夫把240的相關資料吃透,把quartus用熟。到這里,一分錢都不用花。時間用在3個點上:1、240的構造和資源,2、quartus軟件使用,3、veriloghdl語言學習。
設計中,如果你的邏輯需要100個單元,編譯后會發(fā)現(xiàn)用掉120個單元,這是cpld內(nèi)部布線需要。作為實際應用,必須要留20%以上的富余量,比如編譯結果指示用220個單元,這時就不要用240了,應該使用570,因為240的富余量不夠。
一個小技巧,針對EPM240和570來說,常用的封裝是T100的,就是TQFP100,這2個芯片的封裝是向下兼容的,因此,設計時,即便決定使用240,也要按570去畫板子。焊接是兼容的,同時萬一240不夠了,可以改焊570。
2:向應用cpld走近一步,用開發(fā)板練習。
有了上面的基礎,可以投資買開發(fā)板了,一般賣板子的都配套好軟件和編程器了。針對240的開發(fā)板可能很少,可能570的好買。注意買cpld的開發(fā)板,不要急于用fpga的,學會cpld之后,再用fpga就容易多了。要一步一步來。570的開發(fā)板,帶仿真器,帶軟件,帶練習光盤,一整套下來估計200-300元人民幣。這個資金對你要學會的技術來說,微不足道。
開發(fā)板光盤有許多例子程序,可以先跑跑看,很容易就上手了。對于初學者來說,cpld技術是一個很大的領域,切記不要急于求成,上來就弄個fpga去加載視頻編解碼算法,那會十分困難。建議先從最簡單的開始,用240替代設計中使用的一些74芯片、完成部分軟件功能等,熟能生巧。這個技術絕不是短時間就能達到多高水平的,必須有積累過程。一開始就啃難度高的,會對信心造成打擊,長時間沒有進展,是讓一個硬件工程師最為抓狂的事。
對于前期學習準備比較充足的工程師來說,完全可以不買開發(fā)板,直接在工程中應用,F(xiàn)在的互聯(lián)網(wǎng)太方便了,只要你的cpld外圍沒有接錯,由于引腳分布是可編程的,PCB板導致不能用的可能性就大大降低了,鼓勵直接自己畫PCB去應用。這樣掌握得更快。
3:cpld與cpu的接口
這個問題十分重要,因為cpld大部分扮演的是cpu的擴展,替cpu完成外部引腳資源擴展、輸入輸出時序管理、部分軟件功能實現(xiàn)。很少有讓一個cpld單獨工作的。
Cpld與cpu的接口就十分突出,對于要學cpld的工程師來說,用的cpu可能僅限于51單片機或者arm7系單片機。這種接口算是比較簡單了,還是應該循序漸進,從簡單的入手,比如用單片機3個io去cpld,由cpld完成74hc138功能,這就是一個簡單接口。再進一步,用cpu的p0口和一個io腳接到cpld,用cpld完成373、244、273等功能,這就進了一步,有時序的概念了。最后,用cpu的數(shù)據(jù)口、晶振、wr、rd、ale等信號接入cpld,把cpld做成幾個字節(jié)的ram,讀寫實驗。這一關過去之后,cpld與單片機的接口就再無秘密可言了。
與51單片機的接口注意必須深刻理解cpu的工作時序,地址與數(shù)據(jù)口如何復用,ale信號如何鎖存地址等。與arm7的接口相對簡單,因arm7比較靈活,對外部接口的管理功能強。
初學者使用cpld的時候,建議在所有io腳的連線中都串聯(lián)一個51歐電阻,這樣會方便測量,更重要的是能保護cpld的io口,更深入的說,能改善高速信號的振鈴、信號反射,提高信號完整性。
4:cpld與fpga的簡單介紹
Cpld比較簡單,fpga更加復雜,在cpld基礎上,增加了PLL、硬件乘法器、ram塊等硬件資源。更有的fpga直接集成了dsp的硬核。Altera的maxii系列cpld,其內(nèi)部應用了走線池,因此嚴格地說它已經(jīng)屬于fpga了。
目前主要的cpld和fpga廠家是altera和xilinx,還有actel等規(guī)模稍小。Altera主要面對商用和工業(yè)用,其產(chǎn)品性價比稍好,市場應用最為廣泛。Xilinx初期定位在宇航級產(chǎn)品,因此,它的芯片具有更好的性能。后來xilinx也面對商業(yè)用戶了,因此形成了與altera分庭鼎立的情況,兩個這么大的廠家,芯片的系列十分類似。建議初學者使用altera的。當然,使用xilinx也無所謂。
Altera的開發(fā)環(huán)境是quartus,筆者使用的是8.1版,已經(jīng)老了,但是夠用,且不出問題,姑且使用。Xilinx的開發(fā)環(huán)境是ISE。這些環(huán)境本身已經(jīng)提供了比較完整的仿真功能。但有一個功能更加強大、更加獨立的仿真環(huán)境是modelsim,它分前仿真和后仿真,由于altera和xilinx的主導作用,因此modelsim提供了這兩家的芯片的完整支持。‘前仿真’屬于邏輯仿真,所有瞬態(tài)時序同步發(fā)生,用于初期測試邏輯功能是否正確。‘后仿真’則帶有延遲特性,這與芯片內(nèi)部構造和編譯后的內(nèi)部走線密切相關。這個后仿真,一般情況下就等同于在實際板子上跑的結果。如果在PCB上跑出現(xiàn)問題,則此問題就比較難解決。
軟件分兩種規(guī)范,一個是veriloghdl,一個叫vhdl。前者基本就是c語言的底子,因此對于工程師來說,很容易上手,所以用verilog的人非常多。Vhdl則更加嚴謹,其語言規(guī)范需要一段時間熟悉。如果要長期以hdl語言為伍,則推薦學習vhdl,它的結構更加嚴謹,能避免比較復雜的問題的發(fā)生。聽一個在華為的硬件工程師說,華為要求必須熟練一個語言的同時要能看懂另一個語言。