Verilog描述——一位全加器,四选一选择器,计数器

Verilog 描述一位全加器,四选一选择器,计数器

这篇文章比较容易理解,所以直接放参考代码,我还没有综合过,综合之后再来修改,并且附上RTL原理图

1位全加器

此处在于使用assign连续复制语句来实现。代码中的端口cout,对应逻辑图中的count(后有修改);

RTL code

module fulladd(
	input	ain, bin, cin,
	output	sum, cout
);

wire sum;
wire cout;

assign sum = ain ^ bin ^ cin;
assign cout = (ain & bin) | (bin & cin) | (ain & cin);

endmodule

逻辑图

ful_add

四选一选择器

此处需注意,case一定需要有default。

RTL code

module mux_4_1 (
	input 			C, D, E, F,
	input 	[1:0]	S,
	output	reg		Mux_out
);

always @ (C or D or E or F or S) begin
	case(S)
		2'b00	: Mux_out = C;
		2'b01	: Mux_out = D;
		2'b10	: Mux_out = E;
		default	: Mux_out = F;
	endcase
end

endmodule

逻辑图

mux_4_1

计数器

此处需注意可以通过定义parameter关键字来定义模块的参数,使其具有良好的适配性。

RTL code

module count_en #(
	parameter	WIDTH = 8,
	parameter	UDLY = 1
	)(
	input				clock, reset, enable,
	output	[WIDTH-1:0]	out
);

reg [WIDTH-1:0] out;

always @ ( posedge clock or negedge reset) begin
	if ( ~reset) begin
		out <= 0;
	end else if ( enable ) begin
		out <= #UDLY out + 1'b1;
	end
end

endmodule

逻辑图

count_en

更新

2020-03-04:添加逻辑图,程序使用Vivado编译无Error

  • 5
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShareWow丶

前人栽树,分享知识,传播快乐。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值