verilog的repeat语句
2016-01-07 · 做真实的自己 用良心做教育
repeat 循环语句执行指定循环数,如果循环计数表达式的值不确定,即为 x 或z 时,那
么循环次数按 0 处理。repeat 循环语句的语法为
repeat(循环次数表达式) begin
语句块;
end
其中, “循环次数表达式”用于指定循环次数,可以是一个整数、变量或者数值表达式。
如果是变量或者数值表达式,其数值只在第一次循环时得到计算,从而得以事先确定循环次
数; “语句块”为重复执行的循环体。
在可综合设计中, “循环次数表达式”必须在程序编译过程中保持不变。下面给出一个
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
波形: