题解 | #求两个数的差值#

求两个数的差值

https://www.nowcoder.com/practice/de8e9138214647f1826e99043a1b7990

求两个数的差值
依旧采用异步复位,同时复位信号低电平有效。
输入a,b和输出c都是8bits的无符号数。可以直接进行加减运算。
用if...else if ....else if ....来表达就可以。
本题比较简单,所以直接贴代码。
`timescale 1ns/1ns
module data_minus(
	input clk,
	input rst_n,
	input [7:0]a,
	input [7:0]b,

	output  reg [8:0]c
);
always @(posedge clk or negedge rst_n) begin
	if(!rst_n) c <= 0;
	else if(a>b) c <= a - b;
	else c <= b -a;
end

endmodule
为了更好的理解,所以再贴一下testbench的测试代码

`timescale 1ns/1ns
module tb();
	reg signed [7:0] a,b; //只能对reg型进行赋初值操作
	reg clk,rst_n;
	wire signed [8:0]c;
initial begin
	clk = 0;
	rst_n = 0;
	a = 0;
	b = 0;
	#20 rst_n = 'b1;a = 'd1;b = 'd9; //对信号赋值
	#50 rst_n = 'b1;a = 2'd29;b = 'd9; //对信号赋值
	$finish;
end
always #5 clk = !clk;  //产生时钟信号
data_minus dut(
	.clk(clk),
	.rst_n(rst_n),
	.a(a),
	.b(b),
	.c(c)
);

endmodule
仿真的波形图为

全部评论

相关推荐

Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务