0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Verilog HDL指定用戶定義原語U D P的能力

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2021-04-08 10:43 ? 次閱讀

用戶定義的原語

在前一章中,我們介紹了Verilog HDL提供的內(nèi)置基本門。本章講述Verilog HDL指定用戶定義原語U D P的能力。

U D P的實(shí)例語句與基本門的實(shí)例語句完全相同,即 U D P實(shí)例語句的語法與基本門的實(shí)例語句語法一致。

6.1 UDP的定義

使用具有如下語法的U D P說明定義U D P。

p r i m i t i v e U D P _ n a m e (OutputName, List_of_inputs )

O u t p u t _ d e c l a r a t i o n

L i s t _ o f _ i n p u t _ d e c l a r a t i o n s

[R e g _ d e c l a r a t i o n]

[I n i t i a l _ s t a t e m e n t]

t a b l e

L i s t _ o f _ t a b e l _ e n t r i e s

e n d t a b l e

e n d p r i m i t i v e

U D P的定義不依賴于模塊定義,因此出現(xiàn)在模塊定義以外。也可以在單獨(dú)的文本文件中

定義U D P。U D P只能有一個(gè)輸出和一個(gè)或多個(gè)輸入。第一個(gè)端口必須是輸出端口。此外,輸出可以取值0、1或x(不允許取z值)。輸入中出現(xiàn)值z以x處理。U D P的行為以表的形式描述。在U D P中可以描述下面兩類行為:

1) 組合電路

2) 時(shí)序電路(邊沿觸發(fā)和電平觸發(fā))

6.2 組合電路UDP

在組合電路U D P中,表規(guī)定了不同的輸入組合和相對應(yīng)的輸出值。沒有指定的任意組合輸出為x。下面以2 - 1多路選擇器為例加以說明。

p r i m i t i v e MUX2x1 (Z, Hab, Bay, Sel ) ;

o u t p u t Z;

i n p u t Hab,Bay, Sel;

t a b l e

// Hab Bay Sel : Z 注:本行僅作為注釋。

0 ? 1 : 0 ;

1 ? 1 : 1 ;

? 0 0 : 0 ;

? 1 0 : 1 ;

0 0 x : 0 ;

1 1 x : 1 ;

e n d t a b l e

e n d p r i m i t i v e

字符?代表不必關(guān)心相應(yīng)變量的具體值,即它可以是0、1或x。輸入端口的次序必須與表中各項(xiàng)的次序匹配,即表中的第一列對應(yīng)于原語端口隊(duì)列的第一個(gè)輸入 (例子中為 H a b),第二列是 B a y,第三列是 S e l。在多路選擇器的表中沒有輸入組合 0 1x項(xiàng)(還有其它一些項(xiàng) );在這種情況下,輸出的缺省值為 x(對其它未定義的項(xiàng)也是如此 )。

b7494e7c-92eb-11eb-8b86-12bb97331649.png

圖6 - 1為使用2 - 1多路選擇器原語組成的4 - 1多路選擇器的示例。

b75b3c86-92eb-11eb-8b86-12bb97331649.png

如上例所示,在U D P實(shí)例中,總共可以指定 2個(gè)時(shí)延,這是由于U D P的輸出可以取值0、1或x(無截止時(shí)延)。

6.3 時(shí)序電路UDP

在時(shí)序電路U D P中,使用1位寄存器描述內(nèi)部狀態(tài)。該寄存器的值是時(shí)序電路U D P的輸出值。共有兩種不同類型的時(shí)序電路U D P:一種模擬電平觸發(fā)行為;另一種模擬邊沿觸發(fā)行為。時(shí)序電路U D P使用寄存器當(dāng)前值和輸入值決定寄存器的下一狀態(tài) (和后繼的輸出)。

6.3.1 初始化狀態(tài)寄存器

時(shí)序電路U D P的狀態(tài)初始化可以使用帶有一條過程賦值語句的初始化語句實(shí)現(xiàn)。形式如下:

i n i t i a l r e g _ n a m e = 0,1,or x;

初始化語句在U D P定義中出現(xiàn)。

6.3.2 電平觸發(fā)的時(shí)序電路UDP

下面是D鎖存器建模的電平觸發(fā)的時(shí)序電路 U D P示例。只要時(shí)鐘為低電平 0,數(shù)據(jù)就從輸入傳遞到輸出;否則輸出值被鎖存。

p r i m i t i v e Latch (Q, Clk, D) ;

o u t p u t Q;

r e g Q;

i n p u t Clk, D;

t a b l e

// Clk D Q(State) Q( n e x t )

0 1 : ? : 1 ;

0 0 : ? : 0 ;

1 ? : ? : - ;

e n d t a b l e

e n d p r i m i t i v e

“-”字符表示值“無變化”。注意U D P的狀態(tài)存儲在寄存器D中。

6.3.3 邊沿觸發(fā)的時(shí)序電路UDP

下例用邊沿觸發(fā)時(shí)序電路U D P為D邊沿觸發(fā)觸發(fā)器建模。初始化語句用于初始化觸發(fā)器的狀態(tài)。

b76b5486-92eb-11eb-8b86-12bb97331649.png

表項(xiàng)( 0 1 )表示從0轉(zhuǎn)換到1,表項(xiàng)( 0 x )表示從0轉(zhuǎn)換到x,表項(xiàng)( ? 0 )表示從任意值( 0 , 1或x)轉(zhuǎn)換到0,表項(xiàng)( ? ? )表示任意轉(zhuǎn)換。對任意未定義的轉(zhuǎn)換,輸出缺省為 x。

假定D _ E d g e _ F F為U D P定義,它現(xiàn)在就能夠象基本門一樣在模塊中使用,如下面的 4位寄存器所示。

b7796b3e-92eb-11eb-8b86-12bb97331649.png

6.3.4 邊沿觸發(fā)和電平觸發(fā)的混合行為

在同一個(gè)表中能夠混合電平觸發(fā)和邊沿觸發(fā)項(xiàng)。在這種情況下,邊沿變化在電平觸發(fā)之前處理,即電平觸發(fā)項(xiàng)覆蓋邊沿觸發(fā)項(xiàng)。下例是帶異步清空的D觸發(fā)器的U D P描述。

b78611ae-92eb-11eb-8b86-12bb97331649.png

6.4 另一實(shí)例

下面是3位表決電路的U D P描述。如果輸入向量中存在2個(gè)或更多的1,則輸出為1。

b791fb4a-92eb-11eb-8b86-12bb97331649.png

6.5 表項(xiàng)匯總

b7a02184-92eb-11eb-8b86-12bb97331649.png

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1335

    瀏覽量

    109860
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    609

    瀏覽量

    28288
  • 選擇器
    +關(guān)注

    關(guān)注

    0

    文章

    106

    瀏覽量

    14489

原文標(biāo)題:Verilog入門-用戶定義的原語

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    FPGA芯片架構(gòu)和資源有深入的理解,精通Verilog HDL、VHDL

    、計(jì)算機(jī)相關(guān)專業(yè),具有良好的專業(yè)基礎(chǔ)知識。 2.工作年限不限,有工作經(jīng)驗(yàn)或優(yōu)秀應(yīng)屆畢業(yè)生亦可。 3.對FPGA芯片架構(gòu)和資源有深入的理解,精通Verilog HDL、VHDL編程語言,熟悉時(shí)序約束、時(shí)序分析
    發(fā)表于 09-15 15:23

    FPGA Verilog HDL有什么奇技巧?

    今天給大俠帶來在FPAG技術(shù)交流群里平時(shí)討論的問題答疑合集(九),以后還會多推出本系列,話不多說,上貨。 交流問題(一) Q:Verilog 有什么奇技淫巧? A:在 Verilog 中,以下這些
    發(fā)表于 09-12 19:10

    FPGA verilog HDL實(shí)現(xiàn)中值濾波

    今天給大俠簡單帶來FPGA verilog HDL實(shí)現(xiàn)中值濾波,話不多說,上貨。一、實(shí)現(xiàn)步驟: 1、查看了中值濾波實(shí)現(xiàn)相關(guān)的網(wǎng)站和paper; 2、按照某篇paper的設(shè)計(jì)思想進(jìn)行編程實(shí)現(xiàn)
    發(fā)表于 06-18 18:50

    FPGA設(shè)計(jì)中 Verilog HDL實(shí)現(xiàn)基本的圖像濾波處理仿真

    今天給大俠帶來FPGA設(shè)計(jì)中用Verilog HDL實(shí)現(xiàn)基本的圖像濾波處理仿真,話不多說,上貨。 1、用matlab代碼,準(zhǔn)備好把圖片轉(zhuǎn)化成Vivado Simulator識別的格式,即每行一
    發(fā)表于 05-20 16:44

    xilinx中的carry4原語在高云FPGA中用什么原語替代?

    xilinx中的carry4原語在高云FPGA中用什么原語替代
    發(fā)表于 05-09 16:13

    有什么好用的verilog HDL編輯工具可用?

    有什么好用的verilog HDL編輯工具可用?最好能集成實(shí)時(shí)的verilog HDL語法檢測、自定義模塊識別觸發(fā)等功能,最好能夠免費(fèi);
    發(fā)表于 04-28 11:00

    如何定義多個(gè)變量從指定的位置開始存放?

    請教大家一個(gè)問題{:3:} 如下面的3個(gè)變量這樣定義u8V1 __attribute__((at(0x20004000))); u16 V2 __attribute__
    發(fā)表于 04-17 06:50

    verilog調(diào)用模塊端口對應(yīng)方式

    Verilog是一種硬件描述語言(HDL),廣泛應(yīng)用于數(shù)字電路設(shè)計(jì)和硬件驗(yàn)證。在Verilog中,模塊是構(gòu)建電路的基本單元,而模塊端口對應(yīng)方式則用于描述模塊之間信號傳遞的方式。本文將介紹
    的頭像 發(fā)表于 02-23 10:20 ?1371次閱讀

    verilog function函數(shù)的用法

    Verilog 是一種硬件描述語言 (HDL),主要用于描述數(shù)字電子電路的行為和結(jié)構(gòu)。在 Verilog 中,函數(shù) (Function) 是一種用于執(zhí)行特定任務(wù)并返回一個(gè)值的可重用代碼塊。函數(shù)在
    的頭像 發(fā)表于 02-22 15:49 ?4509次閱讀

    Verilog HDL數(shù)字集成電路設(shè)計(jì)方法概述

    電子發(fā)燒友網(wǎng)站提供《Verilog HDL數(shù)字集成電路設(shè)計(jì)方法概述.zip》資料免費(fèi)下載
    發(fā)表于 02-03 09:27 ?2次下載

    通過HDL制作了一個(gè)4位計(jì)數(shù)組件VERILOG ,如何設(shè)置像這些標(biāo)準(zhǔn)組件這樣的API?

    我通過 HDL 制作了一個(gè) 4 位計(jì)數(shù)組件 VERILOG ,如何設(shè)置像這些標(biāo)準(zhǔn)組件這樣的 API? 例如 counter_writeCounter ()、counter_readCounter () 的命令。
    發(fā)表于 01-25 06:06

    #2024,立Flag了嘛? #spinal HDL的基本模塊結(jié)構(gòu)

    ]):Unit = { SpinalVerilog(new Demo01)// 生成對應(yīng)的Verilog HDL文件 } } 生成對應(yīng)的Verilog HDL // Gener
    發(fā)表于 01-21 11:15

    #2024,立Flag了嘛? # 開年之疑問重重

    ,所以就有了關(guān)于開發(fā)語言選擇的問題: 這里貼一下,大佬的一些看法: SpinalHDL相比Verilog 1:徹底的參數(shù)化能力,自定義組件,自定義Lib,真正實(shí)現(xiàn)可重用; 2:位寬推導(dǎo)
    發(fā)表于 01-13 09:18

    例說Verilog HDL和VHDL區(qū)別

    Verilog和VHDL之間的區(qū)別將在本文中通過示例進(jìn)行詳細(xì)說明。對優(yōu)點(diǎn)和缺點(diǎn)的Verilog和VHDL進(jìn)行了討論。
    的頭像 發(fā)表于 12-20 09:03 ?2745次閱讀
    例說<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>和VHDL區(qū)別

    淺談Verilog HDL代碼編寫風(fēng)格

    深層次的問題,對于這個(gè)行業(yè)來說可能我才是一直腳踩在門外面。所以這篇文章是寫給一些剛開始學(xué)習(xí)FPGA、Verilog HDL的同學(xué),我看過一些大神寫的代碼,然后盡量模仿大神寫法,經(jīng)過好幾個(gè)大神的影響和自己
    的頭像 發(fā)表于 11-20 10:04 ?661次閱讀
    淺談<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>代碼編寫風(fēng)格