出版時(shí)間:2009-4 出版社:人民郵電出版社 作者:楊躍 編著 頁數(shù):365
前言
FPGA(Field Programmable GateArray)是1984年由Xilinx公司發(fā)明的一類半定制的通用器件。用戶可以通過對FPGA器件的編程來實(shí)現(xiàn)所需的邏輯功能。FPGA設(shè)計(jì)電路有以下幾個(gè)優(yōu)點(diǎn):電路執(zhí)行速度快、上市時(shí)間短、成本低廉、可靠性高、易于維護(hù)升級。近年來,隨著FPGA規(guī)模越來越大、速度越來越快,并且成本也不斷降低,在許多應(yīng)用中:FPGA已經(jīng)開始取代ASIC,使FPGA的應(yīng)用領(lǐng)域不斷擴(kuò)大。目前FPGA廣泛應(yīng)用于通信、信號處理、嵌入式處理器、圖像處理和工業(yè)控制等領(lǐng)域。學(xué)習(xí)掌握FPGA的開發(fā)和使用是實(shí)踐性很強(qiáng)的活動。針對這個(gè)特點(diǎn),作者從實(shí)踐出發(fā)并結(jié)合多年的開發(fā)經(jīng)驗(yàn)編寫了本書。書中總結(jié)了許多使用:FPGA設(shè)計(jì)電路的技巧,這些技巧包括。Xilinx開發(fā)工具ISE和Altera開發(fā)工具Quatus的使用技巧,仿真工具M(jìn)odel Sim的使用技巧,綜合工具Synplif3,的使用技巧,以及電路設(shè)計(jì)的基本技巧。本書主要內(nèi)容本書共分6章,各章的內(nèi)容如下。第1章介紹FPGA的基礎(chǔ)知識,包括FPGA的基本結(jié)構(gòu)、FPGA的基本應(yīng)用,介紹了FPGA的設(shè)計(jì)開發(fā)流程和常用的開發(fā)工具,最后展望了其發(fā)展趨勢。本書要求讀者具有一定的FPGA設(shè)計(jì)基礎(chǔ),通過這一章的介紹,讀者可以掌握。FPGA的基礎(chǔ)知識,并且能掌握FPGA的基本設(shè)計(jì)流程,為后面章節(jié)的學(xué)習(xí)做個(gè)鋪墊。第2章介紹了Xilinx開發(fā)工具ISE的使用技巧。通過這一章的學(xué)習(xí),讀者可以使用ISE進(jìn)行完整的Xilinx FPGA設(shè)計(jì)。如果讀者已經(jīng)會使用ISE,也可以參考本章的技巧以便更加熟練地使用ISE。第3章介紹了Altera開發(fā)工具Quartus的使用技巧。通過這一章的學(xué)習(xí),讀者可以使用Quartus設(shè)計(jì)完整的Altera FPGA。這一章中的技巧也可以作為設(shè)計(jì)者的參考手冊,供那些掌握了Quartus的讀者查閱相關(guān)技巧。
內(nèi)容概要
本書著眼于實(shí)踐,介紹了FPGA設(shè)計(jì)開發(fā)的大量技巧,內(nèi)容包括Xilinx開發(fā)軟件ISE的使用技巧、Altera開發(fā)軟件Quartus的使用技巧、仿真工具M(jìn)odelSim的使用技巧、綜合工具Synplify的使用技巧以及設(shè)計(jì)數(shù)字電路的一般技巧。 本書立足于實(shí)際,介紹的技巧都是在實(shí)際開發(fā)中經(jīng)常使用到的,作者結(jié)合多年的工作經(jīng)驗(yàn)組織編寫了本書,書中總結(jié)了各種使用技巧并且提供了具體的使用方法和實(shí)例。讀者可以參考書中的技巧,通過實(shí)際動手操作掌握各個(gè)技巧的使用方法,并且在實(shí)際開發(fā)工作中運(yùn)用?! ”緯梢宰鳛楦叩仍盒k娮庸こ獭⑼ㄐ殴こ?、計(jì)算機(jī)、自動化等專業(yè)的教材,也可以作為電子工程師的參考手冊。
書籍目錄
第1章 基礎(chǔ)知識 1.1 FPGA簡介 1.2 FPGA基本結(jié)構(gòu) 1.2.1 FPGA的基本結(jié)構(gòu) 1.2.2 Altera FPGA基本結(jié)構(gòu) 1.2.3 Xilinx FPGA基本結(jié)構(gòu) 1.3 FPGA的應(yīng)用 1.4 FPGA設(shè)計(jì)流程 1.5 FPGA的常用開發(fā)工具 1.6 FPGA設(shè)計(jì)技術(shù)展望 1.6.1 未來可編程器件的發(fā)展趨勢 1.6.2 未來EDA設(shè)計(jì)方法的發(fā)展趨勢第2章 Xilinx FPGA設(shè)計(jì)技巧 2.1 ISE基本使用技巧 2.1.1 新建項(xiàng)目的技巧 2.1.2 新建HDL文件的技巧 2.1.3 添加HDL文件的技巧 2.1.4 新建原理圖設(shè)計(jì)的技巧 2.1.5 在原理圖中調(diào)用模塊的技巧 2.1.6 編輯原理圖的技巧 2.1.7 用Constraints Editor設(shè)置約束的技巧 2.1.8 用PACE設(shè)置引腳與區(qū)域約束的技巧 2.1.9 使用XST進(jìn)行綜合的技巧 2.1.10 設(shè)計(jì)實(shí)現(xiàn)的技巧 2.1.11 生成下載文件的技巧 2.1.12 下載FPGA的技巧 2.2 仿真驗(yàn)證技巧 2.2.1 新建測試平臺的技巧 2.2.2 圖形化編輯激勵(lì)信號的技巧 2.2.3 在ISE中仿真的技巧 2.2.4 在ISE中調(diào)用Model Sim的技巧 2.2.5 使用ModelSim行為仿真的技巧 2.3 命令行方式使用ISE的技巧 2.3.1 調(diào)用命令行的技巧 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 自動執(zhí)行命令行的技巧 2.4 CORE Generator使用技巧 2.4.1 新建CORE Generator 項(xiàng)目的技巧 2.4.2 新建IP的技巧 2.4.3 修改已有IP的參數(shù)的技巧 2.4.4 Architecture Wizard使用技巧 2.4.5 在設(shè)計(jì)中例化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 設(shè)置約束的技巧 2.6.1 使用UCF文件的技巧 2.6.2 編寫UCF文件的語法技巧 2.6.3 設(shè)置TNM_NET分組約束的技巧 2.6.4 設(shè)置TNM分組約束的技巧 2.6.5 設(shè)置TIMESPEC時(shí)序約束的技巧 2.6.6 設(shè)置AREA_GROUP 約束的技巧 2.6.7 設(shè)置DRIVE約束的技巧 2.6.8 設(shè)置IBUF_DELAY_VALUE約束的技巧 2.6.9 設(shè)置IFD_DELAY_VALUE約束的技巧 2.6.10 設(shè)置IOBDELAY 約束的技巧 2.6.11 設(shè)置KEEP約束的技巧 2.6.12 設(shè)置IOSTANDARD約束的技巧 2.6.13 設(shè)置KEEP_HIERARCHY約束的技巧 2.6.14 設(shè)置IOB約束的技巧 2.6.15 設(shè)置LOC約束的技巧 2.6.16 設(shè)置OFFSET約束的技巧 2.6.17 設(shè)置PERIOD約束的技巧 2.6.18 設(shè)置PIN約束的技巧 2.6.19 設(shè)置TIMEGRP約束的技巧 2.7 Chipscope調(diào)試技巧 2.7.1 使用Chipscope Inserter的技巧 2.7.2 生成ChipScope下載文件的技巧 2.7.3 使用ChipScope下載FPGA的技巧 2.7.4 使用ChipScope Analyzer的技巧 2.7.5 直接從ISE調(diào)用Chip Scope的技巧 2.7.6 使用ICON Core的技巧 2.7.7 使用ILA Core的技巧第3章 Altera FPGA設(shè)計(jì)技巧 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 動態(tài)相位對準(zhǔn)(DPA)的使用技巧 3.1.7 Virtual JTAG的使用技巧 3.1.8 DSP塊的使用技巧 3.2 使用Quartus開發(fā)的基本技巧 3.2.1 運(yùn)行新項(xiàng)目向?qū)У募记伞 ?.2.2 設(shè)置項(xiàng)目參數(shù)的技巧 3.2.3 添加HDL設(shè)計(jì)的技巧 3.2.4 新建HDL設(shè)計(jì)的技巧 3.2.5 運(yùn)行時(shí)序向?qū)гO(shè)置時(shí)序約束的技巧 3.2.6 編譯設(shè)計(jì)的技巧 3.2.7 配置FPGA的技巧 3.3 使用Quartus輸入設(shè)計(jì)的技巧 3.3.1 使用版本兼容的設(shè)計(jì)的技巧 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 設(shè)置綜合屬性的技巧 3.4.2 綜合VHDL和Verilog設(shè)計(jì)的技巧 3.4.3 使用編譯指令和屬性的技巧 3.4.4 使用邏輯選項(xiàng)的技巧 3.4.5 優(yōu)化綜合網(wǎng)表的技巧 3.4.6 檢查設(shè)計(jì)可靠性的技巧 3.4.7 查看狀態(tài)機(jī)綜合結(jié)果的技巧 3.4.8 查看綜合報(bào)告的技巧 3.4.9 使用增量綜合的技巧 3.5 使用Quartus布局布線的技巧 3.5.1 配置編譯器的技巧 3.5.2 創(chuàng)建引腳分配的技巧 3.5.3 查看編譯結(jié)果的技巧 3.5.4 設(shè)置布局布線選線的技巧 3.5.5 使用資源優(yōu)化向?qū)У募记伞?.6 時(shí)序分析的技巧 3.6.1 查看時(shí)序分析結(jié)果的技巧 3.6.2 執(zhí)行多時(shí)鐘時(shí)序分析的技巧 3.6.3 設(shè)定多周期路徑的技巧 3.6.4 查看特殊路徑時(shí)序結(jié)果的技巧 3.6.5 使用時(shí)序優(yōu)化器的技巧 3.6.6 使用LogicLock改善時(shí)序要求的技巧 3.6.7 使用漸進(jìn)式編譯改善時(shí)序的技巧 3.7 使用Quartus仿真的技巧 3.7.1 設(shè)置仿真工具的技巧 3.7.2 創(chuàng)建波形文件的技巧 3.7.3 生成仿真輸出文件的技巧 3.7.4 生成仿真庫的技巧 3.7.5 分析仿真結(jié)果的技巧 3.7.6 使用仿真器工具的技巧 3.8 使用Quartus下載的技巧 3.8.1 創(chuàng)建下載文件的技巧 3.8.2 加載文件格式轉(zhuǎn)換的技巧 3.8.3 使用Programmer配置器件的技巧 3.8.4 建立輔助下載文件的技巧 3.9 SignalTap II調(diào)試技巧 3.9.1 設(shè)置和運(yùn)行Logic Analyzer的技巧 3.9.2 增量式編譯使用Signal TapII的技巧 3.9.3 使用外部邏輯分析儀的技巧 3.9.4 使用SignalProbe的技巧 3.9.5 使用RTL查看器的技巧 3.9.6 使用技術(shù)映射查看器的技巧 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 按推斷進(jìn)行例化的技巧 3.10.8 使用Clear-Box的技巧 3.11 設(shè)置約束的技巧 3.11.1 設(shè)置引腳約束的技巧 3.11.2 使用Assignment Editor的技巧 3.11.3 設(shè)置時(shí)間約束的技巧 3.11.4 設(shè)置位置約束的技巧 3.11.5 設(shè)置區(qū)域的技巧 3.11.6 導(dǎo)出和導(dǎo)入約束文件的技巧 3.11.7 驗(yàn)證引腳分配的技巧第4章 邏輯電路設(shè)計(jì)技巧 4.1 FPGA設(shè)計(jì)的基本技巧 4.1.1 Top-Down方式的設(shè)計(jì)技巧 4.1.2 Bottom-Up方式的設(shè)計(jì)技巧 4.1.3 VHDL設(shè)計(jì)FPGA的技巧 4.1.4 Verilog HDL設(shè)計(jì)FPGA的技巧 4.1.5 狀態(tài)機(jī)設(shè)計(jì)的技巧 4.2 數(shù)字系統(tǒng)設(shè)計(jì)技巧 4.2.1 同步電路設(shè)計(jì)技巧 4.2.2 異步時(shí)鐘域數(shù)據(jù)同步的技巧 4.2.3 亞穩(wěn)態(tài) 4.2.4 系統(tǒng)原則的技巧 4.2.5 硬件設(shè)計(jì)原則的技巧 4.2.6 選擇if語句與case語句的技巧 4.2.7 分離組合電路與時(shí)序電路的技巧 4.2.8 乒乓操作的技巧 4.2.9 串并轉(zhuǎn)換的技巧 4.2.10 流水線操作設(shè)計(jì)的技巧 4.3 代碼風(fēng)格技巧 4.3.1 VHDL的編碼風(fēng)格技巧 4.3.2 Verilog HDL的編碼風(fēng)格技巧 4.3.3 命名的技巧 4.3.4 添加注釋的技巧 4.3.5 模塊劃分的技巧 4.3.6 模塊重用的技巧 4.3.7 編寫可綜合代碼的技巧 4.4 提高速度的技巧 4.4.1 設(shè)置速度約束的技巧 4.4.2 專用資源提高速度的技巧 4.4.3 分配關(guān)鍵路徑的技巧 4.4.4 進(jìn)行特殊約束的技巧 4.4.5 減少邏輯級數(shù)的技巧 4.4.6 分割組合邏輯的技巧 4.4.7 轉(zhuǎn)移組合邏輯的技巧 4.5 降低面積的技巧 4.5.1 模塊劃分的技巧 4.5.2 復(fù)用模塊的技巧 4.5.3 利用代碼風(fēng)格降低面積的技巧 4.5.4 使用分布式RAM的技巧 4.5.5 布局布線的技巧 4.5.6 面積和速度的平衡與互換技巧第5章 ModelSim仿真技巧 5.1 ModelSim介紹 5.2 圖形界面使用技巧 5.2.1 使用Wizard創(chuàng)建工程的技巧 5.2.2 編譯文件的技巧 5.2.3 啟動仿真的技巧 5.2.4 產(chǎn)生信號激勵(lì)的技巧 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開發(fā)工具調(diào)用ModelSim的技巧 5.4.1 在ISE中調(diào)用Model Sim的技巧 5.4.2 在Quartus中調(diào)用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的創(chuàng)建技巧 5.6.2 ModelSim DO腳本文件編寫技巧 5.6.3 運(yùn)行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 設(shè)置工程參數(shù)的技巧 6.1.6 綜合及查看綜合結(jié)果的技巧 6.1.7 混合語言綜合的技巧 6.1.8 新建設(shè)計(jì)實(shí)現(xiàn)的技巧 6.2 分析綜合結(jié)果的技巧 6.2.1 使用日志觀察窗口的技巧 6.2.2 使用信息查看器的技巧 6.2.3 分析關(guān)鍵路徑時(shí)序的技巧 6.2.4 使用Stand-alone時(shí)序分析的技巧 6.3 利用腳本運(yùn)行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 使用推論移位寄存器的技巧
章節(jié)摘錄
插圖:(7)板級仿真與驗(yàn)證。在有些高速設(shè)計(jì)中還需要使用第三方的板級驗(yàn)證工具進(jìn)行仿真與驗(yàn)證。(8)加載配置與在線調(diào)試。設(shè)計(jì)開發(fā)的最后步驟就是在線調(diào)試或者將生成的配置文件寫入芯片中進(jìn)行測試。示波器和邏輯分析儀是邏輯設(shè)計(jì)的主要調(diào)試工具。傳統(tǒng)的邏輯功能板級驗(yàn)證手段是用邏輯分析儀分析信號,設(shè)計(jì)時(shí)要求.FPGA和PCB設(shè)計(jì)人員保留一定數(shù)量的FPGA引腳作為測試引腳,編寫FPGA代碼時(shí)需要觀察的信號作為模塊的輸出信號,在綜合實(shí)現(xiàn)時(shí)再把這些輸出信號鎖定到測試引腳上,然后將邏輯分析儀的探頭連接到這些測試腳,設(shè)定觸發(fā)條件,進(jìn)行觀測。邏輯分析儀的優(yōu)點(diǎn)是專業(yè)、高速、觸發(fā)邏輯可以相對復(fù)雜,缺點(diǎn)是價(jià)格昂貴、靈活性。PCB布線后測試腳的數(shù)量有限,不能靈活增加,當(dāng)測試腳不夠用時(shí)影響測試,如果測試腳太多又影響PCB布局布線。對于相對簡單一些的設(shè)計(jì),使用QuartusII內(nèi)嵌的SignalTapII和Xilinx提供的ChipScope工具,對設(shè)計(jì)進(jìn)行在線邏輯分析可以較好地解決上述矛盾。它們的主要功能是通過JTAG口,在線、實(shí)時(shí)地讀出FPGA的內(nèi)部信號。基本原理是利用FPGA中未使用的BlockRAM,根據(jù)用戶設(shè)定的觸發(fā)條件將信號實(shí)時(shí)地保存到這些BlockRAM中,然后通過JTAG口傳送到計(jì)算機(jī),最后在計(jì)算機(jī)屏幕上顯示出時(shí)序波形。任何仿真或者驗(yàn)證步驟出現(xiàn)問題,就需要根據(jù)錯(cuò)誤的定位返回到相應(yīng)的步驟更改或者重新設(shè)計(jì)。
編輯推薦
《FPGA應(yīng)用開發(fā)實(shí)戰(zhàn)技巧精粹》特點(diǎn):內(nèi)容全面:240個(gè)FPGA應(yīng)用開發(fā)常用技巧,覆蓋FPGA應(yīng)用開發(fā)的方方面面。步驟清晰:詳細(xì)列出每個(gè)操作步驟,按步驟操作即可得出相應(yīng)結(jié)果。團(tuán)隊(duì)創(chuàng)作:FPGA開發(fā)團(tuán)隊(duì)多年開發(fā)經(jīng)驗(yàn)的總結(jié)。
圖書封面
評論、評分、閱讀與下載
FPGA應(yīng)用開發(fā)實(shí)戰(zhàn)技巧精粹 PDF格式下載