列表

详情


VL7. 求两个数的差值

描述

根据输入信号a,b的大小关系,求解两个数的差值:输入信号a,b为8bit位宽的无符号数。如果a>b,则输出a-b,如果a≤b,则输出b-a。

接口信号图如下:
 
使用Verilog HDL实现以上功能并编写testbench验证。

输入描述

clk:系统时钟
rst_n:复位信号,低电平有效
a,b:8bit位宽的无符号数

输出描述

c:8bit位宽的无符号数

原站题解

Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06

`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)begin
            c<=8'b0;
        end
        else begin
            if(a>b)
                c <= a-b;
            else
                c <= b-a;
        end
    end
endmodule

Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06

`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

Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06

`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 <= 9'd0;
        else 
            if(a>b)
                c <= a - b;
            else
                c <= b - a;
    end
endmodule

Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06

`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==1'b0)
        begin
            c<=0;
        end 
        else if(a>b)
        begin
            c<=a-b;
        end 
        else if(a<=b)
        begin
            c<=b-a;
        end
        else;
    end
endmodule

Verilog 解法, 执行用时: 0ms, 内存消耗: 0KB, 提交时间: 2022-08-06

`timescale 1ns/1ns
module data_minus(
	input clk,
	input rst_n,
	input [7:0]a,
	input [7:0]b,

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

上一题