电竞比分网-中国电竞赛事及体育赛事平台

分享

verilog中的repeat的用法和例子

 aixuexidewau1 2019-05-23

repeat 循環(huán)語(yǔ)句執(zhí)行指定循環(huán)數(shù),如果循環(huán)計(jì)數(shù)表達(dá)式的值不確定,即為 x 或z 時(shí),那
么循環(huán)次數(shù)按 0 處理。repeat 循環(huán)語(yǔ)句的語(yǔ)法為
repeat(循環(huán)次數(shù)表達(dá)式) begin
    語(yǔ)句塊;
end
其中, “循環(huán)次數(shù)表達(dá)式”用于指定循環(huán)次數(shù),可以是一個(gè)整數(shù)、變量或者數(shù)值表達(dá)式。
如果是變量或者數(shù)值表達(dá)式,其數(shù)值只在第一次循環(huán)時(shí)得到計(jì)算,從而得以事先確定循環(huán)次
數(shù); “語(yǔ)句塊”為重復(fù)執(zhí)行的循環(huán)體。
在可綜合設(shè)計(jì)中, “循環(huán)次數(shù)表達(dá)式”必須在程序編譯過(guò)程中保持不變。下面給出一個(gè)

module mult_8b_repeat(
    a, b, q , a_t1
    );
  
  parameter bsize = 8;
  input  [bsize-1 : 0] a, b;
  output [2*bsize-1 : 0] q;
  output
  reg [2*bsize-1 : 0] a_t1;
  reg [2*bsize-1 : 0] q, a_t;
  reg [bsize-1 : 0] b_t;
  
  always @(a or b) begin
     q = 0;
   a_t = a;
  
   //a_t1 = {{bsize[0]},a};
  
   b_t = b;
   
   repeat(bsize) begin
    if (b_t[0]) begin
       q = q + a_t;    
           end
    else begin
       q = q;
    end
    a_t = a_t << 1;
    b_t = b_t >> 1; 
   end
  end
 
endmodule

 

波形:

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多