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

求两个数的差值

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

题意整理

题目要求求解两个无符号数的差值,也就是将较大值减去较小值,首先需要比较输入数值的大小关系,然后选择不同的操作。对于输入数值a,b,可能存在两种情况:a>b和a≤b,符合if-else语句的逻辑,可以使用if-else语句完成功能的实现。

题解主题

根据题目的要求,模块的输入端口包括:

       系统时钟和复位信号:clk,rst_n;

        两个8bit输入信号a,b.

输出端口包括:

               输出信号c.

输入信号和输出信号为8比特无符号数,加上系统时钟信号和复位信号,完整的模块端口声明是:

module data_minus(                  //if-else-module

       input clk,

       input rst_n,

       input [7:0]a,

       input [7:0]b,

       output reg [8:0]c

);

       在复位信号有效时,输出置为0,否则根据输入信号的大小关系,对数据做不同的运算。if…else语句的使用格式如下:

       if (判断条件)                      

              begin                          //当判断条件满足时,执行的语句

                     语句1;

                     语句2;

              end

       else begin                           //当判断条件不满足时,执行的语句

                     语句1;

                     语句2;

              end

       判断条件可以是

当执行的代码超过一句,需要使用begin…end包含,如果只有一句,则可以省略begin…end。代码如下:

always @(posedge clk or negedge rst_n)

       if(!rst_n)

              c <= 0;

       else if(a > b)

              c <= a-b;

       else

              c <= b-a;

参考答案

`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)
	if(!rst_n)
		c <= 0;
	else if(a > b)
		c <= a-b;
	else 
		c <= b-a;
	

endmodule


全部评论
每题都看到你你好棒棒
2 回复 分享
发布于 2022-03-14 01:27
每题都看到你你好棒棒
点赞 回复 分享
发布于 2022-09-14 15:51 美国

相关推荐

12-20 11:26
复旦大学 Java
点赞 评论 收藏
分享
头像 会员标识
12-16 14:43
浙江大学 Java
投递牛客等公司6个岗位
点赞 评论 收藏
分享
评论
5
收藏
分享

创作者周榜

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