VHDL硬体描述语言概论 - 国立中央大学.PPT

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VHDL硬体描述语言概论 - 国立中央大学

* 在 architecture 的 BEGIN - END 中所有的陳述(statement)都是平行的, 也就是說當輸入訊號改變時, 所有相關的事件(event)都會被排入, 然後隨著時間做相對輸出的改變. 範例中訊號 a, b 會同時觸發 signal assignment 及 process. 在 process 中的 statement 卻是依序(sequential)進行的, process 在下一章會提到. * 基本的Signal assignment 是一個箭頭符號 : = , 將右值或運算結果傳給左邊的訊號線. Signal assignment 也可以加上時間的延遲, 如 a = b AFTER 10ns 表示由訊號 b 變化到造成 a 改變的延遲是10ns. 內定是採 inertial delay, 若要用 transport delay 則可寫成 : a = TRANSPORT b AFTER 10ns 箭頭的右手邊可包含運算式(加減乘除等)或邏輯關係, 邏輯關係包括AND, OR, NAND, NOR, NOT, XOR 六種主要運算元. 數值的表示 : 邏輯值用單引號括起來, 如邏輯 1 : ‘1’ 陣列, 字串等用雙引號, 如 “0101” * 條件式給值(conditional signal assignment)的陳述中, 當條件成立時就將右值或訊號傳給左值, 否則就看 ELSE 以後的條件. 這種描述相當於高階語言中的連續 if-else . 範例中若 a, b 都等於 ‘0’ 時第一行條件成立, 所以 sel 的值最後會等於 1 . 當 a, b 為其他值可類推. 最後一行是所以條件都不成立時, sel 會等於 4. * 選擇式給值(select signal assignment)的陳述中, 左值是由運算式(expression)結果或單一變數來做決定, 當運算結果不在列舉範圍內, 則最後一行 WHEN OTHERS 會被執行. 相當於高階語言中的 case. 範例中的 q 是由單一變數 sel 來選擇, 當 sel = 0 時 q = i0, 依此類推, 最後一行不在範圍內時 q 會變為 ‘X’ - unknown * 綜合前面的兩種陳述語法, 以四對一的多工選擇器為範例 : (1) 內部信號 sel 由輸入的 a, b 做條件式給值(condition), 當 a, b 為 00, 01, 10, 11 時, sel 分別編成 0, 1, 2, 3; 最後不在範圍內則編為 4. (2) 再由 sel做選擇式給值(select), 決定輸出訊號 q 該傳哪一個輸入(i0~i3). 不在範圍內的, 如 sel = 4 時, 輸出為 unknown 註內部訊號 sel 的資料形態為整數(INTEGER), 所以不用加引號. * 以二對四的解碼器(decoder)為例, 左邊表格是解碼器的 function table, 輸出的訊號 word 依輸入 addr 來選擇. 範例中的 architecture 只用到一個條件的式陳述. 條件與結果的關係可比對 function table. 最後不在範圍內時 word = “1111”. 前一個範例中的多工選擇器也可以用單一的陳述來完成. 本例中所用到的資料型態為 STD_LOGIC_VECTOR, 定義在 IEEE 的標準資料庫中. 這種型態也就是所謂的 bus, 或是說由邏輯組成的陣列. (3 DOWNTO 0) 表示最高位元數(MSB)為3, 最低(LSB) 為0. 相反的話則宣告為(0 TO 3). * 相同的功能設計下, Bad example 中有四個條件陳述, 而四個的目標都用來改變訊號 q . 若 a, b 都為 ‘0’ 的條件成立, 第一行使 q = i0, 而另外三行則會使 q = ‘0’, 造成 multi-driven 的問題. 採多數決定制的話, 最後的 q 會是 ‘0’, 其他的模擬軟體也可能使結果變成 ‘x’ - unknown. Better example 是較好的解決方法, 針對訊號 q 只用了一個條件陳述, 串連了ELSE 來滿足其他條件的需求. 這樣就不會產生 multi-driven 的問題. 設計上建議最好不要用兩個或更多的陳述去改變相同訊號, 否則會潛在 multi-driven 的問題導致結果不正確. * Generic 用於在 architecture 中使用 instance 時, 傳遞一些的訊息, 用來調整時間延遲的估算, 或 bus 寬度的改變等參數. 使用generic可使電路

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档