91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Verilog Basics設計一個仲裁器

發布時間:2021-12-17 16:38:14 來源:億速云 閱讀:204 作者:iii 欄目:互聯網科技

這篇文章主要介紹“如何用Verilog Basics設計一個仲裁器”,在日常操作中,相信很多人在如何用Verilog Basics設計一個仲裁器問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何用Verilog Basics設計一個仲裁器”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Introduction

每個Verilog初學者的夢想是在一天內理解它,至少到達足夠使用的程度。接下來的Verilog Basics的幾篇文章將會讓這個夢想成為現實。

盡管Verilog是并行地執行不同的代碼塊,但它和大多數順序執行的編程語言仍有許多相似之處。我們需要的只是一些數字電路的基礎

在Verilog出現之前,電路設計者使用原理圖進行電路設計。無論復雜程度如何,每個設計都是通過原理圖設計的。這使得設計難以驗證并且容易出錯,導致設計...驗證,設計...驗證,設計...驗證,設計...驗證。繁瑣的迭代。

當Verilog出現時,我們對數字電路設計有了不同的思維方式。使用Verilog進行數字電路的功能設計周期類似于傳統的程序開發周期。

  • Specifications (specs)

  • High level design

  • Low level (micro) design

  • RTL coding

  • Verification

  • Synthesis.


首先我們需要一個specifications,列出我們對設計的限制(restrictions )和要求(requirements

本教程,我們將設計一個仲裁器(arbiter),以下是仲裁器的一些規范。

兩個agent 

異步復位,高有效

固定優先級,agent0優先于agent1

在我們有了規范之后,我們就可以繪制框圖,即設計數據流的黑匣子。

Block diagram of arbiter

如何用Verilog Basics設計一個仲裁器

如果沒有Verilog,下一步我們需要開始繪制狀態機。我們制作一個具有狀態轉換的真值表,然后繪制卡諾圖并化簡優化電路。

如何用Verilog Basics設計一個仲裁器

每個圓圈表示狀態可能處于的狀態。每個狀態都有相對應的輸出。狀態之間的箭頭是不同事件導致的狀態轉換。

例如,最左邊的橙色箭頭表示如果機器處于GNT0狀態(輸出對應于GNT0的信號)并接收到!req_0的輸入,則狀態機移動到狀態IDLE并輸出與之對應的信號。 

這種設計方法適用于小型設計,但對于大型設計,這種流程變得復雜且容易出錯。這就是Verilog的用武之地

Modules

在仲裁塊的框圖中,我們可以看到它有一個名字(“arbiter”)和輸入/輸出端口(req_0,req_1,gnt_0和gnt_1)。

在Verilog中,我們使用module 來描述這個具有相同輸入和輸出的黑匣子。

此代碼如下所示。


module arbiter (// Two slashes make a comment line.clock , // clockreset , // Active high, syn resetreq_0 , // Request 0req_1 , // Request 1gnt_0 , // Grant 0gnt_1 // Grant 1);//-------------Input Ports-----------------------------// Note : all commands are semicolon-delimitedinput clock ;input reset ;input req_0 ;input req_1 ;//-------------Output Ports----------------------------output gnt_0 ;output gnt_1 ;

Data Type

在硬件中存在兩種數據類型

1、可以存儲值的數據類型(例如:flip-flop)。

2、無法存儲值的數據類型,但可以連接兩個點(例如:wire)。

第一種類型在Verilog中稱為reg(“register”的縮寫)。第二種數據類型稱為導線(“wire”)。

例如:


wire and_gate_output; reg d_flip_flop_output; reg [7:0] address_bus;

Operators

Verilog中的運算符與其他編程語言幾乎相同。 

Operator Type

Operator Symbol

Operation Performed

Arithmetic

*

Multiply


/

Division


+

Add


-

Subtract


%

Modulus


+

Unary plus


-

Unary minus

Logical

!

Logical negation


&&

Logical and


||

Logical or

Relational

>

Greater than


<

Less than


>=

Greater than or equal


<=

Less than or equal

Equality

==

Equality


!=

inequality

Reduction

~

Bitwise negation


~&

nand


|

or


~|

nor


^

xor


^~

xnor


~^

xnor

Shift

>>

Right shift


<<

Left shift

Concatenation

{ }

Concatenation

Conditional

?

conditional

例如:

a = b + c; a = 1 << 5; a =!b; a = ~b;

到此,關于“如何用Verilog Basics設計一個仲裁器”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新余市| 上饶县| 磴口县| 金乡县| 琼中| 南丹县| 横峰县| 潍坊市| 永昌县| 凌源市| 三原县| 德令哈市| 介休市| 东平县| 都匀市| 安宁市| 思茅市| 鹤山市| 蓝山县| 南安市| 固阳县| 手机| 西安市| 新宁县| 龙海市| 和政县| 横峰县| 鸡东县| 博湖县| 华安县| 孝义市| 来宾市| 南皮县| 松溪县| 杂多县| 新乡市| 越西县| 家居| 厦门市| 亚东县| 光泽县|