2023年Verilog所有知識(shí)點(diǎn)_第1頁(yè)
2023年Verilog所有知識(shí)點(diǎn)_第2頁(yè)
2023年Verilog所有知識(shí)點(diǎn)_第3頁(yè)
2023年Verilog所有知識(shí)點(diǎn)_第4頁(yè)
2023年Verilog所有知識(shí)點(diǎn)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Verilog基礎(chǔ):

1.間隔符:空格(\b),Tab(\t),換行符(\n),換頁(yè)符。

。2.注釋:/**///

。3.標(biāo)記符,關(guān)鍵詞:標(biāo)記符由英文字母、數(shù)字、$符、下劃線組成,以英文字母或下劃。

。線開(kāi)頭。

4.邏輯值:0:邏輯假1:邏輯真。x或X:不擬定狀態(tài)。z或Z:高阻態(tài)

5.常量:<1>格式:<+/-><位寬>,<基數(shù)符號(hào)><數(shù)值>

b/o/d/h:二、八、十、十六進(jìn)制

<2>數(shù)字可加下劃線8b1001_1001表達(dá)8位二進(jìn)制數(shù)10011001

<3>科學(xué)計(jì)數(shù):5E-4:5*10A4

<4>運(yùn)用參數(shù)定義語(yǔ)句來(lái)定義一個(gè)標(biāo)記符表達(dá)常量:parameter參數(shù)名1=

常量1,參數(shù)名2=常量2;

例:parameterBIT=1,BYTE=8;

6.字符串:雙撇號(hào)內(nèi)的字符序列,不能分多行書(shū)寫(xiě),表達(dá)式或賦值語(yǔ)句中字符串要換

成。無(wú)符號(hào)整數(shù),用8位ASCII碼表達(dá),一個(gè)8位ASCII碼表達(dá)一個(gè)字

變量的數(shù)據(jù)類型:

1.線網(wǎng)(nettype)類型:線網(wǎng)類被定義后若沒(méi)有被元件驅(qū)動(dòng),則默認(rèn)值為高阻態(tài)

關(guān)鍵詞:wire:wire[n—1:0]變量名1,變量名2,…,變量

名n;

除wire外尚有wand、wor、tri、triand,trior、trire

g

2.寄存器類型:

寄存器型變量只能在initial或always內(nèi)被賦值,沒(méi)被賦值默認(rèn)為x狀態(tài)。

4種類型的寄存器變量:<l>reg:行為描述中對(duì)寄存器型變量說(shuō)明

<2>integer:32位有符號(hào)整數(shù)型

<3>real:64位有符號(hào)實(shí)型變量(默認(rèn)值是0)

<4>time:64位無(wú)符號(hào)時(shí)間型

@reg:格式:reg[n?l:0]變量名1,變量名n;

例:integercounter;

initial//initial是過(guò)程語(yǔ)句結(jié)構(gòu),賦值給寄存器類型變量

counter=-l;

③rea1:通常用于對(duì)實(shí)數(shù)型常量進(jìn)行儲(chǔ)存運(yùn)算

例:realde1ta;

initia1

begin

de1ta=4elO;

delta=2.13

end

integeri;

initiali=deIta;//i得到的值為2

?time:重要用于儲(chǔ)存仿真時(shí)間,只儲(chǔ)存無(wú)符號(hào)整數(shù),常調(diào)用系統(tǒng)函數(shù)$lime

例:timecurrent_time;

initial

current_time=$time;

Veri1og基本結(jié)構(gòu)

modu1e模塊名(端口名1,端口名2,…)

端口類型說(shuō)明(input,output,inout)//inout是雙向端口

參數(shù)定義;〃將常量用符號(hào)常量代替,非必須結(jié)構(gòu)

數(shù)據(jù)類型定義(wire,reg等)

實(shí)例化底層模塊和基本門級(jí)元件;

連續(xù)賦值語(yǔ)句(assign);

過(guò)程塊結(jié)構(gòu)(initia1和always);

行為描述語(yǔ)句;

endmodu1e

描述方式:①結(jié)構(gòu)描述方式:調(diào)用其他已定義好的底層模塊對(duì)整個(gè)電路進(jìn)行描述,或直。

接調(diào)用基本門級(jí)元件描述。

②數(shù)據(jù)流描述方式:使用連續(xù)賦值語(yǔ)句對(duì)電路邏輯功能進(jìn)行描述。

③行為描述方式:使用過(guò)程塊語(yǔ)句結(jié)構(gòu)(iniiia1,always)?

組合邏輯電路門級(jí)建模

基本門級(jí)元件:and:多輸入與門or:多輸入或門xor:多輸入異或門

buf:多輸出緩沖器bufifl:高電平有效三態(tài)緩沖器

bufifO:低電平有效三態(tài)緩沖器

nand:多輸入與門nor:多輸入或非門xnor:多輸入異或非門

not:多輸入反相器notifl:高電平有效三態(tài)反相器

notifO:低電平有效三態(tài)反相器

①多輸入門:andA1(out,in1,in2,in3);

②多輸出門:bufB1(outl,out2,???,in);

③三態(tài)門:bufiflB1(out,in,ctri);

notif1N1(out,in,Ctrl);

組合邏輯電路數(shù)據(jù)流建模

數(shù)據(jù)流建模使用的基本語(yǔ)句是連續(xù)賦值語(yǔ)句,用于對(duì)wire型變量進(jìn)行賦值,由關(guān)鍵詞ass

ign開(kāi)始,由操作數(shù)和運(yùn)算符組成的邏輯表達(dá)式。

2選1數(shù)據(jù)選擇器:wireA,B,SEL,L;

assignL=(A&?SEL)|(B&SEL);

組合邏輯電路行為級(jí)建模

描述數(shù)字邏輯電路的功能和算法,使用always結(jié)構(gòu),后面跟一系列過(guò)程賦值語(yǔ)句,給r

eg類型變量賦值。

1.條件語(yǔ)句:if:①if(condition_expr)true_staternent;

②if(condition_expr)true_statement;

eIsefale_statement;

(3)if(condition__exprl)true_statement1;

elseif(condition_expr2)true-statement2;

elsedefau1t_statement;

注:if括號(hào)中的表達(dá)式若為0,z或x都按“假”解決,否則按“真”處。

理。

2.多支路分支語(yǔ)句:case:case(case_expr)

item_expr1:statement1;

item_expr2:statement2;

default:default_statement;〃可省略

endcase

注:若分支后的語(yǔ)句是多條語(yǔ)句,要在多余語(yǔ)句前加上begin,最后加上

oendo

3.always:a1ways@(循環(huán)執(zhí)行條件)表達(dá)括號(hào)內(nèi)的任意一個(gè)變量發(fā)生變化時(shí),其下面

。的過(guò)程賦值語(yǔ)句就執(zhí)行一次,執(zhí)行完最后一句時(shí),執(zhí)行掛起,等待變量發(fā)生變

。化,圓括號(hào)內(nèi)的變量被稱為敏感變量。

注:①敏感變量互相之間用or連接②只能給寄存器變量賦值(reg型)。

用verilog描述鎖存器和觸發(fā)器

1.時(shí)序電路建模:always@(事件控制表達(dá)式/敏感事件表)

begin

塊內(nèi)局部變量的定義;

過(guò)程賦值語(yǔ)句;//左邊的變量必須為寄存器數(shù)據(jù)類型,右邊隨意

end

敏感事件分兩種類型:電平敏感,邊沿觸發(fā)

①電平敏感:aIways@(SELoraorb)

SEL,a,b中任意一個(gè)信號(hào)電平發(fā)生變化則后面的。

語(yǔ)句執(zhí)行一次。

②邊沿觸發(fā):posedge(上升沿)negedge(下降沿)

always@(posedgeCPorposedgeCR)

時(shí)鐘信號(hào)CP上升沿到來(lái)或清零信號(hào)CR跳變?yōu)榈?/p>

電平時(shí),執(zhí)行之后的語(yǔ)句。

always內(nèi)部的賦值語(yǔ)句:阻塞型賦值語(yǔ)句(二號(hào)賦值),非阻塞型賦值語(yǔ)句(。號(hào)賦值)

①阻塞型賦值語(yǔ)句:按語(yǔ)句由上到下的順序進(jìn)行賦值,即有

先后順序

②非阻塞型賦值語(yǔ)句:并行執(zhí)行,所有語(yǔ)句同時(shí)執(zhí)行賦值

注:一■個(gè)語(yǔ)句塊(begin…end)中只允許使用一種類型的賦

。值方式,時(shí)序電路中采用非阻塞型賦值語(yǔ)句。

用verilog描述時(shí)序邏輯電路

1.移位寄存器的Verilog建模:左移:Q<={Dsl,Q[3:l]}

將左移輸入端Dsi的數(shù)據(jù)直接傳給輸出Q[3],

Q[3]->Q[2],Q[2]->Q[1],Q[1]->Q[O](Q[3:H

傳給Q[2;OJ)

右移:Q<={Q[3:0],Dsr};

moduleTest_shift74194(S1,SO,D,DsI,Dsr,Q,CP,CR);

inputS1,SO;

inputDshDsr;

inputCP,CR;

input[3:0]D;

output[3:0]Q;

regE3:0JQ;

aIways@(posedgeCPornegedgeCR)

if(?CR)Q<=4^0000;

else

case({SI,SO})

21600:Q<=Q;

b01:Q<={Q[2:0],Dsr};

2fb10:Q<={Dsl,Q[3:l]};

b11:Q<=D;

endcase

endmodu1e

2,計(jì)數(shù)器的Verilog建模:

a)同步二進(jìn)制計(jì)數(shù)器:

modulecounter(CEP,CET,PE,D,CP,CR,Q,TC);

inputCEP,CET,PE,CP,CR;

input[3:0]D;

outputTC;

output[3:0]Q;

reg[3:0JQ;

wireCE;

assignCE=CEP&CET;

assignTC=CET&(Q==4'bl111);

always@(posedgeCPornegedgeCR)

if(~CR)Q<=4'b0000;

elseif(~PE)Q<=D;

elseif(-CE)Q<=Q;

eIseQ<=Q+l'b1;

endmodule

)ps20.040.0ns60』ns80.0ns100.0ns1200ns140.0ns160.0ns

ValuenS

Name

15.0315.025its

J_

CP_Aj__n匚L_TLnLTT^_^Ln_TLT1LT

91CEPA

D^2CETA

心3CRA—i__r~

后4SDA[?I[0]

?9PEA

各10aQA[:]::[2]X(3]X(4]X(5]X(6]X門]X[8]x[£]XioX[o]XCdXC2]X[3]X[4]X[5]

"15TCAI

b)異步二進(jìn)制計(jì)數(shù)器:

moduleripplecounter(Q0,Q1,Q2,Q3,CP,CR);

outputQ0,Q1,Q2,Q3;

inputCP,CR;

D_FFFF0(QO,?QO,CP,?CR);

D_FFFF1(Q1,~Q1,Q0,?CR);

D_FFFF2(Q2,~Q2,Q1,~CR);

D_FFFF3(Q3,?Q3,Q2,?CR);

endmodule

moduleD_FF(Q,D,CP,Rd);

outputQ;

inputD,CP,Rd;

regQ;

always@(negedgeCPornegedgeRd)

if(?Rd)Qv=「bO;

elseQ<=D;

endmodule

c)非二進(jìn)制計(jì)數(shù)器:

modu1em10_counter(CE,CP,CR,Q);

inputCE,CP,CR;

output[3:0]Q;

reg[3:0]Q;

a1ways@(posedgeCPornegedgeCR)

if(-CR)Q<=4,b0000;

eIseif(CE)

beginif(Q>=4'b1001)Q<=4fb0000:

e1seQ<=Q+l'b1;

end

elseQ<=Q;

endmodu1e

所有實(shí)驗(yàn)代碼及電路波形:

十進(jìn)制可逆計(jì)數(shù)器實(shí)驗(yàn):

代碼一(可逆計(jì)數(shù)器):

modulekenijishuqi(set,cin,cIk,cIr,upd,q,co);

inputclk,c1r,upd,set;

input[3:0]cin;

outputregco;

outputreg[3:0]q;

always@(posedgeclkornegedgeclr)

begin

if(!clr)

if(!set)//clear0

begin

q=cin;

end

else

begin

q=0;co=0;

end

else

begin

if(upd)//addcounter

begin

if(q==4*d8)co=1'b1;//whenq=1000b,co=1

elseco=0;//elseco=0

if(q<4'd9)q=q+1*b1;//whenq<=1000b,

elseq=0;//q=1001nextq=0000

end

else//decrese

begin

if(q==l)co=l1bl;

elseco=0;

if(q>0)q=q-l'bl;

elseq=4'd9;

end

end

end

endmodule

代碼二(BCD碼.七段譯碼器):

moduledecode4_7(codeout,indec);

inputL3:01indec;

output[6:0]codeout;

reg[6:0]codeout;

always@(indec)

begin

case(indec)

4*d0:codeout=7'b1111110;

4'd1:codeout=7zb0110000;

4'd2:codeout=7'bl101101;

4'd3:codeout=7,bl111001;

41d4:codeout=7'bO110011;

4'd5:codeout=7rb1011

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論