· 多年嵌入式人才培養及項目研發經驗總結
· 數百家企業嵌入式研發崗位人才需求匯總
· 數十所嵌入式專業大學院校教學現狀調研
· 側重實踐及案例分析并輔以代碼加以講解
本書著眼于實踐,介紹了fpga設計開發的大量技巧,內容包括xilinx開發軟件ise的使用技巧、altera開發軟件quartus的使用技巧、仿真工具modelsim的使用技巧、綜合工具synplify的使用技巧以及設計數字電路的一般技巧。
本書立足于實際,介紹的技巧都是在實際開發中經常使用到的,作者結合多年的工作經驗組織編寫了本書,書中總結了各種使用技巧并且提供了具體的使用方法和實例。讀者可以參考書中的技巧,通過實際動手操作掌握各個技巧的使用方法,并且在實際開發工作中運用。
本書可以作為高等院校電子工程、通信工程、計算機、自動化等專業的教材,也可以作為電子工程師的參考手冊。
第1章 基礎知識
1.1 fpga簡介
1.2 fpga基本結構
1.2.1 fpga的基本結構
1.2.2 altera fpga基本結構
1.2.3 xilinx fpga基本結構
1.3 fpga的應用
1.4 fpga設計流程
1.5 fpga的常用開發工具
1.6 fpga設計技術展望
1.6.1 未來可編程器件的發展趨勢
1.6.2 未來eda設計方法的發展趨勢
第2章 xilinx fpga設計技巧
2.1 ise基本使用技巧
2.1.1 新建項目的技巧
2.1.2 新建hdl文件的技巧
2.1.3 添加hdl文件的技巧
2.1.4 新建原理圖設計的技巧
2.1.5 在原理圖中調用模塊的技巧
2.1.6 編輯原理圖的技巧
2.1.7 用constraints editor設置約束的技巧
2.1.8 用pace設置引腳與區域約束的技巧
2.1.9 使用xst進行綜合的技巧
2.1.10 設計實現的技巧
2.1.11 生成下載文件的技巧
2.1.12 下載fpga的技巧
2.2 仿真驗證技巧
2.2.1 新建測試平臺的技巧
2.2.2 圖形化編輯激勵信號的技巧
2.2.3 在ise中仿真的技巧
2.2.4 在ise中調用model sim的技巧
2.2.5 使用modelsim行為仿真的技巧
2.3 命令行方式使用ise的技巧
2.3.1 調用命令行的技巧
2.3.2 命令行的語法技巧
2.3.3 ngdbuild命令使用技巧
2.3.4 map命令使用技巧
2.3.5 par命令使用技巧
2.3.6 bitgen命令使用技巧
2.3.7 trace命令使用技巧
2.3.8 data2mem命令使用技巧
2.3.9 自動執行命令行的技巧
2.4 core generator使用技巧
2.4.1 新建core generator 項目的技巧
2.4.2 新建ip的技巧
2.4.3 修改已有ip的參數的技巧
2.4.4 architecture wizard使用技巧
2.4.5 在設計中例化ip的技巧
2.4.6 選擇不同版本ip的技巧
2.5 使用xilinx硬件資源的技巧
2.5.1 dcm使用技巧
2.5.2 pmcd使用技巧
2.5.3 block ram使用技巧
2.5.4 分布式ram使用技巧
2.5.5 fifo使用技巧
2.5.6 iddr使用技巧
2.5.7 oddr使用技巧
2.6 設置約束的技巧
2.6.1 使用ucf文件的技巧
2.6.2 編寫ucf文件的語法技巧
2.6.3 設置tnm_net分組約束的技巧
2.6.4 設置tnm分組約束的技巧
2.6.5 設置timespec時序約束的技巧
2.6.6 設置area_group 約束的技巧
2.6.7 設置drive約束的技巧
2.6.8 設置ibuf_delay_value約束的技巧
2.6.9 設置ifd_delay_value約束的技巧
2.6.10 設置iobdelay 約束的技巧
2.6.11 設置keep約束的技巧
2.6.12 設置iostandard約束的技巧
2.6.13 設置keep_hierarchy約束的技巧
2.6.14 設置iob約束的技巧
2.6.15 設置loc約束的技巧
2.6.16 設置offset約束的技巧
2.6.17 設置period約束的技巧
2.6.18 設置pin約束的技巧
2.6.19 設置timegrp約束的技巧
2.7 chipscope調試技巧
2.7.1 使用chipscope inserter的技巧
2.7.2 生成chipscope下載文件的技巧
2.7.3 使用chipscope下載fpga的技巧
2.7.4 使用chipscope analyzer的技巧
2.7.5 直接從ise調用chip scope的技巧
2.7.6 使用icon core的技巧
2.7.7 使用ila core的技巧
第3章 altera fpga設計技巧
3.1 使用altera 器件的技巧
3.1.1 pll的使用技巧
3.1.2 lvds的使用技巧
3.1.3 fifo的使用技巧
3.1.4 embedded ram的使用技巧
3.1.5 shift register的使用技巧
3.1.6 動態相位對準(dpa)的使用技巧
3.1.7 virtual jtag的使用技巧
3.1.8 dsp塊的使用技巧
3.2 使用quartus開發的基本技巧
3.2.1 運行新項目向導的技巧
3.2.2 設置項目參數的技巧
3.2.3 添加hdl設計的技巧
3.2.4 新建hdl設計的技巧
3.2.5 運行時序向導設置時序約束的技巧
3.2.6 編譯設計的技巧
3.2.7 配置fpga的技巧
3.3 使用quartus輸入設計的技巧
3.3.1 使用版本兼容的設計的技巧
3.3.2 使用block editor的技巧
3.3.3 使用text editor的技巧
3.3.4 使用symbol editor的技巧
3.3.5 使用megafunction的技巧
3.3.6 使用語言模板的技巧
3.4 使用quartus綜合的技巧
3.4.1 設置綜合屬性的技巧
3.4.2 綜合vhdl和verilog設計的技巧
3.4.3 使用編譯指令和屬性的技巧
3.4.4 使用邏輯選項的技巧
3.4.5 優化綜合網表的技巧
3.4.6 檢查設計可靠性的技巧
3.4.7 查看狀態機綜合結果的技巧
3.4.8 查看綜合報告的技巧
3.4.9 使用增量綜合的技巧
3.5 使用quartus布局布線的技巧
3.5.1 配置編譯器的技巧
3.5.2 創建引腳分配的技巧
3.5.3 查看編譯結果的技巧
3.5.4 設置布局布線選線的技巧
3.5.5 使用資源優化向導的技巧
3.6 時序分析的技巧
3.6.1 查看時序分析結果的技巧
3.6.2 執行多時鐘時序分析的技巧
3.6.3 設定多周期路徑的技巧
3.6.4 查看特殊路徑時序結果的技巧
3.6.5 使用時序優化器的技巧
3.6.6 使用logiclock改善時序要求的技巧
3.6.7 使用漸進式編譯改善時序的技巧
3.7 使用quartus仿真的技巧
3.7.1 設置仿真工具的技巧
3.7.2 創建波形文件的技巧
3.7.3 生成仿真輸出文件的技巧
3.7.4 生成仿真庫的技巧
3.7.5 分析仿真結果的技巧
3.7.6 使用仿真器工具的技巧
3.8 使用quartus下載的技巧
3.8.1 創建下載文件的技巧
3.8.2 加載文件格式轉換的技巧
3.8.3 使用programmer配置器件的技巧
3.8.4 建立輔助下載文件的技巧
3.9 signaltap ii調試技巧
3.9.1 設置和運行logic analyzer的技巧
3.9.2 增量式編譯使用signal tapii的技巧
3.9.3 使用外部邏輯分析儀的技巧
3.9.4 使用signalprobe的技巧
3.9.5 使用rtl查看器的技巧
3.9.6 使用技術映射查看器的技巧
3.9.7 使用芯片編輯器的技巧
3.10 使用altera ip core的技巧
3.10.1 啟動megawizard plug-in的技巧
3.10.2 充分利用ip宏功能的技巧
3.10.3 生成所需ip的技巧
3.10.4 例化ip的技巧
3.10.5 推斷ip宏功能的技巧
3.10.6 使用黑盒子方式例化宏功能的技巧
3.10.7 按推斷進行例化的技巧
3.10.8 使用clear-box的技巧
3.11 設置約束的技巧
3.11.1 設置引腳約束的技巧
3.11.2 使用assignment editor的技巧
3.11.3 設置時間約束的技巧
3.11.4 設置位置約束的技巧
3.11.5 設置區域的技巧
3.11.6 導出和導入約束文件的技巧
3.11.7 驗證引腳分配的技巧
第4章 邏輯電路設計技巧
4.1 fpga設計的基本技巧
4.1.1 top-down方式的設計技巧
4.1.2 bottom-up方式的設計技巧
4.1.3 vhdl設計fpga的技巧
4.1.4 verilog hdl設計fpga的技巧
4.1.5 狀態機設計的技巧
4.2 數字系統設計技巧
4.2.1 同步電路設計技巧
4.2.2 異步時鐘域數據同步的技巧
4.2.3 亞穩態
4.2.4 系統原則的技巧
4.2.5 硬件設計原則的技巧
4.2.6 選擇if語句與case語句的技巧
4.2.7 分離組合電路與時序電路的技巧
4.2.8 乒乓操作的技巧
4.2.9 串并轉換的技巧
4.2.10 流水線操作設計的技巧
4.3 代碼風格技巧
4.3.1 vhdl的編碼風格技巧
4.3.2 verilog hdl的編碼風格技巧
4.3.3 命名的技巧
4.3.4 添加注釋的技巧
4.3.5 模塊劃分的技巧
4.3.6 模塊重用的技巧
4.3.7 編寫可綜合代碼的技巧
4.4 提高速度的技巧
4.4.1 設置速度約束的技巧
4.4.2 專用資源提高速度的技巧
4.4.3 分配關鍵路徑的技巧
4.4.4 進行特殊約束的技巧
4.4.5 減少邏輯級數的技巧
4.4.6 分割組合邏輯的技巧
4.4.7 轉移組合邏輯的技巧
4.5 降低面積的技巧
4.5.1 模塊劃分的技巧
4.5.2 復用模塊的技巧
4.5.3 利用代碼風格降低面積的技巧
4.5.4 使用分布式ram的技巧
4.5.5 布局布線的技巧
4.5.6 面積和速度的平衡與互換技巧
第5章 modelsim仿真技巧
5.1 modelsim介紹
5.2 圖形界面使用技巧
5.2.1 使用wizard創建工程的技巧
5.2.2 編譯文件的技巧
5.2.3 啟動仿真的技巧
5.2.4 產生信號激勵的技巧
5.2.5 查看波形的技巧
5.3 編譯modelsim仿真庫的技巧
5.3.1 在modelsim中編譯xilinx仿真庫的技巧
5.3.2 在ise中編譯xilinx仿真庫的技巧
5.3.3 使用腳本編譯xilinx仿真庫的技巧
5.3.4 在modelsim中編譯altera仿真庫的技巧
5.4 使用fpga開發工具調用modelsim的技巧
5.4.1 在ise中調用model sim的技巧
5.4.2 在quartus中調用modelsim的技巧
5.5 命令行方式仿真技巧
5.5.1 vlib命令使用技巧
5.5.2 vmap命令使用技巧
5.5.3 vcom命令使用技巧
5.5.4 vlog命令使用技巧
5.5.5 vsim命令使用技巧
5.5.6 force命令使用技巧
5.5.7 add wave命令使用技巧
5.5.8 run命令使用技巧
5.5.9 do文件使用技巧
5.6 modelsim腳本仿真技巧
5.6.1 testbench的創建技巧
5.6.2 modelsim do腳本文件編寫技巧
5.6.3 運行modelsim do 腳本的技巧
第6章 synplify綜合工具使用技巧
6.1 synplify pro基本使用技巧
6.1.1 新建hdl源文件的技巧
6.1.2 使用文本編輯器的技巧
6.1.3 檢查hdl源文件的技巧
6.1.4 使用外部文本編輯器的技巧
6.1.5 設置工程參數的技巧
6.1.6 綜合及查看綜合結果的技巧
6.1.7 混合語言綜合的技巧
6.1.8 新建設計實現的技巧
6.2 分析綜合結果的技巧
6.2.1 使用日志觀察窗口的技巧
6.2.2 使用信息查看器的技巧
6.2.3 分析關鍵路徑時序的技巧
6.2.4 使用stand-alone時序分析的技巧
6.3 利用腳本運行synplify的技巧
6.3.1 使用add_file命令的技巧
6.3.2 使用assign_to_region命令的技巧
6.3.3 指定constraint_file命令的技巧
6.3.4 使用create_region命令的技巧
6.3.5 使用gen_env命令的技巧
6.3.6 使用impl命令的技巧
6.3.7 使用project命令的技巧
6.3.8 使用project_file命令的技巧
6.4 綜合屬性attribute
6.4.1 添加綜合屬性的技巧
6.4.2 使用scope窗口的技巧
6.4.3 使用altera_chip_pin_lc屬性的技巧
6.4.4 使用black_box_pad_pin屬性的技巧
6.4.5 使用black_box_tri_pins屬性的技巧
6.4.6 使用syn_allow_retiming屬性的技巧
6.4.7 使用syn_black_box屬性的技巧
6.4.8 使用syn_encoding屬性的技巧
6.4.9 使用syn_hier屬性的技巧
6.4.10 使用syn_netlist_hierarchy屬性的技巧
6.4.11 使用syn_ramstyle屬性的技巧
6.4.12 使用syn_loc屬性的技巧
6.4.13 使用syn_noclockbuf屬性的技巧
6.4.14 使用syn_keep屬性的技巧
6.4.15 使用syn_noprune屬性的技巧
6.4.16 使用syn_preserve屬性的技巧
6.4.17 使用translate_off/translate_on屬性的技巧
6.5 synplify的高級綜合技巧
6.5.1 共享資源的技巧
6.5.2 使用流水線的技巧
6.5.3 使用retiming的技巧
6.5.4 插入探針probes的技巧
6.5.5 使用推論ram的技巧
6.5.6 使用推論移位寄存器的技巧