数电实验Verilog-取反加一

发布时间:2024-01-12 19:00

很久之前,数电实验课要求使用Verilog编程并在nexys4的板子上实现相应的功能。现在把实验课用过的代码放到上面。

用三种方法实现取反加一

取反加一十分简单,每一种方法基本上都是一两句话能完成

1.数据流建模

module qfjy(
    input [3:0]a,
    output [3:0]b
    );
	 assign b=~a+1;
endmodule

2.门级电路

module qfjy2(input [3:0]a,output [3:0]b);
		or(b[0],a[0]);
		xor(b[1],a[0],a[1]);
		wire c,d;
		or(c,a[0],a[1]);
		xor(b[2],a[2],c);
		or(d,c,a[2]);
		xor(b[3],a[3],d);
endmodule

门级电路的实现需要画真值表卡诺图再去找输入输出对应关系
\"数电实验Verilog-取反加一_第1张图片\"
3.行为级建模

module qfjy3(input [3:0]a,output reg [3:0]b);	
		always@(a) begin
		b<=~a+1;
		end 
endmodule

使用nexys4板子的led灯来显示其功能,并使用“落后的”ise进行编程
引脚约束(只能在ise上能这样用,vivado不是这样的格式)

# PlanAhead Generated physical constraints 

NET \"a[0]\" LOC = U9;

# PlanAhead Generated IO constraints 

NET \"a[3]\" IOSTANDARD = LVCMOS33;
NET \"a[2]\" IOSTANDARD = LVCMOS33;
NET \"a[1]\" IOSTANDARD = LVCMOS33;
NET \"a[0]\" IOSTANDARD = LVCMOS33;

# PlanAhead Generated physical constraints 

NET \"a[0]\" LOC = U9;
NET \"a[1]\" LOC = U8;
NET \"a[2]\" LOC = R7;
NET \"a[3]\" LOC = R6;
NET \"b[0]\" LOC = T8;
NET \"b[1]\" LOC = V9;
NET \"b[2]\" LOC = R8;
NET \"b[3]\" LOC = T6;


# PlanAhead Generated IO constraints 

NET \"b[3]\" IOSTANDARD = LVCMOS33;
NET \"b[2]\" IOSTANDARD = LVCMOS33;
NET \"b[1]\" IOSTANDARD = LVCMOS33;
NET \"b[0]\" IOSTANDARD = LVCMOS33;

以上就是Verilog取反加一的全部内容

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号