編者按隨著電子技術的發展,可編程邏輯器件成為電子設計中常用的技術,有許多讀者發郵件或寫信,希望本刊增加這方面的內容。本刊從今年開始,將“相約單片機”欄目改為“單片機與可編程邏輯器件”,并特約東北大學的杜玉遠老師撰寫系列文章,以使讀者對其有一基本的認識。
近年,數字化進程的不斷加快,推動了具有高速度、高集成度、低功耗的可編程ASIC器件的發展,同時也推動了用于開發這類器件的EDA技術發展和進步,電路設計構成逐步地從中、小規模芯片轉為大規模、超大規模(LSI、VLSI)芯片,因此掌握EDA設計技術,使用可編程大規模、超大規模(LSI、VLSI)芯片已經成為從事電子設計人員必需具有的基本能力。本文將介紹如何在短時間內學習掌握這項技術,并在實際設計中運用。
1. 可編程ASIC器件選擇
在電路設計中使用可編程ASIC器件,簡單地說就是用大規模、超大規模(LSI、VLSI)芯片來代替中、小規模的芯片。在設計中主要依據芯片的內部結構、性能來選擇器件。在EDA技術中所使用的大規模、超大規模(LSI、VLSI)芯片被稱為可編程ASIC芯片,這些芯片包含有通用的邏輯資源,經過設計編程,就可以實現所需的功能。這些芯片根據其內部結構可劃分為CPLD(Complex Programmable Logic Device)和FPGA (Field Programmable Gate Array)。CPLD是復雜可編程邏輯器件的簡稱,其結構與早期的PAL、GAL相似,內部包含多個邏輯宏單元或宏模塊;FPGA是現場可編程門陣列的簡稱。
CPLD的內部結構是基于乘積項(Product-Term)技術的可編程ASIC芯片。代表的器件有Altera公司的MAX7000系列和Xilinx公司的XC9500系列等等。圖1是Altera公司MAX7000S系列的內部基本編程結構,從圖1中可以看出,MAX7000S系列的基本編程結構是由邏輯陣列、乘積項選擇矩陣和可編程觸發器構成的,這三部分都可以通過編程配置實現各種邏輯功能。不同型號器件中所包含的基本編程單元機構相似,但包含基本單元的數量多少不等,即它們的容量不同。CPLD的編程信息是采用E2CMOS工藝實現的,這種工藝具有非易失性,編程數據可以保持數十年,此類器件只能對其進行有限次(幾千次)編程。另外,可以對器件進行加密,而且一旦被加密,很難破解。

FPGA的內部結構是基于查找表(LUT)技術的可編程ASIC芯片。代表的器件有Altera公司的FLEX、ACEX、APEX系列和Xilinx公司的XC4000、Spartan、Virtex系列等等。圖2是Xilinx公司的XC4000系列的基本可配置邏輯塊CLB結構,從圖2可以看出,一個CLB由兩個獨立的4輸入查找表、一個3輸入查找表和兩個觸發器構成。查找表實際上是一個RAM結構,一個4輸入的查找表就是一個16×1 RAM單元,通過編程可以實現4輸入變量的任意邏輯函數。CLB內部的兩個觸發器通過編程,可以配置成不同類型的觸發器。圖2中的梯形符號均為可編程的數據選擇器符號,對這些數據選擇器的控制端編程,就可以改變CLB的配置結構,進而實現對器件的編程控制。數據選擇器的選擇控制端是由SRAM控制的,也就是說,FPGA的編程信息是通過SRAM實現的。由于器件掉電后,SRAM中的數據會丟失,因此,設計中需要根據情況為器件提供上電配置的電路,以保證上電后器件可以正常工作。配置FPGA的數據是存儲在非易失數據存儲器中的,使用時不便對其加密。
由此可見,CPLD內部具有大量的乘積項和較少的觸發器,而FPGA正好相反,其內部具有較少的組合邏輯資源和較多的觸發器。當設計中組合邏輯電路成分較多,而時序電路成分較少的電路時,或者需要很好的加密功能時,選擇CPLD比較適合,例如設計寬譯碼器和復雜編碼器時,最好選擇CPLD。當我們要設計功能較為復雜的時序電路時,由于復雜的時序電路需要大量的觸發器單元,例如設計ALU,選擇FPGA則比較適合。
2. EDA開發系統選擇
為了學習和使用可編程ASIC器件,需要有一個合適的開發平臺,即EDA開發系統。EDA開發系統按功能劃分為集成開發系統、綜合系統和仿真系統。集成開發系統一般是由可編程ASIC器件生產廠商開發的開發系統平臺,用戶利用這些開發平臺可以完成全部設計工作。代表的開發平臺如Xilinx公司的Foundation系列、Altera公司的MaxplusII 系列和QuartusII系列。綜合系統一般是由第三方軟件開發商開發的,為各器件廠商和普通用戶提供對原始設計輸入進行綜合產生編程數據的軟件,代表的綜合系統如Synplicity公司的Synplicity 系列。仿真系統是僅用于對設計進行功能仿真的EDA軟件,一般也是由第三方開發的,它不能生成編程數據,只用作設計初期工作,也就是說它不涉及具體的器件。代表的仿真系統如Aldec公司的Active-HDL。
由此可見,作為初學者應將功能齊全、能夠完成全部設計工作的集成開發系統作為EDA開發系統的首選。附表是Xilinx公司的Foundation系列和Altera公司的QuartusII系列的性能對比表,從附表中可以看出:兩種集成系統的設計流程基本相同,只是各自采用的具體程序不同,初學用戶可以根據自己喜好的需要選擇一種作為入門系統來學習,一旦掌握一種系統,很容易學習其它系統。筆者認為,Altera公司的Quartus II系統提供了較多與74系列中小規模器件完全相同的設計元件,對于初學者更容易開始設計;Xilinx公司的Foundation系統提供了較好的圖形導航界面,對于初學者更容易掌握軟件的使用。
3. EDA實驗系統選擇
無論集成開發系統功能如何強大,仿真功能如何準確,為了更快更好地學習和使用CPLD/FPGA,都需要有一個開發實驗平臺。實驗平臺根據其性能可以分為兩類:評估平臺和實驗系統。評估平臺是用來對某一個具體的器件的功能進行驗證的實驗平臺,評估板大多占用CPLD/FPGA的引腳資源,用戶只能在此硬件約束的條件下,對器件驗證和評估,而不能進行其它設計。在這類評估平臺上,只可以完成特定的實驗驗證,例如各廠商提供的EVM板就屬于這一類平臺。實驗系統則是一種開放的平臺。所謂開放的實驗平臺是與各種評估板相對而言的。圖3所示為一個開放式的實驗系統(多功能EDA實驗系統),從圖3中可以看出,該多功能EDA實驗系統由主板和子板構成,用戶通過更換不同類型的子板,就可以實現對不同廠家的不同類型芯片進行設計開發。在該實驗系統中,還提供了豐富的輔助資源以及單片機調試接口。在這個系統中,不僅可以對CPLD/FPGA進行設計,還可以利用單片機開發系統方便地進行CPLD/FPGA與單片機之間數據傳輸的設計。另外,多功能EDA實驗系統還應該提供獨立的下載編程電纜,并且編程接口與各公司所提供的編程電纜接口完全相同,這樣可以為用戶的目標系統提供器件編程服務。
4. EDA開發流程
根據自己的需要選擇了器件、開發系統和實驗系統后,就可以開始EDA設計了。利用集成開發系統進行EDA設計的流程如圖4所示。設計一般可分為設計輸入、設計綜合和器件編程三個步驟。設計輸入是由設計者完成,作為最原始的設計輸入;設計綜合包括優化、合并、映射、布局、布線等工作,并產生最終的下(上接25頁)載數據文件;器件編程是將設計輸出的數據文件通過下載電纜寫入到可編程器件內部,使其實現設計的功能。 EDA開發系統同時還具有功能仿真和時序仿真的功能,通常情況下,這些仿真結果是可以信賴的,開發系統一般是以最壞的情況給出仿真結果的,實際的工作情況比仿真結果會好一些。為了提高設計效率,必須正確掌握功能仿真和時序仿真的方法,準確理解仿真結果,以便于及時修改設計,而不必采用反復下載方式來驗證設計結果。圖4中的虛器件測試是EDA設計的最后一步,是在EDA實驗系統或目標系統中完成的。在整個設計過程中,設計輸入是最關鍵的,是由設計者對器件所實現的數字系統的邏輯功能進行描述階段。設計輸入一般有電路圖輸入法、真值表輸入法、狀態機輸入法、波形輸入法、硬件描述語言輸入法等等,其中電路圖輸入和硬件描述語言輸入是最常用的兩種輸入形式。

電路圖輸入法是把數字系統用邏輯圖來表示的輸入方法,使用元件符號和連線等來描述設計。電路圖描述要求設計工具提供必要的元件庫和邏輯宏單元庫。這種輸入方法具有條理清楚、易學、易用等優點。比較適用于初學者使用和較小的系統設計。幾乎所有的可編程器件開發系統都支持這種輸入方法。但是電路圖輸入法具有可移植性、可讀性較差、不便于交流的缺點。
硬件描述語言是用文本形式描述設計,常用的硬件描述語言有不同語言形式。常用的有ABEL-HDL、VHDL和Verilog HDL。 ABEL-HDL支持布爾方程、真值表、狀態機等邏輯表達方式。適合對計數器、譯碼器、比較器和狀態機等邏輯功能的描述。VHDL和Verilog HDL類似于C語言,在描述復雜設計時,非常簡潔,具有很強的邏輯描述功能,適合設計比較復雜的數字系統。
在設計過程中,往往采用層次化設計方法,分模塊、分層次地進行設計描述。描述系統總功能的設計為頂層設計,描述系統中較小單元的設計為底層設計。層次化設計方法比較自由,可以在任何層次使用電路圖或硬件描述語言進行描述。根據兩種輸入方式的特點,通常我們在頂層設計中采用電路圖輸入方式,而在底層設計中,采用硬件描述語言描述模塊的邏輯功能。
結語
在學習EDA技術過程中,無論選擇何種器件和開發系統,采用何種設計輸入方式和設計方法,一旦掌握了這種技術,它一定會給電路設計帶來巨大效益。作為初學者還應注意的是,無論集成開發系統的功能如何完備,其仿真能力多么準確,僅在集成開發系統中學習EDA技術,都將是“紙上談兵”,只有將設計下載到器件中,才算完成設計全部過程,才能真正把握和理解器件的性能,真正體會到EDA技術的優越性,也才能真正發揮EDA技術的作用。