[ 收藏 ] [ 繁体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  • 新类目

     管理
     投资理财
     经济
     社会科学
  • 數字電路與邏輯設計(Verilog HDL & Vivado版)-搭建你的數字積木
    該商品所屬分類:圖書 ->
    【市場價】
    441-640
    【優惠價】
    276-400
    【作者】 湯勇明張聖清陸佳華 
    【出版社】清華大學出版社 
    【ISBN】9787302466628
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    出版社:清華大學出版社
    ISBN:9787302466628
    商品編碼:54344494167

    品牌:鳳凰新華(PHOENIX
    包裝:平裝-膠訂
    開本:32

    出版時間:2017-06-01
    代碼:49
    作者:湯勇明,張聖清,陸佳華


        
        
    "
    內容介紹

    本書繫統論述了數字電路與邏輯設計的理論、方法與實踐技術。全書基於Verilog HDL與Vivado開發環境,共18章,詳盡介紹了如下內容: 邏輯設計與Vivado基礎、布爾代數與Verilog HDL基礎、組合邏輯電路設計基礎、時序邏輯電路設計基礎、有限狀態機設計基礎、邏輯設計工程技術基礎、Vivado數字積木流程、串行通信接口控制器、RAM接口控制器、字符點陣顯示模塊接口控制器、VGA接口控制器、數字圖像采集、數字邏輯繫統設計案例、單周期CPU設計案例、數字信號處理設計案例(FIR)、數字圖像處理設計案例、大學生FPGA設計案例以及Xilinx資源導讀。 為便於教師和廣大讀者學習與動手實踐,本書配套提供了教學課件、教學視頻及程序代碼等教學資源。 本書適合作為普通高等院校電子信息類、電氣信息類、自動化類專業的本科生教材,也可作為相關專業研究生參考教材,並適合作為電子與電氣工程技術領域的科研工程技術人員的參考用書。

    關聯推薦

    本教材嚴格參照教育部高等學校電子電氣基礎課程教學指導分WY會制訂的《電子電氣基礎課程教學基本要求》編寫。全書注重激發學生的學習興趣,突出模塊化編程思想並詳細介紹了IP設計、封裝和調用方法;對於常用邏輯模塊及邏輯繫統案例的選取,采取由淺入深的方式,設計過程和例程盡量詳細,可以直接動手實驗。全書融合了東南大學電子科學與工程學院 “數字繫統”課程的豐富教學經驗,吸收了東南大學多年參與PLD競賽的經驗,並充分考慮產業界對電子信息類專業人纔培養的具體需求,是一本真正意義上產學深度合作的教材。教學資源:(1) 教學課件  配書教案(PPT)可到清華大學出版社wz本書頁面下載。(2) 設計平臺  采用科研和教學中應用*廣泛的Xilinx Artix-7器件和Vivado工具。(3) 程序代碼  配書源程序在Github開源,並保持更新。(4) 教學視頻  配書教學視頻及實驗操作視頻可到OpenHWwz獲取。 
    目錄


    目錄

     

    D一部分邏輯設計基礎

     

    D1章邏輯設計概述及Vivado基礎

     

    1.1邏輯設計概況

     

    1.2Verilog HDL語言基礎

     

    1.2.1硬件描述語言概述

     

    1.2.2Verilog HDL語言要素和設計流程

     

    1.3PLD器件基礎

     

    1.3.1可編程邏輯器件技術發展歷程

     

    1.3.2FPGA和CPLD簡介

     

    1.3.3Xilinx FPGA介紹

     

    1.3.4FPGA選型應該考慮的問題

     

    1.4Vivado開發環境及設計流程

     

    1.4.1Vivado功能介紹

     

    1.4.2Vivado用戶界面介紹和菜單操作

     

    1.4.3Vivado開發流程

     

    D2章布爾代數和Verilog HDL基礎

     

    2.1布爾代數

     

    2.1.1三種基本邏輯門

     

    2.1.2四種常用邏輯門

     

    2.2布爾定律

     

    2.2.1單變量布爾定律

     

    2.2.2雙變量和三變量的布爾定律

     

    2.3布爾代數化簡

     

    2.3.1公式法化簡

     

    2.3.2卡諾圖化簡

     

    2.4Verilog HDL語言基礎

     

    2.4.1Verilog HDL模塊及端口

     

    2.4.2Verilog HDL數據類型聲明

     

    2.4.3Verilog HDL運算操作

     

    D3章組合邏輯電路設計基礎

     

    3.1組合電路中的always塊

     

    3.1.1基本語法格式

     

    3.1.2過程賦值

     

    3.1.3變量的數據類型

     

    3.1.4簡單實例

     

    3.2條件語句

     

    3.2.1ifelse語句

     

    3.2.2case語句

     

    3.3循環語句

     

    3.3.1for語句

     

    3.3.2repeat語句

     

    3.3.3while語句

     

    3.3.4forever語句

     

    3.4always塊的一般編碼原則

     

    3.4.1組合電路代碼中常見的錯誤

     

    3.4.2組合電路中always塊的使用原則

     

    3.5常數和參數

     

    3.5.1常數

     

    3.5.2參數

     

    3.6設計實例

     

    3.6.1多路選擇器

     

    3.6.2比較器

     

    3.6.3譯碼器和編碼器

     

    3.6.4十六進制數七段LED顯示譯碼器

     

    3.6.5二進制—BCD碼轉換器

     

    3.7練習題

     

    D4章時序電路設計基礎

     

    4.1觸發器和鎖存器

     

    4.1.1基本D觸發器

     

    4.1.2含異步復位的D觸發器

     

    4.1.3含異步復位和同步使能的D觸發器

     

    4.1.4基本鎖存器

     

    4.1.5含清0控制的鎖存器

     

    4.2寄存器

     

    4.2.11位寄存器

     

    4.2.2N位寄存器

     

    4.2.3寄存器組

     

    4.3移位寄存器

     

    4.3.1具有同步預置功能的8位移位寄存器

     

    4.3.28位通用移位寄存器

     

    4.4計數器

     

    4.4.1簡單的二進制計數器

     

    4.4.2通用二進制計數器

     

    4.4.3模m計數器

     

    4.5設計實例

     

    4.5.1數碼管掃描顯示電路

     

    4.5.2秒表

     

    4.6練習題

     

    D5章有限狀態機設計基礎

     

    5.1引言

     

    5.1.1有限狀態機的特點

     

    5.1.2Mealy狀態機和Moore狀態機

     

    5.1.3有限狀態機的表示方法

     

    5.2有限狀態機代碼實現

     

    5.3設計實例

     

    5.3.1序列檢測器設計

     

    5.3.2ADC采樣控制電路設計

     

    5.3.3按鍵消抖電路設計

     

    5.4課程練習

     

    D6章邏輯設計工程技術基礎

     

    6.1數字電路穩定性

     

    6.2組合邏輯與毛刺

     

    6.2.1組合邏輯設計中的毛刺現像

     

    6.2.2組合邏輯設計中毛刺的處理

     

    6.3異步設計與毛刺

     

    6.3.1異步時序電路中的毛刺現像

     

    6.3.2異步時序電路中毛刺的處理

     

    6.4Verilog HDL設計中的編程風格

     

    6.4.1強調代碼編寫風格的必要性

     

    6.4.2強調編寫規範的宗旨

     

    6.4.3變量及信號命名規範

     

    6.4.4編碼格式規範

     

    6.5Xilinx開發環境中的其他邏輯設計輔助工具

     

     

    D二部分常用邏輯設計模塊

     

    D7章Vivado數字積木流程

     

    7.1IP基礎

     

    7.2打包屬於自己的IP

     

    7.3IP設計示例——二進制轉格雷碼

     

    7.4練習題

     

    D8章串行通信接口控制器

     

    8.1UART串口通信協議及控制器設計

     

    8.1.1UART協議介紹

     

    8.1.2UART協議實例

     

    8.2PS/2協議及實例設計

     

    8.2.1PS/2協議介紹

     

    8.2.2PS/2設計實例

     

    8.3SPI同步串行總線協議及控制器設計

     

    8.3.1SPI協議介紹

     

    8.3.2SPI控制器模塊實例

     

    8.4I2C兩線式串行總線協議及控制器設計

     

    8.4.1I2C協議介紹

     

    8.4.2I2C模塊設計實例

     

    8.5練習題

     

    D9章RAM接口控制器

     

    9.1內部存儲器

     

    9.1.1FIFO

     

    9.1.2單端口RAM設計

     

    9.1.3雙端口RAM設計

     

    9.2外部存儲器

     

    9.2.1DRAM介紹

     

    9.2.2DDR SDRAM原理

     

    9.2.3DDR SDRAM控制器原理

     

    9.3練習題

     

    D10章字符點陣顯示模塊接口控制器

     

    10.1字符型液晶控制器設計

     

    10.1.1LCD原理

     

    10.1.2字符型LCD1602模塊

     

    10.1.3字符型液晶模塊顯示實例

     

    10.2點陣OLED控制器設計

     

    10.2.1OLED原理

     

    10.2.2OLED驅動原理

     

    10.2.3OLED顯示實例

     

    10.3練習題

     

    D11章VGA接口控制器

     

    11.1CRT顯示器原理

     

    11.2VGA控制器設計

     

    11.2.1VGA視頻接口的概念

     

    11.2.2VGA的接口信號

     

    11.2.3行同步和場同步

     

    11.3VGA接口設計實例

     

    11.3.1VGA顯示條紋和棋盤格圖像

     

    11.3.2VGA圖像顯示實例(文字/圖片顯示或者數碼相框)

     

    11.3.3VGA IP的使用

     

    11.4練習題

     

    D12章數字圖像采集

     

    12.1數字圖像采集概述

     

    12.2繫統設計原理

     

    12.2.1繫統架構

     

    12.2.2OV7725芯片介紹

     

    12.2.3OV7725 SCCB協議

     

    12.2.4OV7725配置寄存器

     

    12.2.5OV7725圖像采集

     

    12.2.6Block RAM

     

    12.2.7VGA顯示的實現

     

    12.3模塊搭建與綜合實現

     

    12.4繫統調試及板級驗證

     

    12.4.1引腳分配

     

    12.4.2模塊連接

     

    12.5練習題

     

    D三部分邏輯繫統設計案例

     

    D13章數字邏輯繫統設計案例: 數字鐘

     

    13.1數字鐘設計案例

     

    13.1.1實驗原理

     

    13.1.2實驗設計流程

     

    13.2基於集成邏輯分析儀的調試

     

    13.3約束設計

     

    13.3.1物理約束

     

    13.3.2時序約束

     

    13.4練習題

     

    D14章單周期處理器設計實例

     

    14.1單周期處理器體繫架構簡介

     

    14.1.1單周期處理器指令集簡介

     

    14.1.2單周期處理器繫統結構

     

    14.2設計流程

     

    14.2.1實驗原理

     

    14.2.2設計與驗證

     

    D15章數字信號處理實例: FIR濾波器

     

    15.1FIR濾波器簡介

     

    15.2基於HLS的FIR濾波器實現流程

     

    15.3工程測試

     

    15.4生成IP

     

    15.5練習題

     

    D16章數字圖像處理設計案例

     

    16.1項目概述

     

    16.2硬件介紹

     

    16.3模塊介紹

     

    16.3.1RGB轉HSV模塊

     

    16.3.2Color Detect色彩檢測及坐標計算

     

    16.4舵機控制模塊

     

    16.5實例實現過程

     

    16.6板級驗證

     

    16.7練習題

     

    D17章大學生FPGA設計案例

     

    17.1邏輯控制

     

    17.2圖像處理

     

    17.2.1VGA控制顏色

     

    17.2.2視力表

     

    17.2.3手部運動檢測繫統

     

    17.3儀表儀器

     

    17.3.1數字示波器

     

    17.3.2邏輯分析儀

     

    17.3.3波形發生器

     

    17.4其他

     

    D18章Xilinx資源導讀

     

    18.1獲取本書參考例程

     

    18.1.1Github介紹及使用

     

    18.1.2OpenHW介紹

     

    18.1.3Xilinx各類比賽

     

    18.2Xilinxwz

     

    18.2.1FPGA應用與解決方案

     

    18.2.2文檔資料查找

     

    18.2.3Vivado工具和License的下載以及更新

     

    18.2.4問題的查找

     

    18.2.5Xilinx社區

     

    18.3視頻教程

     

    18.4Vivado學習參考文檔

     

    參考文獻

    顯示全部信息



    在線試讀

    D3章CHAPTER 3 組合邏輯電路設計基礎 本章學習導言組合邏輯電路在任一時刻的輸出狀態隻取決於該時刻的輸入狀態的組合,而與電路以前的狀態無關。即電路隻是由門電路組成,沒有,也沒有反饋電路。D2章介紹的簡單邏輯運算符可用於描述基本構成的門級設計,實際已經是基本的組合邏輯電路設計內容。本章主要介紹由中等規模組件構成組合邏輯電路的HDL描述,例如加法器、比較器和多路復用器等。本章1先結合實例對Verilog HDL行為描述的常用語法進行介紹,包括always塊、if語句、case語句、參數和常數等,並通過一些常見組合邏輯電路實例來展示常用組合電路設計。本章的目的是給出組合邏輯電路基本概念,在介紹Verilog HDL用於組合邏輯設計的條件語句和循環語句等基本要素後,分別給出比較器、多路選擇器等常見組合邏輯的介紹及其Verilog HDL實現。這些常用組合邏輯在邏輯繫統中出現頻率高,算得上搭建邏輯繫統的Z基本積木,熟練掌握對於復雜邏輯繫統設計以及邏輯繫統設計優化均有重要作用。 3.1組合電路中的always塊在進行較為復雜的邏輯電路設計時,為了提高設計效率,通常采用較為抽像的行為描述,Verilog HDL使用一些順序執行的過程語句來進行行為描述。這些語句封裝在一個always塊或initial塊中,initial塊僅在仿真開始的時候執行一次,而always塊能夠進行綜合,生成能夠執行邏輯運算或控制的電路模塊。在本部分中重點討論always塊。always塊可以看成一個包含內部過程描述語句的黑盒子,過程語句包含多種結構,但是很多都沒有對應的硬件,編碼不佳的always塊通常會導致不必要的復雜實施或者根本無法綜合。本部分主要關注可綜合的組合邏輯電路設計,討論內容限制為三種類型的語句: 塊程序賦值、條件語句和循環語句。3.1.1基本語法格式帶敏感信號列表的always塊的簡化使用格式如下:D3章CHAPTER 3

    組合邏輯電路設計基礎





    本章學習導言組合邏輯電路在任一時刻的輸出狀態隻取決於該時刻的輸入狀態的組合,而與電路以前的狀態無關。即電路隻是由門電路組成,沒有,也沒有反饋電路。D2章介紹的簡單邏輯運算符可用於描述基本構成的門級設計,實際已經是基本的組合邏輯電路設計內容。本章主要介紹由中等規模組件構成組合邏輯電路的HDL描述,例如加法器、比較器和多路復用器等。本章1先結合實例對Verilog HDL行為描述的常用語法進行介紹,包括always塊、if語句、case語句、參數和常數等,並通過一些常見組合邏輯電路實例來展示常用組合電路設計。本章的目的是給出組合邏輯電路基本概念,在介紹Verilog HDL用於組合邏輯設計的條件語句和循環語句等基本要素後,分別給出比較器、多路選擇器等常見組合邏輯的介紹及其Verilog HDL實現。這些常用組合邏輯在邏輯繫統中出現頻率高,算得上搭建邏輯繫統的Z基本積木,熟練掌握對於復雜邏輯繫統設計以及邏輯繫統設計優化均有重要作用。
    3.1組合電路中的always塊在進行較為復雜的邏輯電路設計時,為了提高設計效率,通常采用較為抽像的行為描述,Verilog HDL使用一些順序執行的過程語句來進行行為描述。這些語句封裝在一個always塊或initial塊中,initial塊僅在仿真開始的時候執行一次,而always塊能夠進行綜合,生成能夠執行邏輯運算或控制的電路模塊。在本部分中重點討論always塊。always塊可以看成一個包含內部過程描述語句的黑盒子,過程語句包含多種結構,但是很多都沒有對應的硬件,編碼不佳的always塊通常會導致不必要的復雜實施或者根本無法綜合。本部分主要關注可綜合的組合邏輯電路設計,討論內容限制為三種類型的語句: 塊程序賦值、條件語句和循環語句。3.1.1基本語法格式帶敏感信號列表的always塊的簡化使用格式如下: 
    always@(敏感信號列表)
    begin可選的模塊名
    可選的本地變量聲明;
    順序執行語句;
    順序執行語句;

    end
    敏感信號列表是always塊響應的信號和事件列表,對於組合電路,應該包含所有的輸入信號。D有兩個或者兩個以上的信號時,在Verilog HDL 1995中,它們之間可以用關鍵字or來連接,例如: 
    always@(a or b or c)
    Verilog HDL 2001規範中,可以使用“,”來區分,例如: 
    always@(a , b , c)
    在本書中,使用Verilog HDL 2001規範。@(敏感信號列表)項實際上是一個時序控制結構,它是可綜合always塊中的W一時序控制結構。模塊體可包含任意數目的過程語句,D模塊體隻有一條語句時,定界符begin和end可以省略。敏感信號可分為兩種類型: 一種是電平敏感型; 一種是邊緣敏感型。每個always過程一般隻由一種類型的敏感信號來觸發,而不能混合使用。對於組合電路,一般采用電平觸發; 對於時序電路,一般由時鐘邊沿觸發。Verilog HDL提供了posedge和negedge兩個關鍵詞來分別描述上升沿和下降沿。always塊可以看作一個復雜的電路部分,可以被中止和激活。D敏感列表中的信號發生變化或某一事件發生時,該部分被激活並執行內部過程語句,由於沒有其他時序控制結構,執行過程會一直持續到end模塊纔會終止,因此,always塊實際上是個“永遠循環”過程,每次的循環由敏感信號列表觸發。3.1.2過程賦值過程賦值隻能用在always塊或initial塊中,有兩種賦值方式: 阻塞賦值和非阻塞賦值。其基本語法格式如下: 
    阻塞賦值: 變量名 = 表達式; 
    非阻塞賦值: 變量名 <= 表達式 ; 
    在阻塞賦值中,在執行下一條語句前,一個表達式隻能賦給一個數據類型的值,可以理解為賦值阻斷了其他語句的執行,與C語言中的正常變量賦值行為相似。在非阻塞賦值中,表達式的值在always塊結束時進行賦值,這種情況下賦值沒有阻斷其他語句的執行。Verilog的初學者經常會混淆阻塞賦值和非阻塞賦值,不能正確理解它們的區別。這樣可能會導致意外的行為或競爭條件。它們的基本使用原則是(1) 組合電路使用阻塞賦值; (2) 時序電路使用非阻塞賦值。因為本章關注的是組合電路,因此隻使用阻塞賦值語句。3.1.3變量的數據類型在過程賦值中,一個表達式隻能賦給一種變量數據類型的輸出,這些變量數據類型有reg型、integer型、real型、time型和realtime型。reg數據類型和wire數據類型類似,可以用於過程輸出; integer數據類型表示固定大小(通常是32位)有符號二進制補碼格式,由於大小固定,在綜合中通常不用該數據類型; 其他幾種數據類型用於建模和仿真,無法被綜合。3.1.4簡單實例用兩個簡單例子來說明always模塊和過程阻塞賦值的用法和行為。1. 一位比較器可以用always塊來設計簡單的一位比較器電路,代碼見例3.1。例3.1一位比較器的always塊實現




    module eq1_always
    (
    inputi0,i1,
    output reg eq //eq聲明為reg類型
    );
    reg p0, p1;   //p0和p1聲明為reg類型
    always @(i0, i1)//i0和i1必須在敏感信號列表中
    begin
    //語句的順序是很重要的
    p0= ~i0&~i1;
    p1= i0 &i1;
    eq= p0| p1 ;
    end
    endmodule

    因為eq、p0和p1信號在always塊內賦值,它們都聲明為reg型數據類型; 敏感列表包括i0和i1,並由逗號隔開,D其中一個發生變化時,always塊則被激活; 三條阻塞賦值語句順序執行,和C程序中的語句FC類似,語句的順序十分重要,在D三條阻塞賦值語句執行前p0和p1必須賦值。要正確建立所需的行為模型,組合電路的敏感列表必須包含所有的輸入信號,忽略一個信號J可能導致綜合和仿真結果不一致,在Verilog HDL 2001中,可以用下面的符號
    always@*
    來隱式地包含所有輸入信號,在本書組合電路描述中使用這種結構。2. 過程賦值語句和持續賦值語句的比較其實,持續賦值語句和過程賦值語句的行為大不相同,下面以一個三輸入的與門來說明它們的區別。例3.2中的代碼,使用的是過程賦值語句,它完成的功能是執行a、b和c的邏輯與運算(即a&b&c),綜合的電路如圖3.1(a)所示。例3.2三輸入的與電路




    module and_block_assign
    (
    inputa , b , c,
    output regy
    );
    always@ *
    begin
    y = a ;
    y=y&b;
    y=y&c;
    end
    endmodule

    如果采用類似例3.3中的持續賦值語句,則描述結果不正確。在例3.3的代碼中,每條程序賦值綜合一部分電路,左端3次出現的y表明三個輸出捆綁在一起,對應的電路如圖3.1(b)所示,這顯然不是想要的設計結果。
    例3.3與電路的不正確代碼




    module and_cont_assign
    (
    inputa,b,c,
    outputy
    );
    assign y = a;
    assign y = y & b;
    assign y = y &c ;
    endmodule



    圖3.1正確和不正確的代碼段推導出的電路
    3.2條件語句條件語句有ifelse語句和case語句兩種,它們都是順序語句,應該放在always塊內使用。下面分別結合實例對這兩種語句進行介紹。3.2.1ifelse語句1. 語法
    ifelse語句的簡化語法如下: 
    if (表達式)
    begin
    順序執行語句;
    順序執行語句;
    end
    else
    begin
    順序執行語句 ;
    順序執行語句 ;
    end

    [表達式]項一般為邏輯表達式或者關繫表達式,也可以是一位的變量。語句先對表達式判斷,如果表達式為真,則執行下面分支的語句,否則執行else分支的語句。else分支具有選擇性,可以省略。如果分支裡隻有一條語句,則定界符begin和end可以省略。多條if語句可以“級聯”,以執行多布爾條件並建立優先級,如下: 
    if  (表達式1)
    ...
    else if (表達式2)
    else if (表達式3)
    ...
    else

    2. 實例用兩個簡單例子來說明ifelse語句的用法。1) 4位優先編碼器4位優先編碼器有四個優先級,r[3]、r[2]、r[1]和r[0]作為一組4位輸入信號,r[3]優先級Z高,輸出是較高優先級的二進制代碼,優先編碼器的功能表如表3.1所示,HDL代碼見例3.4。

    表3.1四輸入優先編碼器功能表


    輸入 (r[3] r[2] r[1] r[0])輸出 (y[2] y[1] y[0])1xxx10001xx011001x01000010010000000
    例3.4使用ifelse語句的優先編碼器的HDL代碼




    module prio_encoder_if
    (
    input[3:0] r,
    output reg[2:0]y
    );
    always@*
    if(r[3]==1'b1)//可以寫成 (r[3])
    y = 3'b100;
    else if(r[2]==1'b1) //可以寫成 (r[2])
    y = 3'b011;
    else if (r[1]==1'b1) //可以寫成 (r[1])
    y = 3'b010;
    else if(r[0]==1'b1) //可以寫成 (r[0])
    y = 3'b001;
    else
    y = 3'b000;
    endmodule

    代碼1先檢查信號r[3]請求,如果為1則將100賦給y,如果r[3]為0,則繼續檢查信號r[2]請求並重復以上過程,直至所有請求信號檢查完畢。注意Dr[3]為1時布爾表達式(r[3]==1'b1)為真,由於在Verilog中真值也可表示為1'b1,因此表達式也可以寫成(r[3])。2)  24譯碼器根據n位輸入的信號,一個n-2n二進制譯碼器將2n位輸出中的一位置位,24譯碼器的真值表如表3.2所示,該電路包括控制信號端en來使能譯碼功能,HDL代碼見例3.5。

    表3.2帶使能的24譯碼器的真值表


    ena[1]a[0]y0xx00001000001101001011001001111000
    例3.5使用ifelse語句實現的24譯碼器




    module decoder_2_4_if
    (
    input [1:0] a,
    input en,
    outputreg[3:0] y
    );
    always @*
    if(en==1'b0) 
    y = 4'b0000;
    else if (a==2'b00)
    y = 4'b0001;
    else if(a==2'b01)
    y = 4'b0010;
    else if(a==2'b10)
    y = 4'b0100;
    else
    y = 4'b1000;
    endmodule

    代碼1先檢查使能位en是否為1,如果條件為假(即en為0),則設置輸出y為無效狀態; 如果條件為真,則檢測4個二進制數的組合順序,設置輸出y的狀態。注意布爾表達式(en==1'b0)也可以寫成~en。3.2.2case語句相對於ifelse語句隻有兩個分支而言,csae語句則是一種多分支語句,其可用於描述多條件分支電路,例如譯碼器、數據選擇器、狀態機及微處理器指令譯碼等。case語句有case、casez和casex三種表示方式,以下分別進行介紹。1. case語句語法case語句的簡化語法如下: 
    case(表達式)
    分支項1:
    begin
    順序執行語句;
    順序執行語句;
    ...
    end
    分支項2:
    begin
    順序執行語句;
    順序執行語句;
    ...
    end
    分支項3:
    begin
    順序執行語句;
    順序執行語句;

    end
    ...
    default:
    begin
    順序執行語句;
    順序執行語句;
    end
    endcase
    case語句是一條多路決策語句,其將case 表達式和多個分支項進行比較,程序跳入與D前表達式相等的分支項對應的分支執行,如果有多個分支項匹配,則執行D一條匹配的分支。Z後一條分支為可選的,關鍵詞是default,包含表達式未指定的所有值。如果一條分支中隻有一條語句,則定界符begin和end可以省略。2. case語句實例采用和ifelse語句例子中相同的優先編碼器和譯碼器來說明case語句的用法。1) 24譯碼器的case語句描述24譯碼器的功能表如表3.2所示,使用case語句的HDL代碼見例3.6。例3.6使用case語句實現的24譯碼器HDL代碼




    module decoder_2_4_case
    (
    input[1:0]a,
    inputen,
    output reg[3:0]y
    );
    always @*
    case({en, a})
    3'b000, 3'b001, 3'b010, 3'b011: y = 4'b0000;
    3'b100: y = 4'b0001;
    3'b101: y = 4'b0010;
    3'b110: y = 4'b0100;
    3'b111


    "
     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部