用Verilog設(shè)計FPGA樣機實例解析(Xilinx Spartan-3版)
定 價:165 元
叢書名:國際信息工程先進技術(shù)譯叢
- 作者:[美] 彭皮·楚 著;李艷志 譯
- 出版時間:2016/11/1
- ISBN:9787111536444
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP332.1
- 頁碼:553
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書主要內(nèi)容包括三部分:基本的數(shù)字電路、外圍模塊和內(nèi)嵌的微控制器。介紹了基礎(chǔ)的HDL結(jié)構(gòu)和對應(yīng)硬件,并示范如何用這些結(jié)構(gòu)來搭建基本的數(shù)字電路。第二部分是應(yīng)用部分的技術(shù)為原型板設(shè)計外圍模塊,介紹了一個單獨外設(shè)的開發(fā)、實現(xiàn)和驗證。可以將這些模塊組成一個復(fù)雜的系統(tǒng)。第三部分介紹了基于FPGA的軟核微控制器,即PicoBlaze,展示了如何將通用處理器和定制電路進行集成。本書通過實例深入淺出地介紹了使用Verilog對可編程邏輯器件進行設(shè)計的方法,不僅介紹了HDL的語法,還重點介紹了對可編程邏輯器件的設(shè)計方法,提供了一系列使用Verilog對可編程邏輯器件進行設(shè)計的實例,書中的實例均可運行于Xilinx公司的Spartan3原型開發(fā)板中,使讀者能夠邊動手邊學(xué)習(xí),達到快速入門并掌握其要領(lǐng)的目的。
本書可作為可編程邏輯器件的學(xué)習(xí)指導(dǎo)書,通過書中的案例,初學(xué)者終可以完全掌握可編程邏輯器件的設(shè)計。同時,也可作為工程實踐的指導(dǎo)用書,對提高可編程邏輯器件開發(fā)人員的設(shè)計水平有借鑒價值。
適讀人群 :可變程邏輯器件
本書主要特色:
本書深入淺出地介紹了如何使用Verilog對可編程邏輯器件進行設(shè)計的方法,主要針對可編程邏輯器件的設(shè)計,而不是僅僅介紹HDL的語法。同時還提供了一系列使用Verilog對可編程邏輯器件進行設(shè)計過程的實例,從簡單的門級電路,到帶有8位軟核處理器和定制I/O外設(shè)的復(fù)雜嵌入式系統(tǒng)。這些實例可作為通用的基本模塊組合成具體電路,乃至結(jié)構(gòu)復(fù)雜的大系統(tǒng)。
本書中的實例嚴(yán)格遵循設(shè)計準(zhǔn)則,編碼和設(shè)計方法是“向上兼容的”,特點如下:
同樣的方法可應(yīng)用于未來的大型設(shè)計之中。
同樣的方法能夠有助于其他系統(tǒng)的開發(fā)項目,包括仿真,時序分析,驗證和測試。
同樣的方法能夠應(yīng)用到ASIC技術(shù)和不同類型的FPGA器件中。
代碼能夠被不同廠家的軟件綜合。
總之,本書是一本實用的、以硬件為核心的教材,其內(nèi)容涉及用簡潔的HDL、遵循規(guī)范的設(shè)計和編碼原則,大限度地實現(xiàn)向上兼容。
HDL(硬件描述語言)和FPGA(現(xiàn)場可編程門陣列)器件可以使設(shè)計者很快地完成復(fù)雜數(shù)字電路的開發(fā)和仿真,并在樣機器件上實現(xiàn),隨后對器件電路的實際運行情況進行檢查。隨著工藝的成熟,HDL和FPGA已經(jīng)成為設(shè)計實踐的主流。利用PC機和普通的FPGA開發(fā)板就能構(gòu)造出十分復(fù)雜的數(shù)字系統(tǒng)。本書采用實際操作的學(xué)習(xí)方法,利用豐富的示例來闡述FPGA和HDL的開發(fā)和設(shè)計過程。書中包含了大量實例,從簡單的門級電路,到帶有8位軟核處理器和定制I/O外設(shè)的復(fù)雜嵌入式系統(tǒng)。所有這些例子都可以被綜合成具體電路,并在開發(fā)板上進行實際測試。
本書關(guān)注要點:
本書關(guān)注的重點是綜合后生成硬件的優(yōu)劣,而不是HDL語法。本書只關(guān)注一小部分可綜合子集,并使用少量的代碼模板為不同類型的電路提供框架,而不是解釋每一個語句的結(jié)構(gòu)。這些模板都是通用的,很容易綜合到復(fù)雜的系統(tǒng)中。雖然這種方法限制了語法表達的“自由”,但并不妨礙我們開發(fā)創(chuàng)新性的硬件結(jié)構(gòu)。由于HDL語言的通用性和適應(yīng)性,同一個電路通常可以用多種語言結(jié)構(gòu)和代碼風(fēng)格表達。其中許多代碼是用于建模的。這些代碼綜合后可能導(dǎo)致不必要的復(fù)雜硬件實現(xiàn),有時還根本不可能綜合成任何具體電路。這種模板方式實際上能夠促使我們更多地去思考硬件電路本身,養(yǎng)成良好的編碼習(xí)慣。由于我們的主要興趣是在硬件上,所以花一些時間研究如何使用同一個代碼模板來開發(fā)多種不同的硬件結(jié)構(gòu),而不是用多種不同版本的代碼來描述同一個電路是十分有價值的。
目前有兩種流行的HDL語言,它們分別是VHDL和Verilog。這兩種語言都得到廣泛的應(yīng)用,并且都是IEEE標(biāo)準(zhǔn)。本書使用Verilog,而另一本標(biāo)題類似的書使用VHDL。盡管兩者的語法差異較大,但它們的功能卻非常相似,都能很好地達到設(shè)計目標(biāo)。當(dāng)我們掌握了一種語言的設(shè)計實踐和編碼方法后,再學(xué)習(xí)另一種語言就會變得非常簡單。
雖然本書是為初學(xué)者編寫的,但書中的示例都嚴(yán)格遵循設(shè)計準(zhǔn)則,可為讀者今后的工作打下良好的基礎(chǔ)。編碼和設(shè)計方法是“向上兼容的”,意思是:
同樣的方法可應(yīng)用于未來的大型設(shè)計之中。
同樣的方法能夠有助于其它的系統(tǒng)開發(fā)任務(wù),包括仿真,時序分析,驗證和測試。
同樣的方法能夠被應(yīng)用到ASIC技術(shù)和不同類型的FPGA器件中。
代碼能夠被不同廠家的綜合軟件綜合。
總之,本書是一本實用的、以硬件為核心的教材,其內(nèi)容涉及用最簡潔的HDL、遵循規(guī)范的設(shè)計和編碼原則,最大限度地實現(xiàn)向上兼容。
購買本書得益處:
本書包含三大部分:
基本數(shù)字電路,外設(shè)模塊和嵌入式微控制器。針對的讀者群除了正在學(xué)習(xí)入門級或者高級數(shù)字系統(tǒng)設(shè)計課程的學(xué)生外,還包括想要學(xué)習(xí)FPGA和基于HDL開發(fā)的在職工程師。對于書中前兩部分內(nèi)容,需要讀者具有數(shù)字系統(tǒng)的基本知識,而數(shù)字系統(tǒng)通常是電子工程和計算機工程專業(yè)課程中的必修課。對于第三部分的內(nèi)容而言,如果之前學(xué)習(xí)過匯編語言編程會很有幫助。
本書所采用的工具:
雖然本書的主要目標(biāo)是教會讀者如何編寫與開發(fā)工具和FPGA器件無關(guān)的HDL代碼,但我們必須得選擇一種開發(fā)工具(即軟件包)和一套FPGA開發(fā)板來進行綜合和實現(xiàn)這些示例。本書使用了Xilinx公司的綜合工具和FPGA器件,Xilinx公司是一家在該領(lǐng)域處于領(lǐng)導(dǎo)地位的公司。
軟件:
使用的綜合軟件是Xilinx ISE開發(fā)套件的網(wǎng)絡(luò)版。與完全版的套件相比,網(wǎng)絡(luò)版除了支持的器件數(shù)量受限外,功能與完全版是類似的。大多數(shù)入門級開發(fā)板都使用便宜的Spartan-3系列FPGA器件。由于網(wǎng)絡(luò)版支持Spartan-3器件,因此它符合我們的需求。本書使用的仿真軟件是Mentor Graphics公司的 ModelSim XE III入門版。它是ModelSim的定制版。這兩個軟件包都是免費的,并且能夠從Xilinx網(wǎng)站上下載。
FPGA開發(fā)板:
使用由Digilent Inc公司生產(chǎn)的幾款入門級FPGA開發(fā)板,其中包括Spartan-3 Starter,Nexys-2和Basys等開發(fā)板,它們都包含一個Spartan-3/3E FPGA芯片和相似的外圍電路。書中的設(shè)計示例是基于Spartan-3 Starter開發(fā)板(或簡稱為S3板)的,但大多數(shù)示例也能在其他開發(fā)板上直接使用。HDL代碼的適用性總結(jié)如下:
Spartan3 Starter (S3)開發(fā)板。 S3開發(fā)板包含所有的外圍器件,不需要其他的附屬模塊。所有的HDL代碼和相關(guān)討論能夠直接應(yīng)用在這塊開發(fā)板上。
Nexys-2開發(fā)板。 Nexys-2開發(fā)板是一塊比較新的開發(fā)板,包含了一片較大型的FPGA芯片和存儲芯片。外圍器件與S3開發(fā)版相似。與S3開發(fā)板有兩處不同:第一,其VGA接口的\"顏色深度\"由3位擴展到8位。因此第13和14章討論的VGA接口電路的輸出需要根據(jù)情況進行相應(yīng)的修改。第二,Nexys-2板包含更復(fù)雜的外部存儲器。盡管能夠配置為異步SRAM,但其時序特性與S3開發(fā)板上的存儲芯片是不同的,因此第11章描述的存儲控制器HDL代碼便不能直接使用。但同樣的設(shè)計準(zhǔn)則依然可以應(yīng)用于新的控制器的構(gòu)造。
Basys開發(fā)板 Basys開發(fā)板是一個簡易的開發(fā)板。缺少RS-232連接器。為了實現(xiàn)第8章描述UART模塊和串行接口,我們需要Digilent的RS-232轉(zhuǎn)換器外設(shè)模塊。Basys開發(fā)板沒有外部存儲器件,因此第11章描述的存儲控制器無法應(yīng)用。
其他FPGA開發(fā)板 本書描述的大部分外設(shè)器件其實都是工業(yè)級標(biāo)準(zhǔn)的器件,并且相應(yīng)的HDL代碼能夠被用于開發(fā)板上,只要開發(fā)板提供類似的接口和連接器。除了Xilinx特定的部分外,這些代碼也能夠應(yīng)用于其他廠商設(shè)計的基于FPGA器件的開發(fā)板上。
PC的附件:
設(shè)計示例包含了用于連接PC外圍設(shè)備的接口。鍵盤,鼠標(biāo)和VGA顯示器是必需的,還需要一條用于連接UART模塊的普通串行數(shù)據(jù)線。這些外設(shè)使用廣泛,通?梢栽谝慌_舊的PC上找到。
本書的結(jié)構(gòu):
本書分為三個主要部分。第一部分介紹基礎(chǔ)的HDL結(jié)構(gòu)和對應(yīng)硬件,并示范如何用這些結(jié)構(gòu)來搭建基本的數(shù)字電路。本書由六章組成:
第一章介紹了HDL程序的結(jié)構(gòu),基礎(chǔ)語法和邏輯操作符。根據(jù)這些語言結(jié)構(gòu),可以推導(dǎo)出相應(yīng)的門級組合電路。
第二章介紹FPGA器件、原型板和開發(fā)流程。借助于Xilinx ISE綜合軟件教程和Mentor Graphics ModelSim仿真軟件教程進行開發(fā)過程的示范。
第三章介紹與HDL語言相關(guān)的操作符和算法操作符及其電路的結(jié)構(gòu)。它們與中規(guī)模元件(如比較器,加法器和多路復(fù)用開關(guān)等元件)對應(yīng)。模塊級組合電路就是由這些語言結(jié)構(gòu)得到的。
第四章介紹存儲元件和構(gòu)造簡單時序電路的代碼,例如計數(shù)器和移位寄存器,這些電路的狀態(tài)轉(zhuǎn)移表現(xiàn)為簡單的有序模式。
第五章討論有限狀態(tài)機(FSM)的構(gòu)建,有限狀態(tài)機也是一種時序電路,但它的狀態(tài)轉(zhuǎn)移表現(xiàn)為復(fù)雜的非有序模式。
第六章介紹了帶有數(shù)據(jù)路徑的有限狀態(tài)機(FSMD)的構(gòu)建。FSMD用于實現(xiàn)寄存器傳輸(RT)方法學(xué),通過數(shù)據(jù)在寄存期間的傳輸和操作,描述系統(tǒng)的運行。
第七章介紹關(guān)于語言構(gòu)造和編碼技術(shù)方面的若干高級話題,并介紹更加復(fù)雜測試平臺的開發(fā)技術(shù)。讀者可以跳過該章,不會影響對其他章節(jié)的理解。
第二部分是應(yīng)用第一部分的技術(shù)為原型板設(shè)計一系列外圍模塊。每章介紹一個單獨外設(shè)的開發(fā)、實現(xiàn)和驗證?梢詫⑦@些模塊組成一個更大的工程。該部分包括七個章節(jié):
第八章介紹了普通的異步收發(fā)送器(UART)的設(shè)計,用于提供原型板上的RS-232接口接收和發(fā)送數(shù)據(jù)的串行鏈路。
第九章介紹了鍵盤接口的設(shè)計,可以從鍵盤上讀取掃描碼。鍵盤通過開發(fā)板上的PS2接口與其連接。
第十章介紹了鼠標(biāo)接口的設(shè)計,可以從鼠標(biāo)上獲得點擊和移動信息。鼠標(biāo)也是通過開發(fā)板上的PS2接口與其連接。
第十一章討論了存儲控制器的實現(xiàn)和時序。該控制器用于對S3板上的兩個靜態(tài)隨機存儲器(SRAM)讀取和寫入數(shù)據(jù)。
第十二章討論了Spartan-3器件中特定元件的推斷和使用。重點是FPGA的內(nèi)部存儲塊。
第十三章介紹了一個視頻控制器的設(shè)計和實現(xiàn)。討論的內(nèi)容包括視頻同步信號的產(chǎn)生并展示了比特映射和對象映射圖像界面的構(gòu)造。顯示器通過開發(fā)板上的VGA接口進行連接。
第十四章繼續(xù)介紹視頻控制器的開發(fā)。討論展示了文字界面和常規(guī)分片映射機制的構(gòu)建。
第三部分介紹基于FPGA的軟核微控制器,即PicoBlaze,展示了如何將通用處理器和定制電路進行集成。該部分包括四個章節(jié):
第十五章對PicoBlaze的結(jié)構(gòu)和指令集進行了簡介。
第十六章對基本的匯編語言編程進行了介紹,并提供了一個總的開發(fā)流程。
第十七章討論了PicoBlaze的I/O特性,并展示了如何將其與其他外設(shè)通過定制電路連接起來。
第十八章討論了PicoBlaze的中斷性能,并展示了一個定制的中斷處理電路的構(gòu)建。
除了常規(guī)的章節(jié),附錄部分總結(jié)和列出了所有的代碼模版。
特殊標(biāo)識xilinx specific 本書中我們使用了兩種特殊的段落標(biāo)記:一個是為了描述Xilinx-specific(Xilinx公司特有的)特性,另一個是為了描述Verilog-1995的結(jié)構(gòu)。雖然在本書中描述的例子是基于Xilinx開發(fā)板來實現(xiàn)的,并且代碼也是采用Xilinx ISE軟件進行綜合,我們?nèi)栽O(shè)法使HDL代碼不依賴于器件和軟件。本書提到的大多數(shù)內(nèi)容和代碼能夠應(yīng)用到不同的目標(biāo)器件,也可以被不同的綜合軟件綜合。然而,一些代碼或器件特性是Xilinx ISE或者Spartan-3FPGA芯片所獨有的。我們用Xilinx specific上標(biāo),表示相應(yīng)的部分或者章節(jié)的內(nèi)容僅是針對Xilinx公司的器件。
同樣,像在這一頁的邊緣,我們用邊緣標(biāo)記來表明這段的內(nèi)容僅針對Xilinx。這些標(biāo)記表明代碼或設(shè)計不可直接移植,需要針對不同的軟件包或目標(biāo)板對代碼和設(shè)計進行修改。1995年Verilog語言第一次得到批準(zhǔn)(被引用作Verilog-1995),并在2001年修訂(被引用作Verilog-2001)。修訂版有很多改進。本書中使用的是Verilog-2001。如果一種語言使用了兩種不同版本進行構(gòu)建,我們會將其分開,單獨對舊版本進行描述,并在頁邊緣做上標(biāo)記,用于這種類型的討論。這些內(nèi)容“供參考”,目的是幫助讀者理解舊版本的Verilog代碼。
指導(dǎo)價值:
本書可作為數(shù)字系統(tǒng)概論或者高級工程指導(dǎo)的參考書。在數(shù)字系統(tǒng)概論中,本書提供了課程的試驗部分。第一部分的章節(jié)基本上都遵循了典型的課程順序,可作為常規(guī)課程的參考?梢赃x擇一
1.門級組合電路
1.1引言
1.2簡述
1.3結(jié)構(gòu)描述
1.4測試平臺
1.5參考書目說明
1.6推薦的實驗
2.FPGA和EDA軟件概述
2.1引言
2.2FPGA
2.3Digilent S3開發(fā)板簡介
2.4開發(fā)流程
2.5Xilinx ISE project navigator簡介
2.6ISE project navigator簡明教程
2.7ModelSim 仿真器簡明教程
2.8參考書目說明
2.9推薦的實驗
3.RTL組合電路
3.1引言
3.2RT級元件
3.3使用并發(fā)賦值語言布線
3.4使用process建模
3.5使用IF和CASE語句布線
3.6constant和generic
3.7設(shè)計實例
3.8參考書目說明
3.9推薦的實驗
4.常規(guī)的時序電路
4.1引言
4.2觸發(fā)器和寄存器
4.3簡單的設(shè)計實例
4.4時序電路的測試平臺
4.5實例學(xué)習(xí)
4.6參考書目說明
4.7推薦的實驗
5.FSM
5.1引言
5.2FSM代碼開發(fā)
5.3設(shè)計實例
5.4參考書目說明
5.5推薦的實驗
6.FSMD
6.1引言
6.2FSMD代碼開發(fā)
6.3設(shè)計實例
6.4參考書目說明
6.5推薦的實驗
7.UART
7.1引言
7.2UART 接收子系統(tǒng)
7.3UART發(fā)送子系統(tǒng)
7.4整體的UART系統(tǒng)
7.5定制一個UART
7.6參考書目說明
7.7推薦的實驗
8.PS2 鍵盤
8.1引言
8.2PS2接收子系統(tǒng)
8.3PS2鍵盤掃描碼
8.4PS2鍵盤接口電路
8.5參考書目說明
8.6推薦的實驗
9. PS2鼠標(biāo)
10.1引言
10.2PS2 鼠標(biāo)協(xié)議
10.3PS2發(fā)送子系統(tǒng)
10.4雙向PS2接口
10.5PS2鼠標(biāo)接口
10.6參考書目說明
10.7推薦的實驗
10. 外部SRAM
10.1引言
10.2IS61LV25616AL SRAM規(guī)范
10.3基本內(nèi)存控制
10.4一個安全的設(shè)計
10.5更加有挑戰(zhàn)的設(shè)計
10.6參考書目說明
10.7推薦的實驗
11.Xilinx Spartan-3內(nèi)存
11.1引言
11.2Spartan-3器件的嵌入式內(nèi)存
11.3加入內(nèi)存模塊的方法
11.4內(nèi)存接口的HDL模板
11.5參考書目說明
11.6推薦的實驗
12.VGA控制器:圖形
12.1引言
12.2VGA同步化
12.3像素生成電路概述
12.4使用對象映射方案生成圖像
12.5使用bit映射方案生成圖像
12.6參考書目說明
12.7推薦的實驗
13.VGA控制器:文本
13.1引言
13.2文本生成
13.3全屏文本顯示
13.4完整的pong游戲
13.5參考書目說明
13.6推薦的實驗
14.PicoBlaze 概述
14.1引言
14.2定制的軟件和硬件
14.3PicoBlaze概述
14.4開發(fā)流程
14.5指令集
14.6匯編程序指導(dǎo)
14.7參考書目說明
15.PicoBlaze匯編代碼開發(fā)
15.1引言
15.2有用的代碼片斷
15.3子程序開發(fā)
15.4程序開發(fā)
15.5匯編代碼的處理
15.6與PicoBlaze綜合
15.7參考書目說明
15.8推薦的實驗
16.PicoBlaze I/O接口
16.1引言
16.2輸出端口
16.3輸入端口
16.4帶有開關(guān)和七段LED顯示接口的平方程序
16.5帶有組合多路開關(guān)和UART終端的平方程序
16.6參考書目說明
16.7推薦的實驗
17.PicoBlaze中斷接口
17.1引言
17.2PicoBlaze的中斷控制
17.3外部接口
17.4軟件開發(fā)注意事項
17.5設(shè)計實例
17.6參考書目說明
17.7推薦的實驗
附錄A: VHDL模板樣例