数电实验Verilog-取反加一

很久之前,数电实验课要求使用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

门级电路的实现需要画真值表卡诺图再去找输入输出对应关系
真值表
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取反加一的全部内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值