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

商品搜索

 类 别:
 关键字:
    

商品分类

  •  管理

     一般管理学
     市场/营销
     会计
     金融/投资
     经管音像
     电子商务
     创业企业与企业家
     生产与运作管理
     商务沟通
     战略管理
     商业史传
     MBA
     管理信息系统
     工具书
     外文原版/影印版
     管理类职称考试
     WTO
     英文原版书-管理
  •  投资理财

     证券/股票
     投资指南
     理财技巧
     女性理财
     期货
     基金
     黄金投资
     外汇
     彩票
     保险
     购房置业
     纳税
     英文原版书-投资理财
  •  经济

     经济学理论
     经济通俗读物
     中国经济
     国际经济
     各部门经济
     经济史
     财政税收
     区域经济
     统计 审计
     贸易政策
     保险
     经济数学
     各流派经济学说
     经济法
     工具书
     通货膨胀
     财税外贸保险类考试
     英文原版书-经济
  •  社会科学

     语言文字
     社会学
     文化人类学/人口学
     新闻传播出版
     社会科学总论
     图书馆学/档案学
     经典名家作品集
     教育
     英文原版书-社会科学
  •  哲学

     哲学知识读物
     中国古代哲学
     世界哲学
     哲学与人生
     周易
     哲学理论
     伦理学
     哲学史
     美学
     中国近现代哲学
     逻辑学
     儒家
     道家
     思维科学
     马克思主义哲学
     经典作品及研究
     科学哲学
     教育哲学
     语言哲学
     比较哲学
  •  宗教

  •  心理学

  •  古籍

  •  文化

  •  历史

     历史普及读物
     中国史
     世界史
     文物考古
     史家名著
     历史地理
     史料典籍
     历史随笔
     逸闻野史
     地方史志
     史学理论
     民族史
     专业史
     英文原版书-历史
     口述史
  •  传记

  •  文学

  •  艺术

     摄影
     绘画
     小人书/连环画
     书法/篆刻
     艺术设计
     影视/媒体艺术
     音乐
     艺术理论
     收藏/鉴赏
     建筑艺术
     工艺美术
     世界各国艺术概况
     民间艺术
     雕塑
     戏剧艺术/舞台艺术
     艺术舞蹈
     艺术类考试
     人体艺术
     英文原版书-艺术
  •  青春文学

  •  文学

     中国现当代随笔
     文集
     中国古诗词
     外国随笔
     文学理论
     纪实文学
     文学评论与鉴赏
     中国现当代诗歌
     外国诗歌
     名家作品
     民间文学
     戏剧
     中国古代随笔
     文学类考试
     英文原版书-文学
  •  法律

     小说
     世界名著
     作品集
     中国古典小说
     四大名著
     中国当代小说
     外国小说
     科幻小说
     侦探/悬疑/推理
     情感
     魔幻小说
     社会
     武侠
     惊悚/恐怖
     历史
     影视小说
     官场小说
     职场小说
     中国近现代小说
     财经
     军事
  •  童书

  •  成功/励志

  •  政治

  •  军事

  •  科普读物

  •  计算机/网络

     程序设计
     移动开发
     人工智能
     办公软件
     数据库
     操作系统/系统开发
     网络与数据通信
     CAD CAM CAE
     计算机理论
     行业软件及应用
     项目管理 IT人文
     计算机考试认证
     图形处理 图形图像多媒体
     信息安全
     硬件
     项目管理IT人文
     网络与数据通信
     软件工程
     家庭与办公室用书
  •  建筑

  •  医学

     中医
     内科学
     其他临床医学
     外科学
     药学
     医技学
     妇产科学
     临床医学理论
     护理学
     基础医学
     预防医学/卫生学
     儿科学
     医学/药学考试
     医院管理
     其他医学读物
     医学工具书
  •  自然科学

     数学
     生物科学
     物理学
     天文学
     地球科学
     力学
     科技史
     化学
     总论
     自然科学类考试
     英文原版书-自然科学
  •  工业技术

     环境科学
     电子通信
     机械/仪表工业
     汽车与交通运输
     电工技术
     轻工业/手工业
     化学工业
     能源与动力工程
     航空/航天
     水利工程
     金属学与金属工艺
     一般工业技术
     原子能技术
     安全科学
     冶金工业
     矿业工程
     工具书/标准
     石油/天然气工业
     原版书
     武器工业
     英文原版书-工业技
  •  农业/林业

  •  外语

  •  考试

  •  教材

  •  工具书

  •  中小学用书

  •  中小学教科书

  •  动漫/幽默

  •  烹饪/美食

  •  时尚/美妆

  •  旅游/地图

  •  家庭/家居

  •  亲子/家教

  •  两性关系

  •  育儿/早教

     保健/养生
     体育/运动
     手工/DIY
     休闲/爱好
     英文原版书
     港台图书
     研究生
     工学
     公共课
     经济管理
     理学
     农学
     文法类
     医学
  • 可編程邏輯器件原理與設計
    該商品所屬分類:研究生 -> 工學
    【市場價】
    320-464
    【優惠價】
    200-290
    【作者】 呂高煥 
    【所屬類別】 圖書  教材  研究生/本科/專科教材  工學圖書  計算機/網絡  程序設計  其他 
    【出版社】清華大學出版社 
    【ISBN】9787302456476
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    開本:16開
    紙張:膠版紙
    包裝:平裝-膠訂

    是否套裝:否
    國際標準書號ISBN:9787302456476
    叢書名:計算機繫列教材

    作者:呂高煥
    出版社:清華大學出版社
    出版時間:2016年11月 


        
        
    "

    編輯推薦
    本書從硬件電路的角度介紹了可編程邏輯器件的基本原理和用於開發應用的VHDL語言。結合數字邏輯電路的基礎知識,由淺入深地聯繫具體器件介紹了簡單可編程邏輯器件、復雜可編程邏輯器件和現場可編程門陣列的結構原理,重點講解了現場可編程門陣列中的邏輯塊設計原理、可編程開關的設計原理,以及不同邏輯功能的編程實現方法。結合具體的電路實例,講述了VHDL中的基本概念和編程語法。全書體現了VHDL語言作為並行語言在電路設計中的模塊化、層次化、“各盡其責、相互獨立”的設計思想,是引導有志於學習可編程邏輯器件設計與開發設計的學生和技術人員的一本值得推薦的入門教材和學習手冊。 
    內容簡介
    本書由淺入深、循序漸進地介紹可編程邏輯器件的基本原理、內部結構和設計方法,繫統地介紹了用於CPLD/FPGA開發的VHDL語言。對於可編程器件的基本原理,首先從基本邏輯門出發,講述控制邏輯函數表達式的設計與分解,然後詳細介紹SPLD(包括PLA和PAL)、CPLD和FPGA的組成原理及其區別。對於VHDL語言,則先從VHD素、基本語法、描述模型開始,依次講解並行語句、順序件、庫和包、有限狀態機等,並配有豐富的實例,有助於學習者對概念的理解和用法的掌握。
    本書適合於學習芯片設計的理工科學生和VHDL初學者,可作為高等學校電子類專業的選修教材或有志於研發數字集成電路芯片的工程技術人員的參考書。
    目錄
    目錄
    第1章緒論/1
    1.1可編程邏輯器件與數字電路設計/1
    1.2可編程邏輯器件的發展/2
    1.3可編程邏輯器件設計/7
    1.3.1電子設計自動化/7
    1.3.2電子設計自動化的發展/8
    1.3.3EDA工具的主要特征/9
    1.3.4有代表性的EDA軟件/11
    1.3.5設計方法/13
    1.3.6設計流程/14
    思考題/17第2章數字邏輯/18
    2.1基本邏輯門及其運算/18
    2.2基本擴展邏輯門/19

     目錄 


    第1章緒論/1


    1.1可編程邏輯器件與數字電路設計/1


    1.2可編程邏輯器件的發展/2


    1.3可編程邏輯器件設計/7


    1.3.1電子設計自動化/7


    1.3.2電子設計自動化的發展/8


    1.3.3EDA工具的主要特征/9


    1.3.4有代表性的EDA軟件/11


    1.3.5設計方法/13


    1.3.6設計流程/14


    思考題/17第2章數字邏輯/18


    2.1基本邏輯門及其運算/18


    2.2基本擴展邏輯門/19


    2.3邏輯門的擴展/20


    2.4基本邏輯門的實現/23


    2.4.1MOS管/23


    2.4.2非門的CMOS實現/25


    2.4.3基本與非門的實現/25


    2.4.4基本或非門的實現/26


    2.4.5邏輯函數表達式的CMOS實現/26


    思考題/28第3章可編程邏輯器件原理/29


    3.1簡單可編程邏輯器件/29


    3.1.1可編程邏輯陣列/29


    3.1.2可編程陣列邏輯/30


    3.2復雜可編程邏輯器件/32


    3.2.1Altera MAX繫列CPLD/333.2.2AMD
    MACH繫列CPLD/34


    3.2.3Lattice pLSI和ispLSI繫列CPLD/35


    3.2.4Xilinx XC 7000繫列CPLD/36


    3.2.5Altera FlashLogic/36


    3.3現場可編程邏輯門陣列/37


    3.3.1邏輯塊/39


    3.3.2可編程開關/43


    3.3.3典型FPGA內部結構/48


    3.4CPLD和FPGA比較/51


    思考題/53第4章圖形和文本輸入/54


    4.1Altera Quartus  Ⅱ 9.0工作環境/54


    4.1.1基於工程的管理環境/54


    4.1.2工程設計工具/55


    4.2圖形輸入法/56


    4.2.141選擇器/56


    4.2.2建立工程/56


    4.2.3電路設計/60


    4.2.4利用41選擇器設計81選擇器/66


    4.3文本輸入法/69


    4.4配置文件下載/69


    思考題/71第5章VHDL基礎/72


    5.1對像/72


    5.1.1對像命名規則/72


    5.1.2對像聲明規則/72


    5.1.3常量/73


    5.1.4信號/74


    5.1.5變量/75


    5.1.6別名/76


    5.2標準數據類型/77


    5.2.1bit/77


    5.2.2bit_vector/77


    5.2.3boolean/78


    5.2.4boolean_vector/78


    5.2.5integer/78


    5.2.6natural/79


    5.2.7positive/79


    5.2.8integer_vector/79


    5.2.9character/79


    5.2.10string/80


    5.3標準邏輯數據類型/80


    5.4數值表達方法/82


    5.5數據類型轉換/83


    5.6自定義數據類型/84


    5.6.1自定義整數類型/84


    5.6.2枚舉類型/85


    5.6.3子數據類型/85


    5.6.4數組類型/85


    5.7預定義屬性/86


    5.7.1標量數據類型的預定義屬性/86


    5.7.2數組類型的預定義屬性/87


    5.7.3信號的預定義屬性/88


    5.8VHDL中的運算/88


    5.8.1賦值運算符/89


    5.8.2邏輯運算符/89


    5.8.3算術運算符/90


    5.8.4關繫運算符/90


    5.8.5移位運算/91


    5.8.6合並運算符/91


    5.8.7運算符的優先級/92


    思考題/92


    第6章VHDL語言的程序結構/93


    6.1VHDL設計模型/93


    6.1.1數據流模型/93


    6.1.2行為模型/93


    6.1.3結構化模型/94


    6.2VHDL程序結構/94


    6.2.1實體/95


    6.2.2架構/97


    6.2.3庫和包/98


    6.2.4配置/100


    6.3簡單的例子/100


    思考題/104第7章並行語句/105


    7.1簡單信號賦值語句/105


    7.2條件信號賦值語句/110


    7.3選擇信號賦值語句/114


    7.4產生語句/118


    7.5塊語句/121


    7.6多驅動源賦值問題/123


    思考題/124第8章順序語句/125


    8.1鎖存器和觸發器/125


    8.2進程/127


    8.3IF語句/128


    8.3.1IF…THEN…END IF/128


    8.3.2IF…THEN…ELSE…END IF/129


    8.3.3IF…THEN…ELSIF…THEN…


    END IF/129


    8.3.4IF…THEN…ELSIF…THEN…


    ELSE…END IF/130


    8.3.5嵌套式IF語句/133


    8.4CASE語句/138


    8.5WAIT語句/141


    8.6LOOP語句/143


    8.6.1無條件循環/143


    8.6.2FOR…LOOP循環/143


    8.6.3WHILE…LOOP循環/146


    8.6.4LOOP…EXIT循環/146


    8.6.5LOOP…NEXT循環/147


    8.7寄存器的引入問題/147


    8.8信號和變量的再討論/148


    思考題/155件/156


    件的聲明/156


    件例化/157


    件聲明和例化方法/157


    思考題/172第10章庫、包與子函數/173


    10.1庫/173


    10.2包/174


    10.3子程序/177


    10.3.1函數/178


    10.3.2過程/181


    10.4過程、函數和進程討論/185


    10.4.1子程序與進程/185


    10.4.2函數與過程/186


    思考題/186第11章有限狀態機/187


    11.1FSM的繫統圖和狀態圖/187


    11.2FSM的編程框架/188


    11.3Moore型FSM設計/189


    11.3.1繫統圖設計/189


    11.3.2狀態機描述/189


    11.3.3編程實現/190


    11.4Mealy型FSM設計/191


    11.5綜合設計/193


    11.6FSM中的問題/200


    思考題/201附錄AVHDL中的保留字/202附錄B縮略語/203參考文獻/204

    前言
    前言前言
    微電子技術的飛速發展,不僅加快了微處理器的速度,增強了信號處理電路的功能,擴大了繫統的存儲容量,也推動了可編程邏輯器件(Programmable Logic Device,PLD)在數字電子設計中的廣泛應用。借助於常用的集成了各種優化算法的電子設計自動化(Electronic Design Automation,EDA)軟件,PLD開發人員可以優化設計電路,在較短的時間內實現用戶需求。基於此,PLD原理與電子設計自動化技術成為了電子設計人員進行高效電路設計的基礎,在電子類相關專業中開設該課程是必不可少的。PLD分為簡單可編程邏輯器件(Simple PLD,SPLD)、復雜可編程邏輯器件(Complex PLD,CPLD)和現場可編程門陣列(Field Programmable Gate Arrays,FPGA)3類。這3類器件出現時間由先到後,容量由低到高。SPLD早出現在20世紀70年代,由Phillips公司制造出個可編程邏輯陣列開始,其應用市場不斷擴大,但可編程開關、邏輯平面設計的復雜性限制了其進一步發展。隨著電子制作工藝的不斷改進,出現了CPLD,它實際上就是將SPLD通過內部連線組合起來,擴大了芯片容量。SPLD和CPLD都是基於與平面和或平面的。隨著設計需求規模的不斷擴大,工程師設計出了FPGA,它不再是基於邏輯平面的概念,而是使用可配置邏輯塊,不僅擴大了芯片容量,也提高了設計的靈活性。由於CPLD和FPGA的結構不同,因此電路的設計優化算法亦不相同。為了統一兩者的開發方式,工程師們研究了與硬件無關的VHDL、Verilog HDL語言。使用VHDL和Verilog HDL語言,開發人員借助於EDA軟件,對不同類型的器件采用相應的優化綜合算法,方便了電路的設計和開發。本書介紹VHDL語言在PLD中的設計方法。本書可分兩部分: 部分是從第1章到第4章,講述PLD的基本原理;第二部分是從第5章到第11章,講述VHDL語言在電路設計中的基本語法及典型應用。第1章到第4章,從基本邏輯門出發,介紹了構成邏輯函數表達式的基於CMOS器件的電路結構及設計方法,它是理解SPLD、CPLD、FPGA等復雜電路的基礎。對於SPLD,詳細介紹了可編程邏輯陣列(Programmable Logic Array,PLA)和可編程陣列邏輯(Programmable Array Logic,PAL)的原理,並以此為基礎,介紹了CPLD。對於FPGA,則重點介紹邏輯塊和可編程開關的原理,並結合不同廠家的FPGA結構進行介紹。第5章到第11章,由淺入深、循序漸進地介紹了VHDL語法要素、描述模型、並行語句、順序件、包庫和有限狀態機。在講解過程中結合常見的基本邏輯電路,強化讀者對概念的理解和設計理念的把握。CPLD/FPGA技術發展日新月異,新技術、新工藝、新算法、新軟件層出不窮,雖然本書在撰寫過程中力求加入的資料,但仍有些地方趕不上工藝的發展,因此本書重點講述原理和基礎,使讀者在面對新工藝或新技術時能靈活理解其基本原理。在講述VHDL過程中,本書力求基於語法原理介紹電路設計中各模塊間“相互獨立、各盡其責”思想,啟發讀者面對大型設計時能夠自上而下地合理劃分設計模塊,采用模塊化、層次化思想實現設計需求。本書在撰寫過程中,參閱了大量的國內外網站,以及與本課程相關的教育工作者和技術培訓人員的相關幻燈片及技術資料;同教研室的郝金光老師、徐明銘老師、石磊老師提出了很多寶貴的意見;本書底稿講義在十餘年的科研培訓、教學中不斷得到補充和發展,學員們提出了各種有助於學習和理解的建議;在寫作過程中作者得到清華大學出版社白立軍編輯的熱情幫助。在此一並向他們表示崇高的敬意和深深的感謝。限於作者水平,書中錯誤之處在所難免,懇請讀者批評指正。
      作者2016年7月
    媒體評論
    評論
    在線試讀
    第5章VHDL基礎VHDL是VHSIC Hardware Description Language的縮寫,其中,VHSIC表示Very High Speed Integrated Circuits,意即非常高速集成電路,它起初來源於美國國防部在20世紀80年代設立的一個基金。其早版本是VHDL 87,後來升級為VHDL 93、VHDL 2002、VHDL 2008。它是由IEEE個標準化的硬件描述語言,見IEEE 1076和IEEE 1164標準。作為一種硬件描述語言,其代碼描述了電子電路的行為和結構,並通過編譯器實現與代碼對應的物理電路。由於VHDL與硬件的制造技術和生產商無關,因此VHDL代碼可以移植和重復利用。本章將介紹VHDL語言的基礎知識。5.1對像程序由數據和算法構成。數據是算法執行的基礎,算法是實現特定功能的具體途徑,其結果由數據得以體現。在描述VHDL類型之前,首先要了解什麼是VHDL對像。一般來講,對像是數據的具體化,是在程序設計中數據所依附的目標。所謂的VHDL對像是具有具體數據類型的一個具有名稱的項,程序中可以給對像賦值。在VHDL中,運算操作的目標是對像,操作對像需要遵循VHDL所制定的語法規範。5.1.1對像命名規則VHDL中對像(包括其他標識符,如函數、過程、實體和結構名,等等)命名需要遵循如下規則。(1) 所有的名稱必須以字符開頭(a~z或A~Z)。(2) 隻能使用字符、數字和下畫線。(3) 不能使用特殊符號和保留字(如+、-、&、if、with,等等)。(4) 兩個下畫線不能同時使用(如a__Z)。(5) 同一名字中間不能有空格(如black smith)。(6) VHDL忽略大小寫,因此名字和標簽在程序中必須是獨一無二的。例如,在VHDL中,DATABUS、DataBus、Databus、dataBUS、dAtAbUs都是同一個對像或標簽。VHDL中的保留字見附錄A。5.1.2對像聲明規則在VHDL中,對像的聲明格式如下: class object_name : data_type \\[:= initial_value\\];其中,class表示對像類型,object_name是對像名稱,data_type是數據類型,initial_value為初始值。initial_value在對像聲明時可選。對像的類型分4類,分別是常量、信號、變量和文件。信號表示電路之間的電器連接;變量用於進程中,通常用於時序邏輯電路在執行計算時數據的暫存;數據類型是對像所代表的能夠進行特定運算的具體類別,例如bit、bit_vector、integer,等等。即使是bit_vector也有不同的線寬,線寬不同也意味著不同的數據類型。初值對於信號和變量聲明是可選的,但對於常量,在聲明時初值要給出。文件對像用於仿真驗證過程,不能綜合,在本書中不做詳細探討,讀者可參考相關書籍了解掌握。5.1.3常量為了增加程序的可讀性及可維護性,通常在設計程序時都會在其內部加入一些常量,所謂的常量,就是內容為一固定值,不會隨著程序的執行而改變的數據對像。在VHDL語言中,常量的用法與C語言中#define指令相類似。其聲明方法如下: constant constant_name : data_type := initial_value;其中: (1) constant為保留字,定義了對像的類型為常數。(2) constant_name為常量對像的名稱,在程序中標示。(3) data_type為常量所屬的數據類型。(4) “:=”用來設置常量值的符號。(5) initial_value為所要設置常量的初始值。例如: constant M : integer :=8;constant N : integer :=2M;constant bTrue : bit := '1';constant mask : bit_vector(7 downto 0):= "10010011"這裡常量對像M的數據類型是integer(整型),值為8,N也為整數數據類型,值為2M=16;常量對像bTrue是bit數據類型,值為'1',常量對像mask是一個位向量數據類型,位寬為8,值為"10010011"。注意,在VHDL中,對單個bit的對像賦值時使用單引號加0或1表示,而對於bit_vector,則需要使用雙引號,且引號內部的0、1數據個數要等於bit_vector的位寬,即位的個數。常數可以聲明在實體、架構、包、包體、塊、生成語句、過程、函數和進程中的聲明部分。常量所在的位置決定了它的定義域。例如,放在程序包中的常量,可以在程序的實體、架構及過程中使用;聲明在實體內的常量則隻能在本身的實體中使用;聲明在架構中的常量僅在本架構內使用,聲明在進程中,則該常量也隻能在本進程內隻讀。在賦初值時,通常用到關鍵詞OTHERS,它表示將所有的索引位置賦值為右邊的數。例如: constant vector_a: bit_vector(7 downto 0):=(OTHERS=>'0');constant vector_b: bit_vector(7 downto 0):=(7=>'0', OTHERS=>'1');constant vector_c: std_logic_vector(7 downto 0):=(2|3=>'1', OTHERS=>'0');constant vector_d: bit_vector(15 downto 0):=(7 downto 0=>'1', OTHERS=>'0');其中,vector_a的值為"00000000",vector_b的值為"01111111",vector_c的值為"00001100",vector_d的值為"0000000011111111"。常量值聲明之後,該值將貫穿程序的始終,在仿真和執行過程中不會法發生改變。在程序中任何對常量值的更改和賦值都是非法的,也就是說它隻能讀,不能寫。5.1.4信號在VHDL語言中,信號用來表達硬件的實際連接線,可以用來給電路傳遞輸入信號,引出輸出信號,也可作為電路模塊中間的連線。實體中所有的端口默認都是信號。信號聲明的語法如下: signal signal_name : data_type := initial_value;其中: (1) signal為保留字,定義了對像的類型為信號。(2) signal_name為信號對像的名稱,在程序中標示。(3) data_type為信號對像所屬的數據類型。(4) “:=”用來設置信號值的符號。(5) initial_value為所要設置信號的初始值。例如: signal enable: bit :='0';signal tmp: bit_vector(7 downto 0);signal byte: std_logic_vector(7 downto 0);signal count: integer range 0 to 255;信號enable的類型是bit,其初值是'0';信號tmp的類型是bit_vector(7 downto 0);信號byte的類型是std_logic_vector(7 downto 0);cout是整數類型,值從0到255。注意,信號和常量的區別在於常量的值無法改變,而信號的值則是可以變化的。在程序體中對信號賦值運算符為“<=”,對像聲明時賦初值則統一用“:=”,例如,在程序運行過程中對enable信號賦值方法為enable<='1'。信號聲明後,將作為導線連接兩個不同的電氣端口。雖然信號的值可以變更,但導線對應的電氣節點卻是固定的,不能在電路設計中更改,也就是說在程序編寫時,不能出現多驅動源賦值現像。在並行語句中,編譯器會將多驅動源問題視為一個錯誤,並退出編譯。這裡以圖5.1說明問題。圖5.1信號聲明在實際電路中的意義在圖5.1(a)中,cnt表示一個節點,該節點同時連接Q1、Q2、P1和P2。這樣當Q1對cnt賦值時,其他任何一個端口都不能對cnt賦值,cnt不能用來表示獨立的兩個導線。正確的表示方法是,對Q1P1導線聲明為信號cnt1,對Q2P2導線聲明為信號cnt2,這樣可以分別賦值。另外在VHDL中,信號賦值意味著電氣連接,如在圖5.1(b)中,若執行語句“cnt1<=cnt2;”,則表示將cnt1和cnt2兩個信號線短接,結果如圖5.1(a)所示。信號的聲明可以在實體、架構、包、塊和生成語句的聲明部分進行。信號聲明不允許出現在順序代碼之中(如進程和子程序),但它可作為連接不同進程的導線在這些順序代碼中使用。在工程設計中,信號的聲明一般在架構內聲明,表明了該架構所描述電路的電氣節點安排。它不能在過程中聲明。對於信號而言,非常重要的一點是當其在進程或子程序內部使用時,它不是立即更新的,它在進程或子程序結束後纔發生終更新,也就是說它隻考慮後一次賦值。5.1.5變量在VHDL語言的程序中,為了運算上的方便,我們經常會聲明變量對像來輔助實現設計需求。與一般高級語言一樣,變量隻是為了方便運算而使用的一個中間媒介,在實際的硬件電路中它是不存在的。也就是說,它並不代表電路的實際連線件,因此我們不需要去考慮在控制電路上產生的延遲時間,這一點是它與信號對像的不同之處。其聲明語法如下: variable var_name : data_type := initial_value;其中: (1) variable為保留字,定義了對像的類型為變量。(2) var_name為變量對像的名稱,在程序中標示。(3) data_type為所聲明變量的數據類型。(4) “:=”用來設置變量值的符號。(5) initial_value為所要設置變量的初始值。例如: variable clk : std_logic :='1';variable address: std_logic_vector(15 downto 0);variable num: integer range 0 to 255 := 0;這裡clk是一個std_logic類型的變量,初值為'1';address是一個std_logic_vector(15 downto 0)類型的變量,總線寬度為16,num是一個integer類型的變量,範圍從0到255,初始值為0。和常量、信號相比,變量僅表示局部信息。這是因為它在內是可見的,並且隻能在內變更變量值。變量的更新是立即更新,因此其值可以立即在代碼的下一行中得到體現。而且,由於更新是立即的,因此可以對同一個變量進行多次賦值。在程序體中,對變量賦值運算符為“:=”,例如,在程序運行過程中,對變量address的賦值方法為address := x"345",表示成二進制數為"0011 0100 0101"。5.1.6別名在VHDL程序中,為增強其可維護性和可讀性,會在程序中引入別名,其聲明語法如下: alias alias_name : data_type is object_name;其中: (1) alias是保留字,表示聲明一個別名。(2) alias_name為別名的名稱。(3) data_type是別名的數據類型。(4) object_name是對像名稱。其意義為alias_name是object_name的全部或部分位的別名,例如,某CPU的指令結構如圖5.2所示。圖5.2某CPU的指令結構在VHDL程序中,指令可使用信號對像聲明,其中有意義的字節可使用別名聲明,舉例如下: signal instruction : std_logic_vector(15 downto 0);alias destination : std_logic_vector(4 downto 0)is instruction(15 downto 11);alias source : std_logic_vector(4 downto 0)is instruction(10 downto 6);alias mode : std_logic_vector(1 downto 0)is instruction(5 downto 4);alias operation : std_logic_vector(3 downto 0)is instruction(3 downto 0);經過上述語句聲明之後,在程序中就可以直接使用destination、source、operation等別名了,對destination的操作,實際上就是操作對像instruction的(15 downto 11)位。可見,別名大大提高了程序的可讀性,方便了編程過程。需要說明的是,別名是已有對像的替換名稱,它並不定義一個新對像,所有的對像都可以定義別名。5.2標準數據類型標準數據類型又稱為預定義數據類型,它來自標準庫STD中可綜合的數據類型。這些標準數據類型主要包括如下。(1) bit: 位。(2) bit_vector: 位向量(總線)。(3) boolean: 布爾型(True/False)。(4) boolean_vector(2008): 布爾向量。(5) integer: 整型。(6) natural: 自然數。(7) positive: 正數。(8) integer_vector(2008): 整型向量。(9) character: 字符型。(10) string: 字符串型。5.2.1bitbit數據類型是數字控制電路中基本的兩種電位,其值隻包含0或1兩種,是兩值的枚舉類型。就其位數來講,它是一個標量類型。它支持邏輯和比較運算。bit數據類型定義如下: type bit is('0', '1');這種數據類型的對像聲明方式與3.1節所定義的聲明方式一致。例如: signal x, y, z: bit;這裡對像x、y、z聲明為信號,數據類型為bit。5.2.2bit_vector將bit集合成串,組合成固定位寬的總線形式,其數據類型就成為位向量bit_vector。該數據類型支持邏輯、比較、移位和並運算。其定義如下: type bit_vector is array(natural range < >)of bit;其中,“natural range < >”表示其範圍不確定,隻要落在natural範圍內即可。這裡“< >”稱為盒子(BOX)。對於邏輯和移位運算,向量需要有相同的長度。這在實際的硬件電路中很常見,例如,我們會將一些特性相同的信號組合在一起,常見的如CPU的數據總線D0~D31,地址總線A0~A15,復用器的數據輸入線I0~I3,復用器的選擇線S1~S0,等等。其聲明方式為class object_name : bit_vector(high_index downto low_index);或者class object_name : bit_vector(low_index to high_index);舉例如下: signal dbus : bit_vector(7 downto 0);signal abus : bit_vector(0 to 7);這裡dbus和abus都表示位寬為8的總線,位索引為7,位索引為0;不同的是兩者表示的數據方法不同,例如,對於十六進制數A4,dbus的二進制表示為1010 0100,而abus的二進制則表示為0010 0101,兩者編碼位正好相反。5.2.3booleanboolean類型是另外一個兩值的枚舉類型,它支持邏輯和比較運算,定義如下: type boolean is(false, true);如同C/C 語言一樣,當我們將某個數據對像聲明為布爾數據類型時,其內容就隻包含“真”(True)或“假”(False)兩種狀態,其中True代表1,False代表0。例如: signal ready : boolean;x<="111" when ready else"000";上面語句表示信號ready為true時,x被賦值為"111",否則賦值為"000"。5.2.4boolean_vector布爾向量在VHDL 2008中引入,它是數據類型boolean的向量形式。定義如下: type boolean_vector is array(natural range < >)of boolean;5.2.5integerinteger表示整型。在VHDL語言中,整型的定義與一般的程序設計語言是一樣的,它可以為設計人員提供一般加、減、乘、除的運算。在繫統中,整型默認地是用4個字節(byte)來存儲的,因此其範圍是-(231-1)~ (231-1),即-2 147 483 647~2 147 483 647,其定義如下: type integer is range -2147483647 to 2147483647;在VHDL程序中,需要指定integer型數據的範圍,否則編譯器會按照32位加以編譯,造成資源的浪費。例如: signal a : integer range 0 TO 15;-- 4位signal b : integer range -15 TO 15; -- 5位signal x : integer range -31 TO 31; -- 6位5.2.6naturalnatural表示自然數,它是非負整數,是range的子類型,定義如下: subtype natural is integer range 0 to INTEGER'HIGH;自然數在VHDL語言中,被規定為範圍在0~2 147 483 647之間的整型,也就是0~的整型區間。5.2.7positivepositive為正整數,它是integer的子類型,定義如下: subtype positive is integer range 1 to INTEGER'HIGH;正數在VHDL語言中,被規定為範圍在1~2 147 483 647之間的整型,也就是1~的整型區間。5.2.8integer_vector在VHDL 2008中引入,它是integer的向量形式,支持比較和並操作。5.2.9character一個有256符號的枚舉類型,這些符號來自ISO 88591字符集合,前128個字符組成標準的ASCII碼。character數據類型被定義在標準程序包的內部,通常代表8b,其聲明方式與3.1節所述聲明方式相同。例如: signal char1, char2:character;signal char3 : character := 'P';char1<='A';char2<='a';5.2.10stringstring用來存儲字符的數據類型,它是上述character數據類型的擴展。其聲明方式與其他類型聲明方式相同,例如: variable varname : string(1 to 8):= "SN7419";聲明一個長度為8的字符串變量,其名稱為varname,並將其內容設置為SN74192。在這裡需要注意的是,無論是character還是string型對像,賦值時是區分大小寫的。例如,在char1和char2兩個信號中,'a'和'A'表示兩個不同的值,"SN7419"與"Sn7419"亦不相同。在VHDL語言中,不區分大小寫的是對像名稱和程序中的保留字,而不是值。5.3標準邏輯數據類型實際在大多數的CPLD/FPGA設計中使用的是IEEE工業標準,數據類型用得多的數據類型是std_logic和std_logic_vector。這兩個數據類型定義在IEEE庫的std_logic_1164包中,由VHDL 93引入,並在VHDL 2008中做了擴充。在std_logic_1164包中定義的數據類型是std_ulogic,表示不確定性邏輯,定義如下: type std_ulogic is('U','X','0','1','Z','W','L','H','-');上述9個字符的意義如下。①'U': 未初始化; ②'X': 未知; ③'0': 強制為低; ④'1': 強制為高; ⑤'Z': 高阻態; ⑥'W': 弱浮接; ⑦'L': 弱低; ⑧'H': 弱高; ⑨'-': 不關心。如果從實際硬件電路的電位角度觀察,如圖5.3所示,就可以很輕易地看出這些定義的含義。圖5.3不同電位在電路中的電氣表示(1) 輸出端'1'電位: 當P1導通(ON)且N1截止(OFF)時,輸出F的電位為'1'。(2) 輸出端'0'電位: 當P1截止且N1導通時,輸出F的電位為'0'。(3) 輸出端'Z': 當上件都截止時,輸出F的電位為高阻抗'Z'。(4) 輸入端'H'(高電位件輸入端通過100kΩ(一般為10kΩ)電阻接高電位,因其驅動電流較小,因此呈現弱勢的高電位'H'。(5) 輸入端'L'(低電位件輸入端通過100kΩ(一般為10kΩ)電阻接低電位,因此呈現弱勢的低電位'L'。(6) 輸入端'W'電位:件輸入端的兩個電阻100kΩ都很大(一般為10kΩ),因此呈現弱勢浮接'W'的狀態。在上述的9種電位中,除了'0'、'1'、'Z' 3種之外,其餘的電位我們都很少使用到。實際上在電路設計中通常用到的是std_logic。在IEEE Std_logic_1164的程序包中,std_logic是被定義成由std_ulogic所派生出來的一種子數據類型,它表示確定性邏輯,其定義如下:type std_logic is resolved std_ulogic;這裡,resolved是一個定義在IEEE std_logic_1164 Package中的一個函數,此函數用於去除std_ulogic內部素中的'',並將其電位以表格方式做適當轉換。std_logic與STD庫中的bit相比,它引入了高阻態'Z'和不關心'-'這兩個值,可以更靈活地創建三態緩衝和對查找表進行更好地優化。數據類型std_logic之所以說是確定性的,是因為當有多個源值驅動同一個節點時,結果由預定義的仲裁函數確定。std_logic的仲裁函數結果如表5.1所示。表5.1IEEE std_logic_1164中信號值仲裁表UX01ZWLH-UUUUUUUUUUXUXXXXXXXX0UX0X0000X1UXX11111XZUX01ZWLHXWUX01WWWWXLUX01LWLWXHUX01HWWHX-UXXXXXXXX例如,若有'0'、'1'、'Z'同時驅動節點N,則節點值終的確定方式如下。 (1) 在表5.1橫表頭(橫陰影部分)中找到'0',在豎表頭(豎陰影部分)找到'1',兩者相交處仲裁結果為'X'。(2) 再將仲裁結果'X'和'Z'再進行仲裁,終確定為'X'。需要說明的是,由於IEEE std_logic_1164程序包內所定義的內容皆為大寫,因此在使用這些電位時,必須以大寫方式來處理,否則會發生錯誤。例如,考慮如下語句: 




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