上面的話題都是當代 ASIC ( Application Specific Intergrated Circuits ) 技術的主要應用領域,大致可以分為三個方面吧。
第一:芯片設計和驗證領域,這個也是當前最熱門的領域; 第二:數控,自動化,特種儀器儀表,特種設備領域,由於需求特殊,很難找到量產的通用芯片,所以用 CPLD / FPGA 來實現硬邏輯就成了唯一的選擇; 第三:需要現場系統重構的場合,如手機,車載電子設備等等,因應不同的系統即時任務,對 CPLD / FPGA 進行現場編程,以適應不同的算法和控制任務;
和 CPLD / FPGA 目前的廣泛應用不是很相稱的是開源和自由軟件在 ASIC 方面還比較原始,要達到像 Apach, GCC ... 等這些開源軟件那樣的成熟程度,恐怕還有相當長一段路要走,但是作為學習或者是門數有限的中小規模的電路仿真,現有的 GNU 工具應該是個很好的選擇,因為現在的商業 ASIC 工具實在是太貴。
本文僅僅是一個介紹性的文章,通過一個開源項目的簡單例子來說明一下硬件設計的基本概念,本文所涉及到的相關知識請大家自己找資料學習。有興趣的朋友可以去開源硬件設計網站 http://opencores.org 看一下,上面從 CPU,內存到各種通訊控制器等等的設計應有盡有。
本文將以 Gentoo Linux 作為系統來說明,用其他發行版的朋友,請自行安裝相應的軟件包(iverilog, gtkwave)。硬件描述語言采用 verilog 。
2、安裝應用;
下面讓我們來做一個硬件設計的 hello world: 第一步:安裝相關的軟件包
# emerge iverilog gtkwave
第二步:編譯 verilog 源代碼
$ cp -rv /usr/share/doc/iverilog-0.8 ~$ gunzip ~/iverilog-0.8/*.gz
我們將 iverilog 的文檔復制並解壓到我們的用戶目錄下面,裡面有 iverilog 的一些范例和文章,大家自行閱讀一下。現在我們用其中的一個內存設計的簡單例子來練習一下。
$ cp ~/iverilog-0.8$ iverilog -o show_vcd show_vcd.vl
這樣將編譯出一個仿真腳本命令 ./show_vcd, 運行這個命令,就會得到一個仿真文件 show_vcd.vcd, 我們再用另外一個 GNU 項目 gtkwave 來查看這個芯片設計的引腳以及各個寄存器的時序。
$ ./show_vcd$ gtkwave ./show_vcd.vcd &
上面的命令打開了仿真文件,但是正常情況下,你還是看不到任何東西。在 gtkwave 窗口中選擇 "Search"->"Signal Search Tree", 將打開信號查看選擇窗口,點選你要查看的芯片引腳或者寄存器,然後點擊 "Append" 按鈕,在 gtkwave 主窗口中就會出現相應的時序信號。
本文的兩個附件是我分別用 iverilog + gtkwave 以及商業軟件 Xilinx ModelSim 的仿真結果的截圖,可以看出 GNU 工具的仿真結果和商業 ASIC 工具的仿真結果是完全相同的。