|
本帖最后由 lcytms 于 2016-10-21 10:48 编辑
用generate for语句改写shift移位子模块shift.v文件
我们注意到由于存在重复性操作,相同的语句往往写好多次。当然参数会稍微有所差异。
有个偷懒的办法,就是采用generate for语句。
用generate for语句改写的shift移位子模块shift.v文件如下所示:
module shift (datain, dataout);
input [43:0] datain;
output [43:0] dataout;
wire [43:0] data;
assign data[19:0] = datain[19:0];
// preshift p0 (.d4in(datain[23:20]), .d4out(data[23:20]));
// preshift p1 (.d4in(datain[27:24]), .d4out(data[27:24]));
// preshift p2 (.d4in(datain[31:28]), .d4out(data[31:28]));
// preshift p3 (.d4in(datain[35:32]), .d4out(data[35:32]));
// preshift p4 (.d4in(datain[39:36]), .d4out(data[39:36]));
// preshift p5 (.d4in(datain[43:40]), .d4out(data[43:40]));
genvar i;
generate for (i=0; i<24; i=i+4)
begin : g4i
preshift p (.d4in(datain[23+i:20+i]), .d4out(data[23+i:20+i])); //对应第二步各小步下的a操作,此处为6个BCD位的大四加三操作。具体动作见preshift移位预操作子模块。
end
endgenerate
assign dataout = {data[42:0], 1'b0}; //对应第二步各小步下的b操作,此处为全序列的左移移位操作。
endmodule
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?我要注册
x
|