版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2015年f=ab…Verilog硬件描述語(yǔ)言
VerilogHDL主講陳付龍計(jì)算機(jī)科學(xué)與技術(shù)系第5講VerilogHDL行為建模方法學(xué)習(xí)目標(biāo)結(jié)構(gòu)化過(guò)程always和initial定義阻塞(blocking)和非阻塞(non-blocking)過(guò)程性賦值語(yǔ)句。理解行為級(jí)建模中基于延遲的時(shí)序控制機(jī)制。學(xué)習(xí)使用一般延遲、內(nèi)嵌賦值延遲和零延遲。理解行為級(jí)建模中基于事件的時(shí)序控制機(jī)制。學(xué)習(xí)使用一般事件控制、命名事件控制和事件OR(或)控制。在行為級(jí)建模中使用電平敏感的時(shí)序控制機(jī)制。使用if和else解釋條件語(yǔ)句。使用case,casex和casez語(yǔ)句講解多路分支。理解while,for,repeat和forever等循環(huán)語(yǔ)句。定義順序塊和并行塊語(yǔ)句。理解命名塊和命名塊的禁用。在設(shè)計(jì)實(shí)例中進(jìn)行行為級(jí)建模。5.1結(jié)構(gòu)化過(guò)程語(yǔ)句在Verilog中有兩種結(jié)構(gòu)化的過(guò)程語(yǔ)句:initial語(yǔ)句和always語(yǔ)句,它們是行為級(jí)建模的兩種基本語(yǔ)句。其他所有的行為語(yǔ)句只能出現(xiàn)在這兩種結(jié)構(gòu)化過(guò)程語(yǔ)句里。與C語(yǔ)言不同,Verilog在本質(zhì)上是并發(fā)而非順序的。Verilog中的各個(gè)執(zhí)行流程(進(jìn)程)并發(fā)執(zhí)行,而不是順序執(zhí)行的。每個(gè)initial語(yǔ)句和always語(yǔ)句代表一個(gè)獨(dú)立的執(zhí)行過(guò)程,每個(gè)執(zhí)行過(guò)程從仿真時(shí)間0開(kāi)始執(zhí)行,并且這兩種語(yǔ)句不能嵌套使用。initial語(yǔ)句所有在initial語(yǔ)句內(nèi)的語(yǔ)句構(gòu)成了一個(gè)initial塊。initial塊從仿真0時(shí)刻開(kāi)始執(zhí)行,在整個(gè)仿真過(guò)程中只執(zhí)行一次。如果一個(gè)模塊中包括了若干個(gè)initial塊,則這些initial塊從仿真0時(shí)刻開(kāi)始并發(fā)執(zhí)行,且每個(gè)塊的執(zhí)行是各自獨(dú)立的。如果在塊內(nèi)包含了多條行為語(yǔ)句,那么需要將這些語(yǔ)句組成一組,一般是使用關(guān)鍵字begin和end將它們組合為一個(gè)塊語(yǔ)句;如果塊內(nèi)只有一條語(yǔ)句,則不必使用begin和end。由于initial塊語(yǔ)句在整個(gè)仿真期間只能執(zhí)行一次,因此它一般被用于初始化、信號(hào)監(jiān)視、生成仿真波形等目的。在變量聲明的同時(shí)進(jìn)行初始化同時(shí)進(jìn)行端口/數(shù)據(jù)聲明和初始化always語(yǔ)句always語(yǔ)句包括的所有行為語(yǔ)句構(gòu)成了一個(gè)always語(yǔ)句塊。該always語(yǔ)句塊從仿真0時(shí)刻開(kāi)始順序執(zhí)行其中的行為語(yǔ)句;在最后一條執(zhí)行完成后,再次開(kāi)始執(zhí)行其中的第一條語(yǔ)句,如此循環(huán)往復(fù),直至整個(gè)仿真結(jié)束。always語(yǔ)句通常用于對(duì)數(shù)字電路中一組反復(fù)執(zhí)行的活動(dòng)進(jìn)行建模。例如時(shí)鐘信號(hào)發(fā)生器,每半個(gè)時(shí)鐘周期時(shí)鐘信號(hào)翻轉(zhuǎn)一次。在現(xiàn)實(shí)電路中只要電源接通,時(shí)鐘信號(hào)發(fā)生器從時(shí)刻0就有效,一直工作下去。5.2過(guò)程賦值語(yǔ)句過(guò)程賦值語(yǔ)句的更新對(duì)象是寄存器、整數(shù)、實(shí)數(shù)或時(shí)間變量。這些類(lèi)型的變量在被賦值后,其值將保持不變,直到被其他過(guò)程賦值語(yǔ)句賦予新值。用法:過(guò)程賦值語(yǔ)句的左側(cè)值可以是:1.reg,整型數(shù)、實(shí)型數(shù)、時(shí)間寄存器變量或存儲(chǔ)器單元。
2.
上述各種類(lèi)型的位選(例如,addr[0])。3.
上述各種類(lèi)型的域選(例如,addr[31:16])。上面三種類(lèi)型的拼接。Verilog包括兩種類(lèi)型的過(guò)程賦值語(yǔ)句:阻塞賦值和非阻塞賦值語(yǔ)句阻塞賦值語(yǔ)句阻塞賦值語(yǔ)句使用“=”作為賦值符,在一個(gè)begin-end塊中表現(xiàn)為串行行為。x=0執(zhí)行完成之后,才會(huì)執(zhí)行y=1
仿真0時(shí)刻執(zhí)行
仿真時(shí)刻15執(zhí)行仿真時(shí)刻25執(zhí)行1.如果右側(cè)表達(dá)式的位寬較寬,則將保留從最低位開(kāi)始的右側(cè)值,把超過(guò)左側(cè)位寬的高位丟棄;2.如果左側(cè)位寬大于右側(cè)位寬,則不足的高位補(bǔ)0;非阻塞賦值使用“<=”作為賦值符。x=0與y=1同時(shí)執(zhí)行
仿真0時(shí)刻執(zhí)行仿真時(shí)刻15執(zhí)行仿真時(shí)刻10執(zhí)行仿真0時(shí)刻執(zhí)行注意:不要在同一個(gè)always塊中混合使用阻塞和非阻塞賦值語(yǔ)句。非阻塞賦值語(yǔ)句的應(yīng)用對(duì)程序:有如下的特點(diǎn):1.在每個(gè)時(shí)鐘上升沿到來(lái)時(shí)讀取in1,in2,in3和reg1,計(jì)算右側(cè)表達(dá)式的值;2.對(duì)左值的賦值由仿真器調(diào)度到相應(yīng)的仿真時(shí)刻,延遲時(shí)間由語(yǔ)句中內(nèi)嵌的延遲值確定。在本例中,對(duì)reg1的賦值需要等一個(gè)時(shí)間單位,對(duì)reg2的賦值需要等到時(shí)鐘信號(hào)下降沿到來(lái)的時(shí)刻,對(duì)reg3的賦值需要等一個(gè)時(shí)間單位;3.每個(gè)賦值操作在被調(diào)度的仿真時(shí)刻完成。注意,對(duì)左側(cè)變量的賦值使用的是由仿真器保存的表達(dá)式“舊值”。在本例中,對(duì)reg3賦值使用的是reg1的“舊值”,而不是在此之前對(duì)reg1賦予的新值,reg1的“舊值”是在賦值事件調(diào)度時(shí)由仿真器保存的。使用非阻塞賦值來(lái)避免競(jìng)爭(zhēng)采用阻塞賦值完成產(chǎn)生了競(jìng)爭(zhēng)的情況:a=b和b=a,具體執(zhí)行順序的先后取決于所使用的仿真器,因此這段代碼達(dá)不到交換a和b值的目的。在每個(gè)時(shí)鐘上升沿到來(lái)的時(shí)候,仿真器讀取每個(gè)操作數(shù)的值,進(jìn)而計(jì)算表達(dá)式的值并保存在臨時(shí)變量中;當(dāng)賦值的時(shí)候,仿真器將這些保存的值賦予非阻塞賦值語(yǔ)句的左側(cè)變量。5.3基于延遲的時(shí)序控制Verilog提供了三種時(shí)序控制方法:基于延遲的時(shí)序控制、基于事件的時(shí)序控制和電平敏感的時(shí)序控制?;谘舆t的時(shí)序控制出現(xiàn)在表達(dá)式中,它指定了語(yǔ)句開(kāi)始執(zhí)行到執(zhí)行完成之間的時(shí)間間隔。其格式如下:延遲值可以是數(shù)字、標(biāo)識(shí)符或表達(dá)式,需要在延遲值前加上關(guān)鍵字#。對(duì)于過(guò)程賦值,Verilog提供了三種類(lèi)型的延遲控制:常規(guī)延遲控制、賦值內(nèi)嵌延遲控制和零延遲控制。常規(guī)延遲控制常規(guī)延遲控制位于賦值語(yǔ)句的左邊,用于指定一個(gè)非零延遲值。內(nèi)嵌賦值延遲控制除了可以將延遲控制置于賦值語(yǔ)句之前,還可以將它嵌入到賦值語(yǔ)句中,放在賦值符的右邊。這種延遲方式的效果與常規(guī)延遲賦值是完全不同的。零延遲控制在同一仿真時(shí)刻,位于不同always和initial塊中的過(guò)程語(yǔ)句有可能被同時(shí)計(jì)算,但是執(zhí)行(賦值)順序是不確定的,與使用的仿真器類(lèi)型有關(guān)。在這種情況下,零延遲控制可以保證帶零延遲控制的語(yǔ)句將在執(zhí)行時(shí)刻相同的多條語(yǔ)句中最后執(zhí)行,從而避免發(fā)生競(jìng)爭(zhēng)。但需要注意的是,如果存在多條帶有零延遲的語(yǔ)句,則它們之間的執(zhí)行順序也將是不確定的。具有零延遲,語(yǔ)句被最后執(zhí)行,仿真0時(shí)刻結(jié)束時(shí),x和y的值都為1,但它們的執(zhí)行順序是不確定的。盡量不要使用零延遲控制5.4基于事件的時(shí)序控制在Verilog中,事件是指某一個(gè)寄存器或線(xiàn)網(wǎng)變量的值發(fā)生了變化。Verilog提供了4種類(lèi)型的事件控制:常規(guī)事件控制、命名事件控制、OR(或)事件控制和電平敏感時(shí)序控制。常規(guī)事件控制事件控制使用符號(hào)@來(lái)說(shuō)明,語(yǔ)句繼續(xù)執(zhí)行的條件是信號(hào)的值發(fā)生變化、發(fā)生正向跳變和負(fù)向跳變。關(guān)鍵字posedge用于指明正向跳變,negedge用于指明負(fù)向跳變。命名事件控制Verilog語(yǔ)言提供了命名事件控制機(jī)制。用戶(hù)可以在程序中聲明event(事件)類(lèi)型的變量,觸發(fā)該變量,并且識(shí)別該事件是否已經(jīng)發(fā)生。命名事件由關(guān)鍵字event聲明,它不能保存任何值。事件的觸發(fā)用符號(hào)->表示;判斷事件是否發(fā)生使用符號(hào)@來(lái)識(shí)別。OR事件控制有時(shí),多個(gè)信號(hào)或者事件中發(fā)生的任意一個(gè)變化都能夠觸發(fā)語(yǔ)句或語(yǔ)句塊的執(zhí)行。在Verilog語(yǔ)言中,可以使用“或”表達(dá)式來(lái)表示這種情況。由關(guān)鍵詞“or”連接的多個(gè)事件名或者信號(hào)名組成的列表稱(chēng)為敏感列表。在跳變沿敏感的觸發(fā)器中,也可以使用關(guān)鍵詞“,”來(lái)代替“or”。如果組合邏輯塊語(yǔ)句的輸入變量很多,那么編寫(xiě)敏感列表會(huì)很繁瑣并且容易出錯(cuò)。針對(duì)這種情況,Verilog提供了另外兩個(gè)特殊的符號(hào):@*和@(*),它們都表示對(duì)其后語(yǔ)句塊中的所有輸入變量的變化是敏感的。5.5電平敏感時(shí)序控制Verilog同時(shí)也允許使用另外一種形式表示的電平敏感時(shí)序控制(即后面的語(yǔ)句和語(yǔ)句塊需要等待某個(gè)條件為真才能執(zhí)行)。Verilog語(yǔ)言用關(guān)鍵字wait來(lái)表示等待電平敏感的條件為真。仿真器連續(xù)監(jiān)視count_enable的值。如果其值為0,則不執(zhí)行后面的語(yǔ)句,仿真會(huì)停頓下來(lái);如果其值為1,則在20個(gè)時(shí)間單位之后執(zhí)行這條語(yǔ)句。如果count_enable始終為1,那么count將每20個(gè)時(shí)間單位加1。5.6條件語(yǔ)句條件語(yǔ)句用于根據(jù)某個(gè)條件來(lái)確定是否執(zhí)行其后的語(yǔ)句,關(guān)鍵字if和else用于表示條件語(yǔ)句。Verilog語(yǔ)言共有三種類(lèi)型的條件語(yǔ)句,用法如下:5.7多路分支語(yǔ)句——case當(dāng)條件語(yǔ)句中選項(xiàng)的數(shù)目很多時(shí),使用if-else語(yǔ)句就會(huì)很不方便,這時(shí)可以使用case語(yǔ)句來(lái)解決這個(gè)問(wèn)題。case語(yǔ)句使用關(guān)鍵字case,endcase和default來(lái)表示。語(yǔ)法如下:case語(yǔ)句中的每一條分支語(yǔ)句都可以是一條語(yǔ)句或一組語(yǔ)句。多條語(yǔ)句需要使用關(guān)鍵字begin和end組合為一個(gè)塊語(yǔ)句。在執(zhí)行時(shí),首先計(jì)算條件表達(dá)式的值,然后按順序?qū)⑺透鱾€(gè)候選項(xiàng)進(jìn)行比較,如果和全部候選項(xiàng)都不相等,則執(zhí)行default_statement語(yǔ)句。注意,default_statement語(yǔ)句是可選的,而且在一條case語(yǔ)句中不允許有多條default_statement。另外,case語(yǔ)句可以嵌套使用。case語(yǔ)句類(lèi)似于多路選擇器,下面使用case語(yǔ)句實(shí)現(xiàn)四選一多路選擇器。case語(yǔ)句逐位比較表達(dá)式的值和候選項(xiàng)的值,每一位的值可能是0,1,x或z。上例中只考慮0和1的情況,將x和z的情況歸結(jié)為default。我們也可以將這部分進(jìn)行單獨(dú)的說(shuō)明,如下:casex/casezcase語(yǔ)句還有兩個(gè)變形:casex和casez。casez語(yǔ)句將條件表達(dá)式或候選項(xiàng)表達(dá)式中的z作為無(wú)關(guān)值,所有值為z的位也可以用“?”來(lái)代表,即對(duì)非x的位置casex語(yǔ)句將條件表達(dá)式或候選項(xiàng)表達(dá)式中的x作為無(wú)關(guān)值。casex和casez的使用可以讓我們?cè)赾ase表達(dá)式中只對(duì)非x或非z的位置進(jìn)行比較。casez的使用與casex的使用類(lèi)似。5.7循環(huán)語(yǔ)句Verilog語(yǔ)言中有四種類(lèi)型的循環(huán)語(yǔ)句:while,for,repeat和forever。這些循環(huán)語(yǔ)句的語(yǔ)法與C語(yǔ)言中的循環(huán)語(yǔ)句相當(dāng)類(lèi)似。循環(huán)語(yǔ)句只能在always或initial塊中使用,循環(huán)語(yǔ)句可以包含延遲表達(dá)式。while循環(huán)while循環(huán)使用關(guān)鍵字while來(lái)表示。while循環(huán)執(zhí)行的中止條件是while表達(dá)式的值為假。如果遇到while語(yǔ)句時(shí)while表達(dá)式的值已經(jīng)為假,那么循環(huán)語(yǔ)句一次也不執(zhí)行。for循環(huán)for循環(huán)使用關(guān)鍵字for來(lái)表示,它由三個(gè)部分組成:
1.初始條件;2.檢查終止條件是否為真;3.改變控制變量的過(guò)程賦值語(yǔ)句。for循環(huán)語(yǔ)句因此它的寫(xiě)法較while循環(huán)更為緊湊。但是要注意,while循環(huán)比f(wàn)or循環(huán)更為通用,并不是在所有情況下都能使用for循環(huán)來(lái)代替while循環(huán)。repeat循環(huán)關(guān)鍵字repeat用來(lái)表示這種循環(huán)。repeat的功能是執(zhí)行固定次數(shù)的循環(huán),它不能像while循環(huán)那樣根據(jù)邏輯表達(dá)式來(lái)確定循環(huán)是否繼續(xù)進(jìn)行。repeat循環(huán)的次數(shù)必須是一個(gè)常量、一個(gè)變量或者一個(gè)信號(hào)。如果循環(huán)重復(fù)次數(shù)是變量或者信號(hào),循環(huán)次數(shù)是循環(huán)開(kāi)始執(zhí)行時(shí)變量或者信號(hào)的值,而不是循環(huán)執(zhí)行期間的值。forever循環(huán)關(guān)鍵字forever用來(lái)表示永久循環(huán)。在永久循環(huán)中不包含任何條件表達(dá)式,只執(zhí)行無(wú)限的循環(huán),直到遇到系統(tǒng)任務(wù)$finish為止。如果需要從forever循環(huán)中退出,可以使用disable語(yǔ)句。例1:時(shí)鐘發(fā)生器例2:在每個(gè)時(shí)鐘正跳變沿處使兩個(gè)寄存器的值一致5.8順序塊和并行塊塊語(yǔ)句的作用是將多條語(yǔ)句合并成一組,使它們像一條語(yǔ)句那樣。在前面的例子中,我們使用關(guān)鍵字begin和end將多條語(yǔ)句合并成一組。由于這些語(yǔ)句需要一條接一條地順序執(zhí)行,因此常稱(chēng)為順序塊。Verilog語(yǔ)言中的塊語(yǔ)句類(lèi)型有兩種:順序塊和并行塊。我們將討論三種有特點(diǎn)的塊語(yǔ)句:命名塊、命名塊的禁用以及嵌套的塊。塊語(yǔ)句的類(lèi)型——順序塊順序塊由關(guān)鍵字begin和end構(gòu)成,用于將多條語(yǔ)句組成一個(gè)塊,它的特點(diǎn)是:1.順序塊中的語(yǔ)句是一條接一條按順序執(zhí)行的;只有前面的語(yǔ)句執(zhí)行完成之后才能執(zhí)行后面的語(yǔ)句(除了帶有內(nèi)嵌延遲控制的非阻塞賦值語(yǔ)句);2.如果語(yǔ)句包括延遲或事件控制,那么延遲總是相對(duì)于前面那條語(yǔ)句執(zhí)行完成的仿真時(shí)間的。順序塊的例子在前面學(xué)習(xí)中涉及很多,如塊語(yǔ)句的類(lèi)型——并行塊并行塊由關(guān)鍵字fork和join聲明,它具有以下特性:1.并行塊內(nèi)的語(yǔ)句并發(fā)執(zhí)行;2.語(yǔ)句執(zhí)行的順序是由各自語(yǔ)句中的延遲或事件控制決定的;3.語(yǔ)句中的延遲或事件控制是相對(duì)于塊語(yǔ)句開(kāi)始執(zhí)行的時(shí)刻而言的。并行塊與順序塊之間的根本區(qū)別在于:當(dāng)控制轉(zhuǎn)移到塊語(yǔ)句的時(shí)刻,并行塊中所有的語(yǔ)句同時(shí)開(kāi)始執(zhí)行,語(yǔ)句之間的先后順序是無(wú)關(guān)緊要的。并行塊為我們提供了并行執(zhí)行語(yǔ)句的機(jī)制。但是,在使用并行塊時(shí)需要注意,如果兩條語(yǔ)句在同一時(shí)刻對(duì)同一個(gè)變量產(chǎn)生影響,那么將會(huì)引起隱含的競(jìng)爭(zhēng)。競(jìng)爭(zhēng)結(jié)果取決于仿真器的具體實(shí)現(xiàn)方法。無(wú)法正確地處理競(jìng)爭(zhēng)是目前所使用的仿真器的一個(gè)缺陷,這一缺陷并不是并行塊所引起的。如果x=1’b0和y=1’b1兩條語(yǔ)句首先執(zhí)行,那么最終變量z和w的值為1和2如果z={x,y}和w={y,x}兩條語(yǔ)句首先執(zhí)行,那么最終變量z和w的值都是2’bxx塊語(yǔ)句的特點(diǎn)塊語(yǔ)句具有的三個(gè)特點(diǎn):嵌套塊、命名塊和命名塊的禁用。嵌套塊塊可以嵌套使用,順序塊和并行塊能夠混合在一起使用。命名塊塊可以具有自己的名字,我們稱(chēng)之為命名塊。它的特點(diǎn):1.命名塊中可以聲明局部變量。2.命名塊是設(shè)計(jì)層次的一部分,命名塊中聲明的變量可以通過(guò)層次名引用進(jìn)行訪問(wèn)。3.命名塊可以被禁用,例如停止其執(zhí)行。命名塊的禁用使用關(guān)鍵字disable可以終止命名塊執(zhí)行。disable可以用來(lái)從循環(huán)中退出、處理錯(cuò)誤條件以及根據(jù)控制信號(hào)來(lái)控制某些代碼段是否被執(zhí)行。對(duì)塊語(yǔ)句的禁用導(dǎo)致緊接在塊后面的那條語(yǔ)句被執(zhí)行。生成塊生成語(yǔ)句能夠控制變量的聲明、任務(wù)或函數(shù)的調(diào)用,還能對(duì)實(shí)例引用進(jìn)行全面的控制。編寫(xiě)代碼時(shí)必須在模塊中說(shuō)明生成的實(shí)例范圍,關(guān)鍵字generate-endgenerate用來(lái)指定該范圍。生成實(shí)例可以是模塊、用戶(hù)自定義原語(yǔ)、門(mén)級(jí)原語(yǔ)、連續(xù)賦值語(yǔ)句、initial和always塊中的一種或多種。生成的實(shí)例具有惟一的標(biāo)識(shí)名,因此可以用層次命名規(guī)則引用。Verilog語(yǔ)言允許在生成范圍內(nèi)聲明下列數(shù)據(jù)類(lèi)型:net(線(xiàn)網(wǎng))和reg(寄存器)、integer(整型數(shù))、real(實(shí)型數(shù))、time(時(shí)間型)和realtime(實(shí)數(shù)時(shí)間型)、event(事件)。任務(wù)和函數(shù)的聲明也允許出現(xiàn)在生成范圍中,但不能出現(xiàn)在循環(huán)生成當(dāng)中。不允許出現(xiàn)在生成范圍中的模塊項(xiàng)聲明包括:參數(shù)、局部參數(shù)、輸入、輸出和輸入/輸出聲明、指定塊在Verilog中有三種創(chuàng)建生成語(yǔ)句的方法:循環(huán)生成、條件生成、case生成。循環(huán)生成語(yǔ)句循環(huán)生成語(yǔ)句允許使用者對(duì)變量聲明、模塊、用戶(hù)自定義原語(yǔ)、門(mén)級(jí)原語(yǔ)、連續(xù)賦值語(yǔ)句、initial和always塊進(jìn)行多次實(shí)例引用。在仿真開(kāi)始前,仿真器會(huì)對(duì)生成塊中的代碼進(jìn)行確立(展平),將生成塊轉(zhuǎn)換為展開(kāi)的代碼,然后對(duì)展開(kāi)的代碼進(jìn)行仿真。因此,生成塊的本質(zhì)是使用循環(huán)內(nèi)的一條語(yǔ)句來(lái)代替多條重復(fù)的Verilog語(yǔ)句,簡(jiǎn)化用戶(hù)的編程;關(guān)鍵詞genvar用于聲明生成變量,生成變量只能用在生成塊中;在確立后的仿真代碼中,生成變量是不存在的;一個(gè)生成變量的值只能由循環(huán)生成語(yǔ)句來(lái)改變;循環(huán)生成語(yǔ)句可以嵌套使用。但是使用同一個(gè)生成變量作為索引的循環(huán)生成語(yǔ)句不能相互嵌套;xor_loop是賦予循環(huán)生成語(yǔ)句的名字,目的在于通過(guò)它對(duì)循環(huán)生成語(yǔ)句中的變量進(jìn)行層次化引用。因此,循環(huán)生成語(yǔ)句中各個(gè)異或門(mén)的相對(duì)層次名分別為:xor_loop[0].g1,xor_loop[1].g1,…,xor_loop[31].g1。條件生成語(yǔ)句條件生成語(yǔ)句類(lèi)似于if-else-if的生成構(gòu)造,該生成構(gòu)造可以根據(jù)設(shè)計(jì)模塊中表達(dá)式值的真假,決定是否調(diào)用相應(yīng)的Verilog結(jié)構(gòu)(模塊、用戶(hù)自定義原語(yǔ)、門(mén)級(jí)原語(yǔ)、連續(xù)賦值語(yǔ)句、initial或always塊)。case生成語(yǔ)句與條件生成語(yǔ)句類(lèi)似,只不過(guò)將其中的if-else形式改為case形式。case生成語(yǔ)句可以調(diào)用模塊、用戶(hù)自定義原語(yǔ)、門(mén)級(jí)原語(yǔ)、連續(xù)賦值語(yǔ)句、initial或always塊。舉例1——四選一多路選擇器我們?cè)褂脭?shù)據(jù)流語(yǔ)句進(jìn)行了描述,這里使用行為級(jí)的case語(yǔ)句來(lái)實(shí)現(xiàn)它。舉例2——四位計(jì)數(shù)器行為級(jí)描述與數(shù)據(jù)流級(jí)描述相比是非常簡(jiǎn)潔的。如果輸入信號(hào)的值不包括x和z,使用行為級(jí)的描述代替數(shù)據(jù)流級(jí)描述不會(huì)對(duì)計(jì)數(shù)器的仿真結(jié)果造成影響。舉例3——交通信號(hào)燈控制器功能描述:該交通信號(hào)燈控制器用于控制一條主干道與一條鄉(xiāng)村公路的交叉口的交通,它必須具有下面的功能:由于主干道上來(lái)往的車(chē)輛很多,因此控制主干道的交通信號(hào)具有最高優(yōu)先級(jí),在默認(rèn)情況下主干道的綠燈點(diǎn)亮;鄉(xiāng)村公路間斷性地有車(chē)經(jīng)過(guò),有車(chē)來(lái)時(shí)鄉(xiāng)村公路的交通燈必須變?yōu)榫G燈,只需維持一段足夠長(zhǎng)的時(shí)間,以便讓車(chē)通過(guò)。只要鄉(xiāng)村公路上不再有車(chē)輛,那么鄉(xiāng)村公路上的綠燈馬上變?yōu)辄S燈,然后變?yōu)榧t燈;同時(shí),主干道上的綠燈重新點(diǎn)亮;一個(gè)傳感器用于監(jiān)視鄉(xiāng)村公路上是否有車(chē)等待,它向控制器輸入信號(hào)X;如果X=1,則表示有車(chē)等待,否則X=0;各個(gè)狀態(tài)轉(zhuǎn)換時(shí),具有一定的延遲,這些延遲必須能夠控制。確定狀態(tài)。代碼描述:全
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)氯肼市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)多功能集成記錄儀市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國(guó)冷凍袋行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2025至2031年中國(guó)PE管材專(zhuān)用黑色母行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 移動(dòng)支付系統(tǒng)運(yùn)營(yíng)維護(hù)合同
- 鋼結(jié)構(gòu)廠房工程合同管理措施
- 學(xué)校食堂托管合同
- 中藥原材料供應(yīng)鏈及深加工項(xiàng)目開(kāi)發(fā)合作合同
- 跨境數(shù)字內(nèi)容運(yùn)營(yíng)和分銷(xiāo)合同
- 紡織服裝購(gòu)銷(xiāo)質(zhì)量保障與免責(zé)合同
- 2023社會(huì)責(zé)任報(bào)告培訓(xùn)講稿
- 2023核電廠常規(guī)島及輔助配套設(shè)施建設(shè)施工技術(shù)規(guī)范 第8部分 保溫及油漆
- 2025年蛇年春聯(lián)帶橫批-蛇年對(duì)聯(lián)大全新春對(duì)聯(lián)集錦
- 表B. 0 .11工程款支付報(bào)審表
- 警務(wù)航空無(wú)人機(jī)考試題庫(kù)及答案
- 空氣自動(dòng)站儀器運(yùn)營(yíng)維護(hù)項(xiàng)目操作說(shuō)明以及簡(jiǎn)單故障處理
- 新生兒窒息復(fù)蘇正壓通氣課件
- 法律顧問(wèn)投標(biāo)書(shū)
- 班主任培訓(xùn)簡(jiǎn)報(bào)4篇(一)
- 成都市數(shù)學(xué)八年級(jí)上冊(cè)期末試卷含答案
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專(zhuān)家共識(shí)
評(píng)論
0/150
提交評(píng)論