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

求两个数的差值

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
仿真的波形图为

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 13:15
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:30
点赞 评论 收藏
分享
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务