Verilog中的UDP
概述
Verilog HDL語言提供了一種擴(kuò)展基元的方法,允許用戶自己定義元件(User Defined Primitives,UDP)。通過UDP,可以把一塊組合邏輯電路或者時(shí)序邏輯電路封裝在一個(gè)UDP內(nèi),并把這個(gè)UDP作為一個(gè)基本的元件來使用。需要注意的是,UDP不能綜合,只能用于仿真。
UDP的定義與調(diào)用
UDP定義的語法和模塊定義類似,但由于UDP和模塊同屬于同級(jí)設(shè)計(jì),因此,UDP定義不能出現(xiàn)在模塊之內(nèi)。UDP定義使用由關(guān)鍵詞primitive和endprimitive封裝起來的一段代碼,這段代碼定義了該UDP的功能。這種功能的定義是通過表來實(shí)現(xiàn)的,即在這段代碼中有一段處于 關(guān)鍵詞table和endtable之間的表,用戶可以通過設(shè)置該表來規(guī)定UDP的功能。
UDP的定義格式如下:
primitive<元件名稱>(<輸出端口名>,<輸入端口名1>,輸入端口名1>...輸入端口名n>);
輸出端口類型聲明(output);
輸入端口類型聲明(input);
輸出端口寄存器 變量說明(reg);
元件初始狀態(tài)說明(initial);
table
? ?<table 表項(xiàng)1>;
? ?<table 表項(xiàng)2>;
? ? ......
? ?<table 表項(xiàng)n>;
endtable
endprimitive
與Verilog HDL中的模塊相比,UDP具有以下特點(diǎn):
(1)UDP的輸出端口只能有一個(gè),且必須位于端口列表的第一項(xiàng)。只有輸出端口能定義為REG類型。
(2)UDP的輸入端口可有多個(gè),一般時(shí)序電路UDP的輸入端口最多9個(gè),組合電路UDP的輸入端口可多至10個(gè)。
(3)所有端口變量的位寬必須是1比特。
(4)在table表項(xiàng)中,只能出現(xiàn)0,1,x這三種狀態(tài),z將被認(rèn)為是x狀態(tài)。
根據(jù)UDP包含的基本邏輯功能,可以將UDP分為組合電路UDP、時(shí)序電路UDP及混合電路UDP,這幾類UDP的差別主要體現(xiàn)在table表項(xiàng)的描述上。
UDP的調(diào)用和verilog HDL中模塊的調(diào)用方法相似,通過位置映射。其語法格式如下:
UDP名 ?例化名(連接端口1信號(hào)名,連接端口2信號(hào)名,連接端口3信號(hào)名,...);
?
UDP定義的全加器
組合邏輯電路的功能列表類似真值表,規(guī)定了不同的輸入值和對應(yīng)的輸出值,表中每一行的形式是"output ,input1,input2...",排列順序與端口列表中的順序相同。組合電路UDP的輸入端口可多至10個(gè)。如果某個(gè)輸入,輸出組合沒有定義輸出,那么就把這種情況的輸出置位x。
3選1多路選擇器
?代表不必關(guān)心相應(yīng)變量的具體值。
UDP原語中可以使用的值
UDP還可以描述具有電平觸發(fā)和邊沿觸發(fā)特性的時(shí)序電路。時(shí)序電路擁有內(nèi)部狀態(tài)序列,其內(nèi)部狀態(tài)必須用寄存器變量進(jìn)行建模,該寄存器的值就是時(shí)序電路的的當(dāng)前狀態(tài),它的下一個(gè)狀態(tài)是由放在基本功能列表中的狀態(tài)轉(zhuǎn)換表決定的,而且寄存器的下一個(gè)狀態(tài)就是這個(gè)時(shí)序電路UDP的輸出值。所以時(shí)序電路UDP由兩部分組成——狀態(tài)寄存器和狀態(tài)列表,定義時(shí)序電路UDP的工作也分為兩部分——初始化狀態(tài)寄存器和描述狀態(tài)列表。
在時(shí)序電路的UDP描述中,01、0x、x1代表著信號(hào)的上升沿。
通過verilog hdl語言給出D觸發(fā)器的UDP描述
表項(xiàng)(01)表示從0轉(zhuǎn)換到1,表項(xiàng)(0x)表示從0轉(zhuǎn)換到x,表項(xiàng)(?0)表示從任意值轉(zhuǎn)換到0,表項(xiàng)(??)表示任意轉(zhuǎn)換。對于未定義的轉(zhuǎn)換,輸出默認(rèn)為x,假定D_Edge_FF為UDP定義,則它現(xiàn)在就能夠像基本門一樣在模塊中使用。
?
??版權(quán)所有權(quán)歸卿萃科技?杭州FPGA事業(yè)部,轉(zhuǎn)載請注明出處 ?
?
? 作者:杭州卿萃科技ALIFPGA?
?
??原文地址:杭州卿萃科技FPGA極客空間 微信公眾號(hào)
?? ?
???掃描二維碼關(guān)注杭州卿萃科技FPGA極客空間?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/alifpga/p/8078555.html
總結(jié)
以上是生活随笔為你收集整理的Verilog中的UDP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring MyBatis多数据源分包
- 下一篇: Andorid 刷新样式一