1. 基於Verilog的FPGA設計基礎的目錄
第1章 緒論
1. FPGA概述
1.1.1 FPGA發展的簡要回顧
1.1.2 FPGA與ASIC
1.2 可編程邏輯器件的基本概念
1.3 簡單可編程器件(sPLD)的結構
1.4 高密度可編程邏輯器件
1.4.1 復雜可編程邏輯器件CPLD
1.4.2 現場可編程門陣列FPGA
1.4.3 CPLD和FPGA的區別
1.4.4 FPGA/CPLD廠家簡介
1.5基於FPGA的設計流程與設計方法
1.5.1 基於FPGA的設計流程
1.5.2 自頂向下和自底向上的設計方法學
1.5.3 基於IP核的設計
1.6 EDA技術簡介
第2章 可編程邏輯器件
2.1 Altera器件概述
2.1.1 FPGA系列簡介
2.1.2 EPLD系列簡介
2.1.3 結構化ASIC器件
2.1.4 FPGA器件的配置晶元
2.2 Altera的EPID器件系列
2.2.1 EPLD器件的特性
2.2.2 MAX9000器件的結構
2.2.3 MAX II器件的結構
2.3 Altera的FPGA器件
2.3.1 簡單FPGA器件
2.3.2 復雜FPGA器件
2.3.3 新型FPGA器件1
2.4 Xilinx公司產品簡介1
2.4.1 Xilinx CPLD器件
2.4.2 Xilinx FPGA器件的特性
2.4.3 Xilinx FPGA器件的結構
2.5 Lattice公司產品簡介
2.5.1 I,attice CPLD器件系列
2.5.2 Lattice FPGA產品系列
2.5.3 FPSC產品系列1
2.5.4 低密度PLD產品系列
2.5.5 其他產品
2.6 Actel公司產品簡介
2.6.1 Flash FPGA器件
2.6.2 反熔絲FPGA器件
2.6.3 航空航天和軍用器件
窘3章 FPGA設計入門
3.1 系統的抽象層次與高級硬體描述語言Verilog
3.2 用Verilog語言建立數字電路模型
3.2.1 代碼的書寫風格
3.2.2 可綜合代碼的編碼風格
3.2.3 時序電路的設計
3.3 模塊設計
3.4 系統規范
3.4.1 系統規范的內容
3.4.2 選擇FPGA
第4章 設計驗證
4.1 驗證綜述
4.1.1 驗證的概念
4.1.2 驗證和測試
4.1.3 自頂向下和自底向上的驗證方法
4.1.4 主要驗證技術 1
4.1.5 驗證工具的介紹
4.1.6 驗證計劃和流程
4.2 功能驗證
4.2.1 驗證程序(Testbench)的組成
4.2.2 實用構造Trestbench技術
4.3 基於斷言的驗證
4.4 時序驗證
4.4.1 靜態時序分析概述
4.4.2 靜態時序分析中的基本概念
4.4.3 假路徑和多周期路徑
4.4.4 時序驗證中的系統任務
第5章 ModeISjm工具介紹
5.1.ModelSim概述
5.1.1 基本模擬流程
5.1.2 工程模擬流程1
5.1.3 多資料庫模擬流程1
5.1.4 調試工具
5.2 ModelSim工程
5.2.1 創建一個新工程
5.2.2 編譯和載入設計
5.2.3 利用文件夾組織工程
5.2.4 在工程中進行模擬配置
5.2.5 關於工程的其他基本操作
5.2.6 Proiect標簽頁及菜單簡介1
5.2.7 指定文件屬性和工程設置
5.3 設計庫
5.3.1 設計庫簡介
5.3.2 使用設計庫工作
5.3.3 導入FPGA設計庫
5.4 Verilog基本模擬
5.4.1 創建工作的設計資料庫
5.4.2 編譯設計
5.4.3 運行模擬
5.4.4 設置斷點與源代碼單步執行
5.4.5 結束模擬
5.4.6 增量編譯
5.5 在Verilog模擬中連接第三方資源庫
5.5.1 模擬連接資源庫
5.5.2 永久性映射資源庫
5.6 使用波形窗口 1
5.6.1 向波形窗口添加項目
5.6.2 波形顯示的圖像縮放
5.6.3 在波形窗口中使用游標
5.6.4 存儲波形窗口格式
5.6.5 WLF文件(Datasets)
5.7 使用數據流(dataflow)窗口進行調試
5.7.1 編譯並載入一個例子
5.7.2 觀察設計的連接性
5.7.3 跟蹤事件
5.7.4 追蹤未知態
5.7.5 在dataflow窗口中顯示層次結構
5.8 存儲器的查看與初始化
5.8.1 編譯和裝入設計舉例
5.8.2 查看存儲器
5.8.3 保存存儲器數據到一個文件
5.8.4 初始化一個存儲區
5.8.5 互動式調試命令
5.9 使用性能分析器模擬
5.9.1 性能分析器簡介及本節的設計文件
5.9.2 編譯、載入例子的設計
5.9.3 運行模擬
5.9.4 使用數據改進性能
5.9.5 過濾並保存數據
5.10 模擬代碼覆蓋情況
5.10.1 編譯、載入例子的設計
5.10.2 在主窗口中查看統計
5.10.3 在源代碼窗口中查看統計
5.10.4 在信號窗口中查看狀態翻轉統計
5.10.5 指定不進行覆蓋率統計的行或文件
5.10.6 創建代碼覆蓋率報告
5.11 波形比較過程
5.11.1 波形比較器簡介及本節的設計文件
5.11.2 創建參考數據文件和測試數據文件
5.11.3 比較模擬運行
5.11.4 查看比較數據
5.11.5 保存和重裝比較數據.
5.12 ModelSim自動運行
5.12.1 創建簡單的DO文件
5.12.2 使用「啟動DO文件」運行ModelSim
5.12.3 命令行方式運行ModelSim
5.12.4 與ModelSim一起使用Tcl
5.13 使用ModelSim進行後模擬
第6章 Quartus集成環境
6.1 Quartus II軟體概述
6.1.1 Quartus II軟體的安裝
6.1.2 Quartus II軟體工具授權
6.2 Quartus II設計流程簡介
6.3 設計輸入
6.3.1 創建一個工程
6.3.2 創建一個設計
6.3.3 Quartus使用舉例
6.4 配置設計工程的編譯約束1
6.4.1 使用Assignment Editor
6.4.2 使用引腳規劃器(Pin Planner)1
6.4.3 使用Settings對話框
6.5 綜合設計
6.5.1 使用QuartusII Verilog HDL及VHDL集成綜合工具
6.5.2 使用其他EDA綜合工具 1
6.5.3 「Analysis&Synthesis」的控制 1
6.6 布局布線
6.6.1 執行一個完整的增量編譯
6.6.2 分析布局布線結果
6.6.3 布局布線的優化
6.7 基於模塊的設計
6.7.1 Quartus II基於模塊化的設計流程
6.7.2 使用邏輯鎖區域(LogicLock Regins)
6.7.3 在自頂向下增量編譯流程中使用區域邏輯鎖
6.7.4 在自底向上邏輯鎖流程中保存中間綜合結果
6.7.5 在EDA工具中集中使用邏輯鎖
6.8 Quartus II的時序分析(17lining Analysis)
6.8.1 在Quartus II軟體中執行時序分析
6.8.2 進行前期的時序評估
6.8.3 查看時序分析結果
6.8.4 使用第三方EDA工具進行時序分析
6.9 時序逼近(Timing Closure)
6.9.1使用時序逼近底層圖(Timing Closure Floorplan)
6.9.2使用時序優化顧問
6.9.3使用網表優化實現時序逼近
6.9.4使用L,ogicLock Regins實現時序逼近
6.9.5使用增量編譯達到時序逼近
6.10 功率分析(Power Analysis)
6.1l 對器件的編程與配置
6.12 調試
6.12.1 使用SignalTap II邏輯分析儀
6.12.2 使用SignalProbe信號探針
6.12.3 使用In-System Memory Content Editor
6.12.4 使用寄存器傳輸級查看器(RTL Viewer)
6.12.5 使用晶元編輯器 1
第7章 FPGA設計實例
7.1 74181ALU運算器設計
7.1.1 74181ALU的功能說明
7.1.2 邏輯電路
7.1.3 Verilog程序設計
7.1.4 ALV運算器的功能驗證
7.2 偽隨機序列設計
7.2.1 m序列
7.2.2 9位的LFSR計數器
7.2.3 數字序列的擾碼
7.2.4 循環冗餘校驗
7.3 SDH解幀器設計
7.4.8b/10b編碼設計
7.4.1 8b/10b編碼技術
7.4.2 8b/10b編碼器的設計
7.4.3 程序代碼簡介
7.4.4 Testbench程序設計
第8章 AItera系統級的SOPC開發
8.1 Altera II的使用
8.2 SOPC開發流程概述
8.2.1 應用系統需求分析 1
8.2.2 使用SOPC Builder建立SOPC系統設計
8.2.3 Nios II監控軟體的開發
8.2.4 靈活運用SOPC開發流程
8.3 Altera Nios CPU簡介
8.4 Altcra Nios外設組件簡介
8.5 Altera 1C20 Demo板介紹
8.6 Altera 1C20試驗板上的SOPC系統開發實例
8.6.1 開發實例功能介紹
8.6.2 開發設計步驟
附錄頻率計系統的設計
參考文獻
……
2. 一些名詞的區別:ARM,單片機,FPGA,嵌入式,DSP。
ARM處理器
ARM處理器是Acorn計算機有限公司面向低預算市場設計的第一款RISC微處理器。更早稱作Acorn RISC Machine。ARM處理器本身是32位設計,但也配備16位指令集,一般來講比等價32位代碼節省達35%,卻能保留32位系統的所有優勢。
單片機(Microcontrollers)
單片機是一種集成電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
FPGA(Field-Programmable Gate Array)
即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定製電路而出現的,既解決了定製電路的不足,又克服了原有可編程器件門電路數有限的缺點。
嵌入式
IEEE(Institute of Electrical and Electronics Engineers,美國電氣和電子工程師協會)對嵌入式系統的定義:「用於控制、監視或者輔助操作機器和設備的裝置」。原文為:Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants)。嵌入式系統是一種專用的計算機系統,作為裝置或設備的一部分。通常,嵌入式系統是一個控製程序存儲在ROM中的嵌入式處理器控制板。事實上,所有帶有數字介面的設備,如手錶、微波爐、錄像機、汽車等,都使用嵌入式系統,有些嵌入式系統還包含操作系統,但大多數嵌入式系統都是由單個程序實現整個控制邏輯。從應用對象上加以定義,嵌入式系統是軟體和硬體的綜合體,還可以涵蓋機械等附屬裝置。國內普遍認同的嵌入式系統定義為:以應用為中心,以計算機技術為基礎,軟硬體可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。 數字信號處理DSP數字信號處理就是用數值計算的方式對信號進行加工的理論和技術,它的英文原名叫digital signal processing,簡稱DSP。另外DSP也是digital signal processor的簡稱,即數字信號處理器數字信號處理的目的是對真實世界的連續模擬信號進行測量或濾波。因此在進行數字信號處理之前需要將信號從模擬域轉換到數字域,這通常通過模數轉換器實現。而數字信號處理的輸出經常也要變換到模擬域,這是通過數模轉換器實現的。
通俗講,ARM相當月單片機頭腦,而單片機就相當可以簡單完成一個指令計算機,甚至簡單等效微型計算機,FPGA是單片的系統。而嵌入式系統又是單片機升級,能完成運行復雜程序及任務。
3. 請問:fpga設計中的多周期路徑是什麼意思了如果設計中存在多周期路徑會有什麼危害最好能舉個例子。
例如,A寄存器輸出的數據要被B寄存器捕獲,假如AB之間存在很多邏輯計算,導致版一個周期內A的數據權經過這很多的邏輯計算是完不成的,在下一個時鍾的上升沿到來時,B還不能取這個數據,必須再等待1個或多個周期然後才去取數。多周期約束就是告訴還要再等布線器,你不必再盡心盡力的按照以前單周期(1個clk)去布線,設計者在寫程序時已經考慮到了,這樣布線器就不會提示布線不通過。當AB的時鍾不一致時也是一個道理,我就不具體分析了。
缺點是:相當於降低了時鍾頻率