generate语句的使用

generate语句一般用作模块复制:
注意事项:generate语句在使用前需要先使用genvar定义变量;generate语句配合for使用的时候for必须有begin,且需要加标签。

下图作者使用vivado进行编译时候(标签为target_seq,和变量名一样)未报错,但是使用modelsim编译的时候报错。将标签改为target_seq_s后可以编译通过。

genvar   target_seq;
generate
	for(target_seq=1; target_seq<21; target_seq = target_seq+1'b1)
		begin
			ddr_rd_capture_ck 
			#(
				.CAP_SEQ_NUM(target_seq)
			 ) target_seq_s
			(
				.I_clk_100M		 	(I_clk_100M		 	),
				.I_ui_clk		 	(ui_clk			 	),
				.I_ui_rst		 	(ui_rst			 	),
				.I_frm_num		 	(frm_num			 	),
				.I_reco_coor_vld 	(I_reco_coor_vld	),//ok
				.I_reco_frm_vld  	(I_reco_frm_vld	),//ok
				.I_recognize_data	(I_recognize_data	),//ok
				.O_capture_vld	 	(capture_vld_w[target_seq-1]),
				.O_capture_addr	(capture_addr_w[(32*target_seq-1)-:32]),
				.O_capture_num	   (capture_num_w[(5*target_seq-1)-:5])
			);
		end
endgenerate

generate语句模板:
generate语句的使用_第1张图片

你可能感兴趣的:(fpga,fpga开发)