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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

verilog語法基礎知識

jf_GctfwYN7 ? 來源:IC修真院 ? 2023-07-08 10:40 ? 次閱讀

循環(huán)語句分為以下4種:

for語句——通過三個步驟來決定語句的循環(huán)執(zhí)行:

1.給控制循環(huán)次數(shù)的變量賦初值;

2.判定循環(huán)執(zhí)行條件,若為假則跳出循環(huán);若為真,則執(zhí)行指定語句后,轉到第三步

3.修改循環(huán)變量的值,返回第二步

repeat——連續(xù)執(zhí)行一條語句n次;

while——執(zhí)行一條語句,直到循環(huán)條件不滿足;若一開始條件不滿足,則該語句一次也不能執(zhí)行

forever——無限連續(xù)的執(zhí)行語句,可用disable語句中斷。

for語句

形式:

for(循環(huán)變量賦初值;循環(huán)執(zhí)行條件;循環(huán)變量增值) 執(zhí)行語句

例:用for語句描述7人投票表決器:超過4人投贊成票,則表決通過

module vote7(
output      pass,
input [6:0] vote
);


reg [2:0] sum;  //sum 為reg變量,用于統(tǒng)計贊成的人數(shù)
integer    i;
regpass;


always @(vote)
  begin
    sum = 0;   //sum初始值為0
for(i=0;i<=6;i++)    //for語句
  if(vote[i])   sum=sum+1;  //只要有人投贊成票,sum加1
  
  if(sum[2])   pass =1;    //若超過4人,pass為1
  else         pass =0;
  end
endmodule
例:用for語句初始化memory
begin:init_mem
  reg [7:0] tempi;  //存儲器的地址變量
  for(tempi=0;tempi
例:用for語句實現(xiàn)兩個二進制數(shù)乘法
module mult_for (outcome,a,b);
parameter size =8;
output [2*size:1]  outcome;
input  [size;1]    a,b;
reg    [2*size:1]  outcome;
integer            i;


always@(a or b)
  begin
    outcome = 0;
for(i=1;i<=size;i=i+1)
  if(b[i]) outcome = outcome +(a<<(i-1));
  end
endmodule

repeat語句(不可綜合)

無條件連續(xù)執(zhí)行一條或多條語句n次

格式:repeat(循環(huán)次數(shù)表達式)語句

例:用repeat語句和移位操作實現(xiàn)兩個8位二進制數(shù)乘法

module mult_repeat(outcome,a,b);
parameter size=8;
output[2*size:1]  outcome;
input [size:1]    a,b;     //a 為被乘數(shù),b為乘數(shù)
reg   [2*size:1]  outcome;
reg   [2*size:1]  temp_a;  //中間變量,存放操作數(shù)a左移移位的結果
reg[2*size:1]temp_b;//中間變量,存放操作數(shù)b右移移位的結果


always@(a or b)
   begin
    outcome = 0;
temp_a = a;
temp_b = b;
repeat(size)
  begin
    if(temp_b[1])   //如果tem_b的最低位是1,則執(zhí)行下面加法
  outcome = outcome + temp_a;
  temp_a = temp_a <<1;  //操作數(shù)a左移一位,以便代入上式,求部分積
  temp_b = temp_b >>1;  //操作數(shù)b右移一位,以便取temp_b【1】
  end
   end
endmodule

while 語句

有條件地執(zhí)行一條或多條語句

首先判斷循環(huán)執(zhí)行條件表達式是否為真。若為真,則執(zhí)行后面的語句或語句塊;然后再回頭判斷循環(huán)執(zhí)行條件表達式是否為真,若為真,再執(zhí)行一次后邊的語句;如此不斷,直到條件表達式不為真.

格式:while(循環(huán)執(zhí)行條件表達式) 語句

注1:首先判斷循環(huán)執(zhí)行條件表達式是否為真,若為假,則其后的語句一次也不執(zhí)行

注2:在執(zhí)行語句中,必須有一條改變循環(huán)執(zhí)行條件表達式的值的語句

注3:while語句只有當循環(huán)塊有事件控制(即@(posedge clk))時才可綜合。

例:用while語句對一個8位二進制中值為1的位進行計數(shù)

module count1s_while(count,rega,clk);
output [3:0]  count;
input  [7:0]  rega;
input         clk;
reg    [3:0]  count;
always@(posedge clk)
  begin:count1
    reg[7:0] tempreg;  //用作循環(huán)執(zhí)行條件表達式
count =0;          //count初始值為0
tempreg = rega;    //tempreg初值為rega 
while(tempreg)     //若tempreg非0,則執(zhí)行下邊語句
    begin
  if(tempreg[0])  count = count + 1;
               //只要tempreg最低位為1,則count加1
  tempreg = tempreg >>1;  //右移1位
end
  end
endmodule
例:用for語句對一個8位二進制中值為1的位進行計數(shù)
module count1s_for_good(count,rega);
output [3:0]   count;
input  [7:0]   rega;
reg    [3:0]   count;
always@(rega)
begin:block
   integer i;
   count = 0;
   for(i=0;i<=7;i++)
     if(rega[i])   count = count +1;
end
endmodule

forever語句

無條件連續(xù)執(zhí)行forever后面的語句或語句塊。

格式:forever 語句;

常用在測試模塊中產(chǎn)生周期性的波形,作為仿真激勵信號

常用disable語句跳出循環(huán)。

注:不同于always語句,不能獨立寫在程序中,一般用在initial語句塊中。

語句的順序執(zhí)行

在always模塊內(nèi),邏輯按書寫的順序執(zhí)行。

順序語句——always模塊內(nèi)的語句

在always模塊內(nèi),若隨意顛倒賦值語句的書寫順序,可能導致不同的結果

module serial2(q,a,clk);
output q,a;
input  clk;
reg    q,a;
always @(posedge clk)
  begin
    a = ~q;
    q = ~q;  
  end
endmodule

22295c12-1cb2-11ee-962d-dac502259ad0.png

always模塊,assign語句,實例元件都是同時執(zhí)行的,它們在程序中的先后順序對結果并沒有影響。

module parall1(q,a,clk);
output q,a;
input  clk;
reg    q,a;
always @(posedge clk)
  begin
    q = ~q;
  end
always @(posedge clk)
  begin
a = ~q;
  end
endmodule
module parall2(q,a,clk);
output q,a;
input  clk;
reg    q,a;
always @(posedge clk)
  begin
    a = ~q;    
  end
always @(posedge clk)
  begin
q = ~q;
  end
endmodule
224f06d8-1cb2-11ee-962d-dac502259ad0.png





審核編輯:劉清

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

    關注

    38

    文章

    7366

    瀏覽量

    163100
  • 二進制
    +關注

    關注

    2

    文章

    761

    瀏覽量

    41476
  • Verilog語言
    +關注

    關注

    0

    文章

    113

    瀏覽量

    8192

原文標題:IC學霸筆記 | Verilog語法之循環(huán)語句

文章出處:【微信號:IC修真院,微信公眾號:IC修真院】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    哪有FPGA的verilog編程基礎知識?

    沒接觸過FPGA開發(fā),那個verilog編程有什么入門基礎知識學習的?
    發(fā)表于 04-29 23:09

    Verilog HDL練習題和Verilog基礎知識適合verilog新人

    Verilog HDL練習題和Verilog基礎知識適合verilog新人Verilog HDL練習題.pdfVerilog
    發(fā)表于 08-15 15:08

    Verilog基礎知識

    Verilog基礎知識
    發(fā)表于 09-30 08:50

    Verilog HDL數(shù)字系統(tǒng)設計教程》(第四版)學習筆記 part1 Verilog數(shù)字設計基礎——第一章知識點總結

    、固核與硬核:1.3Verilog HDL設計流程:注:Verilog HDL語法的兩個部分第一章Verilog基礎知識1.1
    發(fā)表于 03-22 10:26

    Verilog HDL基礎知識

    Verilog HDL基礎知識:硬件描述語言是硬件設計人員和電子設計自動化工具之間的界面。其主要目的是用來編寫設計文件,建立電子系統(tǒng)行為級的仿真模型即利用計算機的巨大能力對用
    發(fā)表于 05-31 19:33 ?49次下載

    可綜合的Verilog語法和語義

    可綜合的Verilog語法和語義(劍橋大學,影印):第七版
    發(fā)表于 05-21 14:50 ?27次下載
    可綜合的<b class='flag-5'>Verilog</b><b class='flag-5'>語法</b>和語義

    Verilog HDL實驗練習與語法手冊

    Verilog HDL實驗練習與語法手冊-高教
    發(fā)表于 05-11 11:30 ?0次下載

    Verilog基礎知識

    Verilog基礎知識,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-10 15:29 ?4次下載

    Verilog_HDL基礎知識非常好的學習教程 (1)

    Verilog_HDL基礎知識非常好的學習教程 (1)
    發(fā)表于 01-04 12:33 ?0次下載

    常見的Verilog行為級描述語法

    常見的Verilog描述語句與對應的邏輯關系;熟悉語法與邏輯之間的關系
    的頭像 發(fā)表于 09-15 08:18 ?1w次閱讀
    常見的<b class='flag-5'>Verilog</b>行為級描述<b class='flag-5'>語法</b>

    Verilog HDL的基礎知識詳細說明

    硬件描述語言基本語法和實踐 (1)VHDL 和Verilog HDL的各自特點和應用范圍 (2)Verilog HDL基本結構語言要素與語法規(guī)則 (3)
    發(fā)表于 07-03 17:36 ?53次下載
    <b class='flag-5'>Verilog</b> HDL的<b class='flag-5'>基礎知識</b>詳細說明

    Verilog教程之Verilog HDL數(shù)字集成電路設計方法和基礎知識課件

    本文檔的主要內(nèi)容詳細介紹的是Verilog教程之Verilog HDL數(shù)字集成電路設計方法和基礎知識課件
    發(fā)表于 12-09 11:24 ?53次下載
    <b class='flag-5'>Verilog</b>教程之<b class='flag-5'>Verilog</b> HDL數(shù)字集成電路設計方法和<b class='flag-5'>基礎知識</b>課件

    Verilog語法進階

    Verilog語法進階說明。
    發(fā)表于 05-06 16:14 ?30次下載

    Verilog HDL入門教程-Verilog HDL的基本語法

    Verilog HDL入門教程-Verilog HDL的基本語法
    發(fā)表于 01-07 09:23 ?171次下載

    Verilog基礎知識

    本節(jié)主要講解了 Verilog基礎知識,包括 7 個小節(jié),下面我們分別給大家介紹這 7 個小節(jié)的內(nèi)容。
    的頭像 發(fā)表于 08-15 09:04 ?2282次閱讀