《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 零基礎(chǔ)教你學(xué)FPGA之Verilog語(yǔ)法基礎(chǔ)(上)

零基礎(chǔ)教你學(xué)FPGA之Verilog語(yǔ)法基礎(chǔ)(上)

2015-02-09
關(guān)鍵詞: FPGA Verilog 基礎(chǔ)

    這幾天復(fù)習(xí)了一下Verilog的語(yǔ)法知識(shí),就借此寫(xiě)寫(xiě)我對(duì)這些東西的想法吧。感覺(jué)呢,是和C語(yǔ)言差不多,具有C語(yǔ)言基礎(chǔ)的朋友學(xué)起來(lái)應(yīng)該沒(méi)什么問(wèn)題,和C語(yǔ)言相同的地方就不說(shuō)了吧,重點(diǎn)說(shuō)一下不同點(diǎn)吧。

  1、模塊的結(jié)構(gòu)

  模塊呢,是Verilog的基本設(shè)計(jì)單元,它主要是由兩部分組成,一個(gè)是接口,另一個(gè)是邏輯。下面舉一個(gè)小例子說(shuō)明一下:

  module xiaomo (a,b,c,d);

  input a,b;

  output c,d;

  assign c=a|b;

  assign d=a&b;

  endmodule

  所謂接口就是第二,三行,說(shuō)明了一個(gè)模塊的信號(hào)流向,很明顯,a,b是輸入,c,d是輸出;第四第五行是邏輯,即輸入和輸出之間的關(guān)系即c的值是a或b的結(jié)果。assign 是連續(xù)賦值語(yǔ)句,這個(gè)以后再說(shuō)。

  第一行是模塊的端口聲明,即說(shuō)明一個(gè)模塊具體有那幾個(gè)接口,有多少接口寫(xiě)多少,直接套模板就可以module(接口1,接口2……);endmodule代表此模塊結(jié)束;

  2、模塊的內(nèi)容

  模塊的內(nèi)容包括3個(gè)部分,I/O說(shuō)明,內(nèi)部信號(hào)說(shuō)明和功能定義。

  關(guān)于I/O說(shuō)明有三種格式,即輸入、輸出、輸入輸出,第三種格式代表信號(hào)可以雙向傳送。在寫(xiě)I/O說(shuō)明的時(shí)候要注明信號(hào)位寬,即由幾位組成,例 如 input [7:0] xiaomo;代表輸入一個(gè)8位的信號(hào)“小墨”,注意這里要用中括號(hào),第一位是位寬減1,接一個(gè)冒號(hào),再接數(shù)字0,再接端口名;

  關(guān)于內(nèi)部信號(hào)說(shuō)明要用到和端口有關(guān)的wire和reg類(lèi)型變量的聲明。模板和上面類(lèi)似,關(guān)于reg和wire變量后面再說(shuō)。

  關(guān)于功能定義是模塊中最重要的部分,有三種方法可在模塊中產(chǎn)生邏輯

  (1)用assign聲明語(yǔ)句,assign 語(yǔ)句主要用于組合邏輯電路

  (2)用實(shí)例元件,例如 and #2 u1(q,a,b);(這個(gè)我自己概念也有點(diǎn)模糊,不知道怎么解釋)

  (3)用always塊,例如 always @(clk or clr)

  begin

  ………

  end;

  always語(yǔ)句既可以用于描述組合邏輯,也可以描述時(shí)序邏輯,但主要以描述時(shí)序邏輯電路為主。

  小結(jié)

  在verilog語(yǔ)法中,所有的過(guò)程塊(包括initial塊,always塊),連續(xù)賦值語(yǔ)句,實(shí)例引用都是并行的,也就是說(shuō)在一個(gè)模塊中遇 到這些語(yǔ)句就是同時(shí)執(zhí)行的,而且沒(méi)有先后次序。只有連續(xù)賦值語(yǔ)句assign和實(shí)例引用語(yǔ)句可以獨(dú)立于過(guò)程塊存在于模塊的功能定義部分,即這兩種語(yǔ)句可以 不用在那兩個(gè)過(guò)程塊里執(zhí)行,也可以在模塊的功能定義部分執(zhí)行,例如第一個(gè)例子。

  這些和C語(yǔ)言有點(diǎn)不同,對(duì)于初學(xué)者來(lái)說(shuō)應(yīng)該都要弄明白。

  3、數(shù)據(jù)類(lèi)型、變量、常量

  對(duì)于初學(xué)者來(lái)說(shuō),數(shù)據(jù)類(lèi)型只要掌握好reg,wire,integer和parameter型就夠了,其他類(lèi)型可以暫時(shí)不用去理會(huì)。

  (1)常量就不說(shuō)了,比較基礎(chǔ)。

  (2)參數(shù)型(parameter型)

  parameter是用來(lái)定義一個(gè)常量的,個(gè)人理解和C語(yǔ)言里面的int,float 語(yǔ)句一樣,不一樣的是parameter既可以定義整型,也可以定義浮點(diǎn)型或者是表達(dá)式。例如

  

360桌面截圖20140225201109.jpg

 

  (3)變量

  wire型數(shù)據(jù)常用來(lái)表示用以assign關(guān)鍵字指定的組合邏輯信號(hào)。Verilog程序模塊中輸入、輸出信號(hào)類(lèi)型默認(rèn)時(shí)自動(dòng)定義成wire型。例子

  

360桌面截圖20140225202514.jpg

 

  reg型數(shù)據(jù)是寄存器變量,常用來(lái)表示always塊中的指定信號(hào),常代表觸發(fā)器。注意,在always塊中被賦值 的每一個(gè)信號(hào)都必須定義為reg型

  。

  

360桌面截圖20140225202921.jpg

 

  

360桌面截圖20140225203249.jpg

 

  上面這句話表示不理解,求大神解釋...先放這兒吧..

  memory型

  由于Verilog中沒(méi)有多維數(shù)組的存在,memory數(shù)據(jù)就是通過(guò)擴(kuò)展reg型數(shù)據(jù)的地址范圍來(lái)生成的,他的格式為

  reg[n-1:0] 存儲(chǔ)器名[m-1:0];

  我舉個(gè)例子,比如我定義 reg[7:0] xiaomo[255:0];

  這句話的意思是說(shuō),我定義了一個(gè)名叫“小墨”的存儲(chǔ)器,這個(gè)存儲(chǔ)器中有256個(gè)8位reg型寄存器,只要理解了這句話,就差不多了。注意,當(dāng)沒(méi)有中括號(hào)時(shí)代表的是一位,例如

  reg xiaomo[m-1:0];代表一個(gè)名為“小墨”的存儲(chǔ)器,里面有m個(gè)1位的reg型寄存器。

 還有個(gè)地方我感覺(jué)不太明白,見(jiàn)下圖,誰(shuí)知道這句話上面意思...求大神解釋...

 

  

360桌面截圖20140225204415.jpg

 

  下面這幾句話需要注意

  

360桌面截圖20140225204900.jpg

 

  4、運(yùn)算符及表達(dá)式

  這里和C語(yǔ)言幾乎一樣,就不做過(guò)多解釋了吧。就說(shuō)一下位拼接運(yùn)算符和位減運(yùn)算符,這里C語(yǔ)言里面沒(méi)有。

  直接看個(gè)例子就可以

  

360桌面截圖20140225205538.jpg

 

  

360桌面截圖20140225205844.jpg

 

  5、賦值語(yǔ)句

  賦值語(yǔ)句共有兩種,即非阻塞賦值,和阻塞賦值。

  (1)非阻塞賦值

  非阻塞賦值方式所賦值的變量不能立即就為下面語(yǔ)句所用,只有當(dāng)塊結(jié)束后才能得到上一次所附的值,這種賦值方式是編寫(xiě)可綜合的時(shí)序邏輯時(shí)常用的賦值方式。例如

  

360桌面截圖20140225211312.jpg

 

  這個(gè)例子的意思是,當(dāng)時(shí)鐘上升沿到來(lái)時(shí),a的值給b,b的值給c,但是只有當(dāng)塊結(jié)束時(shí)才完成賦值,這么說(shuō)吧,假如原來(lái)a=1,b=2那么當(dāng)時(shí)鐘上升沿到來(lái)時(shí)a=1,b=2,c=2;當(dāng)塊結(jié)束時(shí),a=b=c=1;

  這么理解對(duì)嗎?求大神指點(diǎn)...

  

360桌面截圖20140225211856.jpg

 

  (2)阻塞賦值

  與非阻塞賦值不同,賦值語(yǔ)句執(zhí)行完后塊才結(jié)束,b 的值在賦值語(yǔ)句結(jié)束后立刻改變,但是在時(shí)序邏輯電路中可能會(huì)出問(wèn)題。

  always @(clk or clr);

  begin

  b=a;

  c=b;

  end

  假如開(kāi)始a=1;當(dāng)當(dāng)時(shí)鐘上升沿到來(lái)時(shí),a=b=c=1;然后塊結(jié)束

  

360桌面截圖20140225212539.jpg

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 欧美性猛交xxxxx按摩国内| 亚洲综合成人网| 伊人久久久大香线蕉综合直播| 亚洲欧美成人综合| 久久国产精品波多野结衣AV| 一级毛片一级毛片一级毛片aaav | 亚洲午夜久久久影院伊人| 久久午夜福利电影| www.人人干| 免费观看国产网址你懂的| 综合图区亚洲欧美另类小说| 波多野结衣av无码久久一区| 最新无码a∨在线观看| 少妇高潮惨叫久久久久久| 国产精品久久国产精品99盘 | 国产网站麻豆精品视频| 国产亚洲日韩在线a不卡| 亚洲精品无码专区在线| 久久午夜福利无码1000合集| 99国产欧美久久久精品蜜芽| 麻豆精品一区二区综合av| 特级毛片a级毛片在线播放www | 正点嫩模大尺度写真在线视频| 日韩在线视频网| 国产高清自产拍av在线| 四虎影视在线影院www| 亚洲国产精品网| 一级一级女人真片| 黄瓜视频网站在线观看| 永久免费无内鬼放心开车| 成年人在线免费观看网站| 国产无套粉嫩白浆| 亚洲精品老司机| 中文字幕国产视频| 成年美女黄网站色| 欧美疯狂ⅹbbbb另类| 少妇高潮太爽了在线视频| 国产国产东北刺激毛片对白| 亚洲欧洲国产精品久久| 一级毛片在线观看免费| 韩国理伦片在线观看手机版 |