編輯推薦
適讀人群 :可變程邏輯器件 本書主要特色:
本書深入淺齣地介紹瞭如何使用Verilog對可編程邏輯器件進行設計的方法,主要針對可編程邏輯器件的設計,而不是僅僅介紹HDL的語法。同時還提供瞭一係列使用Verilog對可編程邏輯器件進行設計過程的實例,從簡單的門級電路,到帶有8位軟核處理器和定製I/O外設的復雜嵌入式係統。這些實例可作為通用的基本模塊組閤成具體電路,乃至結構復雜的大係統。
本書中的實例嚴格遵循設計準則,編碼和設計方法是“嚮上兼容的”,特點如下:
同樣的方法可應用於未來的大型設計之中。
同樣的方法能夠有助於其他係統的開發項目,包括仿真,時序分析,驗證和測試。
同樣的方法能夠應用到ASIC技術和不同類型的FPGA器件中。
代碼能夠被不同廠傢的軟件綜閤。
總之,本書是一本實用的、以硬件為核心的教材,其內容涉及用簡潔的HDL、遵循規範的設計和編碼原則,大限度地實現嚮上兼容。
內容簡介
本書主要內容包括三部分:基本的數字電路、外圍模塊和內嵌的微控製器。介紹瞭基礎的HDL結構和對應硬件,並示範如何用這些結構來搭建基本的數字電路。第二部分是應用部分的技術為原型闆設計外圍模塊,介紹瞭一個單獨外設的開發、實現和驗證。可以將這些模塊組成一個復雜的係統。第三部分介紹瞭基於FPGA的軟核微控製器,即PicoBlaze,展示瞭如何將通用處理器和定製電路進行集成。本書通過實例深入淺齣地介紹瞭使用Verilog對可編程邏輯器件進行設計的方法,不僅介紹瞭HDL的語法,還重點介紹瞭對可編程邏輯器件的設計方法,提供瞭一係列使用Verilog對可編程邏輯器件進行設計的實例,書中的實例均可運行於Xilinx公司的Spartan��3原型開發闆中,使讀者能夠邊動手邊學習,達到快速入門並掌握其要領的目的。
本書可作為可編程邏輯器件的學習指導書,通過書中的案例,初學者終可以完全掌握可編程邏輯器件的設計。同時,也可作為工程實踐的指導用書,對提高可編程邏輯器件開發人員的設計水平有藉鑒價值。
目錄
1.門級組閤電路
1.1引言
1.2簡述
1.3結構描述
1.4測試平颱
1.5參考書目說明
1.6推薦的實驗
2.FPGA和EDA軟件概述
2.1引言
2.2FPGA
2.3Digilent S3開發闆簡介
2.4開發流程
2.5Xilinx ISE project navigator簡介
2.6ISE project navigator簡明教程
2.7ModelSim 仿真器簡明教程
2.8參考書目說明
2.9推薦的實驗
3.RTL組閤電路
3.1引言
3.2RT級元件
3.3使用並發賦值語言布綫
3.4使用process建模
3.5使用IF和CASE語句布綫
3.6constant和generic
3.7設計實例
3.8參考書目說明
3.9推薦的實驗
4.常規的時序電路
4.1引言
4.2觸發器和寄存器
4.3簡單的設計實例
4.4時序電路的測試平颱
4.5實例學習
4.6參考書目說明
4.7推薦的實驗
5.FSM
5.1引言
5.2FSM代碼開發
5.3設計實例
5.4參考書目說明
5.5推薦的實驗
6.FSMD
6.1引言
6.2FSMD代碼開發
6.3設計實例
6.4參考書目說明
6.5推薦的實驗
7.UART
7.1引言
7.2UART 接收子係統
7.3UART發送子係統
7.4整體的UART係統
7.5定製一個UART
7.6參考書目說明
7.7推薦的實驗
8.PS2 鍵盤
8.1引言
8.2PS2接收子係統
8.3PS2鍵盤掃描碼
8.4PS2鍵盤接口電路
8.5參考書目說明
8.6推薦的實驗
9. PS2鼠標
10.1引言
10.2PS2 鼠標協議
10.3PS2發送子係統
10.4雙嚮PS2接口
10.5PS2鼠標接口
10.6參考書目說明
10.7推薦的實驗
10. 外部SRAM
10.1引言
10.2IS61LV25616AL SRAM規範
10.3基本內存控製
10.4一個安全的設計
10.5更加有挑戰的設計
10.6參考書目說明
10.7推薦的實驗
11.Xilinx Spartan-3內存
11.1引言
11.2Spartan-3器件的嵌入式內存
11.3加入內存模塊的方法
11.4內存接口的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開發流程
14.5指令集
14.6匯編程序指導
14.7參考書目說明
15.PicoBlaze匯編代碼開發
15.1引言
15.2有用的代碼片斷
15.3子程序開發
15.4程序開發
15.5匯編代碼的處理
15.6與PicoBlaze綜閤
15.7參考書目說明
15.8推薦的實驗
16.PicoBlaze I/O接口
16.1引言
16.2輸齣端口
16.3輸入端口
16.4帶有開關和七段LED顯示接口的平方程序
16.5帶有組閤多路開關和UART終端的平方程序
16.6參考書目說明
16.7推薦的實驗
17.PicoBlaze中斷接口
17.1引言
17.2PicoBlaze的中斷控製
17.3外部接口
17.4軟件開發注意事項
17.5設計實例
17.6參考書目說明
17.7推薦的實驗
附錄A: VHDL模闆樣例
前言/序言
HDL(硬件描述語言)和FPGA(現場可編程門陣列)器件可以使設計者很快地完成復雜數字電路的開發和仿真,並在樣機器件上實現,隨後對器件電路的實際運行情況進行檢查。隨著工藝的成熟,HDL和FPGA已經成為設計實踐的主流。利用PC機和普通的FPGA開發闆就能構造齣十分復雜的數字係統。本書采用實際操作的學習方法,利用豐富的示例來闡述FPGA和HDL的開發和設計過程。書中包含瞭大量實例,從簡單的門級電路,到帶有8位軟核處理器和定製I/O外設的復雜嵌入式係統。所有這些例子都可以被綜閤成具體電路,並在開發闆上進行實際測試。
本書關注要點:
本書關注的重點是綜閤後生成硬件的優劣,而不是HDL語法。本書隻關注一小部分可綜閤子集,並使用少量的代碼模闆為不同類型的電路提供框架,而不是解釋每一個語句的結構。這些模闆都是通用的,很容易綜閤到復雜的係統中。雖然這種方法限製瞭語法錶達的“自由”,但並不妨礙我們開發創新性的硬件結構。由於HDL語言的通用性和適應性,同一個電路通常可以用多種語言結構和代碼風格錶達。其中許多代碼是用於建模的。這些代碼綜閤後可能導緻不必要的復雜硬件實現,有時還根本不可能綜閤成任何具體電路。這種模闆方式實際上能夠促使我們更多地去思考硬件電路本身,養成良好的編碼習慣。由於我們的主要興趣是在硬件上,所以花一些時間研究如何使用同一個代碼模闆來開發多種不同的硬件結構,而不是用多種不同版本的代碼來描述同一個電路是十分有價值的。
目前有兩種流行的HDL語言,它們分彆是VHDL和Verilog。這兩種語言都得到廣泛的應用,並且都是IEEE標準。本書使用Verilog,而另一本標題類似的書使用VHDL。盡管兩者的語法差異較大,但它們的功能卻非常相似,都能很好地達到設計目標。當我們掌握瞭一種語言的設計實踐和編碼方法後,再學習另一種語言就會變得非常簡單。
雖然本書是為初學者編寫的,但書中的示例都嚴格遵循設計準則,可為讀者今後的工作打下良好的基礎。編碼和設計方法是“嚮上兼容的”,意思是:
同樣的方法可應用於未來的大型設計之中。
同樣的方法能夠有助於其它的係統開發任務,包括仿真,時序分析,驗證和測試。
同樣的方法能夠被應用到ASIC技術和不同類型的FPGA器件中。
代碼能夠被不同廠傢的綜閤軟件綜閤。
總之,本書是一本實用的、以硬件為核心的教材,其內容涉及用最簡潔的HDL、遵循規範的設計和編碼原則,最大限度地實現嚮上兼容。
購買本書得益處:
本書包含三大部分:
基本數字電路,外設模塊和嵌入式微控製器。針對的讀者群除瞭正在學習入門級或者高級數字係統設計課程的學生外,還包括想要學習FPGA和基於HDL開發的在職工程師。對於書中前兩部分內容,需要讀者具有數字係統的基本知識,而數字係統通常是電子工程和計算機工程專業課程中的必修課。對於第三部分的內容而言,如果之前學習過匯編語言編程會很有幫助。
本書所采用的工具:
雖然本書的主要目標是教會讀者如何編寫與開發工具和FPGA器件無關的HDL代碼,但我們必須得選擇一種開發工具(即軟件包)和一套FPGA開發闆來進行綜閤和實現這些示例。本書使用瞭Xilinx公司的綜閤工具和FPGA器件,Xilinx公司是一傢在該領域處於領導地位的公司。
軟件:
使用的綜閤軟件是Xilinx ISE開發套件的網絡版。與完全版的套件相比,網絡版除瞭支持的器件數量受限外,功能與完全版是類似的。大多數入門級開發闆都使用便宜的Spartan-3係列FPGA器件。由於網絡版支持Spartan-3器件,因此它符閤我們的需求。本書使用的仿真軟件是Mentor Graphics公司的 ModelSim XE III入門版。它是ModelSim的定製版。這兩個軟件包都是免費的,並且能夠從Xilinx網站上下載。
FPGA開發闆:
使用由Digilent Inc公司生産的幾款入門級FPGA開發闆,其中包括Spartan-3 Starter,Nexys-2和Basys等開發闆,它們都包含一個Spartan-3/3E FPGA芯片和相似的外圍電路。書中的設計示例是基於Spartan-3 Starter開發闆(或簡稱為S3闆)的,但大多數示例也能在其他開發闆上直接使用。HDL代碼的適用性總結如下:
Spartan3 Starter (S3)開發闆。 S3開發闆包含所有的外圍器件,不需要其他的附屬模塊。所有的HDL代碼和相關討論能夠直接應用在這塊開發闆上。
Nexys-2開發闆。 Nexys-2開發闆是一塊比較新的開發闆,包含瞭一片較大型的FPGA芯片和存儲芯片。外圍器件與S3開發版相似。與S3開發闆有兩處不同:第一,其VGA接口的"顔色深度"由3位擴展到8位。因此第13和14章討論的VGA接口電路的輸齣需要根據情況進行相應的修改。第二,Nexys-2闆包含更復雜的外部存儲器。盡管能夠配置為異步SRAM,但其時序特性與S3開發闆上的存儲芯片是不同的,因此第11章描述的存儲控製器HDL代碼便不能直接使用。但同樣的設計準則依然可以應用於新的控製器的構造。
Basys開發闆 Basys開發闆是一個簡易的開發闆。缺少RS-232連接器。為瞭實現第8章描述UART模塊和串行接口,我們需要Digilent的RS-232轉換器外設模塊。Basys開發闆沒有外部存儲器件,因此第11章描述的存儲控製器無法應用。
其他FPGA開發闆 本書描述的大部分外設器件其實都是工業級標準的器件,並且相應的HDL代碼能夠被用於開發闆上,隻要開發闆提供類似的接口和連接器。除瞭Xilinx特定的部分外,這些代碼也能夠應用於其他廠商設計的基於FPGA器件的開發闆上。
PC的附件:
設計示例包含瞭用於連接PC外圍設備的接口。鍵盤,鼠標和VGA顯示器是必需的,還需要一條用於連接UART模塊的普通串行數據綫。這些外設使用廣泛,通常可以在一颱舊的PC上找到。
本書的結構:
本書分為三個主要部分。第一部分介紹基礎的HDL結構和對應硬件,並示範如何用這些結構來搭建基本的數字電路。本書由六章組成:
第一章介紹瞭HDL程序的結構,基礎語法和邏輯操作符。根據這些語言結構,可以推導齣相應的門級組閤電路。
第二章介紹FPGA器件、原型闆和開發流程。藉助於Xilinx ISE綜閤軟件教程和Mentor Graphics ModelSim仿真軟件教程進行開發過程的示範。
第三章介紹與HDL語言相關的操作符和算法操作符及其電路的結構。它們與中規模元件(如比較器,加法器和多路復用開關等元件)對應。模塊級組閤電路就是由這些語言結構得到的。
第四章介紹存儲元件和構造簡單時序電路的代碼,例如計數器和移位寄存器,這些電路的狀態轉移錶現為簡單的有序模式。
第五章討論有限狀態機(FSM)的構建,有限狀態機也是一種時序電路,但它的狀態轉移錶現為復雜的非有序模式。
第六章介紹瞭帶有數據路徑的有限狀態機(FSMD)的構建。FSMD用於實現寄存器傳輸(RT)方法學,通過數據在寄存期間的傳輸和操作,描述係統的運行。
第七章介紹關於語言構造和編碼技術方麵的若乾高級話題,並介紹更加復雜測試平颱的開發技術。讀者可以跳過該章,不會影響對其他章節的理解。
第二部分是應用第一部分的技術為原型闆設計一係列外圍模塊。每章介紹一個單獨外設的開發、實現和驗證。可以將這些模塊組成一個更大的工程。該部分包括七個章節:
第八章介紹瞭普通的異步收發送器(UART)的設計,用於提供原型闆上的RS-232接口接收和發送數據的串行鏈路。
第九章介紹瞭鍵盤接口的設計,可以從鍵盤上讀取掃描碼。鍵盤通過開發闆上的PS2接口與其連接。
第十章介紹瞭鼠標接口的設計,可以從鼠標上獲得點擊和移動信息。鼠標也是通過開發闆上的PS2接口與其連接。
第十一章討論瞭存儲控製器的實現和時序。該控製器用於對S3闆上的兩個靜態隨機存儲器(SRAM)讀取和寫入數據。
第十二章討論瞭Spartan-3器件中特定元件的推斷和使用。重點是FPGA的內部存儲塊。
第十三章介紹瞭一個視頻控製器的設計和實現。討論的內容包括視頻同步信號的産生並展示瞭比特映射和對象映射圖像界麵的構造。顯示器通過開發闆上的VGA接口進行連接。
第十四章繼續介紹視頻控製器的開發。討論展示瞭文字界麵和常規分片映射機製的構建。
第三部分介紹基於FPGA的軟核微控製器,即PicoBlaze,展示瞭如何將通用處理器和定製電路進行集成。該部分包括四個章節:
第十五章對PicoBlaze的結構和指令集進行瞭簡介。
第十六章對基本的匯編語言編程進行瞭介紹,並提供瞭一個總的開發流程。
第十七章討論瞭PicoBlaze的I/O特性,並展示瞭如何將其與其他外設通過定製電路連接起來。
第十八章討論瞭PicoBlaze的中斷性能,並展示瞭一個定製的中斷處理電路的構建。
除瞭常規的章節,附錄部分總結和列齣瞭所有的代碼模版。
特殊標識xilinx specific 本書中我們使用瞭兩種特殊的段落標記:一個是為瞭描述Xilinx-specific(Xilinx公司特有的)特性,另一個是為瞭描述Verilog-1995的結構。雖然在本書中描述的例子是基於Xilinx開發闆來實現的,並且代碼也是采用Xilinx ISE軟件進行綜閤,我們仍設法使HDL代碼不依賴於器件和軟件。本書提到的大多數內容和代碼能夠應用到不同的目標器件,也可以被不同的綜閤軟件綜閤。然而,一些代碼或器件特性是Xilinx ISE或者Spartan-3FPGA芯片所獨有的。我們用Xilinx specific上標,錶示相應的部分或者章節的內容僅是針對Xilinx公司的器件。
同樣,像在這一頁的邊緣,我們用邊緣標記來錶明這段的內容僅針對Xilinx。這些標記錶明代碼或設計不可直接移植,需要針對不同的軟件包或目標闆對代碼和設計進行修改。1995年Verilog語言第一次得到批準(被引用作Verilog-1995),並在2001年修訂(被引用作Verilog-2001)。修訂版有很多改進。本書中使用的是Verilog-2001。如果一種語言使用瞭兩種不同版本進行構建,我們會將其分開,單獨對舊版本進行描述,並在頁邊緣做上標記,用於這種類型的討論。這些內容“供參考”,目的是幫助讀者理解舊版本的Verilog代碼。
指導價值:
本書可作為數字係統概論或者高級工程指導的參考書。在數字係統概論中,本書提供瞭課程的試驗部分。第一部分的章節基本上都遵循瞭典型的課程順序,可作為常規課程的參考。可以選擇一
用Verilog設計FPGA樣機實例解析(Xilinx Spartan-3版) 下載 mobi epub pdf txt 電子書