新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > 零基礎(chǔ)學(xué)FPGA(三)Verilog語法基基礎(chǔ)基礎(chǔ)(上)

        零基礎(chǔ)學(xué)FPGA(三)Verilog語法基基礎(chǔ)基礎(chǔ)(上)

        —— 零基礎(chǔ)學(xué)FPGA(三)Verilog語法基基礎(chǔ)基礎(chǔ)(上)
        作者: 時間:2014-12-31 來源:網(wǎng)絡(luò) 收藏

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

        本文引用地址:http://www.104case.com/article/267551.htm

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

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

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

          input a,b;

          output c,d;

          assign c=a|b;

          assign d=a&b;

          endmodule

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

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

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

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

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

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

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

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

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

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

          begin

          ………

          end;

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

          小結(jié)

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

          這些和C語言有點不同,對于初學(xué)者來說應(yīng)該都要弄明白。

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

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

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

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

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

          

        360桌面截圖20140225201109.jpg

         

          (3)變量

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

          

        360桌面截圖20140225202514.jpg

         

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

          。

          

        360桌面截圖20140225202921.jpg

         

          

        360桌面截圖20140225203249.jpg

         

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

          memory型

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

          reg[n-1:0] 存儲器名[m-1:0];

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

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

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

        fpga相關(guān)文章:fpga是什么


        c語言相關(guān)文章:c語言教程



        上一頁 1 2 下一頁

        關(guān)鍵詞: FPGA Verilog

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 北碚区| 曲阳县| 灌南县| 景德镇市| 林西县| 曲麻莱县| 莱芜市| 乐亭县| 嵊州市| 平邑县| 泸定县| 长武县| 虎林市| 如皋市| 淄博市| 莲花县| 长汀县| 阜南县| 郓城县| 浦东新区| 鄂托克前旗| 贵州省| 攀枝花市| 大田县| 西丰县| 永寿县| 仙居县| 东城区| 三亚市| 玉山县| 体育| 屏山县| 福建省| 咸阳市| 南平市| 周口市| 乐至县| 石景山区| 婺源县| 长垣县| 万源市|