-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

VHDL數字設計與計算機設計基礎

( 簡體 字)
作者:Richard S. Sandige Michael L. Sandige 著類別:1. -> 電子工程 -> VHDL
譯者: 羅嶸 汪玉 單羿 等譯
出版社:清華大學出版社VHDL數字設計與計算機設計基礎 3dWoo書號: 43049
詢問書籍請說出此書號!

缺書
NT售價: 495

出版日:11/1/2015
頁數:749
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302394440
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

本書可作為大學一年級學生的數字設計課程的教材,也可作為大學二年級或以上學生的計算機設計課程的教材。本書所涉及的內容適合學習計算機工程、計算機科學和電機工程的學生。本書使用螺旋式教學方式:先提出設計問題,然后在相同的章節或后面的章節中,或者當出現一個不同的設計問題時再強調相同的概念,或者用不同的技術研究相同的問題。這樣做可以加強記憶。
  本書無須先修內容,但是計算機導論及初級編程課程通常會對學生學習VHDL和匯編語言編程有所幫助。
本書主要特點
* 本書講授和使用通用的VHDL代碼,以便讀者可以根據需要使用來自不同公司的VHDL工具。
* 課程中為了平衡,可同時講授傳統和現代VHDL設計。
* 使用作為互動工具的卡諾圖瀏覽器程序,教給學生使用兩變量、三變量和四變量卡諾圖的方法。
* 教會學生如何設計4位教學版的VBC1(非常基本計算機1)和VBC1-E(VBC1的增強版本)。這兩種不同的計算機版本可以下載到開發板上的FPGA中,且可用匯編語言編程。
* 本書提供編輯/匯編/仿真程序,用來指導學生如何編寫4位教學版計算機的程序。
* 本書提供一個存儲器加載軟件程序,來教會學生如何設計指令存儲器的加載器。
* 每章都有一個或多個實驗,并用數字編號;許多實驗設置了推薦的課前作業,這些作業與編寫匯編語言程序或者進行仿真有關。
* 按照書中的每一節給出相應的課后習題。
章節和內容概述
  在本書的數字設計部分,第1∼9章覆蓋了如下內容:
* 第1章介紹組合邏輯電路的VHDL(超高速集成電路硬件描述語言)。
* 提供了34個實驗,以便學生們通過實踐來學習。實驗1A至9B為學生們提供了學習如何在實驗室設計數字設計的VHDL電路實踐。實驗的編號與章節的編號對應。可用這些實驗布置家庭作業或者特別的大作業。
* 第2章給學生們引入一個使用字母顯示系統的七段顯示器,學生們可以通過VHDL在FPGA開發板上設計且構建它,來顯示滑動開關的高(H)電平或者低(L)電平。該章還介紹了作為交互工具的卡諾圖瀏覽器程序,用于教給學生掌握具有兩變量、三變量和四變量的卡諾圖。
* 第3章介紹一種手工設計與非/與非和或非/或非形式的組合電路的圖形設計方法,然后介紹用VHDL實現的等價設計。該章引入了譯碼器和多路選擇器,以及使用譯碼器和多路選擇器設計電路的手工方法。緊跟這些方法之后的是使用VHDL實現等價設計。該章還介紹了函數和邏輯現象,并向學生展示了如何用邏輯險象覆蓋項來消除邏輯險象。
* 第4章介紹組合邏輯電路的VHDL設計,完整地介紹了數據流、行為和結構設計風格。該章提供了包括標量和矢量輸入及輸出的VHDL實例。
* 第5章給出置位-復位(S-R)鎖存器、D鎖存器和D觸發器的傳統設計以及VHDL設計。該章讓學生學習如何設計D邊沿觸發的觸發器。實驗5A提供了一個D鎖存器和一個帶CLR(清零)輸入的上升沿觸發的D觸發器實踐。實驗5B提供了一個8位寄存器和一個帶PRE(預置)輸入的上升沿觸發的D觸發器實踐。
* 有限狀態機設計分為簡單和復雜狀態機。簡單狀態機是沒有外部輸入來改變計數序列的基本計數器。復雜狀態機具有外部輸入來改變技術序列。第6章介紹簡單狀態機。該章給出簡單狀態機的算法方程法,以展示給學生們如何手工設計簡單狀態 機。該方法實際上可以處理任意大小的狀態機,但是它單調枯燥,因為學生必須掌握如何寫D激勵方程。學生學習如何使用算術方法,當生成一個更慢的時鐘頻率(或者分頻器)時,此方法特別有用。此外,本書引入現態/次態(PS/NS)表格化方法,允許學生使用過程來寫出基本計數器的VHDL方程,省去了獲得D激勵方程的麻煩。本章與傳統的狀態圖一起引入了一種稱為計數或者狀態序列圖的新計數器設計描述。
* 第7章給出了包含三狀態輸出、數據總線共享、加法器和減法器設計、逐次進位加法器以及超前進位加法器的不同計算機電路。實驗7A和7B提供了與第7章相關的特殊組合邏輯系統的設計實踐,即一個簡單(單比特)錯誤檢測系統和一個4位簡單加-減系統。
* 第8章給出的電路實現技術展示了可編程邏輯器件的實現,即PROM、PLA、PAL、GAL和LUT。該章還包括了正邏輯規則和直接極性指示以及如何轉換這兩種表示的簡單介紹。該章給出了模塊化設計方法,以展示如何設計MUX和DMUX樹。實驗8給出了LUT設計系統的設計和測試實驗。
* 第9章使用雙進程PS/NS方法的復雜狀態機的VHDL設計。第一個稱為同步過程的進程生成觸發器,而第二個稱為組合過程的進程譯碼次態函數以及設計中可能出現的摩爾和米利輸出。該章還給出了復雜可編程邏輯器件(CPLD)和FPGA所用的狀態機編碼風格。實驗9A提供了使用平面設計方法來設計單熱遞增/遞減計數器系統的設計實踐。實驗9B提供了使用層次設計方法來設計十狀態的計數器系統的設計實踐。該章引入一個同步器電路,通過減少亞穩態的出現概率來改進復雜狀態機設計的可靠性。為了討論的完整性,該章給出兩種附加的狀態機設計方法:雙賦值PS/NS法和混合PS/NS法。
  在本書的計算機設計部分,第10∼17章覆蓋了如下內容:
* 在簡單介紹哈佛型和普林斯頓(馮·諾依曼)型的計算機結構后,第10章給學生們介紹了一個稱為VBC1(Very Basic Computer)的非常基本的哈佛型計算機。學生學習VBC1編程器的寄存器模型、指令集結構以及編寫匯編語言的格式。學生可通過實驗10中編寫VBC1的匯編語言程序來獲得其初次體驗。附錄D提供了稱為EASY1的編輯器/匯編器/仿真器1的手冊。
* 第11章給出了VBC1所有指令的匯編程序形式、轉移函數形式以及機器碼形式。該章還給出了VBC1的編程實例和技術。
* 與第12∼17章對應的實驗允許學生通過FPGA構建、設計和實現VBC1,如果一周完成一個實驗,一共需要六周。每周完成的實驗數目可由講授實驗課程的老師決定。這些實驗提供了推薦的實驗前準備內容。
* 第12章介紹了VBC1輸入輸出(I/O)電路的設計,主要講述總線分發電路、可加載D寄存器、發光二極管(LED)驅動以及七段顯示驅動。
* 第13章給出了指令存儲器(用于存儲程序)、加載程序計數器(用于加載指令存儲器)以及去抖動電路(用于單步執行指令存儲器)的設計。該章還著重介紹了門控時鐘電路以及如何移出它們。
* 第14章介紹VBC1多路顯示系統的設計。為了提供額外的實踐,學生在該章學習如何設計一個字顯示系統。
* 第15章介紹VBC1指令譯碼器的設計,因為必須譯碼每條指令來自動完成指令的執行。
* 第16章介紹VBC1算術邏輯單元(ALU)的設計。除了一個擴展的ALU設計,學生還學習如何用VHDL設計如下電路:移位器電路、桶形移位器電路以及移位寄存器電路。
* 第17章給出了VBC1的最終設計,其中包括允許VBC1在指定的時鐘頻率下運行的運行程序計數器。所設計的實驗17L提供了通過存儲器加載程序自動加載程序到VBC1的指令存儲器的功能。至此,可通過滑動開關手動加載指令存儲器,或者通過VBC1的VHDL代碼中指令存儲器的初始化預先加載。
  在本書的計算機設計部分,第18∼25章覆蓋了如下內容:
* 第18章給出了VBC1-E所有指令的匯編程序形式、轉移函數形式以及機器碼形式,包括修改的IN和OUT指令(每個都是4端口)、附加的數據存儲器指令(STORE和FETCH)、附加的算術和邏輯指令(SUB、NOT、AND、OR和XNOR)、附加的移位和旋轉指令(SR1、SL0、SL1、RR和RL)、附加的控制指令(JMP、JMPR和HALT)、附加的軟件中斷指令(INT和IRET)以及硬件中斷功能。VBC1-E的EASY1-E匯編器中還包括了兩個匯編命令(BIPROC和EQU)。實驗18提供給學生書寫和仿真VBC1和VBC1-E匯編語言程序的動手實踐。
* 與第19∼25章對應的實驗允許學生通過FPGA構建、設計和實現VBC1-E,如果一周完成一個實驗,一共需要七周。每周完成的實驗數目可由講授實驗課程的老師決定。
* 第19章介紹如何擴展VBC1的I/O設計來得到VBC1-E,包括重新設計指令譯碼 器來處理指令IN和OUT的擴展I/O設計。
* VBC1中不存在數據存儲器,所以第20章覆蓋了VBC1-E的具有四個存儲位置的簡單數據存儲器的設計。
* 第21章中,學生學習如何增強VBC1的ALU設計,來包含新的算術和邏輯指令,以及新的移位和旋轉指令,包括處理附加指令的指令譯碼器的重新設計。該章給出了新控制指令JMP、JMPR和HALT的設計,以及重新設計指令譯碼器來處理這些新指令。
* 第22章是非常短的一章,介紹如何設計一個在手工加載過程中阻止程序執行的電路。學生經常發現VBC1-E的手動加載是分散的,于是出現了本書的該章。
* VBC1-E具有附加的存儲位置,且第23章覆蓋了指令存儲器的修改,來包括附加的存儲位置。
* VBC1-E具有新的軟件中斷指令,且第24章覆蓋了處理指令INT和IRET所需的電路設計。重新設計指令譯碼器來處理這些新指令。
* 第25章給出了VBC1-E的最終設計,其中包括硬件中斷功能的設計。所設計的實驗25L提供了通過存儲器加載程序自動加載程序到VBC1-E的指令存儲器的功能。
CAD工具和FPGA開發板介紹
  對于本書的數字設計部分,使用傳統的方法,即手工計算以及VHDL設計來表示電路與系統。對于本書的計算機設計部分,使用VHDL來設計VBC1和VBC1-E。這種方式鼓勵學生設計自己的數字系統和(或)游戲。一旦他們掌握了VHDL設計就會發現這很容易。學生不必局限于在小的電路開發板上生成電路,這種情況下他們必須放置IC(集成電路)封裝且將它們連在一起。現代數字開發板上所用的FPGA(現場可編程門陣列)芯片消除了這種無聊的任務。本書所用的基本CAD(計算機輔助設計)工具是Xilinx ISE WebPACK。通過Xilinx的網站http://www.xilinx.com/support/download/index.htm,老師和學生可獲得ISE WebPACK。
  可反復編程一個可編程邏輯FPGA芯片,這是學生掌握技巧和糾正錯誤的理想方式。對設計的VHDL代碼進行仿真,以驗證VHDL代碼是否正確。如果在VHDL代碼的仿真中存在錯誤,學生們只要找出并改正錯誤,然后重新進行仿真即可。當仿真正確了,正確VHDL代碼的比特形式就可以下載到FPGA芯片。然后學生也就可以在硬件上觀察他們的 設計。
  Digilent公司制造并出售兩款非常流行的FPGA開發板(網站地址為http://www. digilentinc.com),它們是(1)BASYS 2開發板,包括Xilinx生產的Spartan 3E FPGA; (2)NEXYS 2開發板,包括Spartan 3E FPGA。BASYS 2開發板的價格大約為49美元,NEXYS 2開發板的價格大約為99美元。如果將本書用作數字設計課程的教材,BASYS 2開發板或者NEXYS 2開發板都可使用。如果將本書用作計算機設計課程的教材,BASYS 2開發板或者NEXYS 2開發板都可用來設計VBC1-E的精簡版本,但需要額外支付大約55?美元購買幾個附加的外設模塊。NEXYS 2開發板具有附加的可擴展性,允許使用稱為FX2 MIB(模塊接口板)的擴展板。該擴展板允許用附加的外設模塊設計VBC1-E的完整版本。FX2 MIB的價格大約為20美元,而附加的外設模塊大約為40美元。

實驗介紹
  附錄A包括34個實驗。要完成實驗1B至25L,需要使用BASYS 2或者NEXYS 2開發板。這些開發板很常見,且可用已上市的更新的FPGA來替換。這些實驗可用其他公司不同的FPGA開發板來實現,只要該FPGA開發板具有所需的輸入輸出能力,或者修改VHDL代碼使之與不同FPGA開發板的輸入輸出能力匹配就行。也可使用Altera公司的DE1和DE2開發板,用Quartus-Ⅱ軟件來實現這些實驗,因為本書使用了通用的VHDL代碼。DE1和DE2開發板的I/O與BASYS 2和NEXYS 2開發板的稍有不同,因此需要修改通用的VHDL代碼以便適應I/O能力的不同。
  附錄A包括了推薦的實驗前準備,所以學生可學習如何修改測試代碼或者編寫用于仿真其VHDL設計的測試代碼。附錄B提供了幫助學生修改測試代碼的內容。
致謝
  非常感謝本書討論和寫作過程中給予有價值建議的眾多評論者。希望本書的最終版契合了他們的建議。
  Bharat Bhuva Vanderbuilt University   Suresh Borkar Illinois Institute of Technology   C. Hwa Chang Tufts University   Katherine Compton University of Wisconsin-Madison   Steve Crist Western New England College   Nila Y. Desai Sardar Vallabhbhai National Institution of Technology, India   Rahul Dubey DA-IICT (Dhirubhai Ambani Institute of Information and
Communication Technology), Gujarat India   Mark Faust Portland State University   Maria Garazaran University of Illinois-Urbana   Roger Haggard Tennessee Technological University   Ronald Hayne The Citadel   M. Nazrul Islam Old Dominion University   Anura Jayasumana Colorado State University   Brock LaMeres Montana State University   Yong Li University of Wisconsin-Platteville   Yufeng Lu Bradley University   Aleksander Malinowski Bradley University   Chad Mano Utah State University   James C. Maxted University of Iowa      David G. Meyer Purdue University   Venkatesan Muthukumar University of Nevada-Las Vegas   Shahin Nazarian University of Southern California   Patricia Nava University of Texas-El Paso   Haluk Ozemek San Jose State University   James K. Peckol University of Washington   Reginald Perry Florida State University   Arvind Rajawat Maulana Azad National Institute of Technology, Bhopal India   Jackie Rice University of Lethbridge   Salam Salloum California State Polytechnic University-Pomona   Martha Sloan Michigan Technological University   James Stine Oklahoma State University   Somanath Tripathy Indian Institute of Technology, Patna India   Kenneth S. Vastola Rensselaer Polytechnic University   Earl Wells University of Alabama-Huntsville   Phillip Wilsey University of Cincinnati   
  特別致謝Richard的學生Scott Marshall,他開發和撰寫了實驗17L和25L。Scott還撰寫了VBC1-E和VBC1-EL的存儲器加載程序。Scott在Digilent公司的BASYS 2和NEXYS?2開發板上實現了該程序,且在Altera公司的DE1和DE2開發板上實現。存儲器加載程序提供了自動加載指令比特模式到VBC1和VBC1-E的指令存儲器的方法,無須使用開關或者在啟動時初始化指令存儲器。
  還要感謝圣路易斯奧比斯波的加州州立理工大學電機和計算機工程的眾多具有奉獻精神的勤奮好學的學生們。在撰寫本書時,很多學生對我們的工作感興趣,并在他們上完數字和計算機設計課程后,給出建議和修訂。沒有這些細心的學生(他們太多了無法一一指名),不可能寫出本書。謝謝你們!
  沒有McGraw-Hill公司的如下人員的熱心幫助,本書也不可能順利出版:Raghu Srinivasan,全球出版人;Peter Massar,高級責任編輯;Lorraine Buczek,策劃編輯;以及Jane Mohr,項目經理。我們衷心感謝你們的幫助。
  感謝Digilent公司提供BASYS 2和NEXYS 2開發板,使用它們時給予的技術支持,以及提供實驗1A和19的照片。幫助我們的人員有Clint Cole、Gene Apperson、Jim O’Dell、Joe Harris、Joshua Pederson、Fiona Cole、Stephanie Roberts、Norman MacDonald和Roy Bean。
  感謝Altera公司提供DE1和DE2開發板以及使用它們時給予的技術支持。幫助我們的人員有Blair Fort和Ralene Marcoccia。
  Richard個人致謝Xilinx公司,允許他加入ISE軟件的內部課程,以及暑假在Xilinx公司與軟件和硬件工程師一起工作。幫助過他的人員有Rina Raman、Peter Alfke和Paul Hartke。Richard還要感謝Ken Chapman,他在本書的早期編著過程中閱讀了手稿,并給出重要的評論。Ken是Xilinx PicoBlaze微處理器的設計者。Richard在Xilinx工作期間,有很多工程師提供了很好的建議和幫助,發自肺腑地感謝他們!
  最后,但同樣重要的是,感謝Cal Poly的電機工程系和CPE項目的教師們,他們使得本書變得更好。幫助我們的人員有Jim Harris、Michael Cirovic、Art MacCarley、Albert Liddicoat、Xiao-Hua(Helen) Yu、Tina Smilkstein、David Braun、Dennis Derickson、Fred DePiero、John Oliver、Wayne Pilkington、Lynne Silvovsky、Bryan Mealy、John Saghri和Hugh Smith。他們之中有些使用我們的筆記講授相關課程,而其他人鼓勵或者勸阻我們做某些事情,使得本書能夠更好。
網絡資源
  幻燈片、每章結尾處的習題的答案、實驗前的激勵手段以及實驗設計結果只對教師開放。
  無錯不成書。如果讀者發現了未被發現的錯誤,請將你的評論發郵件給richard@sandige.com。本書網站上會將已發現的錯誤的最新列表提供給所有讀者。

  Richard Sandige
  Michael Sandige

 
內容簡介:

在數字設計所涵蓋的章節中,第1章介紹布爾代數的相關知識,引入通用的硬件描述語言VHDL來描述簡單的組合邏輯電路,以便讀者可以根據需要使用來自不同公司的VHDL工具。第2章簡述數字信號與模擬信號的不同,介紹了二進制數制轉換方法和二進制碼制,并給出了利用卡諾圖進行組合邏輯化簡的方法。第3章和第4章詳細介紹組合邏輯電路的分析和設計方法,以及用VHDL如何設計此類電路。第5章和第6章給出了雙穩態存儲器和簡單有限狀態機等時序邏輯電路的VHDL設計方法。第7章給出了計算機設計所涉及的基本電路,特別是加法器電路。第8章給出了采用可編程邏輯器件和多路選擇器樹結構的電路實現技術。第9章介紹了用VHDL設計復雜有限狀態機的方法。
  計算機設計部分所涵蓋的章節分成兩部分:第10∼17章詳細介紹VBC1(非常基本計算機1)的指令、模塊和系統設計,第18章和第19章則在VBC1的基礎之上,設計了更為復雜的VBC1-E。
  除此之外,本書的附錄A詳細介紹了讀者學習本書時的34個設計實驗,附錄B至附錄E給出了完成附錄A的設計實驗所需的仿真方法、管腳綁定、EASY1工具和將指令加載到存儲器中的方法。
  本書第1∼4章由清華大學電子系羅嶸翻譯,第5∼7章由王聰翻譯,第8∼11章由汪玉翻譯,第12∼16章由單羿翻譯,第17∼25章由王子龍翻譯,附錄A至附錄E由王文強翻譯,全書由羅嶸審校。
目錄:

第1章布爾代數、布爾函數、VHDL和門 1

1.1引言 1

1.2布爾代數基礎 1

1.2.1維恩圖 2

1.2.2布爾函數的黑盒子 3

1.2.3基本邏輯符號 4

1.2.4布爾代數公理 6

1.2.5布爾代數定理 7

1.2.6布爾代數定理的證明 8

1.3從真值表推導出布爾函數 9

1.3.1用函數的1值推導出布爾函數 10

1.3.2用函數的0值推導出布爾函數 11

1.3.3用最小項和最大項推導出布爾函數 11

1.4簡單門函數的VHDL設計 14

1.4.1NOT函數的VHDL設計 14

1.4.2AND函數的VHDL設計 16

1.4.3OR函數的VHDL設計 17

1.4.4XOR函數的VHDL設計 19

1.4.5NAND函數的VHDL設計 20

1.4.6NOR函數的VHDL設計 22

1.4.7XNOR函數的VHDL設計 23

1.4.8BUFFER函數的VHDL設計 25

1.4.9用標準形式給出的任意布爾函數的VHDL設計 27

1.5有關邏輯門的更多內容 29

1.5.1等價門符號 29

1.5.2全功能門 30

1.5.3等價門電路 30

1.5.4門的簡化描述名稱 31

1.5.5門的國際邏輯符號 32

習題 33

第2章數制轉換、碼制和函數最簡化 39

2.1引言 39

2.2數字電路與模擬電路 39

2.2.1人類心臟的數字化信號 39

2.2.2離散信號與連續信號 39

2.3二進制數制轉換 40

2.3.1十進制數、二進制數、八進制數和十六進制數 40

2.3.2轉換技術 42

2.4二進制碼制 46

2.4.1小鍵盤和鍵盤的最少比特表示 47

2.4.2常見碼制:BCD、ASCII以及其他 47

2.4.3二進制和反射格雷碼之間的模2加法和轉換 50

2.4.4七段碼 52

2.4.5字母顯示系統的VHDL設計 53

2.5卡諾圖化簡方法 56

2.5.1卡諾圖資源管理器 56

2.5.2使用兩變量卡諾圖 57

2.5.3使用三變量卡諾圖 59

2.5.4使用四變量卡諾圖 61

2.5.5無關的輸出 63

習題 65

第3章邏輯電路分析和設計簡介 73

3.1引言 73

3.2集成電路器件 73

3.3分析和設計邏輯電路 74

3.3.1分析和設計繼電器邏輯電路 75

3.3.2分析IC邏輯電路 76

3.3.3設計IC邏輯電路 77

3.4生成詳細的原理圖 80

3.5用與非/與非和或非/或非形式設計電路 82

3.6傳輸延時 84

3.7譯碼器 86

3.7.1用譯碼器和單個門設計邏輯電路 88

3.8多路選擇器 91

3.8.1用多路選擇器設計邏輯電路 93

3.9險象 95

3.9.1功能險象 95

3.9.2邏輯險象 96

習題 97

第4章用VHDL實現組合邏輯電路的設計 103

4.1引言 103

4.2VHDL 103

4.3庫組成 104

4.4實體聲明 105

4.5結構體聲明 106

4.5.1數據流設計風格評價 107

4.5.2行為設計風格評價 107

4.5.3結構設計風格評價 107

4.6數據流設計風格 107

4.7行為設計風格 111

4.8結構設計風格 116

4.9用連線和總線實現 122

4.10VHDL設計實例 126

??4.10.1用標量輸入和輸出設計 126

??4.10.2用向量輸入和輸出設計 128

??4.10.3通用VHDL架構 130

習題 131

第4章雙穩態存儲器件的VHDL設計 138

5.1引言 138

5.2S-RNOR鎖存器分析 138

5.2.1簡單的電燈開關 138

5.2.2S-RNOR鎖存器的電路延遲模型 140

5.2.3S-RNOR鎖存器的特性表 141

5.2.4S-RNOR鎖存器的特征方程 141

5.2.5S-RNOR鎖存器的PS/NS表 142

5.2.6S-RNOR鎖存器的時序圖 143

5.3S-RNAND鎖存器分析 145

5.3.1S-RNAND鎖存器電路延遲模型 145

5.3.2S-RNAND鎖存器的特性表 146

5.3.3S-RNAND鎖存器的特征方程 146

5.3.4S-RNAND鎖存器的PS/NS表 146

5.3.5S-RNAND鎖存器的時序圖 147

5.4設計一個簡單的時鐘 148

5.5設計一個D鎖存器 151

5.5.1門控S-R鎖存器電路設計 151

5.5.2用S-R鎖存器設計D鎖存器電路 152

5.5.3利用D鎖存器的特性表來設計D鎖存器電路 153

5.5.4D鎖存器的時序圖 154

5.5.5用D鎖存器構造一個時鐘 156

5.5.6構造一個8比特的D鎖存器 156

5.6設計D觸發器電路 157

5.6.1設計主從型D觸發器電路 157

5.6.2用S-RNAND設計D觸發器 161

5.6.3上升沿觸發的D觸發器的時序圖 164

習題 166

第6章用VHDL設計簡單的有限狀態機 173

6.1引言 173

6.2同步電路 173

6.3用VHDL構造一個D型觸發器 174

6.4設計簡單的同步電路 176

6.5用算法公式法設計計數器 176

6.6用算法公式法設計非傳統計數器 184

6.7用算術法設計計數器 188

6.8分頻(降低一個快時鐘的頻率) 189

6.9用PS/NS表格法設計計數器 192

6.10用PS/NS表格法設計非傳統計數器 195

習題 197

第7章計算機電路 207

7.1引言 207

7.2三態輸出與斷開狀態 207

7.3微型計算機系統的數據總線共享 210

7.4深入了解XOR和XNOR符號及功能 213

7.4.1奇函數和偶函數 215

7.4.2單比特錯誤檢測系統 216

7.4.3比較器和大于電路 218

7.5加法器設計 221

7.5.1半加器模塊的設計 221

7.5.2全加器模塊的設計 222

7.6設計及使用行波進位加法器和減法器 224

7.7行波進位加法器的傳播延遲時間 227

7.8設計超前進位加法器 227

7.9超前進位加法器的傳播延遲時間 230

習題 231

第8章電路實現技術 236

8.1引言 236

8.2可編程邏輯器件 236

8.2.1可編程只讀存儲器(PROM)和查找表(LUT) 238

8.2.2可編程邏輯陣列(PLA) 239

8.2.3可編程陣列邏輯(PAL)或者通用陣列邏輯(GAL) 240

8.2.4使用PROM或者LUT進行電路設計 241

8.2.5使用PLA進行電路設計 242

8.2.6使用PAL或者GAL進行電路設計 243

8.3正邏輯規則和直接極性標志 244

8.3.1信號名稱 244

8.3.2PLC和DPI系統的等效電路分析 245

8.4更多關于多路選擇器和數據分路器的內容 247

8.4.1MUX樹設計 249

8.4.2DMUX樹設計 250

習題 250

第9章復雜有限狀態機的VHDL設計 255

9.1引言 255

9.2基于雙進程PS/NS方法的設計 256

9.3CPLD、FPGA和狀態機編碼風格淺析 260

9.4有限狀態機模型總結 262

9.5利用摩爾輸出設計緊湊編碼狀態機 264

9.6利用摩爾輸出設計單熱點編碼的狀態機 266

9.7利用摩爾和米利輸出設計緊湊編碼狀態機 270

9.8利用摩爾和米利輸出設計單熱點編碼狀態機 273

9.9利用算法公式法設計復雜狀態機 275

9.10提高復雜狀態機的可靠性 281

9.11其他狀態機設計方法 285

9.11.1雙分配PS/NS方法 285

9.11.2混合PS/NS方法 289

習題 292

第10章基本的計算機體系結構 311

10.1引言 311

10.2通用數據處理系統或計算機 311

10.3哈佛型計算機和RISC體系結構 312

10.4普林斯頓(馮·諾依曼)型計算機和CISC體系結構 314

10.5VBC1概述 315

10.6VBC1設計原理 316

10.7VBC1編程器寄存器模型 318

10.8VBC1指令集體系結構 319

10.9匯編語言程序的編寫格式 321

習題 322

第11章VBC1的匯編語言編程 325

11.1引言 325

11.2VBC1指令集 325

11.3IN指令 325

11.4OUT指令 329

11.5MOV指令 331

11.6LOADI指令 333

11.7ADDI指令 334

11.8ADD指令 336

11.9SR0指令 338

11.10JNZ指令 339

11.11VBC1編程實例和技術 342

11.11.1無條件跳轉 342

11.11.2標簽 342

11.11.3循環計數器 342

11.11.4程序“橫行” 343

11.11.5減法指令 344

11.11.6乘法指令 345

11.11.7除法指令 345

習題 346

第12章設計輸入輸出電路 351

12.1引言 351

12.2設計仲裁電路 351

12.3設計總線仲裁電路 353

12.4設計可加載寄存器電路 354

12.5設計輸入電路 356

12.5.1設計由4個滑動開關驅動的輸入電路 358

12.6設計輸出電路 359

12.6.1設計驅動4個LED的輸出電路 360

12.6.2設計一個可以驅動七段顯示器的輸出電路 362

12.6.3仔細觀察顯示0的電路 364

12.7結合輸入輸出電路搭建一個簡單I/O系統 365

12.8可選的VHDL設計風格 368

習題 369

第13章設計指令存儲器、加載程序計數器和去抖動電路 372

13.1引言 372

13.2設計一個指令存儲器 372

13.2.1指令存儲器的代碼變形 375

13.2.2在啟動階段初始化VBC1的指令存儲器 377

13.3設計一個加載程序計數器 380

13.4設計一個去抖動單脈沖電路 382

13.5設計去抖動單脈沖電路的驗證電路 385

習題 393

第14章設計多路顯示系統 396

14.1引言 396

14.24個七段LED顯示器構成的多路顯示系統 396

14.3用VHDL設計多路顯示系統 399

14.3.1設計模塊1:四選一MUX陣列 399

14.3.2設計模塊2:十六進制顯示譯碼器 400

14.3.3設計模塊3:2比特計數器和分頻器 401

14.3.4設計模塊4:2-4線譯碼器 403

14.4用平面設計方法設計多路顯示系統 404

14.5用層次化設計方法設計多路顯示系統 407

14.6利用平面設計方法設計一個字符顯示系統 413

習題 418

第15章設計指令譯碼器 421

15.1引言 421

15.2指令譯碼器設計目標 421

15.3指令IN、OUT和MOV的指令譯碼器真值表 422

15.4設計指令IN的指令譯碼器 424

15.5設計指令OUT和MOV的指令譯碼器 425

15.6指令LOADI的指令譯碼器真值表 426

15.7指令ADDI的指令譯碼器真值表 427

15.8指令ADD的指令譯碼器真值表 428

15.9指令SR0的指令譯碼器真值表 428

15.10設計指令SR0的指令譯碼器 429

15.11JNZ指令譯碼器真值表 430

15.12設計指令JNZ的指令譯碼器 433

15.13設計VBC1的指令譯碼器 434

習題 435

第16章設計算術邏輯單元 440

16.1引言 440

16.2算術邏輯單元的使用 440

16.3設計ALU的LOADI指令部分 442

16.4設計ALU的ADDI指令部分 442

16.5設計ALU的ADD指令部分 443

16.6設計ALU的SR0指令部分 444

16.7設計一個用于VBC1的ALU 445

16.8用VHDL設計的附加電路 445

16.8.1設計額外的ALU電路 445

16.8.2設計移位電路 448

16.8.3設計桶形移位電路 452

16.8.4設計移位寄存器電路 455

習題 457

第17章完成VBC1的設計 460

17.1引言 460

17.2設計一個運行程序計數器 460

17.3將載入程序計數器與運行程序計數器結合起來 463

17.4設計運行頻率電路和速度電路 465

17.5設計VBC1的指令存儲器的載入電路 467

習題 468

第18章VBC1-E的匯編語言編程 470

18.1引言 470

18.2指令總結 470

18.3輸入、輸出與中斷指令 472

18.4數據存儲指令 477

18.5算術指令與邏輯指令 480

18.6移位指令與循環移位指令 482

18.7跳轉指令、相對跳轉指令與暫停指令 485

18.8關于中斷與匯編器命令的更多內容 489

18.9VBC1-E完整指令集總結 494

習題 495

第19章設計VBC1-E的輸入輸出電路 506

19.1引言 506

19.2VBC1-E的輸入電路設計 506

19.3VBC1-E的修改后IN指令的指令譯碼真值表 508

19.4VBC1-E的輸出電路設計 510

19.5VBC1-E的修改后OUT指令的指令譯碼真值表 512

19.6VBC1-E的修改后IN和OUT指令的指令譯碼器設計 515

19.7VBC1-E的LOADI、ADDI和JNZ指令的指令譯碼器設計 516

習題 517

第20章設計VBC1-E的數據存儲器電路 520

20.1引言 520

20.2設計VBC1-E的數據存儲器 520

20.3設計VBC1-E的寄存器和數據選擇電路 524

20.4VBC1-E的STORE和FETCH指令的指令譯碼器真值表 525

20.5設計VBC1-E的STORE和FETCH指令的指令譯碼器 527

20.6設計VBC1-E的MOV指令的指令譯碼器 528

習題 529

第21章設計VBC1-E的算術、邏輯、移位、旋轉和無條件跳轉電路 531

21.1引言 531

21.2VBC1-EALU的算術和邏輯指令部分設計 531

21.3VBC1-E的算術和邏輯指令譯碼器設計 533

21.4VBC1-EALU的移位和旋轉指令部分設計 534

21.5VBC1-E的移位和旋轉指令譯碼器設計 536

21.6VBC1-E的JMP和JMPR電路設計 537

21.7VBC1-E的JMP和JMPR指令譯碼器設計 538

習題 539

第22章設計VBC1-E中手動載入時阻止程序執行的電路 542

22.1引言 542

22.2設計VBC1-E中修改手動載入的電路 542

22.3修改手動載入時VBC1-E中的指令譯碼器 544

習題 544

第23章設計VBC1-E的擴展指令存儲器 545

23.1引言 545

23.2為VBC1-E修改指令存儲器以增加擴展指令存儲器 545

23.3為VBC1-E修改運行程序計數器電路 548

23.4為VBC1-E修改合理地址電路 550

23.5為VBC1-E修改加載程序計數器電路 550

23.6為VBC1-E修改JMPR電路 551

習題 551

第24章設計VBC1-E的軟件中斷電路 554

24.1引言 554

24.2設計VBC1-E的運行程序計數器與選擇電路的改進電路 554

24.3設計VBC1-E的存儲PCPLUS1的電路 558

24.4VBC1-E的INT和IRET指令的指令譯碼器真值表 560

24.5設計VBC1-E的INT和IRET指令的指令譯碼器 561

習題 562

第25章完成VBC1-E的設計 566

25.1引言 566

25.2設計VBC1-E的去抖動單脈沖觸發中斷電路并修改RPC電路 566

25.3設計VBC1-E的RETA信號的顯示電路 570

25.4設計VBC1-E的提供指令存儲器的加載器功能的電路 575

習題 575

附錄A實驗案例 578

實驗1A:門電路的設計與仿真 578

實驗1B:完成設計流程 584

實驗2:鍵盤編碼系統的設計與測試 589

實驗3:門電路檢驗系統的設計與測試 592

實驗4:自定義十進制顯示譯碼系統的設計與測試 596

實驗5A:D鎖存器與帶CLR輸入的D觸發器的設計與測試 599

實驗5B:8位寄存器及帶PRE輸入的D觸發器的設計與測試 603

實驗6A:簡單計數系統的設計與測試——8位單熱遞增計數器 607

實驗6B:簡單計數器系統的設計與測試——兩位格雷碼計數器 611

實驗6C:簡單非常規計數系統的設計與測試——機器眼電路 614

實驗6D:簡單非常規計數系統的設計與測試——笑臉電路 618

實驗7A:用平面設計方法進行簡單錯誤系統的設計與測試 621

實驗7B:用層次化設計方法進行簡單4位加減系統的設計與測試 626

實驗8:利用平面設計方法進行LUT系統的設計與測試 628

實驗9A:用平面設計方法進行單熱遞增/遞減計數系統的設計與測試 633

實驗9B:用層次化設計方法進行十狀態計數系統的設計與測試 637

實驗10:VBC1系統EASY1(編輯器/匯編器/仿真器)的使用 641

實驗11:用EASY1編寫和仿真VBC1程序 645

實驗12:VBC1系統的設計與測試(數據通路單元) 648

實驗13:VBC1系統的設計與測試(指令存儲單元) 653

實驗14:VBC1系統的設計與測試(顯示系統) 656

實驗15:VBC1系統的設計與測試(指令譯碼器) 660

實驗16:VBC1系統的設計與測試(算術邏輯單元) 663

實驗17:VBC1系統的設計與測試(最終設計) 668

實驗17L:設計VBC1系統的指令加載器 673

實驗18:在VBC1系統上編寫并運行匯編程序 679

實驗19:VBC1-E的設計與測試(IN、OUT和未修改的指令) 682

實驗20:VBC1-E系統的設計與測試(數據轉移和訪存指令) 687

實驗21:VBC1-E系統的設計與測試(大部分指令) 692

實驗22:VBC1-E系統的設計與測試(添加手動加載電路) 697

實驗23:VBC1-E系統的設計與測試(添加擴展指令存儲器) 700

實驗24:VBC1-E系統的設計與測試(實現INT和IRET指令) 704

實驗25:VBC1-E系統的設計與測試(最終設計) 708

實驗25L:VBC1-E指令加載器的設計 713

附錄B用VHDL測試平臺程序進行仿真 721

B.1簡介 721

B.2例1:組合邏輯設計(工程:AND_3) 721

B.3例2:同步時序邏輯設計(工程:DFF) 725

附錄CFPGA管腳連接關系查詢手冊 729

C.1BASYS2開發板 729

C.2NEXYS2開發板 730

C.3BASYS2及NEXYS2開發板上FPGA存儲加載器的管腳接口 731

C.4FX2MIB(模塊轉接板)——NEXYS2外加電路板 732

附錄DEASY1教程 733

D.1簡介 733

D.2EASY1用戶界面 733

D.3EASY1界面布局 733

D.4如何使用EASY1 735

D.5例1:簡單輸入輸出程序 735

D.6例2:修改后能夠一直執行的輸入輸出程序 741

D.7例3:簡單狀態機程序 742

D.8例4:復雜狀態機程序 742

D.9例5:產生延時 744

D.10用EASY1產生VBC1平臺的機器碼 746

附錄E將指令加載到存儲器中的三種方法 747

E.1手動載入存儲器 747

E.2在啟動時初始化存儲器內容 748

E.3通過存儲器加載程序載入存儲器 749

序: