verilog :generate语句

Verilog generate 语句是用于编写可配置、可综合RTL的强大构造。它可用于创建模块和代码的多个实例化。

generate-for语句:
1.必须有genvar关键字定义for语句的变量。
2.for语句的内容必须加begin和end。
3.for语句必须有一个名字begin:(name)

在buffer_8中例化buffer-1 8次

module buffer_8(
	input wire[7:0] din,
	input wire[7:0] dout);
	genvar i;
	generate
		for(i=0;i<8;i++)begin:Block1
			buffer_1 buffer1(.in(din[i]), .out(dout[i]));
		end 
	endgenerate
endmodule
module buffer_1(
	input wire in,
	output wire out);
	assign out = ~in;
endmodule

HDLBits网站使用generate语法的题
https://hdlbits.01xz.net/wiki/Exams/2014_q4b
在这里插入图片描述

module top_module (
    input [3:0] SW,
    input [3:0] KEY,
    output [3:0] LEDR
); //
wire [3:0] w_input = {KEY[3],LEDR[3],LEDR[2],LEDR[1]};
generate
	genvar i;
	for(i=0;i<4;i++)begin:muxdff
	MUXDFF(.clk(KEY[0]), .w(w_input[i]), .R(SW[i]), .E(KEY[1]), .L(KEY[2]), .Q(LEDR[i]));
	end
endgenerate

endmodule

module MUXDFF (
	input clk,
	input w,R,E,L,
	output Q);
	wire temp1,temp2;
	assign temp1=E? w:Q;
	assign temp2=L? R:temp1;
	always@(posedge clk)begin
		Q <= temp2;
	end

endmodule
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值